Files
HDLfilter/FiltroHDL/Filter_tb.vhd
2017-03-07 01:18:29 -03:00

124 lines
2.8 KiB
VHDL

--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 14:47:13 03/03/2017
-- Design Name:
-- Module Name: /home/epilef/Proyectos/FiltroHDL/FiltroHDL/Filter_tb.vhd
-- Project Name: FiltroHDL
-- Target Device:
-- Tool versions:
-- Description:
--
-- VHDL Test Bench Created by ISE for module: Filter
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
-- Notes:
-- This testbench has been automatically generated using types std_logic and
-- std_logic_vector for the ports of the unit under test. Xilinx recommends
-- that these types always be used for the top-level I/O of a design in order
-- to guarantee that the testbench will bind correctly to the post-implementation
-- simulation model.
--------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use work.array_functions.all;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY Filter_tb IS
END Filter_tb;
ARCHITECTURE behavior OF Filter_tb IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT Filter
generic (
CLK_FREQ : integer := 200e6;
DATA_RATE: integer := 250e3;
SIMETRIC : boolean := true;
CONSTANTS : array_of_integers := (-10,-10,-10,-10,10,10,10,10)
);
PORT(
clk_i : IN std_logic;
enable : IN std_logic;
reset : IN std_logic;
d_i : IN std_logic;
d_o : OUT std_logic
);
END COMPONENT;
--Inputs
signal clk_i : std_logic := '0';
signal enable : std_logic := '1';
signal reset : std_logic := '0';
signal d_i : std_logic := '0';
--Outputs
signal d_o : std_logic;
-- Clock period definitions
constant clk_i_period : time := 5 ns;
constant data_period : time := 4 us;
constant data: std_logic_vector := x"EB901234ABCD5678EF09";
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: Filter Generic Map(
CLK_FREQ => 200e6,
DATA_RATE => 250e3,
SIMETRIC => true,
CONSTANTS => ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
)
PORT MAP (
clk_i => clk_i,
enable => enable,
reset => reset,
d_i => d_i,
d_o => d_o
);
-- Clock process definitions
clk_i_process :process
begin
clk_i <= '0';
wait for clk_i_period/2;
clk_i <= '1';
wait for clk_i_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
for i in 0 to data'length -1 loop
d_i <= data(i);
wait for data_period;
end loop;
-- insert stimulus here
wait;
end process;
END;