Hallo, ich hab folgendes Problem, ich will mehrer Zähler verschachteln und weiß nicht ob man das so schreiben kann: if(clk`EVENT AND clk=`1`)THEN if(reset`EVENT AND reset=`1`)THEN --Reset ist auch ein Taktsignal counter := 0; end if; if(clk1`EVENT AND clk1=`1`)THEN counter := counter + 1; end if; if counter = 10 THEN counter = 0; counter1= counter1 = 0; end if; usw. bis counter weiß der geier was counterout <= counter; counter1out <= counter1; usw. die Funktion soll sein das counter von 0 bis 9 zählt, dann wieder auf null gesetzt wird und gleichzeit counter1 um eins erhöt wird. MFG Guest
So geht das nicht. Du kannst nicht eine Flanke auf eine andere Flanke abfragen, dann müssten die beiden ja genau gleichzeitig auftreten und selbst wenn das theoretisch so wäre, würde das in den seltensten Fällen detektiert werden. Außerdem ist nur ein Takt auf diese Weise ('event) erlaubt. Ein Möglichkeit mit einem einfachen reset wäre diese, außerdem mit Signalen statt Variablen:
1 | process(clk, reset) |
2 | begin
|
3 | if (reset = '1') then |
4 | counter <= 0; |
5 | counter1 <= 0; |
6 | elsif(clk'event and clk = '1') then |
7 | if (counter = 10) then |
8 | counter <= 0; |
9 | counter1 <= counter1 + 1; |
10 | else
|
11 | counter <= counter + 1; |
12 | end if; |
13 | end process; |
Wenn du unbedingt die Flanke des reset brauchst, musst du reset in einem process mit clk abtasten und die Flanke detektieren. Dazu muss der "reset-Takt" aber langsamer sein als clk.
Der Reset Takt( 1Takt/Min) ist auf jeden fall langsamer als der clk(50MHz). Es kommen auch noch mehr zähler dazu, vom Prinzip her ist es eigentlich wie ein Abakus(wenn einer voll zehner erhöhen usw.) Variablen müssen unbedingt sein weil ich später noch eine fall Unterscheidung brauche ob der interne Zählerstand benutzt wird, oder ein extern Gegebener.
> die Funktion soll sein das counter von 0 bis 9 zählt, dann wieder auf > null gesetzt wird und gleichzeit counter1 um eins erhöt wird. Du solltest eine Unit mit einem Zähler schreiben, der zählt wenn am Eingang ein Puls anliegt, bis 10 zählt und beim Überlauf einen Puls ausgibt. Dann kannst Du beliebig vieles solcher Zähler hintereinanderschalten. Klaus
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.