Hallo, will in VHDL eine Uhr realisieren. Die Sekunden und Minuten zählen richtig, aber bei den Stunden ist noch der Wurm drin. Der Einer zählt bis 2 und dann gibt es einen Übertrag. Der Zehner zählt dann bis 1. Aber der Einer muss ja normal bis 9 zählen und dann nur noch bis 2, wie kann ich das denn realisieren? Der aktuelle Quelltext ist: --minzr_int ist der Übertrag der Minuten counter_std_e: process (CLOCK, RESET, c_minzr_int) begin if RESET='1' then STD_E_INT <=X"0"; elsif CLOCK='1' and CLOCK'event then if c_minzr_int='1' then if STD_E_INT=2 then STD_E_INT<=X"0"; else STD_E_INT <= STD_E_INT + 1; end if; end if; end if; end process counter_std_e; counter_std_z: process (CLOCK, RESET, c_stde_int) begin if RESET='1' then STD_Z_INT <=X"0"; elsif CLOCK='1' and CLOCK'event then if c_stde_int='1' then if STD_Z_INT=1 then STD_Z_INT<=X"0"; else STD_Z_INT <=STD_Z_INT + 1; end if; end if; end if; end process counter_std_z;
Mann, den Code kann so keiner lesen :-/ Also mal umformatiert... Wie wärs damit:
1 | if RESET='1' then |
2 | STD_E_INT <=X"0"; |
3 | elsif CLOCK='1' and CLOCK'event then |
4 | if c_minzr_int='1' then |
5 | if (STD_E_INT=9) or (STD_Z_INT=1 and STD_E_INT=2) then ------ hier auch die Zehner abfragen |
6 | STD_E_INT <= X"0"; |
7 | else
|
8 | STD_E_INT <= STD_E_INT + 1; |
9 | end if; |
10 | end if; |
11 | end if; |
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.