From fee45795c2f7bda9de9de3268b69a73b37ff4ff6 Mon Sep 17 00:00:00 2001 From: Dag Einar <debnord@hotmail.no> Date: Thu, 7 Nov 2024 18:00:56 +0100 Subject: [PATCH] La til Rx testbenk --- Rx_tb.vhd | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Rx_tb.vhd diff --git a/Rx_tb.vhd b/Rx_tb.vhd new file mode 100644 index 0000000..737767e --- /dev/null +++ b/Rx_tb.vhd @@ -0,0 +1,100 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity Rx_tb is +end Rx_tb; + +architecture Behavioral of Rx_tb is + + -- Testbenkens signaler + signal clk : std_logic := '0'; + signal rst_n : std_logic := '0'; + signal RxD : std_logic := '1'; + signal Data_bus : std_logic_vector(7 downto 0) := (others => 'Z'); + signal Rd_sig : std_logic := '0'; + signal Wr_sig : std_logic := '0'; + signal adresse : std_logic_vector(2 downto 0) := "000"; + + -- Instans av Rx-komponenten + component Rx + generic( + F_CLK_115k : integer := 54; + F_CLK_576 : integer := 109; + F_CLK_384 : integer := 162; + F_CLK_192 : integer := 325; + F_CLK_096 : integer := 650 + ); + port( + clk : in std_logic; + rst_n : in std_logic; + RxD : in std_logic; + Data_bus : inout std_logic_vector(7 downto 0); + Rd_sig : in std_logic; + Wr_sig : in std_logic; + adresse : in std_logic_vector(2 downto 0) + ); + end component; + +begin + + -- Instansiering av Rx-enheten + uut: Rx + port map ( + clk => clk, + rst_n => rst_n, + RxD => RxD, + Data_bus => Data_bus, + Rd_sig => Rd_sig, + Wr_sig => Wr_sig, + adresse => adresse + ); + + -- Klokkeprosessen genererer et 50 MHz klokkesignal + clk_process: process + begin + while true loop + clk <= '0'; + wait for 10 ns; + clk <= '1'; + wait for 10 ns; + end loop; + end process; + + -- Stimuli for reset og testoperasjoner + stimulus: process + begin + -- Reset og initiering + rst_n <= '0'; + wait for 50 ns; + rst_n <= '1'; + + -- Konfigurering av paritetssjekk og baud rate + adresse <= "100"; -- Adresse for konfigurasjon + Wr_sig <= '1'; -- Skriveoperasjon + Data_bus <= "00001011"; -- Konfigurer for oddetall paritet og baud rate B576 + wait for 20 ns; + Wr_sig <= '0'; + Data_bus <= (others => 'Z'); -- Sett Data_bus tilbake til Z etter skriving + + -- Test av datastrøm + wait for 100 ns; + adresse <= "101"; -- Adresse for lesing av data fra FIFO + Rd_sig <= '1'; + wait for 20 ns; + Rd_sig <= '0'; + + -- Test av FIFO-status + wait for 100 ns; + adresse <= "110"; -- Adresse for lesing av status + Wr_sig <= '1'; + wait for 20 ns; + Wr_sig <= '0'; + + -- Flere tester kan settes opp her + -- Slutt på simuleringen + wait; + end process; + +end Behavioral; -- GitLab