1 | HilfsSignal_1 <= Signal_2 when Enable = '1' else
|
2 | HilfsSignal_1 when Enable = '0' else
|
3 | HilfsSignal_1;
|
Deine Beschreibung kann man ohne funktionale Einschränkungen auch etwas
kürzer schreiben:
1 | HilfsSignal_1 <= Signal_2 when Enable = '1' else HilfsSignal_1 ;
|
Und dann erkennt man das Latch sofort. Das Hilfssignal_1 wird auf sich
selber zugewiesen, und zwar abhängig vom Pegel von Enable. Das ist ein
klassisches Latch. Im Gegensatz zum flankengesteuerten Flipflop ist das
Latch pegelgesteuert.
Ich meine fast, die originale Beschreibung könnte ohne Latch auch in
etwa so aussehen:
1 | process (CLK)
|
2 | begin
|
3 | if rising_edge (CLK) then
|
4 | if count >= 99 then
|
5 | count <= 0;
|
6 | HilfsSignal_1 <= Signal_2;
|
7 | else
|
8 | count <= count +1;
|
9 | end if;
|
10 | end if;
|
11 | end process;
|
> Meine Frage : Hier kommt die Warning " Node <Signal_B_0> of sequential
> type is unconnected...." Ist die Warning ernst zu nehmen?
Nein.
> Ich mein ich vwerdende auch nur die oberen 5 bit....
Grund erkannt.
BTW:
> Signal count : integer range 0 to 99;<--hmm 100 leitungen
> für die zahl 99?
Das ist ein integer mit einem Bereich von 0 bis 99. Dafür reichen 7
Leitungen (aka Bits) aus. Diesen Zusammenhang erkennt der Synthesizer
selbständig.
> würd auch reichen
> Signal count : unsigned (7 downto 0);
Noch immer zuviel. Es würde sogar
Signal count : unsigned (6 downto 0);
ausreichen. Aber ich selber nehme für Zähler auch immer integer. Denn in
diesem Fall käme beim unsigned keine Fehlermeldung, wenn im Simulator
wegen eines Fehlers mal der Wert 100 erreicht wird. Beim Integer gibts
einen Fehler.
BTW2:
Diese Beschreibung simuliert falsch:
1 | process output (Enable, Signal_1)
|
2 | begin
|
3 | if Enable = '1' then
|
4 | signal_2 <= signal_1;
|
5 | else
|
6 | signal_2 <= signal_1_save;
|
7 | end
|
weil (wieder mal) die Sensitivliste unvollständig ist :-/
Da müsste nämlich noch signal_1_save mit rein.