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

Subversion Repositories bpsk_spread_spectrum_modulator_demodulator

[/] [bpsk_spread_spectrum_modulator_demodulator/] [trunk/] [tb_spread_bpsk_0.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 aTomek1328
-------------------------------------------------------------------------------
2
-- Title      : Testbench for spread_bpsk.vhd
3
-- Project    : 
4
-------------------------------------------------------------------------------
5
-- File       : tb_spread_bpsk_0.vhd
6
-- Author     : Tomasz Turek  <tomasz.turek@gmail.com>
7
-- Company    : SzuWar INC
8
-- Created    : 22:24:52 26-03-2010
9
-- Last update: 09:02:29 11-05-2010
10
-- Platform   : Xilinx ISE 10.1.03
11
-- Standard   : VHDL'93
12
-------------------------------------------------------------------------------
13
-- Description: 
14
-------------------------------------------------------------------------------
15
-- Copyright (c) 2010 SzuWar INC
16
-------------------------------------------------------------------------------
17
-- Revisions  :
18
-- Date                  Version  Author  Description
19
-- 22:24:52 26-03-2010   1.0      szuwarek  Created
20
-------------------------------------------------------------------------------
21
 
22
library IEEE;
23
use IEEE.STD_LOGIC_1164.ALL;
24
use ieee.std_logic_arith.all;
25
use IEEE.STD_LOGIC_UNSIGNED.all;
26
 
27
entity tb_spread_bpsk_0 is
28
end entity tb_spread_bpsk_0;
29
 
30
architecture tb of tb_spread_bpsk_0 is
31
 
32
-------------------------------------------------------------------------------
33
-- Unit Under Test --
34
-------------------------------------------------------------------------------
35
   component spread_bpsk is
36
 
37
   generic (
38
      iDataWidith        : integer range 1 to 16  := 2;
39
      iSingleValueSpread : integer range 2 to 255 := 17;
40
      iTrigerType        : integer range 0 to 2   := 2
41
      );
42
 
43
   port (
44
      CLK_I             : in  std_logic;
45
      RESET_I           : in  std_logic;
46
      DATA_I            : in  std_logic_vector(iDataWidith - 1 downto 0);
47
      DATA_VALID_I      : in  std_logic;
48
      TRIGER_I          : in  std_logic;
49
      SPREAD_SEQUENCE_I : in  std_logic_vector(iSingleValueSpread - 1 downto 0);
50
      DATA_O            : out std_logic_vector(iDataWidith - 1 downto 0);
51
      DATA_VALID_O      : out std_logic;
52
      READY_FOR_DATA_O  : out std_logic
53
      );
54
 
55
   end component spread_bpsk;
56
 
57
-------------------------------------------------------------------------------
58
-- consttants --
59
-------------------------------------------------------------------------------
60
   constant iDataWidith        : integer range 1 to 16 := 4;
61
   constant iSingleValueSpread : integer range 2 to 255 := 16;
62
   constant iTrigerType        : integer range 0 to 2 := 2;
63
   constant tTs                : time := 5 ns;
64
 
65
-------------------------------------------------------------------------------
66
-- signals --
67
-------------------------------------------------------------------------------
68
   -- In --
69
   signal CLK_I             : std_logic := '0';
70
   signal RESET_I           : std_logic := '0';
71
   signal DATA_VALID_I      : std_logic := '0';
72
   signal TRIGER_I          : std_logic := '0';
73
--   signal DATA_I            : std_logic_vector(iDataWidith - 1 downto 0) := (others => '0');
74
   signal DATA_I            : std_logic_vector(iDataWidith - 1 downto 0) := x"5";
75
   signal SPREAD_SEQUENCE_I : std_logic_vector(iSingleValueSpread - 1 downto 0) := (others => '0');
76
--   signal SPREAD_SEQUENCE_I : std_logic_vector(iSingleValueSpread - 1 downto 0) := x"a5c9";
77
 
78
   -- Out --
79
   signal DATA_VALID_O      : std_logic;
80
   signal READY_FOR_DATA_O  : std_logic;
81
   signal DATA_O            : std_logic_vector(iDataWidith - 1 downto 0);
82
 
83
   -- Others --
84
   signal v_count           : std_logic_vector(15 downto 0) := (others => '0');
85
   -- +1 bpsk == '1' --
86
   signal p_one             : std_logic_vector(iDataWidith - 1 downto 0) := (others => '1');
87
   -- -1 bpsk == '0' --
88
   signal s_one             : std_logic_vector(iDataWidith - 1 downto 0) := (others => '0');
89
 
90
begin  -- architecture tb
91
 
92
 
93
   UUT :
94
      spread_bpsk
95
 
96
   generic map (
97
      iDataWidith        => iDataWidith,
98
      iSingleValueSpread => iSingleValueSpread,
99
      iTrigerType        => iTrigerType
100
      )
101
 
102
   port map (
103
      CLK_I             => CLK_I,
104
      RESET_I           => RESET_I,
105
      DATA_I            => DATA_I,
106
      DATA_VALID_I      => DATA_VALID_I,
107
 
108
      TRIGER_I     => TRIGER_I,
109
      SPREAD_SEQUENCE_I => SPREAD_SEQUENCE_I,
110
      DATA_O            => DATA_O,
111
      DATA_VALID_O      => DATA_VALID_O,
112
      READY_FOR_DATA_O  => READY_FOR_DATA_O
113
      );
114
 
115
   StimulationProcess : process
116
 
117
   begin
118
 
119
      for i in 0 to 1000000 loop
120
 
121
         CLK_I <= not CLK_I;
122
 
123
         wait for tTs;
124
 
125
      end loop;
126
 
127
      wait;
128
 
129
   end process StimulationProcess;
130
 
131
   T0: process (CLK_I) is
132
   begin  -- process T0
133
 
134
      if rising_edge(CLK_I) then
135
 
136
         case v_count is
137
 
138
            when x"0002" =>
139
 
140
               RESET_I <= '1';
141
 
142
               TRIGER_I <= TRIGER_I;
143
               DATA_VALID_I <= DATA_VALID_I;
144
               DATA_I <= DATA_I;
145
               v_count <= v_count + 1;
146
 
147
            when x"0005" =>
148
 
149
               RESET_I <= '0';
150
 
151
               TRIGER_I <= TRIGER_I;
152
               DATA_VALID_I <= DATA_VALID_I;
153
               DATA_I <= DATA_I;
154
               v_count <= v_count + 1;
155
 
156
            when x"0007" =>
157
 
158
 
159
               RESET_I <= RESET_I;
160
               TRIGER_I <= TRIGER_I;
161
               DATA_VALID_I <= '1';
162
               DATA_I <= x"5";
163
               v_count <= v_count + 1;
164
 
165
            when x"0026" =>
166
 
167
 
168
               RESET_I <= RESET_I;
169
               TRIGER_I <= TRIGER_I;
170
               DATA_VALID_I <= '0';
171
               DATA_I <= DATA_I;
172
               v_count <= v_count;
173
 
174
            when x"0027" =>
175
 
176
 
177
               RESET_I <= RESET_I;
178
               TRIGER_I <= TRIGER_I;
179
               DATA_VALID_I <= '1';
180
               DATA_I <= x"a";
181
               v_count <= v_count + 1;
182
 
183
            when x"0040" =>
184
 
185
 
186
               RESET_I <= RESET_I;
187
               TRIGER_I <= TRIGER_I;
188
               DATA_VALID_I <= '0';
189
               DATA_I <= DATA_I;
190
               v_count <= v_count;
191
 
192
            when others =>
193
 
194
 
195
               RESET_I <= RESET_I;
196
               TRIGER_I <= TRIGER_I;
197
               DATA_VALID_I <= DATA_VALID_I;
198
               DATA_I <= DATA_I + 1;
199
--               DATA_I <= DATA_I xor p_one;
200
               v_count <= v_count + 1;
201
 
202
         end case;
203
 
204
      end if;
205
 
206
   end process T0;
207
 
208
end architecture tb;
209
 

powered by: WebSVN 2.1.0

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