Skip to content
Snippets Groups Projects
Commit 377c13ba authored by Job van Wee's avatar Job van Wee
Browse files

Save

parent 5afe6660
No related branches found
No related tags found
1 merge request!253Resolve L2SDP-677
Pipeline #29922 passed
...@@ -258,7 +258,7 @@ BEGIN ...@@ -258,7 +258,7 @@ BEGIN
-- Streaming clock domain -- Streaming clock domain
bs_sosi => bs_sosi, bs_sosi => bs_sosi,
bs_restart => st_rst bs_restart => open
); );
u_bsn_trigger_wg : ENTITY dp_lib.mms_dp_bsn_scheduler u_bsn_trigger_wg : ENTITY dp_lib.mms_dp_bsn_scheduler
......
...@@ -80,7 +80,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2c_ddrctrl IS ...@@ -80,7 +80,8 @@ ARCHITECTURE tb OF tb_lofar2_unb2c_ddrctrl IS
CONSTANT c_cable_delay : TIME := 12 ns; CONSTANT c_cable_delay : TIME := 12 ns;
CONSTANT c_eth_clk_period : TIME := 8 ns; -- 125 MHz XO on UniBoardi CONSTANT c_eth_clk_period : TIME := 8 ns; -- 125 MHz XO on UniBoardi
CONSTANT c_st_clk_period : TIME := 5 ns; -- 200 MHz st clk CONSTANT c_st_clk_period : TIME := 5 ns; -- 200 MHz st clk
CONSTANT c_tb_clk_period : TIME := 1 ns; -- 1000 MHz mm clk CONSTANT c_tb_clk_period : TIME := 1 ns; -- 1000 MHz tb clk
CONSTANT c_mm_clk_period : TIME := 10 ns; -- 100 MHz mm clk
CONSTANT c_pps_period : NATURAL := 1000; CONSTANT c_pps_period : NATURAL := 1000;
CONSTANT c_mm_file_reg_bsn_source_v2 : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2"; CONSTANT c_mm_file_reg_bsn_source_v2 : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2";
...@@ -239,7 +240,7 @@ BEGIN ...@@ -239,7 +240,7 @@ BEGIN
mmf_mm_bus_wr(c_mm_file_reg_diag_wg_wideband_arr, (I*4)+2, INTEGER(c_wg_freq), tb_clk); -- freq mmf_mm_bus_wr(c_mm_file_reg_diag_wg_wideband_arr, (I*4)+2, INTEGER(c_wg_freq), tb_clk); -- freq
mmf_mm_bus_wr(c_mm_file_reg_diag_wg_wideband_arr, (I*4)+3, INTEGER(c_wg_ampl), tb_clk); -- ampl mmf_mm_bus_wr(c_mm_file_reg_diag_wg_wideband_arr, (I*4)+3, INTEGER(c_wg_ampl), tb_clk); -- ampl
END LOOP; END LOOP;
mmf_mm_bus_wr(c_mm_file_reg_stop_in, 0, 0, tb_clk);
-- Read current BSN -- Read current BSN
mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 0, current_bsn_wg(31 DOWNTO 0), tb_clk); mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 0, current_bsn_wg(31 DOWNTO 0), tb_clk);
mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 1, current_bsn_wg(63 DOWNTO 32), tb_clk); mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 1, current_bsn_wg(63 DOWNTO 32), tb_clk);
...@@ -252,7 +253,13 @@ BEGIN ...@@ -252,7 +253,13 @@ BEGIN
mmf_mm_bus_wr(c_mm_file_reg_bsn_scheduler_wg, 1, 0, tb_clk); -- assume v_bsn < 2**31-1 mmf_mm_bus_wr(c_mm_file_reg_bsn_scheduler_wg, 1, 0, tb_clk); -- assume v_bsn < 2**31-1
WAIT FOR c_st_clk_period*100000; WAIT FOR c_mm_clk_period*100000;
mmf_mm_bus_wr(c_mm_file_reg_stop_in, 0, 1**32, tb_clk);
WAIT FOR c_mm_clk_period*16;
mmf_mm_bus_wr(c_mm_file_reg_stop_in, 0, 0, tb_clk);
WAIT FOR c_mm_clk_period*50000;
tb_end <= '1'; tb_end <= '1';
ASSERT FALSE REPORT "Test: OK" SEVERITY FAILURE; ASSERT FALSE REPORT "Test: OK" SEVERITY FAILURE;
WAIT; WAIT;
......
...@@ -128,8 +128,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS ...@@ -128,8 +128,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS
wr_sosi : t_dp_sosi; wr_sosi : t_dp_sosi;
END RECORD; END RECORD;
CONSTANT c_t_reg_init : t_reg := (RESET, '0', '0', TO_UVEC(g_max_adr, c_adr_w), (OTHERS => '0'), 0, '1', '1', '0', 0, (OTHERS => '0'), 0, '0', c_mem_ctlr_mosi_rst, c_dp_sosi_init);
CONSTANT c_t_reg_init : t_reg := (RESET, '0', '0', TO_UVEC(g_max_adr, c_adr_w), (OTHERS => '0'), 0, '0', '1', '0', 0, (OTHERS => '0'), 0, '0', c_mem_ctlr_mosi_rst, c_dp_sosi_init);
-- signals for readability -- signals for readability
...@@ -160,11 +159,6 @@ BEGIN ...@@ -160,11 +159,6 @@ BEGIN
v.dvr_mosi.wr := '1'; v.dvr_mosi.wr := '1';
v.wr_sosi.valid := '1'; v.wr_sosi.valid := '1';
IF rst = '0' THEN
v.state := WAIT_FOR_SOP;
END IF;
WHEN WAIT_FOR_SOP => WHEN WAIT_FOR_SOP =>
v.dvr_mosi.burstbegin := '0'; v.dvr_mosi.burstbegin := '0';
...@@ -431,6 +425,14 @@ BEGIN ...@@ -431,6 +425,14 @@ BEGIN
END IF; END IF;
-- the statemachine goes to Idle when its finished or when its waiting on other components. -- the statemachine goes to Idle when its finished or when its waiting on other components.
WHEN OTHERS =>
v := c_t_reg_init;
END CASE;
IF q_reg.state = RESET OR q_reg.state = IDLE THEN
IF stop_in = '1' THEN IF stop_in = '1' THEN
v.ready_for_set_stop := '1'; v.ready_for_set_stop := '1';
ELSIF q_reg.ready_for_set_stop = '1' AND inp_sosi.eop = '1' THEN ELSIF q_reg.ready_for_set_stop = '1' AND inp_sosi.eop = '1' THEN
...@@ -444,15 +446,7 @@ BEGIN ...@@ -444,15 +446,7 @@ BEGIN
ELSE ELSE
v.state := IDLE; v.state := IDLE;
END IF; END IF;
END IF;
WHEN OTHERS =>
v := c_t_reg_init;
END CASE;
IF rst = '1' THEN IF rst = '1' THEN
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment