OpenCores
URL https://opencores.org/ocsvn/uart_block/uart_block/trunk

Subversion Repositories uart_block

[/] [uart_block/] [trunk/] [hdl/] [iseProject/] [testDivisor.vhd] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 leonardoar
--! @file
2
--! @brief Test divisor module
3
 
4
--! Use standard library and import the packages (std_logic_1164,std_logic_unsigned,std_logic_arith)
5 5 leonardoar
library IEEE;
6
use IEEE.STD_LOGIC_1164.ALL;
7
use IEEE.std_logic_arith.all;
8
 
9 15 leonardoar
--! Use Global Definitions package
10
use work.pkgDefinitions.all;
11 5 leonardoar
 
12
ENTITY testDivisor IS
13
END testDivisor;
14
 
15 38 leonardoar
--! @brief Test divisor module
16
--! @details Calculate some divisions and verify if we have the right value
17 5 leonardoar
ARCHITECTURE behavior OF testDivisor IS
18
 
19
    -- Component Declaration for the Unit Under Test (UUT)
20
 
21
    COMPONENT divisor
22 37 leonardoar
    Port ( rst : in  STD_LOGIC;                                                                                                         --! Reset input
23
           clk : in  STD_LOGIC;                                                                                                         --! Clock input
24
           quotient : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Division result (32 bits)
25
                          reminder : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! Reminder result (32 bits)
26
           numerator : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Numerator (32 bits)
27
           divident : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! "Divide by" number (32 bits)
28
           done : out  STD_LOGIC);
29 5 leonardoar
    END COMPONENT;
30
 
31
 
32
   --Inputs
33 37 leonardoar
   signal rst : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
34
   signal clk : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
35
   signal numerator : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');       --! Signal to connect with UUT
36
   signal divident : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');        --! Signal to connect with UUT
37 5 leonardoar
 
38
        --Outputs
39 37 leonardoar
   signal quotient : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
40
   signal reminder : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
41 5 leonardoar
   signal done : std_logic;
42
 
43
   -- Clock period definitions
44
   constant clk_period : time := 10 ns;
45
 
46
BEGIN
47
 
48 36 leonardoar
        --! Instantiate the Unit Under Test (UUT)
49 5 leonardoar
   uut: divisor PORT MAP (
50
          rst => rst,
51
          clk => clk,
52
          quotient => quotient,
53
          reminder => reminder,
54
          numerator => numerator,
55
          divident => divident,
56
          done => done
57
        );
58
 
59
   -- Clock process definitions
60
   clk_process :process
61
   begin
62
                clk <= '0';
63
                wait for clk_period/2;
64
                clk <= '1';
65
                wait for clk_period/2;
66
   end process;
67
 
68
 
69
   -- Stimulus process
70
   stim_proc: process
71
   begin
72
      -- hold reset state for 100 ns.
73
                rst <= '1';
74
                numerator <= conv_std_logic_vector(50000000, 32);
75
                divident <= conv_std_logic_vector(115200, 32);
76 38 leonardoar
      wait for clk_period;
77 5 leonardoar
                rst <= '0';
78 6 leonardoar
 
79 38 leonardoar
                wait until done = '1';
80
                assert quotient = conv_std_logic_vector(434, 32) report "Wrong result... expected 434." severity failure;
81 6 leonardoar
      wait for clk_period;
82
 
83
                rst <= '1';
84
                numerator <= conv_std_logic_vector(40, 32);
85
                divident <= conv_std_logic_vector(5, 32);
86 38 leonardoar
      wait for clk_period;
87 6 leonardoar
                rst <= '0';
88
 
89 38 leonardoar
                wait until done = '1';
90
                assert quotient = conv_std_logic_vector(8, 32) report "Wrong result... expected 8." severity failure;
91 6 leonardoar
                wait for clk_period;
92 5 leonardoar
 
93
      -- insert stimulus here 
94 6 leonardoar
                assert false report "NONE. End of simulation." severity failure;
95
 
96 5 leonardoar
   end process;
97
 
98
END;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.