Adds the empty exercice file
This commit is contained in:
parent
04768b5d14
commit
4978d474b5
96
fsm_add.vhd
Normal file
96
fsm_add.vhd
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
library IEEE;
|
||||||
|
use IEEE.STD_LOGIC_1164.ALL; -- Bibliothek für std_logic und std_logic_vector
|
||||||
|
use IEEE.NUMERIC_STD.ALL; -- Bibliothek für signed und unsigned Datentypen
|
||||||
|
|
||||||
|
entity fsm_add is
|
||||||
|
port (
|
||||||
|
clk : in std_logic; -- Eingangssignal fuer den Takt
|
||||||
|
reset : in std_logic; -- Eingangssignal zum Zuruecksetzen des Zaehlers
|
||||||
|
run_calc : in std_logic; -- Eingangssignal welches die Berechnungen startet
|
||||||
|
calc_cnt: out std_logic_vector( 3 downto 0 ); -- Ausgang welcher die Anzahl der Berechnungen anzeigt
|
||||||
|
|
||||||
|
signal_a_read : out std_logic; -- Ausgang um Daten aus den FIFO A anzufordern
|
||||||
|
signal_a_readdata : in std_logic_vector( 31 downto 0 ); -- Eingang der zuletzt gelesenen Daten aus dem FIFO A
|
||||||
|
|
||||||
|
signal_b_read : out std_logic; -- Ausgang um Daten aus den FIFO B anzufordern
|
||||||
|
signal_b_readdata : in std_logic_vector( 31 downto 0 ); -- Eingang der zuletzt gelesenen Daten aus dem FIFO B
|
||||||
|
|
||||||
|
signal_write : out std_logic; -- Ausgang um Daten in den Ausgangsfifo zu schreiben
|
||||||
|
signal_writedata : out std_logic_vector( 31 downto 0 ) -- Ausgang die Daten welche in den Ausgangsfifo geschrieben werden sollen
|
||||||
|
);
|
||||||
|
end entity fsm_add;
|
||||||
|
|
||||||
|
architecture rtl of fsm_add is
|
||||||
|
|
||||||
|
-- Es soll eine type AddState angelegt werden mit den Zuständen ADD_IDLE, ADD_READ_FIFO, ADD_CALC und ADD_STORE_RESULT
|
||||||
|
|
||||||
|
-- Es soll Signal current_add_state des oben angelegten Types AddState deklariert werden
|
||||||
|
|
||||||
|
-- Es soll Signal next_add_state des oben angelegten Types AddState deklariert werden
|
||||||
|
|
||||||
|
-- Es soll Signal start_calc als std_logic angelegt werden
|
||||||
|
|
||||||
|
-- Es soll Signal done als std_logic angelegt werden
|
||||||
|
|
||||||
|
-- Es soll Signal calc_cnt_int als Integer mit Bereich 0 bis 15 angelegt werden
|
||||||
|
|
||||||
|
-- Legen Sie ein signal result_sum als std_logic_vector mit Laenge 32 Bit an
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
-- Instanzieren Sie direkt die float_add Komponente
|
||||||
|
-- Als Takt und Reset sollen die jeweiligen Eingaenge der top_entity uebergeben werden
|
||||||
|
-- Es sollen der Eingang
|
||||||
|
-- Das Additonsergebnis soll dem Signal result_sum gespeichert werden
|
||||||
|
u_float_add : entity work.float_add
|
||||||
|
port map(
|
||||||
|
-- Eingangssignal fuer den Takt
|
||||||
|
clk => ,
|
||||||
|
-- Eingangssignal zum Zuruecksetzen des Zaehlers
|
||||||
|
reset => ,
|
||||||
|
-- Eingang um die Berechnung zu starten
|
||||||
|
start => ,
|
||||||
|
-- Ausgang der anzeigt, dass die Berechnung fertig ist
|
||||||
|
done => ,
|
||||||
|
-- Gelesene Daten aus den FIFO A
|
||||||
|
A => ,
|
||||||
|
-- Gelesene Daten aus den FIFO B
|
||||||
|
B => ,
|
||||||
|
-- Ergebnis der Addition in floating point
|
||||||
|
sum =>
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Der kombinatiorische Prozess add_state_transitions soll das Uebergangsschaltnezt steuern
|
||||||
|
--
|
||||||
|
-- Es soll der naechste Zustand next_add_state entsprechend der Zustandsmaschine angesteuert werden
|
||||||
|
--
|
||||||
|
add_state_transitions : process ( all ) is
|
||||||
|
begin
|
||||||
|
|
||||||
|
end process add_state_transitions;
|
||||||
|
|
||||||
|
|
||||||
|
-- Der Prozess sync soll den Zustandsspeicher und das Ausgangsschaltnetz steuern
|
||||||
|
-- Alle gesteuerten Signale sollen bei Reset sinnvoll vorbelegt werden
|
||||||
|
-- Es soll ein getakter Prozess welcher auf eine steigende Flanke reagiert genutzt werden
|
||||||
|
--
|
||||||
|
-- Folgende Signale sollen hier gesteuert werden
|
||||||
|
-- current_add_state (Zusatandsspeicher)
|
||||||
|
-- signal_a_read (Steuersignal um Daten aus den FIFO A zu lesen)
|
||||||
|
-- signal_b_read (Steuersignal um Daten aus den FIFO B zu lesen)
|
||||||
|
-- signal_write (Steuersignal um Daten in den Ausgangsfifo zu schreiben)
|
||||||
|
-- calc_cnt_int (Zaehler welcher die Anzahl der berechneten Werrte abbilden soll)
|
||||||
|
-- signal_writedata (Werte welcher in den Ausgangsfifo geschrieben werden soll = letzter berechneter Wert result_sum)
|
||||||
|
--
|
||||||
|
-- Die Signale sollen entsprechend der Zustandsmaschine angesteuert werden
|
||||||
|
--
|
||||||
|
sync : process ( clk, reset ) is
|
||||||
|
begin
|
||||||
|
|
||||||
|
end process sync;
|
||||||
|
|
||||||
|
-- Weisen Sie dem Ausgang calc_cnt das signal calc_cnt_int zu (Datentypen beachten Konvertierung noetig)
|
||||||
|
|
||||||
|
|
||||||
|
end architecture rtl;
|
||||||
Loading…
x
Reference in New Issue
Block a user