Advertisement
Guest User

tb

a guest
Oct 24th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.89 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.std_logic_unsigned.all;
  4.  
  5. entity multiplier32FP_tb is
  6. end multiplier32FP_tb;
  7.  
  8. architecture tb of multiplier32FP_tb is
  9.  
  10.     component multiplier32FP
  11.         port(
  12.         clk, rst_n          : in std_logic;
  13.         start_i             : in std_logic;
  14.         a_i, b_i            : in std_logic_vector(31 downto 0);
  15.  
  16.         product_o           : out std_logic_vector(31 downto 0);
  17.         done_o              : out std_logic;
  18.         nan_o, infinit_o    : out std_logic;
  19.         overflow_o          : out std_logic;
  20.         underflow_o         : out std_logic
  21.         );
  22.     end component;
  23.  
  24.     signal clk      : std_logic := '0';
  25.     signal rst      : std_logic := '0';
  26.     signal nan      : std_logic;
  27.     signal infinite : std_logic;
  28.     signal overflow : std_logic;
  29.     signal underflow : std_logic;
  30.  
  31.     signal inputA   : std_logic_vector(31 downto 0);
  32.     signal inputB   : std_logic_vector(31 downto 0);
  33.  
  34.     signal Start    : std_logic := '1';
  35.     signal Done     : std_logic;
  36.     signal output   : std_logic_vector(31 downto 0);
  37.  
  38.     type Mem is array (0 to 30) of std_logic_vector (31 downto 0);
  39.     signal arrayA       : Mem := (x"FBAC0503",x"15049502", x"F91BA005", x"01E3714C", x"9F0CD1FF", x"01FCBEAA", x"758BAC56", x"03FBEAB4", x"938BDAC2", x"EBA10A09", x"9183FBC4", x"F17DFFB4", x"8172BAD3", x"AEB37143", x"15049502", x"15049502", x"EB3714CB", x"70C0D1F1", x"0C0D1FB6", x"C1FCBEA2", x"1F504502", x"C41FCBEA", x"FA10A094", x"DAEB3143", x"43AEB371", x"AEB37103", x"0EB3714C", x"0AEB3715", x"0AEB3711", x"F14D590F", x"FFFFFFFF");
  40.     signal arrayB       : Mem := (x"01BA0051",x"011BA005", x"0514D590", x"1BA00501", x"A0050102", x"70C01F08", x"270C0D1F", x"77C1FCBE", x"B14D590B", x"0AEB3714", x"BEB37149", x"BEB714D5", x"3714D590", x"0E371491", x"2AEB3714", x"3F01BA00", x"A3011BA0", x"0011BA06", x"11A00501", x"BBC1FCBE", x"070C0DF8", x"B901BA00", x"01BA00D5", x"9C1FCBE0", x"01BE3714", x"EB371401", x"0114D590", x"01BA0055", x"0BEB3711", x"0B371412", x"FFFFFFFF");
  41.  
  42.     constant clk_period : time := 4.75 ns;
  43.  
  44. begin
  45.  
  46.     uut: multiplier32FP port map(
  47.             clk         => clk,
  48.             rst_n       => rst,
  49.             a_i         => inputA,
  50.             b_i         => inputB,
  51.             product_o   => output,
  52.             done_o      => Done,
  53.             nan_o       => nan,
  54.             infinit_o   => infinite,
  55.             start_i     => Start,
  56.         underflow_o => underflow,
  57.         overflow_o  => overflow
  58.         );
  59.  
  60.     clk <= not clk after clk_period/2;
  61.  
  62.  
  63.  
  64.  
  65.     process
  66.         variable i : integer := 0;
  67.     begin
  68.         inputA <= arrayA(i); --CONV_STD_LOGIC_VECTOR(6,WIDTH);
  69.             inputB <= arrayB(i); --CONV_STD_LOGIC_VECTOR(4,WIDTH);
  70.         wait until  clk = '1';
  71.         rst <= '1';
  72.         wait until  clk = '1';
  73.         rst <= '0';
  74.         wait until  clk = '1';
  75.  
  76.         wait until done ='1';   -- Suspend process     
  77.         i:=i+1;
  78.     end process;
  79.  
  80. end tb;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement