pwait_tx_rdy: integer := 3000;
pport_rx_rdy: string := "ENABLED";
pwait_rx_rdy: integer := 3000);
- port (rui_rst: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(132)
- rui_serdes_rst_dual_c: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(133)
- rui_rst_dual_c: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(134)
- rui_rsl_disable: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(135)
- rui_tx_ref_clk: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(137)
- rui_tx_serdes_rst_c: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(138)
- rui_tx_pcs_rst_c: in std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(139)
- rdi_pll_lol: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(140)
- rui_rx_ref_clk: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(142)
- rui_rx_serdes_rst_c: in std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(143)
- rui_rx_pcs_rst_c: in std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(144)
- rdi_rx_los_low_s: in std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(145)
- rdi_rx_cdr_lol_s: in std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(146)
- rdo_serdes_rst_dual_c: out std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(149)
- rdo_rst_dual_c: out std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(150)
- ruo_tx_rdy: out std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(152)
- rdo_tx_serdes_rst_c: out std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(153)
- rdo_tx_pcs_rst_c: out std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(154)
- ruo_rx_rdy: out std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(156)
- rdo_rx_serdes_rst_c: out std_logic_vector(3 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(157)
- rdo_rx_pcs_rst_c: out std_logic_vector(3 downto 0) -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(158)
+ port (rui_rst: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(132)
+ rui_serdes_rst_dual_c: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(133)
+ rui_rst_dual_c: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(134)
+ rui_rsl_disable: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(135)
+ rui_tx_ref_clk: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(137)
+ rui_tx_serdes_rst_c: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(138)
+ rui_tx_pcs_rst_c: in std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(139)
+ rdi_pll_lol: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(140)
+ rui_rx_ref_clk: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(142)
+ rui_rx_serdes_rst_c: in std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(143)
+ rui_rx_pcs_rst_c: in std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(144)
+ rdi_rx_los_low_s: in std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(145)
+ rdi_rx_cdr_lol_s: in std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(146)
+ rdo_serdes_rst_dual_c: out std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(149)
+ rdo_rst_dual_c: out std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(150)
+ ruo_tx_rdy: out std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(152)
+ rdo_tx_serdes_rst_c: out std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(153)
+ rdo_tx_pcs_rst_c: out std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(154)
+ ruo_rx_rdy: out std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(156)
+ rdo_rx_serdes_rst_c: out std_logic_vector(3 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(157)
+ rdo_rx_pcs_rst_c: out std_logic_vector(3 downto 0) -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(158)
);
- end component serdes_sync_0rsl_core; -- syn_black_box=1 -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/rsl_core_syn.v(88)
+ end component serdes_sync_0rsl_core; -- syn_black_box=1 -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/rsl_core_syn.v(88)
component serdes_sync_0sll_core is
generic (PPROTOCOL: string := "G8B10B";
- PLOL_SETTING: integer := 1;
+ PLOL_SETTING: integer := 0;
PDYN_RATE_CTRL: string := "DISABLED";
PPCIE_MAX_RATE: string := "2.5";
PDIFF_VAL_LOCK: integer := 20;
- PDIFF_VAL_UNLOCK: integer := 132;
+ PDIFF_VAL_UNLOCK: integer := 39;
PPCLK_TC: integer := 65536;
PDIFF_DIV11_VAL_LOCK: integer := 0;
PDIFF_DIV11_VAL_UNLOCK: integer := 0;
PPCLK_DIV11_TC: integer := 0);
- port (sli_rst: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(125)
- sli_refclk: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(126)
- sli_pclk: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(127)
- sli_div2_rate: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(128)
- sli_div11_rate: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(129)
- sli_gear_mode: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(130)
- sli_cpri_mode: in std_logic_vector(2 downto 0); -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(131)
- sli_pcie_mode: in std_logic; -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(132)
- slo_plol: out std_logic -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(135)
+ port (sli_rst: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(125)
+ sli_refclk: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(126)
+ sli_pclk: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(127)
+ sli_div2_rate: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(128)
+ sli_div11_rate: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(129)
+ sli_gear_mode: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(130)
+ sli_cpri_mode: in std_logic_vector(2 downto 0); -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(131)
+ sli_pcie_mode: in std_logic; -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(132)
+ slo_plol: out std_logic -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(135)
);
- end component serdes_sync_0sll_core; -- syn_black_box=1 -- /d/jspc29/lattice/diamond/3.10_x64/ispfpga/sa5p00/data/sll_core_template.v(107)
+ end component serdes_sync_0sll_core; -- syn_black_box=1 -- /opt/lattice/diamond/3.12/ispfpga/sa5p00/data/sll_core_template.v(107)
signal n48,n47,n1,n2,n3,n4,rx_pclk_c,tx_pclk_c,n5,n6,n7,n8,n9,
n10,n11,n12,rx_los_low_s_c,n13,n14,n15,n16,rx_cdr_lol_s_c,n17,
n18,rsl_tx_pcs_rst_c,rsl_rx_pcs_rst_c,rsl_rx_serdes_rst_c,rsl_rst_dual_c,
pll_lol <= pll_lol_c;
DCU0_inst: component DCUA generic map (D_MACROPDB=>"0b1",D_IB_PWDNB=>"0b1",
D_XGE_MODE=>"0b0",D_LOW_MARK=>"0d4",D_HIGH_MARK=>"0d12",D_BUS8BIT_SEL=>"0b0",
- D_CDR_LOL_SET=>"0b11",D_TXPLL_PWDNB=>"0b1",D_BITCLK_LOCAL_EN=>"0b1",
+ D_CDR_LOL_SET=>"0b00",D_TXPLL_PWDNB=>"0b1",D_BITCLK_LOCAL_EN=>"0b1",
D_BITCLK_ND_EN=>"0b0",D_BITCLK_FROM_ND_EN=>"0b0",D_SYNC_LOCAL_EN=>"0b1",
D_SYNC_ND_EN=>"0b0",CH0_UC_MODE=>"0b1",CH0_PCIE_MODE=>"0b0",CH0_RIO_MODE=>"0b0",
CH0_WA_MODE=>"0b0",CH0_INVERT_RX=>"0b0",CH0_INVERT_TX=>"0b0",CH0_PRBS_SELECTION=>"0b0",
CH0_RXIN_CM=>"0b11",CH0_LEQ_OFFSET_SEL=>"0b0",CH0_LEQ_OFFSET_TRIM=>"0b000",
CH0_RLOS_SEL=>"0b1",CH0_RX_LOS_LVL=>"0b100",CH0_RX_LOS_CEQ=>"0b11",
CH0_RX_LOS_HYST_EN=>"0b0",CH0_RX_LOS_EN=>"0b1",CH0_LDR_RX2CORE_SEL=>"0b0",
- CH0_LDR_CORE2TX_SEL=>"0b0",D_TX_MAX_RATE=>"2",CH0_CDR_MAX_RATE=>"2",
+ CH0_LDR_CORE2TX_SEL=>"0b0",D_TX_MAX_RATE=>"2.000",CH0_CDR_MAX_RATE=>"2.0000",
CH0_TXAMPLITUDE=>"0d800",CH0_TXDEPRE=>"DISABLED",CH0_TXDEPOST=>"DISABLED",
CH0_PROTOCOL=>"G8B10B",D_ISETLOS=>"0d0",D_SETIRPOLY_AUX=>"0b10",D_SETICONST_AUX=>"0b01",
D_SETIRPOLY_CH=>"0b10",D_SETICONST_CH=>"0b10",D_REQ_ISET=>"0b001",
D_CMUSETINITVCT=>"0b00",D_CMUSETZGM=>"0b000",D_CMUSETP2AGM=>"0b000",
D_CMUSETP1GM=>"0b000",D_CMUSETI4CPZ=>"0d3",D_CMUSETI4CPP=>"0d3",D_CMUSETICP4Z=>"0b101",
D_CMUSETICP4P=>"0b01",D_CMUSETBIASI=>"0b00",D_SETPLLRC=>"0d1",CH0_RX_RATE_SEL=>"0d10",
- D_REFCK_MODE=>"0b001",D_TX_VCO_CK_DIV=>"0b000",D_PLL_LOL_SET=>"0b01",
+ D_REFCK_MODE=>"0b001",D_TX_VCO_CK_DIV=>"0b000",D_PLL_LOL_SET=>"0b00",
D_RG_EN=>"0b0",D_RG_SET=>"0b00")
port map (CH0_HDINP=>hdinp,CH1_HDINP=>n106,CH0_HDINN=>hdinn,CH1_HDINN=>n106,
D_TXBIT_CLKP_FROM_ND=>n47,D_TXBIT_CLKN_FROM_ND=>n47,D_SYNC_ND=>n47,D_TXPLL_LOL_FROM_ND=>n47,
serdes_sync_0_rx_cv_err(0) => rx_error,
serdes_sync_0_tx_idle_c => '0',
- serdes_sync_0_signal_detect_c => '0',
+ serdes_sync_0_signal_detect_c => '1',
serdes_sync_0_rx_los_low_s => rx_los_low,
serdes_sync_0_lsm_status_s => lsm_status,
serdes_sync_0_rx_cdr_lol_s => rx_cdr_lol,
serdes_sync_0_rx_cv_err(0) => rx_error,
serdes_sync_0_tx_idle_c => '0',
- serdes_sync_0_signal_detect_c => '0',
+ serdes_sync_0_signal_detect_c => '1',
serdes_sync_0_rx_los_low_s => rx_los_low,
serdes_sync_0_lsm_status_s => lsm_status,
serdes_sync_0_rx_cdr_lol_s => rx_cdr_lol,
SFP_LOS => SD_LOS_IN,
TX_LOL => tx_pll_lol,
+ RX_CV => rx_error, -- NEW
+ RX_LSM => lsm_status, -- NEW
RX_CDR_LOL => rx_cdr_lol,
RX_LOS => rx_los_low,
WA_POSITION => wa_position_sel,
DEBUG_OUT => open
);
-STAT_DEBUG(11 downto 0) <= debug_med_sync_control_i(11 downto 0);
-STAT_DEBUG(15 downto 12) <= (others => '0');
-STAT_DEBUG(31 downto 16) <= wa_position;
-STAT_DEBUG(63 downto 32) <= (others => '0');
+STAT_DEBUG(12 downto 0) <= debug_med_sync_control_i(12 downto 0);
+STAT_DEBUG(13) <= lsm_status;
+STAT_DEBUG(14) <= rx_cdr_lol;
+STAT_DEBUG(15) <= rx_error;
+STAT_DEBUG(19 downto 16) <= debug_med_sync_control_i(16 downto 13);
+STAT_DEBUG(63 downto 20) <= (others => '0');
stat_med(0) <= rst_qd;
stat_med(1) <= rx_pcs_rst;
SFP_LOS : in std_logic;
TX_LOL : in std_logic;
+ RX_CV : in std_logic; -- NEW
+ RX_LSM : in std_logic; -- NEW
RX_CDR_LOL : in std_logic;
RX_LOS : in std_logic;
WA_POSITION : in std_logic_vector(3 downto 0);
signal reset_i : std_logic;
signal rst_n : std_logic;
+--signal rst : std_logic;
signal rst_n_tx : std_logic;
signal finished_reset_rx : std_logic;
signal finished_reset_rx_q : std_logic;
signal tx_pcs_rst_i : std_logic;
signal quad_rst_i : std_logic;
+
begin
+
rst_n_tx <= not (CLEAR or sd_los_i or make_link_reset_real_i or RESET) when (IS_SYNC_SLAVE = 1 and IS_TX_RESET = 1)
else not (CLEAR or make_link_reset_real_i or RESET);
rst_n <= not (CLEAR or sd_los_i or make_link_reset_real_i or RESET);
+--rst <= (CLEAR or sd_los_i or make_link_reset_real_i or RESET);
reset_i <= (RESET or sd_los_i or make_link_reset_real_i);
media_med2int_i.clk_half <= CLK_RXHALF;
-------------------------------------------------
-- Reset RX FSM
-------------------------------------------------
-THE_RX_FSM : rx_reset_fsm
+--THE_RX_FSM : rx_reset_fsm
+-- port map(
+-- RST_N => rst_n,
+-- RX_REFCLK => CLK_REF,
+-- TX_PLL_LOL_QD_S => TX_LOL,
+-- RX_SERDES_RST_CH_C => rx_serdes_rst_i,
+-- RX_CDR_LOL_CH_S => RX_CDR_LOL,
+-- RX_LOS_LOW_CH_S => RX_LOS,
+-- RX_PCS_RST_CH_C => rx_pcs_rst_i,
+-- WA_POSITION => wa_position_rx,
+-- NORMAL_OPERATION_OUT => finished_reset_rx,
+-- STATE_OUT => rx_fsm_state
+-- );
+
+THE_MAIN_RX_RST: main_rx_reset_RS
port map(
- RST_N => rst_n,
- RX_REFCLK => CLK_REF,
- TX_PLL_LOL_QD_S => TX_LOL,
- RX_SERDES_RST_CH_C => rx_serdes_rst_i,
- RX_CDR_LOL_CH_S => RX_CDR_LOL,
- RX_LOS_LOW_CH_S => RX_LOS,
- RX_PCS_RST_CH_C => rx_pcs_rst_i,
- WA_POSITION => wa_position_rx,
- NORMAL_OPERATION_OUT => finished_reset_rx,
- STATE_OUT => rx_fsm_state
- );
-
+ CLEAR => CLEAR, -- should work
+ CLK_REF => CLK_REF, -- ok
+ CDR_LOL_IN => RX_CDR_LOL, -- ok
+ CV_IN => RX_CV, -- ok
+ LSM_IN => RX_LSM, -- ok
+ LOS_IN => RX_LOS, -- ok
+ WAP_ZERO_IN => '1', -- not needed
+ -- outputs
+ WAP_REQ_OUT => open, -- not needed
+ RX_SERDES_RST_OUT => rx_serdes_rst_i, -- ok -- CLK_REF based
+ RX_PCS_RST_OUT => rx_pcs_rst_i, -- ok -- CLK_REF based
+ LINK_RX_READY_OUT => finished_reset_rx, -- should work -- CLK_REF based
+ STATE_OUT => rx_fsm_state
+ );
+
-- crossing the abbyss
THE_ABBYSS_PROC: process( CLK_RXI )
begin
-------------------------------------------------
-- Reset TX FSM
-------------------------------------------------
-THE_TX_FSM : tx_reset_fsm
- port map(
- RST_N => rst_n_tx,
- TX_REFCLK => CLK_REF,
- TX_PLL_LOL_QD_S => TX_LOL,
- RST_QD_C => quad_rst_i,
- TX_PCS_RST_CH_C => tx_pcs_rst_i,
- NORMAL_OPERATION_OUT => finished_reset_tx,
- STATE_OUT => tx_fsm_state
- );
-
+--THE_TX_FSM : tx_reset_fsm
+-- port map(
+-- RST_N => rst_n_tx,
+-- TX_REFCLK => CLK_REF,
+-- TX_PLL_LOL_QD_S => TX_LOL,
+-- RST_QD_C => quad_rst_i,
+-- TX_PCS_RST_CH_C => tx_pcs_rst_i,
+-- NORMAL_OPERATION_OUT => finished_reset_tx,
+-- STATE_OUT => tx_fsm_state
+-- );
+
+THE_MAIN_TX_RST: main_tx_reset_RS
+ port map (
+ CLEAR => CLEAR, -- should work
+ CLK_REF => CLK_REF, -- should work
+ TX_PLL_LOL_IN => TX_LOL, -- ok
+ TX_CLOCK_AVAIL_IN => '1', -- not needed
+ TX_PCS_RST_CH_C_OUT => tx_pcs_rst_i, -- ok
+ SYNC_TX_QUAD_OUT => open,
+ LINK_TX_READY_OUT => finished_reset_tx, -- should work
+ STATE_OUT => open
+ );
+
-- may also need sync?
TX_PCS_RST <= tx_pcs_rst_i;
QUAD_RST <= quad_rst_i;
DEBUG_OUT(9) <= finished_reset_rx;
DEBUG_OUT(10) <= finished_reset_tx;
DEBUG_OUT(11) <= reset_i;
-DEBUG_OUT(31 downto 12) <= (others => '0');
+DEBUG_OUT(12) <= CLEAR;
+DEBUG_OUT(16 downto 13) <= rx_fsm_state;
+DEBUG_OUT(31 downto 17) <= (others => '0');
end architecture;