Skip to content
Snippets Groups Projects
Commit 934c2816 authored by BRONES Romain's avatar BRONES Romain
Browse files

Add CDC between AXIMM and logic

* this is cleaner, but they were false path
* also fix the AXIMM reset
parent b02e1334
No related branches found
No related tags found
No related merge requests found
...@@ -67,7 +67,6 @@ architecture struct of top_combpm_electron is ...@@ -67,7 +67,6 @@ architecture struct of top_combpm_electron is
-- SIGNAL DECLARATION -- -- SIGNAL DECLARATION --
------------------------ ------------------------
signal sync_resetn : std_logic; -- This is async reset with sync deassertion signal sync_resetn : std_logic; -- This is async reset with sync deassertion
signal sync_reset : std_logic; -- This is async reset with sync deassertion
signal usrclk : std_logic; signal usrclk : std_logic;
signal rst : std_logic; signal rst : std_logic;
...@@ -94,10 +93,10 @@ architecture struct of top_combpm_electron is ...@@ -94,10 +93,10 @@ architecture struct of top_combpm_electron is
signal addrmap_w : t_addrmap_combpm_in; signal addrmap_w : t_addrmap_combpm_in;
signal addrmap_r : t_addrmap_combpm_out; signal addrmap_r : t_addrmap_combpm_out;
signal cdc_status_array_axi : std_logic_vector(155 downto 0); -- CDC, clock axi side signal cdc_status_array_axi : std_logic_vector(156 downto 0); -- CDC, clock axi side
signal cdc_status_array_bpm : std_logic_vector(155 downto 0); -- CDC, clock bpm side signal cdc_status_array_bpm : std_logic_vector(156 downto 0); -- CDC, clock bpm side
signal cdc_control_array_axi : std_logic_vector(2 downto 0); -- CDC, clock axi side signal cdc_control_array_axi : std_logic_vector(3 downto 0); -- CDC, clock axi side
signal cdc_control_array_bpm : std_logic_vector(2 downto 0); -- CDC, clock bpm side signal cdc_control_array_bpm : std_logic_vector(3 downto 0); -- CDC, clock bpm side
signal m_axis_decoded_tvalid : std_logic; signal m_axis_decoded_tvalid : std_logic;
signal m_axis_decoded_tdata : std_logic_vector(2*C_W_POS+C_W_BPMID+C_W_SEQ-1 downto 0); signal m_axis_decoded_tdata : std_logic_vector(2*C_W_POS+C_W_BPMID+C_W_SEQ-1 downto 0);
...@@ -142,7 +141,6 @@ begin ...@@ -142,7 +141,6 @@ begin
-- Reset invert polarity -- Reset invert polarity
rst <= not rst_n; rst <= not rst_n;
sync_reset <= not sync_resetn;
-- Debug -- Debug
debug_datarx <= gt_datarx; debug_datarx <= gt_datarx;
...@@ -169,7 +167,7 @@ begin ...@@ -169,7 +167,7 @@ begin
inst_aximm: entity desyrdl.combpm inst_aximm: entity desyrdl.combpm
port map( port map(
pi_clock => s_axi_aclk, pi_clock => s_axi_aclk,
pi_reset => sync_reset, pi_reset => rst,
pi_s_top => s_axi_m2s, pi_s_top => s_axi_m2s,
po_s_top => s_axi_s2m, po_s_top => s_axi_s2m,
pi_addrmap => addrmap_w, pi_addrmap => addrmap_w,
...@@ -245,10 +243,12 @@ begin ...@@ -245,10 +243,12 @@ begin
addrmap_w.VALIDFRAMERATE.data.data <= cdc_status_array_axi(107 downto 76); addrmap_w.VALIDFRAMERATE.data.data <= cdc_status_array_axi(107 downto 76);
addrmap_w.INVALIDFRAMERATE.data.data <= cdc_status_array_axi(139 downto 108); addrmap_w.INVALIDFRAMERATE.data.data <= cdc_status_array_axi(139 downto 108);
addrmap_w.FRAMESEQ.data.data <= cdc_status_array_axi(155 downto 140); addrmap_w.FRAMESEQ.data.data <= cdc_status_array_axi(155 downto 140);
addrmap_w.GT_STATUS.RXCLKACTIVE.data(0) <= cdc_status_array_axi(156);
cdc_control_array_axi(0) <= addrmap_r.GT_CONTROL.RXRSTDATAPATH.data(0); cdc_control_array_axi(0) <= addrmap_r.GT_CONTROL.RXRSTDATAPATH.data(0);
cdc_control_array_axi(1) <= addrmap_r.GT_CONTROL.RXRSTPLLDATAPATH.data(0); cdc_control_array_axi(1) <= addrmap_r.GT_CONTROL.RXRSTPLLDATAPATH.data(0);
cdc_control_array_axi(2) <= addrmap_r.GT_CONTROL.RXCOMMADETEN.data(0); cdc_control_array_axi(2) <= addrmap_r.GT_CONTROL.RXCOMMADETEN.data(0);
cdc_control_array_axi(3) <= addrmap_r.RESET_ERROR.SOFTRESET.data(0);
end block blk_desyrdl; end block blk_desyrdl;
...@@ -270,7 +270,7 @@ begin ...@@ -270,7 +270,7 @@ begin
m_axis_tuser_mcts => open, m_axis_tuser_mcts => open,
mc_time => mc_time, mc_time => mc_time,
soft_reset => addrmap_r.RESET.SOFTRESET.data(0), soft_reset => cdc_control_array_bpm(3),
seq_offset => signed(addrmap_r.SEQ_OFFSET.data.data), seq_offset => signed(addrmap_r.SEQ_OFFSET.data.data),
frame_seq_cnt => frame_seq_cnt, frame_seq_cnt => frame_seq_cnt,
frame_valid_cnt => frame_valid_cnt, frame_valid_cnt => frame_valid_cnt,
...@@ -280,7 +280,7 @@ begin ...@@ -280,7 +280,7 @@ begin
flag_cnt_seq_mismatch => cnt_seq_mismatch, flag_cnt_seq_mismatch => cnt_seq_mismatch,
flag_seq_discontinuity => seq_discontinuity, flag_seq_discontinuity => seq_discontinuity,
flag_frame_error => frame_error, flag_frame_error => frame_error,
flag_reset => addrmap_r.RESET_ERROR.SOFTRESET.data(0) flag_reset => cdc_control_array_bpm(3)
); );
-- Pack fo convenience -- Pack fo convenience
...@@ -325,7 +325,7 @@ begin ...@@ -325,7 +325,7 @@ begin
-- Status -- Status
gtwiz_userclk_tx_active_out => open, gtwiz_userclk_tx_active_out => open,
gtwiz_userclk_rx_active_out => addrmap_w.GT_STATUS.RXCLKACTIVE.data, gtwiz_userclk_rx_active_out(0) => cdc_status_array_bpm(156),
gtwiz_reset_tx_done_out => open, gtwiz_reset_tx_done_out => open,
gtwiz_reset_rx_done_out(0) => gt_rxresetdone, gtwiz_reset_rx_done_out(0) => gt_rxresetdone,
gtpowergood_out(0) => gt_powergood, gtpowergood_out(0) => gt_powergood,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment