1 |
2 |
danv |
--------------------------------------------------------------------------------
|
2 |
|
|
--
|
3 |
|
|
-- Copyright (C) 2016
|
4 |
|
|
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
|
5 |
|
|
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
|
6 |
|
|
--
|
7 |
|
|
-- This program is free software: you can redistribute it and/or modify
|
8 |
|
|
-- it under the terms of the GNU General Public License as published by
|
9 |
|
|
-- the Free Software Foundation, either version 3 of the License, or
|
10 |
|
|
-- (at your option) any later version.
|
11 |
|
|
--
|
12 |
|
|
-- This program is distributed in the hope that it will be useful,
|
13 |
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
|
|
-- GNU General Public License for more details.
|
16 |
|
|
--
|
17 |
|
|
-- You should have received a copy of the GNU General Public License
|
18 |
|
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19 |
|
|
--
|
20 |
|
|
--------------------------------------------------------------------------------
|
21 |
|
|
|
22 |
|
|
-- Purpose: Multi-testbench for wpfb_unit_wide using file data
|
23 |
|
|
-- Description:
|
24 |
|
|
-- Verify wpfb_unit_wide using and data generated by Matlab scripts:
|
25 |
|
|
--
|
26 |
|
|
-- - $RADIOHDL_WORK/applications/apertif/matlab/run_pfb.m
|
27 |
|
|
-- - $RADIOHDL_WORK/applications/apertif/matlab/run_pfb_complex.m
|
28 |
|
|
--
|
29 |
|
|
-- Usage:
|
30 |
|
|
-- > as 4
|
31 |
|
|
-- > run -all
|
32 |
|
|
|
33 |
|
|
LIBRARY IEEE, common_pkg_lib, astron_filter_lib, astron_r2sdf_fft_lib;
|
34 |
|
|
USE IEEE.std_logic_1164.ALL;
|
35 |
|
|
USE common_pkg_lib.common_pkg.all;
|
36 |
|
|
USE astron_filter_lib.fil_pkg.all;
|
37 |
|
|
USE astron_r2sdf_fft_lib.rTwoSDFPkg.all;
|
38 |
|
|
USE work.wpfb_pkg.all;
|
39 |
|
|
|
40 |
|
|
ENTITY tb_tb_wpfb_unit_wide IS
|
41 |
|
|
END tb_tb_wpfb_unit_wide;
|
42 |
|
|
|
43 |
|
|
ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS
|
44 |
|
|
|
45 |
|
|
constant c_stage_dat_extra_w : natural := c_dsp_mult_w + 10;
|
46 |
|
|
constant c_nof_blk_per_sync : natural := 20;
|
47 |
|
|
|
48 |
|
|
-- wb 1, two real
|
49 |
|
|
CONSTANT c_wb1_two_real_1024 : t_wpfb := (1, 1024, 0, 1,
|
50 |
|
|
16, 1, 8, 16, 16,
|
51 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
52 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
53 |
|
|
CONSTANT c_wb1_two_real : t_wpfb := (1, 32, 0, 1,
|
54 |
|
|
16, 1, 8, 16, 16,
|
55 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
56 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
57 |
|
|
|
58 |
|
|
CONSTANT c_wb1_two_real_4streams : t_wpfb := (1, 32, 0, 4,
|
59 |
|
|
16, 1, 8, 16, 16,
|
60 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
61 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
62 |
|
|
|
63 |
|
|
CONSTANT c_wb1_two_real_4channels : t_wpfb := (1, 32, 2, 1,
|
64 |
|
|
16, 1, 8, 16, 16,
|
65 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
66 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
67 |
|
|
|
68 |
|
|
-- wb 4, two real
|
69 |
|
|
CONSTANT c_wb4_two_real_1024 : t_wpfb := (4, 1024, 0, 1,
|
70 |
|
|
16, 1, 8, 16, 16,
|
71 |
|
|
true, false, true, 16, 16, 1, c_stage_dat_extra_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
72 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
73 |
|
|
CONSTANT c_wb4_two_real : t_wpfb := (4, 32, 0, 1,
|
74 |
|
|
16, 1, 8, 16, 16,
|
75 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
76 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
77 |
|
|
|
78 |
|
|
CONSTANT c_wb4_two_real_4streams : t_wpfb := (4, 32, 0, 4,
|
79 |
|
|
16, 1, 8, 16, 16,
|
80 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
81 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
82 |
|
|
|
83 |
|
|
CONSTANT c_wb4_two_real_4channels : t_wpfb := (4, 32, 2, 1,
|
84 |
|
|
16, 1, 8, 16, 16,
|
85 |
|
|
true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
86 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
87 |
|
|
|
88 |
|
|
-- wb 1, complex reordered
|
89 |
|
|
CONSTANT c_wb1_complex_1024 : t_wpfb := (1, 1024, 0, 1,
|
90 |
|
|
16, 1, 8, 16, 16,
|
91 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
92 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
93 |
|
|
CONSTANT c_wb1_complex_64 : t_wpfb := (1, 64, 0, 1,
|
94 |
|
|
16, 1, 8, 16, 16,
|
95 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
96 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
97 |
|
|
CONSTANT c_wb1_complex : t_wpfb := (1, 32, 0, 1,
|
98 |
|
|
16, 1, 8, 16, 16,
|
99 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
100 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
101 |
|
|
CONSTANT c_wb1_complex_4streams : t_wpfb := (1, 32, 0, 4,
|
102 |
|
|
16, 1, 8, 16, 16,
|
103 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
104 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
105 |
|
|
|
106 |
|
|
CONSTANT c_wb1_complex_4channels : t_wpfb := (1, 32, 2, 1,
|
107 |
|
|
16, 1, 8, 16, 16,
|
108 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
109 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
110 |
|
|
|
111 |
|
|
-- wb 1, complex fft_shift
|
112 |
|
|
CONSTANT c_wb1_complex_fft_shift : t_wpfb := (1, 32, 0, 1,
|
113 |
|
|
16, 1, 8, 16, 16,
|
114 |
|
|
true, true, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
115 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
116 |
|
|
|
117 |
|
|
-- wb 1, complex without reorder
|
118 |
|
|
CONSTANT c_wb1_complex_flipped_1024 : t_wpfb := (1, 1024, 0, 1,
|
119 |
|
|
16, 1, 8, 16, 16,
|
120 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
121 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
122 |
|
|
CONSTANT c_wb1_complex_flipped_64 : t_wpfb := (1, 64, 0, 1,
|
123 |
|
|
16, 1, 8, 16, 16,
|
124 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
125 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
126 |
|
|
CONSTANT c_wb1_complex_flipped : t_wpfb := (1, 32, 0, 1,
|
127 |
|
|
16, 1, 8, 16, 16,
|
128 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
129 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
130 |
|
|
|
131 |
|
|
-- wb 4, complex reordered
|
132 |
|
|
CONSTANT c_wb4_complex_1024 : t_wpfb := (4, 1024, 0, 1,
|
133 |
|
|
16, 1, 8, 16, 16,
|
134 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
135 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
136 |
|
|
CONSTANT c_wb4_complex_64 : t_wpfb := (4, 64, 0, 1,
|
137 |
|
|
16, 1, 8, 16, 16,
|
138 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
139 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
140 |
|
|
CONSTANT c_wb4_complex : t_wpfb := (4, 32, 0, 1,
|
141 |
|
|
16, 1, 8, 16, 16,
|
142 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
143 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
144 |
|
|
CONSTANT c_wb4_complex_4streams : t_wpfb := (4, 32, 0, 4,
|
145 |
|
|
16, 1, 8, 16, 16,
|
146 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
147 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
148 |
|
|
|
149 |
|
|
CONSTANT c_wb4_complex_4channels : t_wpfb := (4, 32, 2, 1,
|
150 |
|
|
16, 1, 8, 16, 16,
|
151 |
|
|
true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
152 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
153 |
|
|
|
154 |
|
|
-- wb 4, complex fft_shift
|
155 |
|
|
CONSTANT c_wb4_complex_fft_shift : t_wpfb := (4, 32, 0, 1,
|
156 |
|
|
16, 1, 8, 16, 16,
|
157 |
|
|
true, true, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
158 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
159 |
|
|
|
160 |
|
|
-- wb 4, complex without reorder
|
161 |
|
|
CONSTANT c_wb4_complex_flipped_1024 : t_wpfb := (4, 1024, 0, 1,
|
162 |
|
|
16, 1, 8, 16, 16,
|
163 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
164 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
165 |
|
|
CONSTANT c_wb4_complex_flipped_64 : t_wpfb := (4, 64, 0, 1,
|
166 |
|
|
16, 1, 8, 16, 16,
|
167 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
168 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
169 |
|
|
CONSTANT c_wb4_complex_flipped : t_wpfb := (4, 32, 0, 1,
|
170 |
|
|
16, 1, 8, 16, 16,
|
171 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
172 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
173 |
|
|
|
174 |
|
|
CONSTANT c_wb4_complex_flipped_channels : t_wpfb := (4, 32, 2, 1,
|
175 |
|
|
16, 1, 8, 16, 16,
|
176 |
|
|
false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_nof_blk_per_sync,
|
177 |
|
|
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
178 |
|
|
|
179 |
|
|
CONSTANT c_dm_1 : natural := 1; -- diff margin (for stage_dat_w >> c_dsp_mult_w)
|
180 |
|
|
CONSTANT c_dm_3 : natural := 3; -- diff margin (for 32 point dm=2 appears sufficient, for 1024 point dm=3 is sufficient)
|
181 |
|
|
CONSTANT c_dm_5 : natural := 5; -- diff margin (for 32 point dm=2 appears sufficient, for 1024 point dm=3 is sufficient)
|
182 |
|
|
|
183 |
|
|
CONSTANT c_pre_ab : string := "data/run_pfb_m_pfir_coeff_fircls1"; -- original version
|
184 |
|
|
CONSTANT c_pre_ab_v2 : string := "data/run_pfb_m_v2_pfir_coeff_fircls1"; -- next version
|
185 |
|
|
CONSTANT c_pre_c : string := "data/run_pfb_complex_m_pfir_coeff_fircls1";
|
186 |
|
|
|
187 |
|
|
-- Real input
|
188 |
|
|
CONSTANT c_sinusoid_chirp_1024 : string := "data/run_pfb_m_sinusoid_chirp_8b_16taps_1024points_16b_16b.dat"; -- 204800 lines
|
189 |
|
|
CONSTANT c_sinusoid_chirp : string := "data/run_pfb_m_sinusoid_chirp_8b_16taps_32points_16b_16b.dat"; -- 6400 lines
|
190 |
|
|
CONSTANT c_sinusoid_1024 : string := "data/run_pfb_m_sinusoid_8b_16taps_1024points_16b_16b.dat"; -- 51200 lines
|
191 |
|
|
CONSTANT c_sinusoid_1024_v2 : string := "data/run_pfb_m_v2_sinusoid_8b_16taps_1024points_16b_16b.dat"; -- 51200 lines
|
192 |
|
|
CONSTANT c_sinusoid : string := "data/run_pfb_m_sinusoid_8b_16taps_32points_16b_16b.dat"; -- 1600 lines
|
193 |
|
|
CONSTANT c_impulse_chirp : string := "data/run_pfb_m_impulse_chirp_8b_16taps_32points_16b_16b.dat"; -- 6400 lines
|
194 |
|
|
CONSTANT c_noise_1024 : string := "data/run_pfb_m_noise_8b_16taps_1024points_16b_16b.dat"; -- 51200 lines
|
195 |
|
|
CONSTANT c_noise : string := "data/run_pfb_m_noise_8b_16taps_32points_16b_16b.dat"; -- 1600 lines
|
196 |
|
|
CONSTANT c_dc_agwn : string := "data/run_pfb_m_dc_agwn_8b_16taps_32points_16b_16b.dat"; -- 1600 lines
|
197 |
|
|
-- Complex input
|
198 |
|
|
CONSTANT c_phasor_chirp_1024 : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_1024points_16b_16b.dat"; -- 204800 lines
|
199 |
|
|
CONSTANT c_phasor_chirp_128 : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_128points_16b_16b.dat"; -- 25600 lines
|
200 |
|
|
CONSTANT c_phasor_chirp_64 : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_64points_16b_16b.dat"; -- 12800 lines
|
201 |
|
|
CONSTANT c_phasor_chirp : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_32points_16b_16b.dat"; -- 6400 lines
|
202 |
|
|
CONSTANT c_phasor : string := "data/run_pfb_complex_m_phasor_8b_16taps_32points_16b_16b.dat"; -- 1600 lines
|
203 |
|
|
CONSTANT c_noise_complex_1024 : string := "data/run_pfb_complex_m_noise_complex_8b_16taps_1024points_16b_16b.dat"; -- 51200 lines
|
204 |
|
|
CONSTANT c_noise_complex_128 : string := "data/run_pfb_complex_m_noise_complex_8b_16taps_128points_16b_16b.dat"; -- 6400 lines
|
205 |
|
|
CONSTANT c_noise_complex_64 : string := "data/run_pfb_complex_m_noise_complex_8b_16taps_64points_16b_16b.dat"; -- 3200 lines
|
206 |
|
|
CONSTANT c_noise_complex : string := "data/run_pfb_complex_m_noise_complex_8b_16taps_32points_16b_16b.dat"; -- 1600 lines
|
207 |
|
|
-- Zero input
|
208 |
|
|
CONSTANT c_zero : string := "UNUSED"; -- zero's data
|
209 |
|
|
CONSTANT c_un : string := "UNUSED"; -- zero's data
|
210 |
|
|
|
211 |
|
|
SIGNAL tb_end : STD_LOGIC := '0'; -- declare tb_end to avoid 'No objects found' error on 'when -label tb_end'
|
212 |
|
|
|
213 |
|
|
BEGIN
|
214 |
|
|
|
215 |
|
|
-- -- DUT generics
|
216 |
|
|
-- g_wpfb : t_wpfb := (4, 32, 0, 1,
|
217 |
|
|
-- 16, 1, 8, 16, 16,
|
218 |
|
|
-- false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, 800000,
|
219 |
|
|
-- c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
|
220 |
|
|
-- -- type t_wpfb is record
|
221 |
|
|
-- -- -- General parameters for the wideband poly phase filter
|
222 |
|
|
-- -- wb_factor : natural; -- = default 4, wideband factor
|
223 |
|
|
-- -- nof_points : natural; -- = 1024, N point FFT (Also the number of subbands for the filter part)
|
224 |
|
|
-- -- nof_chan : natural; -- = default 0, defines the number of channels (=time-multiplexed input signals): nof channels = 2**nof_chan
|
225 |
|
|
-- -- nof_wb_streams : natural; -- = 1, the number of parallel wideband streams. The filter coefficients are shared on every wb-stream.
|
226 |
|
|
-- --
|
227 |
|
|
-- -- -- Parameters for the poly phase filter
|
228 |
|
|
-- -- nof_taps : natural; -- = 16, the number of FIR taps per subband
|
229 |
|
|
-- -- fil_backoff_w : natural; -- = 0, number of bits for input backoff to avoid output overflow
|
230 |
|
|
-- -- fil_in_dat_w : natural; -- = 8, number of input bits
|
231 |
|
|
-- -- fil_out_dat_w : natural; -- = 16, number of output bits
|
232 |
|
|
-- -- coef_dat_w : natural; -- = 16, data width of the FIR coefficients
|
233 |
|
|
-- --
|
234 |
|
|
-- -- -- Parameters for the FFT
|
235 |
|
|
-- -- use_reorder : boolean; -- = false for bit-reversed output, true for normal output
|
236 |
|
|
-- -- use_fft_shift : boolean; -- = false for [0, pos, neg] bin frequencies order, true for [neg, 0, pos] bin frequencies order in case of complex input
|
237 |
|
|
-- -- use_separate : boolean; -- = false for complex input, true for two real inputs
|
238 |
|
|
-- -- fft_in_dat_w : natural; -- = 16, number of input bits
|
239 |
|
|
-- -- fft_out_dat_w : natural; -- = 13, number of output bits
|
240 |
|
|
-- -- fft_out_gain_w : natural; -- = 0, output gain factor applied after the last stage output, before requantization to out_dat_w
|
241 |
|
|
-- -- stage_dat_w : natural; -- = 18, number of bits that are used inter-stage
|
242 |
|
|
-- -- guard_w : natural; -- = 2
|
243 |
|
|
-- -- guard_enable : boolean; -- = true
|
244 |
|
|
-- --
|
245 |
|
|
-- -- -- Parameters for the statistics
|
246 |
|
|
-- -- stat_data_w : positive; -- = 56
|
247 |
|
|
-- -- stat_data_sz : positive; -- = 2
|
248 |
|
|
-- -- nof_blk_per_sync : natural; -- = 800000, number of FFT output blocks per sync interval
|
249 |
|
|
-- --
|
250 |
|
|
-- -- -- Pipeline parameters for both poly phase filter and FFT. These are heritaged from the filter and fft libraries.
|
251 |
|
|
-- -- pft_pipeline : t_fft_pipeline; -- Pipeline settings for the pipelined FFT
|
252 |
|
|
-- -- fft_pipeline : t_fft_pipeline; -- Pipeline settings for the parallel FFT
|
253 |
|
|
-- -- fil_pipeline : t_fil_ppf_pipeline; -- Pipeline settings for the filter units
|
254 |
|
|
-- -- end record;
|
255 |
|
|
--
|
256 |
|
|
-- -- TB generics
|
257 |
|
|
-- g_diff_margin : integer := 2; -- maximum difference between HDL output and expected output (> 0 to allow minor rounding differences)
|
258 |
|
|
--
|
259 |
|
|
-- -- PFIR coefficients
|
260 |
|
|
-- g_coefs_file_prefix_ab : string := "data/run_pfb_m_pfir_coeff_fircls1";
|
261 |
|
|
-- g_coefs_file_prefix_c : string := "data/run_pfb_complex_m_pfir_coeff_fircls1";
|
262 |
|
|
--
|
263 |
|
|
-- -- Two real input data files A and B used when g_fft.use_separate = true
|
264 |
|
|
-- -- * 1024 points = 512 subbands
|
265 |
|
|
-- --g_data_file_a : string := "data/run_pfb_m_sinusoid_chirp_8b_16taps_1024points_16b_16b.dat";
|
266 |
|
|
-- --g_data_file_a_nof_lines : natural := 204800;
|
267 |
|
|
-- --g_data_file_b : string := "data/run_pfb_m_noise_8b_16taps_1024points_16b_16b.dat";
|
268 |
|
|
-- --g_data_file_b_nof_lines : natural := 51200;
|
269 |
|
|
-- --g_data_file_b : string := "UNUSED";
|
270 |
|
|
-- --g_data_file_b_nof_lines : natural := 0;
|
271 |
|
|
--
|
272 |
|
|
-- -- * 32 points = 16 subbands
|
273 |
|
|
-- g_data_file_a : string := "data/run_pfb_m_sinusoid_chirp_8b_16taps_32points_16b_16b.dat";
|
274 |
|
|
-- g_data_file_a_nof_lines : natural := 6400;
|
275 |
|
|
-- --g_data_file_a : string := "data/run_pfb_m_sinusoid_8b_16taps_32points_16b_16b.dat";
|
276 |
|
|
-- --g_data_file_a_nof_lines : natural := 160;
|
277 |
|
|
--
|
278 |
|
|
-- --g_data_file_b : string := "data/run_pfb_m_impulse_chirp_8b_16taps_32points_16b_16b.dat";
|
279 |
|
|
-- --g_data_file_b_nof_lines : natural := 6400;
|
280 |
|
|
-- g_data_file_b : string := "UNUSED";
|
281 |
|
|
-- g_data_file_b_nof_lines : natural := 0;
|
282 |
|
|
--
|
283 |
|
|
-- -- One complex input data file C used when g_fft.use_separate = false
|
284 |
|
|
-- -- * 64 points = 64 channels
|
285 |
|
|
-- --g_data_file_c : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_64points_16b_16b.dat";
|
286 |
|
|
-- --g_data_file_c_nof_lines : natural := 12800;
|
287 |
|
|
-- --g_data_file_c : string := "data/run_pfb_complex_m_phasor_8b_16taps_64points_16b_16b.dat";
|
288 |
|
|
-- --g_data_file_c_nof_lines : natural := 320;
|
289 |
|
|
-- --g_data_file_c : string := "data/run_pfb_complex_m_noise_8b_16taps_64points_16b_16b.dat";
|
290 |
|
|
-- --g_data_file_c_nof_lines : natural := 640;
|
291 |
|
|
--
|
292 |
|
|
-- -- * 32 points = 32 channels
|
293 |
|
|
-- --g_data_file_c : string := "data/run_pfb_complex_m_phasor_chirp_8b_16taps_32points_16b_16b.dat";
|
294 |
|
|
-- --g_data_file_c_nof_lines : natural := 6400;
|
295 |
|
|
-- --g_data_file_c : string := "data/run_pfb_complex_m_phasor_8b_16taps_32points_16b_16b.dat";
|
296 |
|
|
-- --g_data_file_c_nof_lines : natural := 1600;
|
297 |
|
|
-- g_data_file_c : string := "data/run_pfb_complex_m_noise_complex_8b_16taps_32points_16b_16b.dat";
|
298 |
|
|
-- g_data_file_c_nof_lines : natural := 1600;
|
299 |
|
|
--
|
300 |
|
|
-- g_data_file_nof_lines : natural := 1600; -- actual number of lines with input data to simulate from the data files, must be <= g_data_file_*_nof_lines
|
301 |
|
|
-- g_enable_in_val_gaps : boolean := FALSE -- when false then in_val flow control active continuously, else with random inactive gaps
|
302 |
|
|
|
303 |
|
|
-- Two real input data A and B
|
304 |
|
|
-- * 1024 point (as in Apertif subband filterbank)
|
305 |
|
|
u_act_wb4_two_real_a0_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_1024, c_dm_1, c_pre_ab_v2, c_pre_c, c_sinusoid_1024_v2, 51200, c_zero, 51200, c_un, 0, 51200, FALSE);
|
306 |
|
|
u_act_wb4_two_real_ab_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_1024, c_dm_1, c_pre_ab, c_pre_c, c_sinusoid_chirp_1024, 204800, c_noise_1024, 51200, c_un, 0, 51200, FALSE);
|
307 |
|
|
u_act_wb1_two_real_ab_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_1024, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp_1024, 204800, c_noise_1024, 51200, c_un, 0, 51200, FALSE);
|
308 |
|
|
u_act_wb1_two_real_chirp_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_1024, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp_1024, 204800, c_zero, 51200, c_un, 0, 51200, FALSE);
|
309 |
|
|
|
310 |
|
|
-- * 32 point
|
311 |
|
|
u_act_wb1_two_real_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE);
|
312 |
|
|
u_act_wb1_two_real_a0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_zero, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE);
|
313 |
|
|
u_act_wb1_two_real_b0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_zero, 6400, c_un, 0, 6400, FALSE);
|
314 |
|
|
u_rnd_wb4_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
315 |
|
|
u_rnd_wb4_two_real_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_4channels, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
316 |
|
|
u_rnd_wb4_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
317 |
|
|
u_rnd_wb1_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
318 |
|
|
u_rnd_wb1_two_real_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_4channels, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
319 |
|
|
u_rnd_wb1_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE);
|
320 |
|
|
|
321 |
|
|
-- Complex input data
|
322 |
|
|
-- * 1024 point
|
323 |
|
|
u_act_wb1_complex_chirp_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_1024, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp_1024, 204800, 51200, FALSE);
|
324 |
|
|
u_act_wb4_complex_chirp_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_1024, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp_1024, 204800, 51200, FALSE);
|
325 |
|
|
|
326 |
|
|
-- * 64 point (as in Apertif channel filterbank)
|
327 |
|
|
u_act_wb1_complex_chirp_64 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_64, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp_64, 12800, 12800, FALSE);
|
328 |
|
|
u_act_wb4_complex_chirp_64 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_64, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp_64, 12800, 12800, FALSE);
|
329 |
|
|
u_act_wb1_complex_flipped_noise_64 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_flipped_64, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex_64, 3200, 3200, FALSE);
|
330 |
|
|
u_act_wb4_complex_flipped_noise_64 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped_64, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex_64, 3200, 3200, FALSE);
|
331 |
|
|
|
332 |
|
|
-- * 32 point
|
333 |
|
|
u_act_wb4_complex_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE);
|
334 |
|
|
u_act_wb4_complex_flipped : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE);
|
335 |
|
|
u_rnd_wb4_complex_flipped_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped_channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE);
|
336 |
|
|
u_rnd_wb1_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE);
|
337 |
|
|
u_rnd_wb4_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE);
|
338 |
|
|
u_rnd_wb1_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE);
|
339 |
|
|
u_rnd_wb4_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE);
|
340 |
|
|
u_rnd_wb1_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
341 |
|
|
u_rnd_wb1_complex_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_4channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
342 |
|
|
u_rnd_wb1_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
343 |
|
|
u_rnd_wb4_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
344 |
|
|
u_rnd_wb4_complex_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_4channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
345 |
|
|
u_rnd_wb4_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE);
|
346 |
|
|
END tb;
|