Commit 6a6e3589 authored by Dimitris Lampridis's avatar Dimitris Lampridis

minor modifications to help with meeting timing

parent b5752886
...@@ -147,6 +147,7 @@ architecture rtl of gn4124_core is ...@@ -147,6 +147,7 @@ architecture rtl of gn4124_core is
signal io_clk : std_logic; signal io_clk : std_logic;
signal serdes_strobe : std_logic; signal serdes_strobe : std_logic;
signal p2l_pll_locked : std_logic; signal p2l_pll_locked : std_logic;
signal arst_logic_in : std_logic;
attribute keep : string; attribute keep : string;
attribute keep of sys_clk : signal is "TRUE"; attribute keep of sys_clk : signal is "TRUE";
...@@ -324,18 +325,22 @@ begin ...@@ -324,18 +325,22 @@ begin
bitslip => open, bitslip => open,
reset => arst_pll, reset => arst_pll,
datain => open, datain => open,
rx_bufpll_lckd => p2l_pll_locked) ; rx_bufpll_lckd => p2l_pll_locked);
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- Reset aligned to core clock -- Reset aligned to core clock
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
cmp_core_rst_sync: gc_sync_ffs arst_logic_in <= not p2l_pll_locked;
cmp_core_rst_sync : gc_reset_multi_aasd
generic map (
g_CLOCKS => 1,
g_RST_LEN => 16)
port map ( port map (
clk_i => sys_clk, arst_i => arst_logic_in,
rst_n_i => rst_n_a_i, clks_i(0) => sys_clk,
data_i => p2l_pll_locked, rst_n_o(0) => sys_rst_n);
synced_o => sys_rst_n);
-- Always active high reset for PLL and SERDES -- Always active high reset for PLL and SERDES
arst_pll <= not(rst_n_a_i); arst_pll <= not(rst_n_a_i);
......
...@@ -97,12 +97,15 @@ architecture rtl of p2l_des is ...@@ -97,12 +97,15 @@ architecture rtl of p2l_des is
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
-- SDR signals -- SDR signals
signal p2l_valid_t : std_logic_vector(1 downto 0) := (others => '0'); signal p2l_data_t : std_logic_vector(31 downto 0) := (others => '0');
signal p2l_dframe_t : std_logic_vector(1 downto 0) := (others => '0'); signal p2l_data_d : std_logic_vector(31 downto 0) := (others => '0');
signal p2l_dframe_t : std_logic_vector(1 downto 0) := (others => '0');
signal p2l_dframe_d : std_logic := '0';
signal p2l_valid_t : std_logic_vector(1 downto 0) := (others => '0');
signal p2l_valid_d : std_logic := '0';
begin begin
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- data inputs -- data inputs
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
...@@ -119,7 +122,7 @@ begin ...@@ -119,7 +122,7 @@ begin
gclk => sys_clk_i, gclk => sys_clk_i,
bitslip => '0', bitslip => '0',
reset => rst_a_i, reset => rst_a_i,
data_out => p2l_data_o, data_out => p2l_data_t,
debug_in => "00", debug_in => "00",
debug => open); debug => open);
...@@ -143,8 +146,6 @@ begin ...@@ -143,8 +146,6 @@ begin
debug_in => "00", debug_in => "00",
debug => open); debug => open);
p2l_dframe_o <= p2l_dframe_t(0);
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- valid input -- valid input
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
...@@ -165,6 +166,20 @@ begin ...@@ -165,6 +166,20 @@ begin
debug_in => "00", debug_in => "00",
debug => open); debug => open);
p2l_valid_o <= p2l_valid_t(0); ------------------------------------------------------------------------------
-- register module outputs to help with timing
------------------------------------------------------------------------------
p_p2l_reg_out : process (sys_clk_i) is
begin
if rising_edge(sys_clk_i) then
p2l_data_d <= p2l_data_t;
p2l_dframe_d <= p2l_dframe_t(0);
p2l_valid_d <= p2l_valid_t(0);
end if;
end process p_p2l_reg_out;
p2l_data_o <= p2l_data_d;
p2l_dframe_o <= p2l_dframe_d;
p2l_valid_o <= p2l_valid_d;
end rtl; end rtl;
...@@ -149,7 +149,7 @@ architecture behaviour of wbmaster32 is ...@@ -149,7 +149,7 @@ architecture behaviour of wbmaster32 is
signal wb_we_t : std_logic; signal wb_we_t : std_logic;
signal wb_sel_t : std_logic_vector(3 downto 0) := (others => '0'); signal wb_sel_t : std_logic_vector(3 downto 0) := (others => '0');
signal wb_stall_t : std_logic; signal wb_stall_t : std_logic;
signal wb_cid_t : std_logic_vector(1 downto 0); signal wb_cid_t : std_logic_vector(1 downto 0) := (others => '0');
signal wb_ack_timeout_cnt : unsigned(log2_ceil(g_ACK_TIMEOUT)-1 downto 0); signal wb_ack_timeout_cnt : unsigned(log2_ceil(g_ACK_TIMEOUT)-1 downto 0);
signal wb_ack_timeout : std_logic; signal wb_ack_timeout : std_logic;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment