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

Subversion Repositories uart_block

[/] [uart_block/] [trunk/] [hdl/] [iseProject/] [testDivisor.vhd] - Diff between revs 37 and 38

Only display areas with differences | Details | Blame | View Log

Rev 37 Rev 38
--! Test divisor module
--! @file
 
--! @brief Test divisor module
 
 
 
--! Use standard library and import the packages (std_logic_1164,std_logic_unsigned,std_logic_arith)
library IEEE;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_arith.all;
 
 
--! Use Global Definitions package
--! Use Global Definitions package
use work.pkgDefinitions.all;
use work.pkgDefinitions.all;
 
 
ENTITY testDivisor IS
ENTITY testDivisor IS
END testDivisor;
END testDivisor;
 
 
 
--! @brief Test divisor module
 
--! @details Calculate some divisions and verify if we have the right value
ARCHITECTURE behavior OF testDivisor IS
ARCHITECTURE behavior OF testDivisor IS
 
 
    -- Component Declaration for the Unit Under Test (UUT)
    -- Component Declaration for the Unit Under Test (UUT)
 
 
    COMPONENT divisor
    COMPONENT divisor
    Port ( rst : in  STD_LOGIC;                                                                                                         --! Reset input
    Port ( rst : in  STD_LOGIC;                                                                                                         --! Reset input
           clk : in  STD_LOGIC;                                                                                                         --! Clock input
           clk : in  STD_LOGIC;                                                                                                         --! Clock input
           quotient : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Division result (32 bits)
           quotient : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Division result (32 bits)
                          reminder : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! Reminder result (32 bits)
                          reminder : out  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! Reminder result (32 bits)
           numerator : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Numerator (32 bits)
           numerator : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);   --! Numerator (32 bits)
           divident : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! "Divide by" number (32 bits)
           divident : in  STD_LOGIC_VECTOR ((nBitsLarge-1) downto 0);    --! "Divide by" number (32 bits)
           done : out  STD_LOGIC);
           done : out  STD_LOGIC);
    END COMPONENT;
    END COMPONENT;
 
 
 
 
   --Inputs
   --Inputs
   signal rst : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
   signal rst : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
   signal clk : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
   signal clk : std_logic := '0';                                                                                                                                        --! Signal to connect with UUT
   signal numerator : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');       --! Signal to connect with UUT
   signal numerator : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');       --! Signal to connect with UUT
   signal divident : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');        --! Signal to connect with UUT
   signal divident : std_logic_vector((nBitsLarge-1) downto 0) := (others => '0');        --! Signal to connect with UUT
 
 
        --Outputs
        --Outputs
   signal quotient : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
   signal quotient : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
   signal reminder : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
   signal reminder : std_logic_vector((nBitsLarge-1) downto 0);                                                  --! Signal to connect with UUT
   signal done : std_logic;
   signal done : std_logic;
 
 
   -- Clock period definitions
   -- Clock period definitions
   constant clk_period : time := 10 ns;
   constant clk_period : time := 10 ns;
 
 
BEGIN
BEGIN
 
 
        --! Instantiate the Unit Under Test (UUT)
        --! Instantiate the Unit Under Test (UUT)
   uut: divisor PORT MAP (
   uut: divisor PORT MAP (
          rst => rst,
          rst => rst,
          clk => clk,
          clk => clk,
          quotient => quotient,
          quotient => quotient,
          reminder => reminder,
          reminder => reminder,
          numerator => numerator,
          numerator => numerator,
          divident => divident,
          divident => divident,
          done => done
          done => done
        );
        );
 
 
   -- Clock process definitions
   -- Clock process definitions
   clk_process :process
   clk_process :process
   begin
   begin
                clk <= '0';
                clk <= '0';
                wait for clk_period/2;
                wait for clk_period/2;
                clk <= '1';
                clk <= '1';
                wait for clk_period/2;
                wait for clk_period/2;
   end process;
   end process;
 
 
 
 
   -- Stimulus process
   -- Stimulus process
   stim_proc: process
   stim_proc: process
   begin
   begin
      -- hold reset state for 100 ns.
      -- hold reset state for 100 ns.
                rst <= '1';
                rst <= '1';
                numerator <= conv_std_logic_vector(50000000, 32);
                numerator <= conv_std_logic_vector(50000000, 32);
                divident <= conv_std_logic_vector(115200, 32);
                divident <= conv_std_logic_vector(115200, 32);
      wait for 20 ns;
      wait for clk_period;
                rst <= '0';
                rst <= '0';
 
 
                wait until done = '1';
                wait until done = '1';
 
                assert quotient = conv_std_logic_vector(434, 32) report "Wrong result... expected 434." severity failure;
      wait for clk_period;
      wait for clk_period;
 
 
                rst <= '1';
                rst <= '1';
                numerator <= conv_std_logic_vector(40, 32);
                numerator <= conv_std_logic_vector(40, 32);
                divident <= conv_std_logic_vector(5, 32);
                divident <= conv_std_logic_vector(5, 32);
      wait for 20 ns;
      wait for clk_period;
                rst <= '0';
                rst <= '0';
 
 
                wait until done = '1';
                wait until done = '1';
 
                assert quotient = conv_std_logic_vector(8, 32) report "Wrong result... expected 8." severity failure;
                wait for clk_period;
                wait for clk_period;
 
 
      -- insert stimulus here 
      -- insert stimulus here 
                assert false report "NONE. End of simulation." severity failure;
                assert false report "NONE. End of simulation." severity failure;
 
 
   end process;
   end process;
 
 
END;
END;
 
 

powered by: WebSVN 2.1.0

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