ECP5 SerDes¶
Lattice Semiconductor ECP5/ECP5-5G SerDes Interfaces
- class bakeneko.interface.phy.serdes.vendor.lattice.ecp5.DCU(*, dcu: DCUNumber, channel: Channel, link_speed: Literal[LinkSpeed.LS2_5, LinkSpeed.LS5_0], refclk: Signal, tx0_p: Signal | None = None, tx0_n: Signal | None = None, rx0_p: Signal | None = None, rx0_n: Signal | None = None, tx1_p: Signal | None = None, tx1_n: Signal | None = None, rx1_p: Signal | None = None, rx1_n: Signal | None = None, bitclk_from_next_dual: bool = False) None¶
Lattice Semiconductor ECP5/ECP5-5G devices have a concept called a Dual-Channel Unit (DCU), it represents an encapsulation of 2 SerDes channels.
Each ECP5/ECP5-5G device has 2 DCUs on the larger 45k an 85k variants, and a single DCU on the smaller 25k variants with no DCUs the non-UM devices.
The overall structure of a DCU looks like this:
╭───────────╮ │ DCU │ ├─────┬─────┤ │ CH0 │ CH1 │ ╰─────┴─────╯
Within each DCU, there is also an
EXTREFblock, which deals with internal reference clock generation from the DCU, as well as an auxiliary control channel.A more detailed block diagram of a DCU would be as follows:
╭───────────────────────────────╮ │ DCU │ │ ╭─────────╮ ╭─────────╮ ╭───╮ │ │ │ │ │ │ │ A │ │ │ │ CH0 │ │ CH1 │ │ U │ │ │ │ │ │ │ │ X │ │ │ ├─────────┤ ├─────────┤ ╰───╯ │ │ │ │ │ │ ╭───╮ │ │ │ PCS │ │ PCS │ │ E │ │ │ │ │ │ │ │ X │ │ │ ├─────────┤ ├─────────┤ │ T │ │ │ │ SERDES0 │ │ SERDES1 │ │ R │ │ │ ├────┬────┤ ├────┬────┤ │ E │ │ │ │ RX │ TX │ │ RX │ TX │ │ F │ │ │ ╰────┴────╯ ╰────┴────╯ ╰───╯ │ ╰───────────────────────────────╯
For more details on the ECP5 DCUs see the Lattice Technical Note FPGA-TN-02206.
Note
Many of the DCU and channel properties are set at elaboration time for the synthesis and place-and-route tools, however, many, if not most of them are able to be modified via the SerDes Client Interface (
SCI) for the DCU.- Parameters:
dcu (DCUNumber) – The specific DCU on the device to use.
channel (Channel) – The specific channel or channels to use for the given DCU.
link_speed (LinkSpeed) – The link speed for the DCUs channels.
refclk (Signal) – The input reference clock for this DCU
tx0_p (Signal | None) – The positive side of the channel 0 transmitter pair (default:
None)tx0_n (Signal | None) – The negative side of the channel 0 transmitter pair (default:
None)rx0_p (Signal | None) – The positive side of the channel 0 receiver pair (default:
None)rx0_n (Signal | None) – The negative side of the channel 0 receiver pair (default:
None)tx1_p (Signal | None) – The positive side of the channel 0 transmitter pair (default:
None)tx1_n (Signal | None) – The negative side of the channel 0 transmitter pair (default:
None)rx1_p (Signal | None) – The positive side of the channel 0 receiver pair (default:
None)rx1_n (Signal | None) – The negative side of the channel 0 receiver pair (default:
None)bitclk_from_next_dual (bool) –
Route the TX bitclock from the AUX channel of the DCU that is next to us.
e.g. If we are DCU0, then the TX bitclock will come from the AUX channel of DCU1. (default:
False)
- Attributes:
dcu_num (DCUNumber) – The DCU on the device this module is configured for
chan (Channel) – The DCU channel(s) this module is configured for
sci (DCUInterface) – The SerDes Client Interface for this DCU.
- class bakeneko.interface.phy.serdes.vendor.lattice.ecp5.SCI None¶
Simple interface to interact with the ECP5/ECP5G’s SCI of a single DCU.
- Attributes:
dcu_sel (Signal) – Target DCU
ch_sel (Signal) – Target DCU Channel
re (Signal) – Read-enable
we (Signal) – Write-enable
done (Signal) – Transaction done
addr (Signal) – 6-bit SCI Register address
data_w (Signal) – 8-bit write data
data_r (Signal) – 8-bit read data
interrupt (Signal) – The SCI interrupt signals
- class bakeneko.interface.phy.serdes.vendor.lattice.ecp5.CHRegister(value)¶
Channel Control/Status registers as defined in Lattice Technical Note FPGA-TN-02206.
- CH_00 = 0¶
## PCS Control Register 1
Bits
Name | Description
Type
Default
0
uc_mode
1 - Selects User Configured Mode 0 - Selects other Mode (PCIe, RapidIO, etc. )
R/W
0b01
Reserved
2
pcie_mode
1 - PCIe Mode 0 - Selects other mode (RapidIO, 10GbE, 1GbE)
R/W
0b03
rio_mode
1 - Selects Rapid-IO Mode 0 - Selects other mode (10GbE, 1GbE)
R/W
0b04
wa_mode
1 - Bit-slip word alignment mode 0 - Barrel shift word alignment mode
R/W
0b07:5
Reserved
R/W
0b0
- CH_01 = 1¶
## PCS Control Register 2
Bits
Name
Description
Type
Default
0
invert_rx
1 - Invert received data 0 - Do not invert received data
R/W
0b01
invert_tx
1 - Invert transmitted data 0 - Do not invert transmitted data
R/W
0b02
Internal
3
Reserved
4
ge_an_enable
1 - Enable GigE Auto-Negotiation 0 - Disable GigE Auto-Negotiation
R/W
0b05
Internal
6
Internal
7
enable_cg_align
Only valid when in uc_mode 1 - Enable continuous comma alignment 0 - Disable continuous comma alignment
R/W
0b0
- CH_02 = 2¶
## PCS Control Register 3
Bits
Name
Description
Type
Default
0
tx_ch
1 - Transmit PCS inputs are sourced from test characterization ports.
The test characterization mode should be enabled.
R/W
0b01:0
Reserved
2
tx_gear_mode
1 - Enable 2:1 gearing for transmit path on selected channels. 0 - Disable 2:1 gearing for transmit path on selected channels (no gearing)
R/W
0b03
rx_gear_mode
1 - Enable 2:1 gearing for receive path on selected channels. 0 - Disable 2:1 gearing for receive path on selected channels (no gearing)
R/W
0b05:4
pcs_det_time_sel[1:0]
PCS Connection detection time 11 - 16µs 10 - 04µs 01 - 02µs 00 - 08µs
R/W
0b06
pcie_ei_en
1 - PCI Express Electrical Idle 0 - Normal Operation
R/W
0b07
pfifo_clr
1 - Clears PFIFO if DCU bit
pfifo_clr_selis set to1. This signal is or-ed with interface signalpfifo_clr. 0 - Normal OperationR/W
0b0
- CH_03 = 3¶
## PCS Control Register 4
Bits
Name
Description
Type
Default
0
fb_loopback
1 - Enable loopback in the PCS just before the FPGA bridge from RX to TX. 0 - Normal data operation.
R/W
0b01
tx_gear_bypass
1 - Bypass PCS Transmission Gearbox 0 - Normal Operation
R/W
0b02
Internal
3
enc_bypass
1 - Bypass 8b10b encoder 0 - Normal Operation
R/W
0b04
Internal
5
sb_pfifo_lp
1 - Enabled parallel loopback from rx to tx through the parallel FIFO 0 - Normal data operation
R/W
0b06
sb_bypass
1 - Invert TX data after SerDes Bridge 0 - Dont invert TX data after SerDes bridge Note: Loopback data is also inverted
R/W
0b07
Reserved
- CH_04 = 4¶
## PCS Control Register 5
Bits
Name
Description
Type
Default
0
sb_loopback
1 - Enable loopback in the PCS from TX to RX in the SerDes bridge. 0 - Normal data operation
R/W
0b01
rx_sb_bypass
1 - Invert RX data after SerDes bridge 0 - Normal operation
R/W
0b02
wa_bypass
1 - Bypass word alignment 0 - Dont invert RX data after SerDes bridge Note: Loopack data is inverted
R/W
0b03
dec_bypass
1 - Bypass 8b10b decoder 0 - Normal operation
R/W
0b04
ctc_bypass
1 - Bypass clock tolerance compensation 0 - Normal operation
R/W
0b05
rx_gear_bypass
1 - Bypass PCS RX Gearbox 0 - Normal operation
R/W
0b06
signal_detect
1 - Force enable the RX link state machine 0 - RX link state machine is enabled depending on the setting of
ffc_signal_detectR/W
0b07
lsm_disable
1 - Disable RX link state machine 0 - Enable RX link state machine
R/W
0b0
- CH_05 = 5¶
## PCS Control Register 6
Bits
Name
Description
Type
Default
3:0
Reserved
4
match_2_enable
1 - Enable two character skip matching (using match 4,3)
R/W
0b15
match_4_enable
1 - Enable four character skip matching (using 4,3,2,1)
R/W
0b07:6
min_ipg_cng[1:0]
Minimum IPG to enforce
R/W
0b11NOTE: If neither match bit is enabled, signal character skip matching is performed using match 4
- CH_06 = 6¶
## PCS Control Register 7 - CC Match 1 LO
Bits
Name
Description
Type
Default
7:0
cc_match_1[7:0]
Lower pattern of bits for user-defined clock compensator skip pattern #1
R/W
0x00
- CH_07 = 7¶
## PCS Control Register 8 - CC Match 2 LO
Bits
Name
Description
Type
Default
7:0
cc_match_2[7:0]
Lower pattern of bits for user-defined clock compensator skip pattern #2
R/W
0x00
- CH_08 = 8¶
## PCS Control Register 9 - CC Match 3 LO
Bits
Name
Description
Type
Default
7:0
cc_match_3[7:0]
Lower pattern of bits for user-defined clock compensator skip pattern #3
R/W
0x00
- CH_09 = 9¶
## PCS Control Register 10 - CC Match 4 LO
Bits
Name
Description
Type
Default
7:0
cc_match_4[7:0]
Lower pattern of bits for user-defined clock compensator skip pattern #4
R/W
0x00
- CH_0A = 10¶
## PCS Control Register 11 - CC Match HI
Bits
Name
Description
Type
Default
1:0
cc_match_1[9:8]
Upper pattern bits for user defined clock compensator skip pattern #1
Bit 9 - Disparity Error Bit 8 - K Control
R/W
0b002:3
cc_match_2[9:8]
Upper pattern bits for user defined clock compensator skip pattern #2
Bit 9 - Disparity Error Bit 8 - K Control
R/W
0b004:5
cc_match_3[9:8]
Upper pattern bits for user defined clock compensator skip pattern #3
Bit 9 - Disparity Error Bit 8 - K Control
R/W
0b017:6
cc_match_4[9:8]
Upper pattern bits for user defined clock compensator skip pattern #4
Bit 9 - Disparity Error Bit 8 - K Control
R/W
0b01
- CH_0B = 11¶
## PCS Control Register 12 - UDF Comma Mask LO
Bits
Name
Description
Type
Default
7:0
udf_comma_mask[7:0]
Lower bits of user-defined comma mask
R/W
0xFF
- CH_0C = 12¶
## PCS Control Register 13 - UDF Comma A LO
Bits
Name
Description
Type
Default
7:0
udf_comma_a[7:0]
Lower bits of user-defined comma character
aR/W
0x83
- CH_0D = 13¶
## PCS Control Register 14 - UDF Comma B LO
Bits
Name
Description
Type
Default
7:0
udf_comma_b[7:0]
Lower bits of user-defined comma character
bR/W
0x7C
- CH_0E = 14¶
## PCS Control Register 15 - UDF Comma HI
Bits
Name
Description
Type
Default
1:0
Reserved
2:3
udf_comma_mask[9:8]
Upper pattern bits for user defined comma mask
Bit 9 - Disparity Error Bit 8 - K Control
R/W
0b114:5
udf_comma_a[9:8]
Upper pattern bits for user defined comma character
aBit 9 - Disparity Error Bit 8 - K Control
R/W
0b017:6
udf_comma_b[9:8]
Upper pattern bits for user defined comma character
bBit 9 - Disparity Error Bit 8 - K Control
R/W
0b10
- CH_0F = 15¶
## PCS Control Register 16
Bits
Name
Description
Type
Default
0
fb_tx_fifo_error_int_ctl
1 - Enable interrupt on empty/full condition in the TX FIFO on the FPGA bridge
R/W
0b01
fb_rx_fifo_error_int_ctl
1 - Enable interrupt on empty/full condition in the RX FIFO on the FPGA bridge
R/W
0b02
cc_overrun_int_ctl
1 - Enable interrupt for cc_overrun 0 - Disable interrupt for cc_overrun
R/W
0b03
cc_underrun_int_ctl
1 - Enable interrupt for cc_underrun 0 - Disable interrupt for cc_underrun
R/W
0b07:4
Reserved
- CH_10 = 16¶
## SerDes Control Register 1
Bits
Name
Description
Type
Default
0
tpwdnb
1 - Power down transmit channel 0 - Power up transmit channel
R/W
0b01
rate_mode_tx
1 - Full rate selection for transmit 0 - Half rate selection for transmit
R/W
0b02
tx_div11_sel
1 - Full rate selection for transmit 0 - Divide by 11 selection for transmit
R/W
0b03
ldr_core2tx_sel
1 - Select low-speed serial data from FPGA Core
R/W
0b04
tdrv_pre_en
1 - TX Driver pre-emphasis enable 0 - TX Driver pre-emphasis disable
R/W
0b05
tdrv_post_en
1 - TX Driver post-emphasis enable 0 - TX Driver post-emphasis disable
R/W
0b06
tx_pre_sign
1 - TX pre-emphasis not inverted 0 - TX pre-emphasis inverted
R/W
0b07
tx_post_sign
1 - TX post-emphasis not inverted 0 - TX post-emphasis inverted
R/W
0b0
- CH_11 = 17¶
## SerDes Control Register 2
Bits
Name
Description
Type
Default
4:0
rterm_tx[4:0]
TX Resistor termination select. Disabled in PCIe Mode. 00000 - 5kΩ 00001 - 80Ω 00100 - 75Ω 00110 - 70Ω 01011 - 60Ω 10011 - 50Ω 11001 - 46Ω NOTE: Other values reserved
R/W
0b00005:6
tx_cm_sel[1:0]
Select output common mode voltage. 00 - Power Down 01 - 0.60V 10 - 0.55V 11 - 0.50V
R/W
0b007
Internal
- CH_12 = 18¶
## SerDes Control Register 3
Bits
Name
Description
Type
Default
1:0
tdrv_slice0_sel[1:0]
TX Drive slice enable for slice 0 00 - Power Down 01 - Select Main Data 10 - Select Pre Data 11 - Select Post Data
R/W
0b003:2
tdrv_slice1_sel[1:0]
TX Drive slice enable for slice 1 00 - Power Down 01 - Select Main Data 10 - Select Pre Data 11 - Select Post Data
R/W
0b005:4
tdrv_slice2_sel[1:0]
TX Drive slice enable for slice 2 00 - Power Down 01 - Select Main Data 10 - Select Pre Data 11 - Select Post Data
R/W
0b007:6
tdrv_slice3_sel[1:0]
TX Drive slice enable for slice 3 00 - Power Down 01 - Select Main Data 10 - Select Pre Data 11 - Select Post Data
R/W
0b00
- CH_13 = 19¶
## SerDes Control Register 4
Bits
Name
Description
Type
Default
3:0
Internal
5:4
tdrv_slice3_cur[1:0]
Controls the output current for slice 3. Every 100µA increases the output amplitude by 100mV. 00 - 0800µA 01 - 1600µA 10 - 2400µA 11 - 3200µA
R/W
0b007:6
tdrv_slice4_cur[1:0]
Controls the output current for slice 4. Every 100µA increases the output amplitude by 100mV. 00 - 0800µA 01 - 1600µA 10 - 2400µA 11 - 3200µA
R/W
0b00
- CH_14 = 20¶
## SerDes Control Register 5
Bits
Name
Description
Type
Default
2:0
tdrv_slice0_cur[2:0]
Controls the output current for slice 0. Every 100µA increases the output amplitude by 100mV. 000 - 100µA 001 - 200µA 010 - 300µA 011 - 400µA 100 - 500µA 101 - 600µA 110 - 700µA 111 - 800µA
R/W
0b005:3
tdrv_slice1_cur[2:0]
Controls the output current for slice 1. Every 100µA increases the output amplitude by 100mV. 000 - 100µA 001 - 200µA 010 - 300µA 011 - 400µA 100 - 500µA 101 - 600µA 110 - 700µA 111 - 800µA
R/W
0b007:6
tdrv_slice2_cur[1:0]
Controls the output current for slice 2. Every 100µA increases the output amplitude by 100mV. 00 - 0800µA 01 - 1600µA 10 - 2400µA 11 - 3200µA
R/W
0b00
- CH_15 = 21¶
## SerDes Control Register 6
Bits
Name
Description
Type
Default
3:0
lb_ctl[3:0]
Serial loopback control bitfield. Bit 3 - slb_r2t_dat_en Serial RX to TX LB enable, CDR DAT Bit 2 - slb_r2t_ck_en Serial RX to TX LB enable, CDR CLK Bit 1 - slb_eq2t_en Serial loopback from equalizer to drv Bit 0 - slb_t2r_en Serial TX to RX loopback enable
R/W
0b00005:4
tdrv_dat_sel[1:0]
Driver output selection 00 - Data from serializer is muxed to driver 01 - Data rate clock from serializer is muxed to driver 10 - Serial RX to TX LB (data) if slb_r2t_dat_en is
110 - Serial RX to TX LB (clock) if slb_r2t_ck_en is111 - Serial LB from equalizer if slb_eq2t_en is1R/W
0b007:6
tdrv_slice5_cur[1:0]
Controls the output current for slice 2. Every 100µA increases the output amplitude by 100mV. 00 - 0800µA 01 - 1600µA 10 - 2400µA 11 - 3200µA
R/W
0b00
- CH_16 = 22¶
## SerDes Control Register 7
Bits
Name
Description
Type
Default
0
rpwdnb
1 - Power down receiver channel 0 - Power up receiver channel
R/W
0b01
rate_mode_rx
1 - Full rate selection for receiver 0 - Half rate selection for receiver
R/W
0b02
rx_div11_sel
1 - Full rate selection for receiver 0 - Divide by 11 selection for receiver
R/W
0b03
ldr_rx2core_sel
Enables boundary scan input path for routing the high-speed RX inputs to a lower speed SerDes in the FPGA fabric
R/W
0b04
rx_refck_sel
RX CDR Reference Clock Select 1 - ck_core_rx 0 - rx_refck_local
R/W
0b05
rcv_dcc_en
1 - Receiver DC coupling 0 - Receiver AC coupling
R/W
0b07:6
rxterm_cm[1:0]
Command mode volate for RX input term 00 - RX Input Supply 01 - Floating (AC Ground) 10 - GND 11 - RX Input Supply
R/W
0b00
- CH_17 = 23¶
## SerDes Control Register 8
Bits
Name
Description
Type
Default
4:0
rterm_rx[4:0]
RX Resistor termination select. 00000 - 5.0kΩ 00001 - 80.0Ω 00010 - 78.6Ω 00011 - 76.7Ω 00100 - 75.0Ω 00101 - 73.4Ω 00110 - 70.5Ω 00111 - 68.0Ω 01001 - 63.7Ω 01010 - 62.0Ω 01011 - 60.0Ω 01100 - 58.2Ω 01101 - 56.6Ω 01110 - 55.2Ω 01111 - 54.0Ω 10000 - 52.8Ω 10001 - 51.8Ω 10010 - 50.9Ω 10011 - 50.0Ω 10100 - 49.2Ω 10101 - 48.5Ω 10110 - 47.8Ω 10111 - 47.2Ω 11000 - 46.6Ω 11001 - 46.0Ω NOTE: Other values reserved
R/W
0b00005
Reserved
7:6
rcin_cm[1:0]
Common mode voltage for equalizer input in AC-coupling 00 - 0.70V 01 - 0.65V 10 - 0.75V 11 - CMFB
R/W
0b00
- CH_18 = 24¶
## SerDes Control Register 9
Bits
Name
Description
Type
Default
5:0
Reserved
6
fc2dco_floop
Force DCO to lock to the frequency loop
R/W
0b07
fc2dco_dloop
Force DCO to lock to the data loop
R/W
0b0
- CH_19 = 25¶
## SerDes Control Register 10
Bits
Name
Description
Type
Default
0
req_en
1 - Enable receiver equalization 0 - Disable receiver equalization
R/W
0b04:1
rx_rate_sel[3:0]
Equalizer pole position selection
R/W
0x06:5
req_lvl_set[1:0]
Equalization level setting 00 - 06dB 01 - 09dB 10 - 12dB 11 - Unused
R/W
0b007
Reserved
- CH_1A = 26¶
## SerDes Control Register 11
Bits
Name
Description
Type
Default
2:0
rx_dco_ck_div[2:0]
VCO Output frequency selector 000 - Divided by 1 001 - Divided by 1 010 - Divided by 2 011 - Divided by 2 100 - Divided by 4 101 - Divided by 8 110 - Divided by 16 111 - Divided by 32
R/W
0b0003
pden_sel
1 - Disable phase detector if los is
00 - Don’t disable phase detector if los is0R/W
0b04
dco_facq_rst
Trigger DCO frequency acquistion reset when needed
R/W
0b05
dco_calib_rst
Trigger DCO calibration reset when needed
R/W
0b06
en_recalib
1 - Enable recalibration 0 - Disable recalibaration
R/W
0b07
band_calib_mode
1 - Enable 0 - Disable
R/W
0b0
- CH_1B = 27¶
## SerDes Control Register 12
Bits
Name
Description
Type
Default
2:0
rx_los_lvl[2:0]
Sets the peak-to-peak threashold voltage for LoS detection
R/W
0b0004:3
rx_los_ceq[1:0]
Sets the equalization value at the input stage of the LoS detector.
R/W
0b005
rx_los_hyst_en
1 - Enable hysteresis for LoS detection threshold 0 - Disalbe hysteresis for LoS detection threshold
R/W
0b06
rx_los_en
1 - Enable loss-of-signal (LoS) detector 0 - Disable loss-of-signal (LoS) detector
R/W
0b07
rlos_sel
1 - Enable LoS detetion before CDR phase detector 0 - Disable LoS detetion before CDR phase detector
R/W
0b0
- CH_1E = 30¶
## SerDes Interrupt Control Register 1
Bits
Name
Description
Type
Default
0
~rlol_int_ctl
Enable interrupt when receiver is locked
R/W
0b01
rlol_int_ctl
Enable interrupt when reciever loses lock
R/W
0b02
Reserved
3
Reserved
4
~rlos_int_ctl
Enable interrupt for RX LoS when input level meets or is above
rlos_setlow threashold.R/W
0b05
rlos_int_ctl
Enable interrupt for RX LoS when input level fall below
rlos_setlow threashold.R/W
0b06
pcie_det_done_int_ctl
Enable interrupt for detection of a far end PCIe receiver.
R/W
0b07
Reserved
- CH_1F = 31¶
## Reset and Clock Control Register 1
Bits
Name
Description
Type
Default
0
sel_sd_rx_clk
1 - FPGA Bridge write clock and elastic buffer read clock driven by SerDes recovered clock. 0 - FPGA Bridge write clock and elastic buffer read clock driven by
ff_ebrd_clk.R/W
0b01
ff_rx_h_clk_en
Enable
fx_rx_h_clkR/W
0b02
ff_rx_f_clk_dis
Disable
ff_rx_f_clkR/W
0b03
ff_tx_h_clk_en
Enable
ff_tx_h_clkR/W
0b04
ff_tx_f_clk_dis
Disable
ff_tx_f_clkR/W
0b05
lane_tx_rst
Reset transmit logic
R/W
0b06
lane_rx_rst
Reset receive logic
R/W
0b07
rrst
Reset receiver
R/W
0b0
- CH_30 = 48¶
## PCS Status Register 1
Bits
Name
Description
Type
Interrupt
0
fb_tx_fifo_error
1 - FPGA Bridge TX FIFO overrun 0 - FPGA Bridge TX FIFO not overrun
RO
Yes
1
fb_rx_fifo_error
1 - FPGA Bridge RX FIFO overrun 0 - FPGA Bridge RX FIFO not overrun
RO
Yes
2
cc_overrun
1 - CC FIFO overrun 0 - CC FIFO not overrun
RO
Yes
3
cc_underrun
1 - CC FIFO underrun 0 - CC FIFO not underrun
RO
Yes
4
pfifo_error
1 - Parallel FIFO error 0 - No Parallel FIFO error
RO
Yes
7:5
Reserved
RO
Yes
- CH_31 = 49¶
## PCS Status Register 2
Bits
Name
Description
Type
Interrupt
7:0
prbs_error_cnt[7:0]
Number of PRBS errors. Resets to
0on read and sticks at0xFF.RO CR
No
- CH_32 = 50¶
## PCS Status Register 3
Bits
Name
Description
Type
Interrupt
3:0
wa_offset[3:0]
Word aligner offset
RO
No
7:4
Reserved
- CH_33 = 51¶
## PCS Status Register 4
Bits
Name
Description
Type
Interrupt
0
fb_tx_fifo_error_int
1 - Interrupt generated on
fb_tx_fifo_error0 - Interrupt not generated onfb_tx_fifo_errorRO CR
Yes
1
fb_rx_fifo_error_int
1 - Interrupt generated on
fb_rx_fifo_error0 - Interrupt not generated onfb_rx_fifo_errorRO CR
Yes
2
cc_overrun_int
1 - Interrupt generated on
cc_overrun0 - Interrupt not generated oncc_overrunRO CR
Yes
3
cc_underrun_int
1 - Interrupt generated on
cc_underrun0 - Interrupt not generated oncc_underrunRO CR
Yes
7:4
Reserved
- CH_34 = 52¶
## PCS Status Register 5
Bits
Name
Description
Type
Interrupt
0
cc_we_o
1 - Elsatic FIFO write enabled 0 - Elsatic FIFO write disabled
RO
No
1
cc_re_o
1 - Elastic FIFO read enabled 0 - Elastic FIFO read disabled
RO
No
3:2
Reserved
4
fb_txrst_o
1 - FPGA Bridge TX Normal Operation 0 - FPGA Bridge TX Reset
RO
No
5
fb_rxrst_o
1 - FPGA Bridge RX Normal Operation 0 - FPGA Bridge RX Reset
RO
No
6
ffs_ls_sync_status
1 - Link State Machine not Synced 0 - Link State Machine Synced
RO
No
7
Reserved
- CH_36 = 54¶
## SerDes Status Register 1
Bits
Name
Description
Type
Interrupt
0
~rlol
If CDR has locked to data
RO
Yes
1
rlol
If CDR is not locked to data, but to refclock
RO
Yes
3:2
Reserved
RO CR
Yes
4
~rlos
If the input signal detected by the receiver is equal to or greater than the set threshold for LOW
RO CR
Yes
5
rlos
If the input signal detected by the receiver is below the set LOW threashold.
RO CR
Yes
6
pci_det_done
1 - Receiver detection process completed by TX 0 - Receiver detection process not completed by TX
RO CR
Yes
7
Reserved
- CH_37 = 55¶
## SerDes Status Register 2
Bits
Name
Description
Type
Interrupt
0
pci_connect
1 - Receiver detected by transmitter (at transmitter device) 0 - Receiver not detected by transmitter (at transmitter device)
RO
No
3:1
Reserved
4
dco_facq_done
If DCO frequency acquisition done
RO
No
5
dco_facq_err
If DCO frequency acquisition is more than 300ppm
RO
No
6
dco_calib_done
If DCO calibration is completed
RO
No
7
dco_calib_err
If DCO calibration might be incorrect
RO
No
- CH_3A = 58¶
## SerDes Status Register 5
Bits
Name
Description
Type
Interrupt
0
~rlol_int
Interrupt generated for
~rlolCO CR
Yes
1
rlol_int
Interrupt generated for
rlolCO CR
Yes
3:2
Reserved
4
~rlos_int
Interrupt generated for
~rlosCO CR
Yes
5
rlos_int
Interrupt generated for
rlosCO CR
Yes
6
pci_det_done_int
Interrupt generated for
pci_det_doneCO CR
Yes
7
Reserved
- class bakeneko.interface.phy.serdes.vendor.lattice.ecp5.DCURegister(value)¶
DCU Control/Status registers as defined in Lattice Technical Note FPGA-TN-02206.
- DL_00 = 0¶
## PCS Control Register 1
Bits
Name
Description
Type
Default
3:0
Reserved
R/W
0b04
xge_mode
1 - Select 10GbE (Different XAUI LSM and 8b10b) 0 - Depends on Channel Mode selection
R/W
5
char_mode
1 - Enable SerDes characterization mode 0 - Disable SerDes characterization mode
R/W
0b06
force_int
1 - Force generation of an interrupt 0 - Normal operation
R/W
0b07
reg_sync_toggle
Trans - Reset TX Serializers to minimize lane skew Level - Normal operation
R/W
0b0
- DL_02 = 2¶
## PCS Control Register 3
Bits
Name
Description
Type
Default
3:0
low_mark
Clock compensation FIFO low water mark, mean is 8
R/W
0b01017:4
high_mark
Clock compensation FIFO high water mark, mean is 8
R/W
0b0101
- DL_03 = 3¶
## PCS Control Register 4
Bits
Name
Description
Type
Default
1:0
Reserved
2
pfifo_clr_sel
1 - pfifo_clr signal/channel bit clears FIFO 0 - pfifo_error signal clears FIFO
R/W
0b07:3
Reserved
R/W
0b0
- DL_09 = 9¶
## PCS Interrupt Control Register 10
Bits
Name
Description
Type
Default
0
ls_sync_statusn_0_int_ctrl
1 - Enable interrupt for ls_sync_statusn_0 on OoS 0 - Disable interrupt for ls_sync_statusn_0 on OoS
R/W
0b01
ls_sync_statusn_1_int_ctrl
1 - Enable interrupt for ls_sync_statusn_1 on OoS 0 - Disable interrupt for ls_sync_statusn_1 on OoS
R/W
0b02:3
Reserved
4
ls_sync_status_0_int_ctrl
1 - Enable interrupt for ls_sync_status_0 on In Sync 0 - Disable interrupt for ls_sync_status_0 on In Sync
R/W
0b05
ls_sync_status_1_int_ctrl
1 - Enable interrupt for ls_sync_status_1 on In Sync 0 - Disable interrupt for ls_sync_status_1 on In Sync
R/W
0b06:7
Reserved
- DL_0A = 10¶
## SerDes Control Register 1
Bits
Name
Description
Type
Default
0
refck_out_sel[0]
1 - rx_refck_local output enabled 0 - rx_refck_local output disabled
R/W
0b001
refck_out_sel[1]
1 - refck_to_core output enabled 0 - refck_to_core output disabled
R/W
0b002
Reserved
3
refck_rterm
1 - REFCLK Termination is 100Ω 0 - REFCLK Terminatino is high impedance
R/W
0b04
refck_dcbias_en
1 - Enable internal refclk DC bias 0 - Disable internal refclk DC bias
R/W
0b05
tx_refck_sel
1 - TxPLL is ck_core_tx 0 - TxPLL is rx_refck_local
R/W
0b06
Reserved
R/W
0b07
Internal
- DL_0B = 11¶
## SerDes Control Register 2
Bits
Name
Description
Type
Default
1:0
refck_mode[1:0]
iff
refclk25xis 0: 00 - Internal bitclock is 20x 01 - Internal bitclock is 10x 10 - Internal bitclock is 16x 11 - Internal bitclock is 8x iffrefclk25xis 1: xx - Internal bitclock is 25xR/W
0b002
refck_to_nd_en
1 - Enable REFCLK to neighbor DCU
R/W
0b03
refck_from_nd_sel[0]
1 - Select TX REFCLK from neighbor DCU
R/W
0b04
refck_from_nd_sel[1]
1 - Select RX REFCLK from neighbor DCU
R/W
0b05
Reserved
6
bus8bit_sel
1 - Select 8-bit bus width 0 - Select 10-bit bus width
R/W
0b07
refclk25x
1 - Internal bitclock is 25x (for 100MHz REFCLK only) 0 - Use
refck_modeR/W
0b0
- DL_0C = 12¶
## SerDes Control Register 4
Bits
Name
Description
Type
Default
1:0
cdr_lol_set[1:0]
00 - ±1000ppm x2 (Lock) ±1500ppm x2 (Unlock) 01 - ±2000ppm (Lock) ±2500ppm (Unlock) 10 - ±4000ppm (Lock) ±7000ppm (Unlock) 11 - ±300ppm (Lock) ±450ppm (Unlock)
R/W
0b007:2
Reserved
- DL_0D = 13¶
## SerDes Control Register 4
Bits
Name
Description
Type
Default
2:0
tx_vco_ck_div[2:0]
00x - Divide by 1 01x - Divide by 2 100 - Divide by 4 101 - Divide by 8 110 - Divide by 16 111 - Divide by 32
R/W
0b0004:3
pll_lol_set[1:0]
00 - ±300ppm x2 (Lock) ±600ppm x2 (Unlock) 01 - ±300ppm (Lock) ±2000ppm (Unlock) 10 - ±1500ppm (Lock) ±2200ppm (Unlock) 11 - ±4000ppm (Lock) ±6000ppm (Unlock)
R/W
0b005
Reserved
7:6
Reserved
- DL_0F = 15¶
## SerDes Interrupt Control Register 6
Bits
Name
Description
Type
Default
5:0
Reserved
6
~PLOL_INT_CTRL
1 - Interrupt enabled for lock obtained on PLOL 0 - Interrupt disabled for lock obtained on PLOL
R/W
0b07
PLOL_INT_CTRL
1 - Interrupt enabled for loss of lock on PLOL 0 - Interrupt disabled for loss of lock on PLOL
R/W
0b0
- DL_10 = 16¶
## Reset and Clock Control Register 1
Bits
Name
Description
Type
Default
0
trst
1 - Reset TxPLL Loss of Lock
R/W
0b01
dcu_rst
1 - Assert DCU Reset
R/W
0b02
macro_rst
1 - Assert macro Reset
R/W
0b03
macro_pdb
0 - Assert power down
R/W
0b14
refclk_pdnb
0 - Power Down REFCLK 1 - Power Up REFCLK
R/W
0b05
txpll_pdnb
0 - Power Down TX PLL 1 - Power Up TX PLL
R/W
0b06
Reserved
7
Reserved
- DL_20 = 32¶
## PCS Status Register 1
Bits
Name
Description
Type
Interrupt
1:0
int_cha_out[1:0]
Per Channel Interrupt Status
RO
No
3:2
Reserved
4
int_dua_out
Per DCU Interrupt Status
RO
No
5
Spare
Delayed global rstn from tri_ion
RO
No
7:6
Reserved
- DL_21 = 33¶
## PCS Packet Interrupt Status Register 2
Bits
Name
Description
Type
Interrupt
0
ls_sync_statusn_0
1 - Alarm generated on ls_sync_status_0 when OoS 0 - Alarm not generated on ls_sync_status_0 when OoS
RO
Yes
1
ls_sync_statusn_1
1 - Alarm generated on ls_sync_status_1 when OoS 0 - Alarm not generated on ls_sync_status_1 when OoS
RO
Yes
3:2
Reserved
4
ls_sync_status_0
1 - Alarm generated on ls_sync_status_0 when In Sync 0 - Alarm not generated on ls_sync_status_0 when In Sync
RO
Yes
5
ls_sync_status_1
1 - Alarm generated on ls_sync_status_1 when In Sync 0 - Alarm not generated on ls_sync_status_1 when In Sync
RO
Yes
6:7
Reserved
- DL_22 = 34¶
## PCS Packet Interrupt Status Register 3
Bits
Name
Description
Type
Interrupt
0
ls_sync_statusn_0_int
1 - Interrupt generated on ls_sync_status_0 when OoS 0 - Interrupt not generated on ls_sync_status_0 when OoS
RO CR
Yes
1
ls_sync_statusn_1_int
1 - Interrupt generated on ls_sync_status_1 when OoS 0 - Interrupt not generated on ls_sync_status_1 when OoS
RO CR
Yes
3:2
Reserved
4
ls_sync_status_0_int
1 - Interrupt generated on ls_sync_status_0 when In Sync 0 - Interrupt not generated on ls_sync_status_0 when In Sync
RO CR
Yes
5
ls_sync_status_1_int
1 - Interrupt generated on ls_sync_status_1 when In Sync 0 - Interrupt not generated on ls_sync_status_1 when In Sync
RO CR
Yes
7:6
Reserved
- DL_25 = 37¶
## SerDes Interrupt Status Register 1
Bits
Name
Description
Type
Interrupt
5:0
Reserved
6
~plol_sts
1 - PLL lock obtained
RO
Yes
7
plol_sts
1 - PLL Loss of Lock
RO
Yes
- DL_26 = 38¶
## SerDes Interrupt Status Register 2
Bits
Name
Description
Type
Interrupt
5:0
Reserved
6
~plol_int
1 - Interrupt generated on ~PLOL 0 - Interrupt not generated on ~PLOL
RO CR
Yes
7
plol_int
1 - Interrupt generated on PLOL 0 - Interrupt not generated on PLOL
RO CR
Yes