Greife auf kostenlose Karteikarten, Zusammenfassungen, Übungsaufgaben und Altklausuren für deinen HDL Kurs an der Hochschule Coburg zu.
Unterschied Cuncurrent & Sequenzieller Bereich?
Concurrent: Alles wird gleichzeitig verarbeitet. Aufruf wenn sich einer der Bedingungen rechts ändert.
Sequenziell: Wird Zeile für Zeile ausgeführt. Spätere Zuweisungen überschreiben frühere Zuweisungen.
Was muss beachtet werden bei einem Prozess mit sensitivity list?
Kein Wait verwenden, da sonst der Prozess evt neu gestartet werden kann während er noch im Waitzustand ist => Prozess mehrfach gleichzeitig gestartet.
Dies passiert, da sich die Signale geupdatet werden im Waitzustand was ansonsten nur am Ende des Prozesses vorkommt. Neues Signal => evt neuer Prozessstart.
T_cq, T_k, T_su
f_max?
T_min?
T_cq: Time FFL Eingang bis Ausgang
T_k: Time Kombinatorik (längster Kombinatorik bei mehreren)
T_su: Setup-Time
T_min=T_cq+T_k+T_su
f_max= 1/T_min
Tastenentprellung:
Auf welches Muster wird reagiert und warum?
Es muss auf die 1110 reagiert werden, da die 1111 deutlich länger anliegt und daher zuviele impulse ausgegben werden. Darüber hinaus gedeuten drei aufeinanderfolgende einsen, dass das Signal gut entprellt ist.
Wie schiebt man von L nach R und von R nach L?
Was wird verwendet wenn zuerst MSB oder LSB gesendet wird?
MSB zuerst =>
Von R nach L:
shift <= shift (6 downto 0) & serData;
LSB zuerst=>
Von L nach R:
shift <= serData & shift(7 downto 1);
Takt erstellen
prozess begin
clk <= '0' wait for periode/2;
clk <= '1' wait for periode/2;
end prozess;
reset<= '1', '0' after periode*3;
Array ("1111000", "11001100" ,"11000011" ,"11001001" ) deklarieren
type dsType is array (1 to 4) of std_logic_vector (7downto 0);
constant dataStream : dsType := ("1111000", "11001100" ,"11000011" ,"11001001" );
DataStrom beschrieben
process begin
valid <= '0'; serData <= '0';
wait until reset='0';
wait for period*2;
for j in 1 to 4 loop -- Wortschleife
for i in 0 to 7 loop -- Bitschleife
serData <= dataStream(j)(i);
valid <= '1';
wait for period;
end loop;
valid <= '0';
wait for period*3;--Warten zwischen den einzelnen Wörten
end loop;
wait;
end process;
Was ist bei Steuersignalen zu beachten?
Default außerhalb von Finite State Machine zu setzten damit immer nur eine Takt lang das gesetzte Signal gesetzt ist und nicht aus versehen länger
Wie kann die Latenzzeit verkürzt werden?
-Beschreibung der Ausgänge im Übergang und nicht im Einzelnen State.
-Abfrageparameter ändern. (zum Bsp nicht bis 7 zählen sondern nur bis 6)
Was ist bei Rechenfunktionen zu beachten?
Kein /, mod, rem nicht verwenden für Hardware nur für Simulation.
Signed kann nicht mit unsigned verrechnet werden da die Zahlen unterschiedlich groß sind( unsigned kein Vorzeichen => ein Bit größer als signed)
Was ist bei Vergleichen zu beachten?
Das die zu verlgeichende Zahl auch in dem Vergleichsvektor darstellbar ist.
signal count : unsigned (3 down to 0) ---entspricht 4 Bit
ref <= '0';
if count = 19 then
ref<='1';
end if;
!!! Nie war da 19 nicht mit 4Bit darstellbar ist. 19=> 5Bit werden gebraucht.
Greife kostenlos auf tausende geteilte Karteikarten, Zusammenfassungen, Altklausuren und mehr zu.
Jetzt loslegen