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 top_entity_float_add is port ( clk : in std_logic; -- Eingangssignal Systemtakt reset : in std_logic; -- Eingangssignal Reset zum Setzen der Default Werte run_calc: in std_logic; -- Eingangssignal wenn aktiv soll gerechnet werden operand_a : in STD_LOGIC_VECTOR(31 downto 0); -- Erster Operand in 32-bit float operand_b : in STD_LOGIC_VECTOR(31 downto 0); -- Zweiter Operand in 32-bit float result : out std_logic_vector(31 downto 0); -- Endergebnis Berechnung Addition (im slv ist ein 32-bit float gespeichert) calc_complete : out std_logic -- Flag das anzeiugt wann die Berechnung fertig ist (bei 1=high) ); end top_entity_float_add; architecture Behavioral of top_entity_float_add is -- Legen Sie ein signal result_sum als std_logic_vector mit Laenge 32 Bit an -- Legen Sie ein signal start als std_logic -- Legen Sie ein signal done als std_logic begin -- Instanziieren Sie direkt die float_add Komponente -- Als Takt und Reset sollen die jeweiligen Eingaenge der top_entity_float_add uebergeben werden -- An den anderen Ports die jeweiligen zugehoerigen Signale (welche oben angelegt worden sind) 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 => , -- floating point operand a A => , -- floating point operand b B => , -- Ergebnis der Addition in floating point sum => ); -- Realisieren Sie einen getakteten Prozess control mit folgenden Verhalten -- -- Initialisierung der Signale bei Reset aktiv (reset=1): -- result soll=0 sein -- start soll=0 sein -- calc_complete soll=0 sein -- -- bei steigende Flanke: -- Nur wenn run_calc gleich 1 ist: -- dann soll wenn done=1 und start=1 ist -- start=0, calc_complete=1 und result_sum dem Ausgang result zugewiesen werden -- ansonsten soll -- start=1, calc_complete=0 sein -- control : process(reset,clk) begin end process control; end Behavioral;