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

Subversion Repositories parallel_scrambler

[/] [parallel_scrambler/] [trunk/] [tb/] [tb_par_scram.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 sparkish
----------------------------------------------------------------------
2
----                                                              ----
3
---- Parallel Scrambler.                                              
4
----                                                              ----
5
---- This file is part of the Configurable Parallel Scrambler project 
6
---- http://opencores.org/project,parallel_scrambler              ----
7
----                                                              ----
8
---- Description                                                  ----
9
---- Test bench for Parallel scrambler/descrambler module                 ----
10
----                                                                      ----
11
----                                                              ----
12
---- License: LGPL                                                ----
13
---- -                                                            ----
14
----                                                              ----
15
---- Author(s):                                                   ----
16
---- - Howard Yin, sparkish@opencores.org                         ----
17
----                                                              ----
18
----------------------------------------------------------------------
19
LIBRARY ieee;
20
USE ieee.std_logic_1164.ALL;
21
use ieee.numeric_std.all;
22
 
23
ENTITY tb_par_scram IS
24
END tb_par_scram;
25
 
26
ARCHITECTURE behavior OF tb_par_scram IS
27
 
28
    -- Component Declaration for the Unit Under Test (UUT)
29
 
30
    component par_scrambler
31
        generic (
32
                Data_Width                      : integer;
33
                Polynomial_Width        : integer
34
                );
35
        port (
36
                rst, clk, scram_rst : in std_logic;
37
                Polynomial                      : in std_logic_vector (Polynomial_Width downto 0);
38
                data_in                         : in std_logic_vector (Data_Width-1 downto 0);
39
                scram_en                        : in std_logic;
40
                data_out                        : out std_logic_vector (Data_Width-1 downto 0);
41
                out_valid                       : out std_logic
42
                );
43
        end component;
44
 
45
   --Inputs
46
   signal data_in : std_logic_vector(7 downto 0) := (others => '0');
47
   signal scram_en : std_logic := '0';
48
   signal scram_start : std_logic := '0';
49
   signal rst : std_logic := '1';
50
   signal clk : std_logic := '0';
51
 
52
        --Outputs
53
   signal scram_data_out : std_logic_vector(7 downto 0);
54
   signal descram_data_out : std_logic_vector(7 downto 0);
55
   signal scram_data_valid : std_logic;
56
   signal descram_data_valid : std_logic;
57
 
58
   -- Clock period definitions
59
   constant clk_period : time := 20 ns;
60
 
61
BEGIN
62
 
63
        -- Instantiate the Unit Under Test (UUT)
64
   scram_mod: par_scrambler
65
        Generic Map (
66
                Data_Width                      => 8,
67
                Polynomial_Width        => 7
68
 
69
        )
70
        PORT MAP (
71
                  Polynomial                    => "10010001",
72
          data_in => data_in,
73
          scram_en => scram_en,
74
          scram_rst => scram_start,
75
          rst => rst,
76
          clk => clk,
77
          data_out => scram_data_out,
78
          out_valid => scram_data_valid
79
        );
80
 
81
   descram_mod: par_scrambler
82
        Generic Map (
83
                Data_Width                      => 8,
84
                Polynomial_Width        => 7
85
 
86
        )
87
        PORT MAP (
88
              Polynomial                        => "10010001",
89
          data_in => scram_data_out,
90
          scram_en => scram_data_valid,
91
          scram_rst => scram_start,
92
          rst => rst,
93
          clk => clk,
94
          data_out => descram_data_out,
95
          out_valid => descram_data_valid
96
        );
97
 
98
   -- Clock process definitions
99
   clk_process :process
100
   begin
101
                clk <= '0';
102
                wait for clk_period/2;
103
                clk <= '1';
104
                wait for clk_period/2;
105
   end process;
106
 
107
 
108
   -- Stimulus process
109
   stim_proc: process
110
   begin
111
      -- hold reset state for 100 ns.
112
                rst <= '1';
113
                wait for 90 ns;
114
                rst <= '0';
115
                wait for clk_period*10;
116
                scram_start <= '1';
117
                wait for clk_period;
118
                scram_start <= '0';
119
                wait for clk_period*10;
120
 
121
                for i in 0 to 7 loop
122
                        wait until (rising_edge(clk));
123
                        scram_en <= '1';
124
                        data_in <= std_logic_vector(to_unsigned(i, 8));
125
                end loop;
126
                wait until (rising_edge(clk));
127
                scram_en <= '0';
128
 
129
                wait for clk_period*10;
130
 
131
                for i in 0 to 7 loop
132
                        wait until (rising_edge(clk));
133
                        scram_en <= '1';
134
                        data_in <= std_logic_vector(to_unsigned(i, 8));
135
                        wait until (rising_edge(clk));
136
                        scram_en <= '0';
137
                        wait for clk_period*10;
138
                end loop;
139
 
140
      wait;
141
   end process;
142
 
143
END;

powered by: WebSVN 2.1.0

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