Hallo... Wie programmiere ich am besten eine Overflowerkennung für einen Counter? Der Overflow soll zwischen gespeichert werden, bis er Resetet wird. Als Eingang dient der Zählerwert. Danke
Meinst du etwa so?
1 | if (counter = x"FFF") then |
2 | overflow <= '1'; |
3 | elsif (overflow_reset = '1') then |
4 | overflow <= '0'; |
5 | end if; |
Ein up counter macht einen Carry, ein down counter macht einen Borrow, diesen gibt man auf ein Flipflop, fertig.
ist es möglich diesen ausdruck (counter = x"FFF") direkt an eine set-eingang zu legen? Ich bekomme dann immer den fehler (iOverflowEnable='1' and (iCtr=tCtrMax))... Oder muss ich das zwangweise als Process implementieren. Das Problem beim Process ist, das die Overflows nicht konsequent erkannt werden. (Ich denke es liegt an den Taktraten von dem Zähler (100MHz-400MHz)... Grüße und danke für die Hilfen....
Ich habe den Prozess auch nicht getaktet. Es funktioniert soweit ok... Nur bei höhren Taktraten erkennt er nicht mehr jeden Overflow.
1 | tCtrMax<=(others=>'1'); |
2 | |
3 | pOverflow: process(iCtr, iOverflowEnable, tCtrMax)--tCtrOld) |
4 | begin
|
5 | |
6 | if (iOverflowEnable='1' and (iCtr=tCtrMax)) then |
7 | tOverflow<='1'; |
8 | else
|
9 | tOverflow<='0'; |
10 | end if; |
11 | end process pOverflow; |
12 | |
13 | tFlipflop: component FD1S3DX |
14 | port map ( |
15 | CD=>iRES_Overflow, |
16 | CK=>tOverflow, |
17 | D=>'1', |
18 | Q=>oOverflow |
19 | );
|
Was ist denn das überhaupt für ein Zähler, der mit 400 MHz zählt? Läuft der im FPGA? Ansonsten hüpft bei dir das tOverflow immer nur ganz kurz auf 1, das Halten soll dann wohl in dem tFlipflop passieren? Bei 400 MHz ist der Impuls natürlich ziemlich kurz...
MARK wrote: > tFlipflop: component FD1S3DX > port map ( > CD=>iRES_Overflow, > CK=>tOverflow, > D=>'1', > Q=>oOverflow > ); Sehe ich das richtig dass du tOverflow als Clock verwendest? Das ist nicht die feine Art. Leg das doch an einen Set-Eingang von einem getakteten Flipflop. Oder schreib das ganze erst mal als Verhaltensbeschreibung, ein Gemisch aus Netzliste und Prozessen ist der Übersichtlichkeit ja nicht unbedingt zuträglich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.