Resolve L2SDP-285
Closes L2SDP-285
Merge request reports
Activity
added 2 commits
170 171 -- SST UDP offload MM address widths 171 172 CONSTANT c_sdp_reg_stat_enable_addr_w :NATURAL := 1; 172 173 174 -- XSUB 175 CONSTANT c_sdp_crosslets_index_w : NATURAL := ceil_log2(c_sdp_N_sub); --8 changed this line in version 3 of the diff
55 reg_crosslets_info_mosi : IN t_mem_mosi := c_mem_mosi_rst; 56 reg_crosslets_info_miso : OUT t_mem_miso := c_mem_miso_rst; 57 58 reg_bsn_scheduler_xsub_mosi : IN t_mem_mosi := c_mem_mosi_rst; 59 reg_bsn_scheduler_xsub_miso : OUT t_mem_miso := c_mem_miso_rst; 60 61 out_crosslets_info : OUT STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0) 62 63 ); 64 END sdp_crosslets_subband_select; 65 66 ARCHITECTURE str OF sdp_crosslets_subband_select IS 67 68 69 CONSTANT c_crosslets_info_dly : NATURAL := 1; 70 CONSTANT c_row_select_slv_w : NATURAL := ceil_log2(c_Sdp_P_pfb); changed this line in version 3 of the diff
13 -- Unless required by applicable law or agreed to in writing, software 14 -- distributed under the License is distributed on an "AS IS" BASIS, 15 -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 -- See the License for the specific language governing permissions and 17 -- limitations under the License. 18 -- 19 ------------------------------------------------------------------------------- 20 21 ------------------------------------------------------------------------------- 22 -- 23 -- Author: R. van der Walle 24 -- Purpose: 25 -- Select subbands from incoming blocks 26 -- Description: 27 -- The Crosslet subband select selects N_crosslets from each incoming block. Per 28 -- crosslet there are S_pn = 12 subbands, one from each signal input of the PN. 179 v_offsets(I) := TO_UINT(crosslets_info_reg((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w)); 180 END LOOP; 181 END IF; 182 183 IF in_sosi_arr(0).sync = '1' AND start_trigger = '0' THEN 184 v.sync_detected := '1'; 185 END IF; 186 187 IF r.started = '1' AND in_sosi_arr(0).eop = '1' AND r.sync_detected = '1' THEN -- change offsets 1 packet after the sync due to the buffered packet in reorder_col_wide_select 188 v.sync_detected := '0'; 189 FOR I IN 0 TO g_N_crosslets-1 LOOP 190 v_offsets(I) := r.offsets(I) + TO_UINT(crosslets_info_reg(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w)); 191 END LOOP; 192 END IF; 193 194 IF col_select_miso.waitrequest = '0' AND r.started = '1' THEN Jawel ik heb in reorder_col_select die gebruikt om aan te geven wanneer read requests gedaan moeten worden. de waitrequest wordt laag wanneer de selectie voor de eerste subband gedaan moet worden en hij wordt hoog na de laatste subband selectie. Dus in dit geval is de waitrequest ieder block N_crosslets * S_pn cycles laag.
changed this line in version 3 of the diff
60 61 out_crosslets_info : OUT STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0) 62 63 ); 64 END sdp_crosslets_subband_select; 65 66 ARCHITECTURE str OF sdp_crosslets_subband_select IS 67 68 69 CONSTANT c_crosslets_info_dly : NATURAL := 1; 70 CONSTANT c_row_select_slv_w : NATURAL := ceil_log2(c_Sdp_P_pfb); 71 CONSTANT c_row_select_pipeline : NATURAL := 1; 72 CONSTANT c_out_sosi_pipeline : NATURAL := 1; 73 74 TYPE t_crosslets_control_reg IS RECORD -- local registers 75 i_offset : NATURAL; changed this line in version 3 of the diff
15 -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 -- See the License for the specific language governing permissions and 17 -- limitations under the License. 18 -- 19 ------------------------------------------------------------------------------- 20 21 ------------------------------------------------------------------------------- 22 -- 23 -- Author: R. van der Walle 24 -- Purpose: 25 -- Select subbands from incoming blocks 26 -- Description: 27 -- The Crosslet subband select selects N_crosslets from each incoming block. Per 28 -- crosslet there are S_pn = 12 subbands, one from each signal input of the PN. 29 -- Remark: 30 -- . changed this line in version 3 of the diff
172 v.i_offset := 0; 173 v.i_row := 0; 174 v.i_col := 0; 175 v.sync_detected := '0'; 176 177 v.step := TO_UINT(crosslets_info_reg(c_sdp_crosslets_info_reg_w-1 DOWNTO c_sdp_crosslets_info_reg_w - c_sdp_crosslets_index_w)); 178 FOR I IN 0 TO g_N_crosslets-1 LOOP 179 v_offsets(I) := TO_UINT(crosslets_info_reg((I+1)*c_sdp_crosslets_index_w-1 DOWNTO I*c_sdp_crosslets_index_w)); 180 END LOOP; 181 END IF; 182 183 IF in_sosi_arr(0).sync = '1' AND start_trigger = '0' THEN 184 v.sync_detected := '1'; 185 END IF; 186 187 IF r.started = '1' AND in_sosi_arr(0).eop = '1' AND r.sync_detected = '1' THEN -- change offsets 1 packet after the sync due to the buffered packet in reorder_col_wide_select changed this line in version 3 of the diff
206 END IF; 207 ELSE 208 v.i_col := r.i_col+1; 209 END IF; 210 211 v.col_select_mosi.rd := '1'; 212 v.col_select_mosi.address(c_sdp_crosslets_index_w-1 DOWNTO 0) := TO_UVEC(c_sdp_Q_fft*v_offsets(r.i_offset) + r.i_col, c_sdp_crosslets_index_w); 213 v.row_select_slv := TO_UVEC(r.i_row, c_row_select_slv_w); 214 END IF; 215 v.offsets := v_offsets; 216 nxt_r <= v; 217 END PROCESS; 218 219 col_select_mosi <= r.col_select_mosi; 220 221 u_pipe_row_select : ENTITY common_lib.common_pipeline 273 dp_rst => dp_rst, 274 dp_clk => dp_clk, 275 276 in_select => row_select_slv, 277 278 -- Streaming 279 input_sosi_arr => col_sosi_arr, 280 281 output_sosi_arr(0) => row_sosi 282 ); 283 284 285 --------------------------------------------------------------- 286 -- Out Crosslet info pipeline 287 --------------------------------------------------------------- 288 u_common_pipeline : ENTITY common_lib.common_pipeline 200 200 retrieve_sosi.im <= RESIZE_DP_DSP_DATA(i_col_select_miso.rddata(c_nof_complex*g_dsp_data_w-1 DOWNTO g_dsp_data_w)); 201 201 retrieve_sosi.data <= RESIZE_DP_DATA(i_col_select_miso.rddata( c_nof_complex*g_dsp_data_w-1 DOWNTO 0)); 202 202 retrieve_sosi.valid <= i_col_select_miso.rdval; 203 retrieve_sosi.sop <= retrieve_sop_dly(c_retrieve_lat); 204 retrieve_sosi.eop <= retrieve_eop_dly(c_retrieve_lat); 203 retrieve_sosi.sop <= retrieve_sop_dly(c_retrieve_lat) AND i_col_select_miso.rdval; changed this line in version 3 of the diff
15 -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 -- See the License for the specific language governing permissions and 17 -- limitations under the License. 18 -- 19 ------------------------------------------------------------------------------- 20 21 ------------------------------------------------------------------------------- 22 -- Author : R vd Walle 23 -- Purpose: Verify sdp_crosslets_subband_select. 24 -- Usage: 25 -- > as 10 26 -- > run -all 27 -- * The tb is self stopping and self checking,tb_end will stop the simulation by 28 -- stopping the clk and thus all toggling. 29 -- 30 -- Description: The tb verifies out_sosi and out_crosslets_info of the dut. Kun je iets meer aangeven wat je test.
Deze tb test moet niet de details van de reorder blocken testen, want dat is met de tb_reorder_*.vhd al gedaan. Iedere hierarchy laag test wat nieuw is op die laag. Doel van deze tb is om te testen dat het samenstel van componenten en RTL in sdp_crosslets_subband_select goed werkt. Deus bijv het starten mbv de bsn scheduler en de selectie van de N_crosslets per sync interval.
Is er geen multi tb nodig?
Edited by Eric Kooistrachanged this line in version 3 of the diff
mentioned in commit 85965a51