1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.all;
|
3 |
|
4 | entity testbnch is
|
5 | end entity TESTBNCH;
|
6 |
|
7 | architecture stimulus of TESTBNCH is
|
8 | ------------------------------------------------
|
9 | COMPONENT arctanFP is
|
10 | port (nrst : in std_logic;
|
11 | clk : in std_logic;
|
12 | ceatan : in std_logic;-- startimpuls afkt
|
13 | Xinp :in std_logic_vector(31 downto 0);-- input X FP FP format
|
14 | Yinp :in std_logic_vector(31 downto 0);-- input Y FP FP format
|
15 | outvalid :OUT std_logic:= '0';
|
16 | atanFPo :OUT std_logic_vector(31 downto 0):=X"00000000"-- output Winkel(rad) in FP format
|
17 | );
|
18 | end COMPONENT;
|
19 |
|
20 | --====================================================================
|
21 | constant sim_cyc: time := 10 ns; -- 10 ns=100 MHz = system clk,clk =100Mhz
|
22 |
|
23 | --======================================================
|
24 | signal tb_nrst : std_logic := '0';
|
25 | signal tb_clk : std_logic := '0';
|
26 | signal tb_ceatan : std_logic := '0';
|
27 | signal tb_Xinp : std_logic_vector(31 downto 0) := (others => '0'); --input X FP FP format
|
28 | signal tb_Yinp : std_logic_vector(31 downto 0) := (others => '0'); --input Y FP FP format
|
29 | signal tb_atanFPo : std_logic_vector(31 downto 0) := (others => '0'); --output Winkel(rad) in FP format
|
30 | SIGNAL tb_outvalid : std_logic := '0';
|
31 |
|
32 | ---===============================================================================================
|
33 | begin
|
34 | ------------------------------------------------
|
35 | UUT:arctanFP
|
36 | port map
|
37 | (
|
38 | nrst => tb_nrst, -- : in std_logic;
|
39 | clk => tb_clk, -- : in std_logic;
|
40 | ceatan => tb_ceatan, -- startimpuls afkt
|
41 | Xinp => tb_Xinp, -- input X FP FP format
|
42 | Yinp => tb_Yinp, -- input Y FP FP format
|
43 | outvalid => tb_outvalid,
|
44 | atanFPo => tb_atanFPo -- output Winkel(rad) in FP format
|
45 | );
|
46 | --====================================================================
|
47 |
|
48 | -------------------------------------------------------------------
|
49 | --==========================================================
|
50 | ----------CLK= 100 MHz-----------------------------
|
51 | CLK_1: process
|
52 | begin
|
53 | tb_clk <= '0';
|
54 | WAIT FOR (sim_cyc*2 - 1 ns);
|
55 | WHILE TRUE LOOP
|
56 | tb_clk <= NOT tb_clk;
|
57 | wait for (sim_cyc);--simcyc*2/2
|
58 | END LOOP;
|
59 | end process;
|
60 |
|
61 | ---------------------------------------------------------------
|
62 | stimulus: process
|
63 | begin
|
64 | tb_nrst <= '0';
|
65 | WAIT for 5 us;
|
66 | tb_nrst <= '1';-- reseted
|
67 | -----------------------------------
|
68 | -------45Grd = 0.785398163 -----
|
69 | -------30Grd = 0.523598776 -----
|
70 | -----------------------------------
|
71 | --tb_Xinp <= X"3f800000";--1.0
|
72 | tb_Xinp <= X"3f032916";-- 0.512345678
|
73 | tb_Yinp <= X"3f032916";--0.512345678
|
74 | --------------------------
|
75 | tb_ceatan <= '1'; -- startimpuls
|
76 | WAIT FOR sim_cyc*2;
|
77 | tb_ceatan <= '0';
|
78 | ---------------------------
|
79 |
|
80 | wait;
|
81 | end process;
|
82 |
|
83 |
|
84 |
|
85 | end architecture stimulus;
|