Hallo zusammen, ich versuche mich ein wenig an VHDL. Nun meine Probleme. Ich habe 2 Pinne wenn bei High sind soll ein Counter zurückgesetzt werden. Ist nur X1 high soll ein Counter um eins incrementiert werden. 1.) Ist dieser Quellcode richtig ? 2.) Wie zeige ich mir bei Quartus 2 Variablen an. ------------------------------------------------ LIBRARY ieee ; USE ieee.std_logic_1164.all ; use IEEE.std_logic_unsigned.all; ENTITY versuch_1 IS PORT ( x1, x2 : IN STD_LOGIC ; f : OUT STD_LOGIC ) ; END versuch_1 ; ARCHITECTURE LogicFunction OF versuch_1 IS Signal count_max: INTEGER range 0 to 2204; BEGIN process (x1, x2) begin if (x1 = '1' and x2 ='1') then count_max<=0; elsif (x1 = '1' and x2 = '0') then count_max<=count_max+1; END IF; end process; END LogicFunction ; ------------------------------------------------ Danke und Gruß Marek
@Marek Swierzy >Ich habe 2 Pinne wenn bei High sind soll ein Counter zurückgesetzt >werden. >Ist nur X1 high soll ein Counter um eins incrementiert werden. >1.) Ist dieser Quellcode richtig ? Nein, es fehlt der Takt. 2.) Wie zeige ich mir bei Quartus 2 Variablen an. Keine Ahnung. process (takt) begin if rising_edge(takt) then if (x1 = '1' and x2 ='1') then count_max<=0; elsif (x1 = '1' and x2 = '0') then count_max<=count_max+1; END IF; end if; end process; MFG Falk
@Marek Swierzy
>warum muss da ein Takt rein ?
Ja wie soll der Zähler sonst um eins erhöht werden?
-> Synchrone Schaltungstechnik.
MfG
Falk
Ohne Takt baust du Kombinatorik, das heißt irgendwelche Drähte mit Operationen aber ohne Speicher. Die Zahl im counter muss aber gespeichert werden. Schreibst du nur count_max <= count_max + 1 ist das gleichbedeutend mit einem kombinatorischen Signal (vorstellbar als Draht), der sich selbst um eins erhöht und damit ein feedback erzeugen würde. Würdest du etwas schreiben wie counter <= count_max + 1 ginge das zwar, aber counter wäre konstant. Also musst du den count_max-Wert speichern und das funktioniert bei Hardware taktweise. Ein solcher Speicher, genannt Register, hat einen Eingang und einen Ausgang, und du kannst jeden Takt etwas auf den Eingang schreiben, was dann im nächsten Takt am Ausgang lesbar ist. Es liegt also im ersten Takt 0 am Ausgang und 1 am Eingang, im nächsten 1 am Ausgang und 2 am Eingang usw. an. Nur so funktioniert sinnvolles zählen in Hardware.
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.