diff --git a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd index 2dc5234f8286fadf4ab63542e1071fc23e2443ee..a13a82f0cd4cafa3515c5acf6ccdc131ef3b0b64 100644 --- a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd +++ b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd @@ -98,6 +98,8 @@ architecture str of ip_arria10_e1sg_jesd204b_v2 is signal reset_seq_miso_arr : t_mem_miso_arr(g_nof_streams - 1 downto 0) := (others => c_mem_miso_rst); -- Clocks + -- . The 200MHz rxframe_clk is not used in v2, the constraints on the PLL output frame_clk in + -- lofar2_unb2c_sdp_station.sdc will be ingored by Quartus. signal rxframe_clk : std_logic; signal rxlink_clk : std_logic; signal jesd204b_avs_clk : std_logic; @@ -299,7 +301,7 @@ begin dp_sosi <= i_dp_sosi_arr(0); -- The mm_rst resets the MM interface, but is also used to reset the JESD IP reset sequencer. - -- Therefore a reset of mm_rst effectively resets the entire ip_arria10_e1sg_jesd204b. + -- Therefore a reset of mm_rst effectively resets the entire JESD IP. -- The avs clock is driven by the rxlink_clk for simulation. This is a workaround for a bug -- in the Q18.0 IP where the jesd receiver fails to recognize the SYSREF pulse @@ -482,6 +484,10 @@ begin end if; end if; end process; + + -- Apply toggling ready control for cross 100 MHz rxlink_clk domain to 200MHz dp_clk domain + -- u_dp_fifo_dc_arr FIFO. + dplink_siso_arr(i).ready <= dp_ready; end generate; -- gen_jesd204b_rx_channels : for I in 0 to g_nof_streams-1 generate ----------------------------------------------------------------------------- @@ -514,8 +520,6 @@ begin src_out_arr => dplink_sosi_arr ); - dplink_siso_arr <= func_dp_stream_arr_set(dplink_siso_arr, dp_ready, "READY"); - -- The dp_clk at 200 MHz and rxlink_clk at 100 MHz are locked to same reference. -- Toggle dp_index every dp_clk cycle to have the same read rate in dp_clk domain, -- as the write rate in rxlink_clk domain. diff --git a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd index a3fb2af219ecf722f51dde08192086c41a6f21e6..67de28d5d296b23626460ec7c9a5fdfd3290e3fc 100644 --- a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd +++ b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd @@ -98,6 +98,8 @@ architecture str of ip_arria10_e2sg_jesd204b_v2 is signal reset_seq_miso_arr : t_mem_miso_arr(g_nof_streams - 1 downto 0) := (others => c_mem_miso_rst); -- Clocks + -- . The 200MHz rxframe_clk is not used in v2, the constraints on the PLL output frame_clk in + -- lofar2_unb2c_sdp_station.sdc will be ingored by Quartus. signal rxframe_clk : std_logic; signal rxlink_clk : std_logic; signal jesd204b_avs_clk : std_logic; @@ -299,7 +301,7 @@ begin dp_sosi <= i_dp_sosi_arr(0); -- The mm_rst resets the MM interface, but is also used to reset the JESD IP reset sequencer. - -- Therefore a reset of mm_rst effectively resets the entire ip_arria10_e2sg_jesd204b. + -- Therefore a reset of mm_rst effectively resets the entire JESD IP. -- The avs clock is driven by the rxlink_clk for simulation. This is a workaround for a bug -- in the Q18.0 IP where the jesd receiver fails to recognize the SYSREF pulse @@ -482,6 +484,10 @@ begin end if; end if; end process; + + -- Apply toggling ready control for cross 100 MHz rxlink_clk domain to 200MHz dp_clk domain + -- u_dp_fifo_dc_arr FIFO. + dplink_siso_arr(i).ready <= dp_ready; end generate; -- gen_jesd204b_rx_channels : for I in 0 to g_nof_streams-1 generate ----------------------------------------------------------------------------- @@ -514,8 +520,6 @@ begin src_out_arr => dplink_sosi_arr ); - dplink_siso_arr <= func_dp_stream_arr_set(dplink_siso_arr, dp_ready, "READY"); - -- The dp_clk at 200 MHz and rxlink_clk at 100 MHz are locked to same reference. -- Toggle dp_index every dp_clk cycle to have the same read rate in dp_clk domain, -- as the write rate in rxlink_clk domain.