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

Subversion Repositories gfir

[/] [gfir/] [trunk/] [vhdl/] [testbench/] [fir_filter_stage_tb.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 ahmed.shah
----------
2
--! @file
3
--! @brief The top-level test-bench.
4
----------
5
library IEEE;
6
use IEEE.std_logic_1164.all;
7
use ieee.std_logic_arith.all;   -- conv_integer, conv_signed
8
library work;
9
use work.tb_pack.all;
10
use work.fir_pkg.all;
11
library std;
12
use std.textio.all;             -- write, writeline
13
 
14
entity fir_filter_stage_tb is
15
end fir_filter_stage_tb;
16
 
17
architecture tb of fir_filter_stage_tb is
18
 
19
constant clockperiod : time := 10 ns; --! Clock period
20
 
21
component fir_filter_stage_TF
22
  port (fir_clk, fir_clr : in  std_logic;
23
        fir_in           : in  std_logic_vector(0 downto 0);
24
        fir_out          : out std_logic_vector(14 downto 0));
25
end component;
26
 
27
signal fir_clk, fir_clr                 : std_logic;
28
signal fir_in                           : std_logic_vector(0 downto 0);
29
signal fir_out                          : std_logic_vector(14 downto 0);
30
signal read_flag                        : std_ulogic;
31
signal write_finished, read_finished    : std_ulogic := '0';
32
-- Internal deibugging signals
33
signal multi_add   : std_logic_vector((order-1)*width_out-1 downto 0);
34
signal add_delay   : std_logic_vector((order-2)*width_out-1 downto 0);
35
signal delay_add   : std_logic_vector((order-1)*width_out-1 downto 0);
36
signal multi_delay : std_logic_vector(width_out-1 downto 0);
37
 
38
begin
39
 
40
process
41
  begin
42
    fir_in <= (others => '0');
43
 wait until read_flag = '1';
44
        ReadData ( "./testbench/data.txt", fir_in, fir_clk, read_finished);     --! Input file for stimuli bit-stream                 
45
end process;
46
 
47
multi_add       <= g_multi_add;
48
add_delay       <= g_add_delay;
49
delay_add       <= g_delay_add;
50
multi_delay     <= g_multi_delay;
51
 
52
ExportOutput: process
53
                file wr_file : text open write_mode is "./fir_filter_ouput.txt"; --! Output file 
54
                variable export_vector : integer;
55
                variable export_line : line;
56
        begin
57
        wait until rising_edge(fir_clk);
58
                export_vector := conv_integer(conv_signed(unsigned(fir_out),fir_out'length));
59
                write(export_line, export_vector);
60
                writeline(wr_file, export_line);
61
        end process;
62
 
63
DUT : fir_filter_stage_TF
64
  port map(
65
                fir_clk => fir_clk,
66
                fir_clr => fir_clr,
67
                fir_in  => fir_in,
68
                fir_out => fir_out
69
        );
70
 
71
process
72
  begin
73
        fir_clr <= '1'; read_flag <= '0';
74
                wait for 43 ns;
75
 
76
        fir_clr <= '0'; read_flag <= '1';
77
                wait for 43 ns;
78
 
79
        fir_clr <= '0'; read_flag <= '1';
80
                wait for 500 ns;
81
  end process;
82
 
83
process
84
  begin
85
   wait for (clockperiod/2);
86
        fir_clk <= '1';
87
   wait for (clockperiod/2);
88
        fir_clk <= '0';
89
  end process;
90
 
91
end tb;

powered by: WebSVN 2.1.0

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