vhdl_einfuehrung_u2/top_entity_float_add.vhd

69 lines
2.7 KiB
VHDL

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;