LatticeECP3 SERDES/PCS Usage Guide (Chinese Language Version)

LatticeECP3 SERDES/PCS
使用指南
2012 年 8 月
技术说明 TN1176
概述
LatticeECP3™ FPGA系列结合了高性能FPGA结构、高性能I/O和多达16个通道带有相应的物理编码子层(Physical
Coding Sublayer, PCS)逻辑的嵌入式 SERDES。 PCS 逻辑可配置用于支持很多业界标准的、高速串行数据传输
协议。
PCS 逻辑的每个通道包含专用的发送和接收 SERDES,可用于高达 3.2 Gbps 的高速、全双工串行数据传输。每个
通道的 PCS 逻辑可通过配置来支持一系列常用的数据协议,包括 GbE、XAUI、SONET/SDH、PCI Express、SRIO、
CPRI、 OBSAI、 SD-SDI、 HD-SDI 和 3G-SDI。此外,基于协议的逻辑可以在许多配置中被完全或部分绕过,从而
使用户在设计自己的高速数据接口时拥有更大的灵活性。
PCS 还提供旁路模式 (bypass mode),允许使用 8 位或 10 位接口将 SERDES 直接连接到 FPGA 逻辑。每个
SERDES 引脚还可以独立实施直流耦合并且允许在同一个 SERDES 引脚上同时支持高速和低速工作,适用于如串
行数字视频等应用。
特性
• 多达 16 个通道的高速 SERDES
– 150 Mbps 至 3.2 Gbps 用于通用 8b10b, 10 位 SERDES 和 8 位 SERDES 模式。 参见表 8-1。
– 所有其他的协议, 230 Mbps 至 3.2 Gbps/ 通道
– 3.2 Gbps 工作时,功耗低至 110mW/ 通道
– 适用于小尺寸背板工作的接收均衡和发送预加重
– 支持 PCI Express、千兆以太网 (1GbE 和 SGMII)、 XAUI 以及多种其他标准
– 支持用户定义的通用 8b10b 模式
– 适用于低速输入 (视频应用)的带外 (Out-of-band, OOB)信号接口
• 多种时钟速率支持
– 每个 PCS quad 独立的参考时钟,便于在一个器件内处理多种协议速率
• 全功能嵌入式物理编码子层 (PCS)逻辑,支持业界标准协议
– 每个器件支持多达 16 个通道的全双工数据传输
– 单芯片支持多种协议
– 支持通用的基于 8b10b 的数据包协议
– SERDES only 模式允许 8 位或 10 位接口直接连接到 FPGA 逻辑
• 兼容多种协议的时钟容限补偿 (Clock Tolerance Compensation, CTC)逻辑
– 对参考时钟和接收数据速率之间的频率差异进行补偿
– 允许用户定义的 1、 2 或 4 字节长度的跳跃模式
• 集成了回环模式 (Loopback mode),用于系统调试
– 用于系统调试的三种回环模式
LatticeECP2M™ 所没有的 SERDES/PCS 的新特性
• 在一个 SERDES quad 中支持多种协议 / 标准。这些标准需支持如表 8-1 中所列标准的全速或半速标称频率。配置
灵活性不应成为支持不同混合的协议和标准的障碍。多协议组中支持 PCI Express、千兆以太网、 SGMII 和串行
RapidIO 模式。
• 支持兼容 XAUI 的功能并将 SERDES 的最高性能扩展至 3.2 Gbps。
Lattice Semiconductor Corp.2012 版权所有 © 所有莱迪思的商标、注册商标、图案和标识符均在 www.latticesemi.com/legal 网站上列出。所有其它品牌或产品名称均
为其所有者的商标或注册商标。此处的参数规格和信息可能会更改,恕不另行通知。中文翻译文档仅为您提供方便。莱迪思将尽力为您提供准确的中文翻译文档,但
鉴于翻译的难度,译文可能会与英文文档存在一些微小差别,其准确性也难以保证。请参考英文源文件,获取最新、最准确的信息。所有的翻译文档中的信息均以英
文源文件为准。
www.latticesemi.com.cn
1
tn1176_02.4-C
LatticeECP3 SERDES/PCS
使用指南
• 支持 SONET/SDH OC-3/STM-1、 OC-12/STM-4 和 OC-48/STM-16 速率。
• 增加了对于 SD-SDI、 HD-SDI 和 3G-SDI 的每个 RX 和 TX DIV11 的支持。多速 SDI 支持。
本技术说明的使用
莱迪思的 ispLEVER 设计工具支持所有的 PCS 模式。大多数模式都是专为特定行业的标准数据协议应用而设计。其
他模式则适用于更通用的目的,让设计人员能对他们自己的应用设置进行定义。ispLEVER设计工具允许用户在自己
的设计中为每个 quad 定义工作模式。本技术说明介绍的 SERDES 和 PCS 的所有模式都得到 ispLEVER 软件的支
持。如果您正在使用 Lattice Diamond™ 设计软件,请参见附录 D。
本文档提供了嵌入式 SERDES 和相关 PCS 逻辑的所有功能的全部说明。 LatticeECP3 系列数据手册提供了嵌入式
SERDES 的电气特性和时序特性。本文档 PCS 章节提供了 PCS 逻辑的工作情况。附录给出了可通过 SCI 总线访问
的有关 SERDES 和 PCS 逻辑的所有状态和控制寄存器列表。 LatticeECP3 系列数据手册的引脚布局信息章节给出
了封装的引脚布局信息。
支持的标准
表 8-1 中列出了支持的标准。
表 8-1. SERDES 支持的标准
标准
PCI Express 1.1
千兆以太网, SGMII
数据速率
(Mbps)
系统参考时钟
(MHz)
FPGA 时钟
(MHz)
通用 / 链接宽度的
数量
编码类型
2500
100
250
x1, x2, x4
8b10b
1250
125
125
x1
8b10b
2500
125
250
x1
8b10b
3125
156.25
156.25
x1
8b10b
XAUI
3125
156.25
156.25
x4
8b10b
串行 RapidIO Type I,
串行 RapidIO Type II,
串行 RapidIO Type III
1250,
2500,
3125
125,
125,
156.25
125,
250,
156.25
x1, x4
8b10b
OBSAI-1,
OBSAI-2,
OBSAI-3,
OBSAI-4
768,
1536,
2304,
3072
76.8,
76.8, 153.6,
115.2,
153.6
76.8,
153.6,
230.4,
153.6
x1
8b10b
614.4,
1228.8,
2457.6,
3072.0
61.44,
61.44, 122.88,
122.88,
153.6
61.44,
122.88,
122.88
153.6
x1
8b10b
1431,
1771,
270,
360,
540
14.31,
17.71,
27,
36,
54
143,
177,
27,
36,
54
x1
NRZI/ 扰码
HD-SDI
(292M)
1483.5,
1485
74.175, 148.35,
74.25, 148.50
74.175, 148.35,
74.25, 148.5
x1
NRZI/ 扰码
3G-SDI
(424M)
2967,
2970
148.35,
148.5
148.35,
148.5
x1
NRZI/ 扰码
SONET STS-32
SONET STS-122
SONET STS-482
155.52
622.08
2488
15.552
62.208
248.8
15.552
62.208
248.8
x1
N/A
150 - 3125
15 - 312.5
15 - 312.5
x1, x2, x3, x4
N/A
CPRI-1,
CPRI-2,
CPRI-3,
CPRI-4
SD-SDI
(259M, 344M)
10 位 SERDES
2
LatticeECP3 SERDES/PCS
使用指南
表 8-1. SERDES 支持的标准 (续)
标准
数据速率
(Mbps)
系统参考时钟
(MHz)
FPGA 时钟
(MHz)
通用 / 链接宽度的
数量
编码类型
8 位 SERDES
150 - 3125
15 - 312.5
15 - 312.5
x1, x2, x3, x4
N/A
通用 8b10b
150 - 3125
15 - 312.5
15 - 312.5
x1, x2, x3, x4
8b10b
1. 对于较低速率而言,可以绕过 SERDES,将信号可直接传入 FPGA 内核。
2. 8 位 SERDES 模式支持 SONET 协议。请参考本文档的 SONET 章节,了解更多详细信息。
架构概述
quad 中的 SERDES/PCS 模块包含逻辑用于 4 个独立的全双工数据通道。
图 8-1 展示了 LatticeECP3-150 FPGA 中 SERDES/PCS quad 的布局 (其他器件有较少的 quad)。
图 8-1. LatticeECP3-150 框图
JTAG
sysIO Bank 0
Configuration Logic
sysIO Bank 1
ECLK1
PLL
DLL
Primary Clocks
PLL
ECLK1
DLL
PLL
QUADRANT BL
QUADRANT BR
PLL
PLL
PLL
PLL
CH0
CH1
CH2
A UX
SERDES/PCS
Quad C
CH3
CH0
CH1
CH2
A UX
CH3
SERDES/PCS
Quad A
CH0
CH1
CH2
SERDES/PCS
Quad B
A UX
CH0
CH1
A UX
CH2
CH3
SERDES/PCS
Quad D
CH3
sysIO Bank 6
PLL
表 8-2 展示了 LatticeECP3 系列中每款器件可用的 SERDES/PCS quad 数量。
3
sysIO Bank 3
PLL
QUADRANT TR
CL KD IV
QUADRANT TL
sysIO Bank 2
PLL
CL KD IV
sysIO Bank 7
ECLK2
ECLK1
ECLK2
ECLK2
LatticeECP3 SERDES/PCS
使用指南
表 8-2. 每款 LatticeECP3 器件的 SERDES/PCS Quad 数量
封装
256 球型 ftBGA
328 球型 csBGA
484 球型 ftBGA
ECP3-17
1
2 通道
1
1
ECP3-35
ECP3-70
ECP3-95
ECP3-150
1
—
—
—
—
—
—
—
1
1
1
672 球型 ftBGA
—
1
2
2
2
1156 球型 ftBGA
—
—
3
3
4
1. Channel 0 和 3 可用。
每个 quad 可通过编程使用几种基于协议的模式中的一种。每个 quad 需要自己的参考时钟,可通过封装引脚连接到
外部时钟源或连接到 FPGA 内部逻辑的时钟源。
每个 quad 可根据所选的支持标称频率的协议进行编程,并可选用每个通道的全速或半速选项。例如,可以在同一个
quad 中使用 PCI Express [email protected] 和千兆以太网通道,在千兆以太网通道中使用半速选项。如果一个 quad 与
非 PCI Express 通道共享一个 PCI Express x1 通道,请确保这个 quad 的参考时钟兼容这个 quad 内的所有协议。例
如:PCI Express 扩频参考时钟与大多数千兆以太网应用不兼容。
因为每个 quad 都有自己的参考时钟,在同一块芯片上不同的 quad 可支持不同标准。这一特性使得 LatticeECP3 系
列器件成为桥接不同标准的理想器件。
PCS quad 并不仅限用于业界标准协议。每个 quad (以及一个 quad 内的每个通道)可编程用于许多用户定义的数
据操作模式。例如,字对齐和时钟容限补偿可通过编程用于用户自定义操作。
PCS Quad 和通道
器件上的每个 quad 支持多达 4 个全双工数据通道。根据不同应用,可以使用一个 quad 内的一至四个通道。在一个
给定的 quad 中,用户可以为每个通道分别设置许多选项。
图 8-1 展示了带有四个 PCS quad 的器件示例,包含了总共 16 个 PCS 通道。
每个通道的 SERDES/PCS 和 FPGA 接口端口
所有 PCS quad,无论所选的模式,都在封装引脚上有相同的外部高速串行接口。然而,每个 PCS 模式都有其唯一
与 FPGA 逻辑作接口的输入 / 输出端口列表,这些端口是与 quad 所选协议相适应的。 本文档提供了每个模式下该
quad 的输入 / 输出信号的详细说明。图 8-2 展示了一个简化的 SERDES/PCS quad。
4
LatticeECP3 SERDES/PCS
使用指南
图 8-2. SERDES/PCS Quad 框图
SERDES
Channel 2
RX + TX
PCS
Channel 3
RX + TX
PCS
Channel 2
RX + TX
AUX
CHANNEL
SERDES
Channel 3
RX + TX
SERDES
Channel 1
RX + TX
SERDES
Channel 0
RX + TX
QUAD
CONTROL
SERDES/PCS Quad
PCS
Channel 1
RX + TX
PCS
Channel 0
RX + TX
FPGA Core
详细的通道框图
图 8-3 是 LatticeECP3 SERDES/PCS 的单通道主要功能的详细框图说明。该图展示了对 FPGA 中的用户逻辑来说
可视的所有主要模块和主要控制和状态信号。该图还展示了通道中的主要子模块 ——SERDES、SERDES 桥、PCS
内核以及 FPGA 桥。
5
LatticeECP3 SERDES/PCS
使用指南
图 8-3. LatticeECP3 SERDES/PCS 详细的通道框图
SERDES
SERDES
Bridge
(SB)
PCS Core
FPGA Bridge (FB)
Detect
Logic
rxd_ldr_ch0
rlos_low_ch0_s
LOS
rx_div11_mode_ch0_c
rx_div2_mode_ch0_c
REFCLK
CDR
rx_cdr_lol_ch0_s
rx_full_clk_ch0
rx_half_clk_ch0
rx_invert_ch0_c
Recovered (Byte) Clock
1/2
Recovered
Bit Clock
INV
hdinp_ch0
DES
1:8/1:10
CK
R EFC LK
SLB _T 2R_ EN
SL B_EQ 2T
PD/
Sampler
wa_bypass
R X_SB_ BYPASS
hdinn_ch0
D
FIFO
EQ
SL B_T 2R
FPGA Core
WA
decoder
bypass
8B/10B
Decoder
rx_gear_bypass
ctc
bypass
CTC
FIFO
rxdata[23:0]_ch0
Down
Sample
FIFO
rxiclk_ch0
LSM
ebrd_clk_ch0
ctc_ins_ch0_s, ctc_del_ch0_s
ctc_urun_ch0_s, ctc_orun_ch0_s
SLB_EQ2T_EN
TDRV_DAT_SEL[1:0]
B YTE C LK
BIT C LK
TXPLL
lsm_status_ch0_s
word_align_en_ch0_c
1/2
tx_full_clk_ch0
tx_half_clk_ch0
SEL_BIST_TXD4ENC
CK
hdoutp_ch0
D
txdata[23:0]_ch0
8b/10b
Encoder
SER
8:1/10:1
Up
Sample
FIFO
INV
hdoutn_ch0
BYPASS
TX_GEAR_BYPASS
txiclk_ch0
tx_div11_mode_ch0_c, tx_div2_mode_ch0_c, tx_sync_qd_c
txd_ldr_ch0
txd_ldr_en_ch0_c
tx_idle_ch0_c
pcie_con_ch0_s, pcie_done_ch0_s
Detect
Logic
pcie_det_en_ch0_c, pcie_ct_ch0_c
时钟和复位
一个 PCS quad 提供每个通道锁定的参考时钟和每个通道恢复的接收时钟,连到 FPGA 逻辑接口。每个 PCS quad
为主和次 FPGA 时钟走线提供时钟。PCS/FPGA 接口还为每个 quad 的四个通道提供来自 FPGA 逻辑的发送和接收
时钟端口。
每个 quad 有复位输入来强制 quad 内的 SERDES 和 PCS 逻辑或仅 SERDES 复位。此外,还为每个通道的发送和
接收提供专用于 PCS 逻辑的独立复位。
发送数据总线
在 PCS 块中,发送数据通道的信号是从 FPGA 到 FPGA 桥,数据宽度可调整为 2:1 进入内部 PCS 数据通道,具有
8 位数据宽度(外加控制 / 状态信号)。在 1:1 模式下,PCI Express x1 接口的最高速率是 250 MHz。在 2:1 gearing
(如 16 位宽数据通道)模式下,可能的速率为 156.25 MHz(XAUI 4x 通道模式)。SERDES 和 PCS 将支持数据速
率高达 3.2 Gbps 的数据,对应接口速率为 160 MHz (2:1 gearing 情况下)。
6
LatticeECP3 SERDES/PCS
使用指南
接收数据总线
接收路径的信号是从 PCS 块的 FPGA 桥到 FPGA。数据路径可调整 (gearing)为 2:1 至数据宽度为 8 位的内部
PCS 数据路径。 FPGA 接口的数据总线宽度为 16 位宽。可通过软件的寄存器位禁用 2:1 gearing 功能,这样的话,
总线宽度减半 (8 位宽)。当数据调整为 2:1 ,低位 (rxdata[9:0])对应先接收的字,高位 (rxdata[19:10])对应第
二个接收的字。如果数据没有调整为 2:1,低位 (rxdata[9:0])为有效位,并且高位不使用。表 8-3 说明了每个协议
模式下数据总线的使用。
表 8-3. 模式使用的数据总线
数据总线 PCS
单元名称 4
G8B10B
CPRI OBSAI
PCI Express
SRIO
FF_TX_D_0_0
txdata_ch0[0]
FF_TX_D_0_1
txdata_ch0[1]
FF_TX_D_0_2
txdata_ch0[2]
FF_TX_D_0_3
txdata_ch0[3]
FF_TX_D_0_4
txdata_ch0[4]
FF_TX_D_0_5
txdata_ch0[5]
FF_TX_D_0_6
txdata_ch0[6]
FF_TX_D_0_7
8位
SERDES
txc_ch0[0]
GND
10 位
SERDES
SDI
txdata_ch0[7]
FF_TX_D_0_8
tx_k_ch0[0]
FF_TX_D_0_9
tx_force_disp_ch0[0]1
FF_TX_D_0_10
tx_disp_sel_ch0[0]1
FF_TX_D_0_11
XAUI
千兆以太网
GND
GND
pci_ei_en_ch0[0]
txdata_ch0[8]
txdata_ch0[9]
GND
xmit_ch0[0]2
GND
GND
tx_disp_correct_ch0[0]
GND
FF_TX_D_0_12
txdata_ch0[8]
FF_TX_D_0_13
txdata_ch0[9]
txdata_ch0[11]
FF_TX_D_0_14
txdata_ch0[10]
txdata_ch0[12]
FF_TX_D_0_15
txdata_ch0[11]
txdata_ch0[13]
FF_TX_D_0_16
txdata_ch0[12]
txdata_ch0[14]
FF_TX_D_0_17
txdata_ch0[13]
txdata_ch0[15]
FF_TX_D_0_18
txdata_ch0[14]
txdata_ch0[16]
FF_TX_D_0_19
txdata_ch0[15]
FF_TX_D_0_20
txdata_ch0[17]
tx_k_ch0[1]
FF_TX_D_0_21
tx_force_disp_ch0[1]1
FF_TX_D_0_22
tx_disp_sel_ch0[1]1
FF_TX_D_0_23
txdata_ch0[10]
GND
txc_ch0[1]
GND
GND
pci_ei_en_ch0[1]
txdata_ch0[19]
GND
xmit_ch0[1]2
GND
GND
tx_disp_correct_ch0[1]
GND
FF_RX_D_0_0
rxdata_ch0[0]
FF_RX_D_0_1
rxdata_ch0[1]
FF_RX_D_0_2
rxdata_ch0[2]
FF_RX_D_0_3
rxdata_ch0[3]
FF_RX_D_0_4
rxdata_ch0[4]
FF_RX_D_0_5
rxdata_ch0[5]
FF_RX_D_0_6
rxdata_ch0[6]
FF_RX_D_0_7
txdata_ch0[18]
rxdata_ch0[7]
FF_RX_D_0_8
rx_k_ch0[0]
rxc_ch0[0]
FF_RX_D_0_9
rx_disp_err_ch0[0]
rxstatus0_ch0[0]
rx_disp_err_ch0[0]
FF_RX_D_0_10
rx_cv_err_ch0[0]3
rxstatus0_ch0[1]
rx_cv_err_ch0[0]3
FF_RX_D_0_11
NC
rxstatus0_ch0[2]
NC
NC
rxdata_ch0[8]
rxdata_ch0[9]
NC
NC
FF_RX_D_0_12
rxdata_ch0[8]
FF_RX_D_0_13
rxdata_ch0[9]
rxdata_ch0[10]
rxdata_ch0[11]
FF_RX_D_0_14
rxdata_ch0[10]
rxdata_ch0[12]
FF_RX_D_0_15
rxdata_ch0[11]
rxdata_ch0[13]
FF_RX_D_0_16
rxdata_ch0[12]
rxdata_ch0[14]
FF_RX_D_0_17
rxdata_ch0[13]
rxdata_ch0[15]
FF_RX_D_0_18
rxdata_ch0[14]
rxdata_ch0[16]
FF_RX_D_0_19
rxdata_ch0[15]
rxdata_ch0[17]
7
LatticeECP3 SERDES/PCS
使用指南
表 8-3. 模式使用的数据总线 (续)
数据总线 PCS
单元名称 4
G8B10B
CPRI OBSAI
FF_RX_D_0_20
PCI Express
SRIO
XAUI
8位
SERDES
rxc_ch0[1]
NC
rxdata_ch0[18]
NC
rxdata_ch0[19]
千兆以太网
rx_k_ch0[1]
FF_RX_D_0_21
rx_disp_err_ch0[1]
rxstatus1_ch0[0]
rx_disp_err_ch0[1]
FF_RX_D_0_22
rx_cv_err_ch0[1]3
rxstatus1_ch0[1]
rx_cv_err_ch0[1]3
FF_RX_D_0_23
NC
rxstatus1_ch0[2]
10 位
SERDES
SDI
NC
NC
1. force_disp 信号将强制相关数据字的位 [7:0] 在列上的不一致,而 (disparity)值由 tx_disp_sel 信号来选择。如果 disp_sel 是 1, 10 位编码将为 “ 当前 RD+” 列
(即 positive disparity)。如果 tx_disp_sel 为 0, 10 位编码将为 “ 当前 RD-“ 列 (即 negative disparity)。
2. 莱迪思千兆以太网 PCS IP 核可提供一个自协商的状态机,生成信号 xmit。它用于与千兆以太网硬逻辑空闲状态机进行交互。
3. 当出现编码违例,数据包 PCS 8b10b 解码器将使用 d=hex EE 和 K=1 (K=1 且 d=EE 不在 8b10b 编码空间内)替代解码器的输出。
4. FF_TX_D_0_0:FPGA 结构发送数据总线 Channel 0 Bit 0。
特定模式控制 / 状态信号说明
表 8-4 说明了特定模式下的控制 / 状态信号。
表 8-4. 控制信号及其功能
信号名称
说明
发送控制信号
tx_k_ch[3:0]
tx_force_disp_ch[3:0]
每个通道,高电平有效控制字符指示。
每个通道,高电平有效,命令 PCS 接受来自 disp_sel_ch(0-3) FPGA 接口输入的不一致 (disparity)
值。
tx_disp_sel_ch[3:0]
每个通道, FPGA 逻辑提供的不一致 (disparity) 值。当 force_disp_ch(0-3) 为高电平时有效。
tx_correct_disp_ch[3:0]
当有效时,通过调整 8b10b 编码器以取 negative disparity 状态开始来更正 (disparity) 指示符。
接收状态信号
rx_k_ch[3:0]
每个通道,高有效控制字符指示。
rx_disp_err_ch[3:0]
每个通道, PCS 发出的高有效信号,用以指示相应数据检测到的 (disparity) 错误。
rx_cv_err_ch[3:0]
每个通道,编码违例信号,用以指示相应数据检测到的错误。
控制
每个模式下有其各自的一套控制信号,允许从 FPGA 逻辑直接控制各种 PCS 功能。通常,这些控制输入的每个信号
复制写入相应的控制寄存器的一个或多个位中。
{signal}_c 是从 FPGA 内核到 FPGA 桥的控制信号。所有控制信号均在 SERDES/PCS 内异步使用。
状态
每个模式下有其各自的一套状态或报警信号,通过 FPGA 逻辑进行监控。 通常,这些状态输出都对应于特定状态寄
存的一个或多个位。 Diamond 设计工具给了用户将这些端口输出到 PCS FPGA 接口的选择。
{signal}_s 是从 FPGA 桥到 FPGA 内核的状态信号。来自 SERDES/PCS 的所有状态信号都是异步的。他们都必须
在 FPGA 设计使用这些信号之前在时钟域进行同步。
请参考本文档的特定模式控制 / 状态信号章节,了解有关控制和状态信号的详细信息。
8
LatticeECP3 SERDES/PCS
使用指南
SERDES/PCS
quad 包含 4 个通道,每个通道都有 RX 和 TX 电路,以及一个包含 TX PLL 的辅助通道。主差分参考时钟引脚或
FPGA 内核都可以提供 TX PLL 的参考时钟 。quad SERDES/PCS 宏为 4 条数据通道执行串行化或解串功能。此外,
SERDES/PCS 块的 TxPLL 为 FPGA 逻辑提供系统时钟。quad 还在每个 TX 和 RX 电路上独立支持全数据速率和半
数据速率模式。框图级图如图 8-4 所示。
图 8-4. SERDES/PCS 块信号接口
Primary I/O
SERDES
Client
Interface
Control
Signals
from
FPGA
refclkp
refclkn
hdinp_ch[3:0]
hdinn_ch[3:0]
hdoutp_ch[3:0]
hdoutn_ch[3:0]
sci_sel_quad
sci_sel_ch[3:0]
sci_wrdata[7:0]
sci_wrn
sci_addr[5:0]
sci_rd
sci_rddata[7:0]
sci_int
txd_ldr_en_ch[3:0]_c
tx_div2_mode_ch[3:0]_c
rx_div2_mode_ch[3:0]_c
tx_div11_mode_ch[3:0]_c
rx_div11_mode_ch[3:0]_c
tx_idle_ch[3:0]_c
pcie_ct_ch[3:0]_c
pcie_det_en_ch[3:0]_c
sb_felb_ch[3:0]_c
r x_invert_ch[3:0]_c
rx_pcs_rst_ch[3:0]_c
tx_pcs_rst_ch[3:0]_c
rx_serdes_rst_ch[3:0]_c
tx_serdes_rst_c
rst_qd_c
serdes_rst_qd_c
tx_sync_qd_c
word_align_en_ch[3:0]_c
tx_pwrup_ch[3:0]_c
rx_pwrup_ch[3:0]_c
sb_felb_rst_ch[3:0]_c
rx_full_clk_ch[3:0]
rx_half_clk_ch[3:0]
tx_full_clk_ch[3:0]
tx_half_clk_ch[3:0]
refclk2fpga
fpga_txrefclk
fpga_rxrefclk_ch[3:0]
rxiclk_ch[3:0]
txiclk_ch[3:0]
SERDES/PCS
Quad
rxdata_ch0[23:0]
rxdata_ch1[23:0]
rxdata_ch2[23:0]
rxdata_ch3[23:0]
RX Data
txdata_ch0[23:0]
txdata_ch1[23:0]
txdata_ch2[23:0]
txdata_ch3[23:0]
TX Data
rxd_ldr_ch[3:0]
txd_ldr_ch[3:0]
lsm_status_ch[3:0]_s
ctc_ins_ch[3:0]_s
ctc_del_ch[3:0]_s
ctc_urun_ch[3:0]_s
ctc_orun_ch[3:0]_s
pcie_done_ch[3:0]_s
pcie_con_ch[3:0]_s
rx_los_low_ch[3:0]_s
rx_cdr_lol_ch[3:0]_s
tx_pll_lol_qd_s
9
Clocks to &
from FPGA
Low-speed
Data
Status
Signals
to
FPGA
LatticeECP3 SERDES/PCS
使用指南
I/O 说明
表 8-5 列出了所有(至 / 从)PCS quad 的默认和可选择的输入和输出。用户可使用 IPexpress™ GUI 选择可选的端
口用于 PCS quad。
表 8-5. SERDES_PCS I/O 说明
I/O
类型
hdinp_ch0
I
通道
高速 CML 输入、正极、 channel 0
hdinn_ch0
I
通道
高速 CML 输入、负极、 channel 0
hdinp_ch1
I
通道
高速 CML 输入、正极、 channel 1
信号名称
说明
主 I/O、 SERDES Quad
hdinn_ch1
I
通道
高速 CML 输入、负极、 channel 1
hdinp_ch2
I
通道
高速 CML 输入、正极、 channel 2
hdinn_ch2
I
通道
高速 CML 输入、负极、 channel 2
hdinp_ch3
I
通道
高速 CML 输入、正极、 channel 3
hdinn_ch3
I
通道
高速 CML 输入、负极、 channel 3
hdoutp_ch0
O
通道
高速 CML 输入、正极、 channel 0
hdoutn_ch0
O
通道
高速 CML 输出、负极、 channel 0
hdoutp_ch1
O
通道
高速 CML 输入、正极、 channel 1
hdoutn_ch1
O
通道
高速 CML 输出、负极、 channel 1
hdoutp_ch2
O
通道
高速 CML 输入、正极、 channel 2
hdoutn_ch2
O
通道
高速 CML 输出、负极、 channel 2
hdoutp_ch3
O
通道
高速 CML 输入、正极、 channel 3
hdoutn_ch3
O
通道
高速 CML 输出、负极、 channel 3
refclkp
I
Quad
参考时钟输入、正极、专用 CML 输入
refclkn
I
Quad
参考时钟输入、负极、专用 CML 输入
接收 / 发送数据总线 (参见表 8-3 和 8-4,了解有关数据总线的详细使用信息)
rxdata_ch0[23:0]
O
通道
用于 channel 0 接收路径的数据信号
rxdata_ch1[23:0]
O
通道
用于 channel 1 接收路径的数据信号
rxdata_ch2[23:0]
O
通道
用于 channel 2 接收路径的数据信号
rxdata_ch3[23:0]
O
通道
用于 channel 3 接收路径的数据信号
txdata_ch0[23:0]
I
通道
用于 channel 0 发送路径的数据信号
txdata_ch1[23:0]
I
通道
用于 channel 1 发送路径的数据信号
txdata_ch2[23:0]
I
通道
用于 channel 2 发送路径的数据信号
txdata_ch3[23:0]
I
通道
用于 channel 3 发送路径的数据信号
tx_idle_ch[3:0] _c
I
通道
通过 SERDES 发送器发出控制传输的电气空闲信号。
1 = 命令 SERDES 发送器输出电气空闲信号
0 = 正常操作
pcie_det_en_ch[3:0]_c
I
通道
FPGA 逻辑 (用户逻辑)通知 SERDES 块,它将申请用于 PCI Express
接收器检测工作。
1 = 使能 PCI Express 接收器检测, 0 = 正常操作
pcie_ct_ch[3:0]_c
I
通道
1 = 申请发送器进行远端接收器检测
0 = 正常数据操作
rx_invert_ch[3:0]_c
I
通道
控制接收数据求反。
1 = 数据取反, 0 = 无需数据取反
控制信号
10
LatticeECP3 SERDES/PCS
使用指南
表 8-5. SERDES_PCS I/O 说明 (续)
I/O
类型
word_align_en_ch[3:0]_c
I
通道
控制 comma 字符
1 = 使能 comma 对齐功能, 0 = 锁定字对齐位置为当前位置
sb_felb_ch[3:0]_c
I
通道
SERDES 桥接并行回环
1 = 使能回环从 RX 至 TX, 0 = 正常数据工作
sb_felb_rst_ch[3:0]_c
I
通道
SERDES 桥接并行回环 FIFO 清除
1 = 复位回环 FIFO, 0 = 正常回环操作
tx_sync_qd_c
I
Quad
串行器复位
跳变 (Transition) = 复位,不变 (Level) = 正常工作
rx_div2_mode_ch[3:0]_c
I
通道
接收器速率模式选择 (半速 / 全速)
1 = 半速, 0 = 全速
tx_div2_mode_ch[3:0]_c
I
通道
发送器速率模式选择 (半速 / 全速)
1 = 半速, 0 = 全速
rx_div11_mode_ch[3:0]_c
I
通道
接收器速率模式选择 (Div11/ 全速)
1 = Div11, 0 = 全速
tx_div11_mode_ch[3:0]_c
I
通道
发送器速率模式选择 (Div11/ 全速)
1 = Div11, 0 = 全速
txd_ldr_en_ch{3:0]_c
I
通道
使能低数据速率 TX 串行路径
1 = 使能, 0 = 禁用
信号名称
说明
复位信号
rx_pcs_rst_ch[3:0]_c
I
通道
高电平有效,异步输入。仅在 PCS 中复位单独的接收通道逻辑。
tx_pcs_rst_ch[3:0]_c
I
通道
高电平有效,异步输入。仅在 PCS 中复位单独的发送通道逻辑。
rx_serdes_rst_ch[3:0]_c
I
通道
高电平有效。在 SERDES 接收通道中复位选择的数字逻辑。
tx_serdes_rst_c
I
Quad
高电平有效。在所有 SERDES 发送通道中复位选择的数字逻辑。
rst_qd_c
I
Quad
高电平有效,异步输入。复位所有 SERDES 通道,包括辅助通道和
PCS。
serdes_rst_qd_c
I
Quad
高电平有效,异步输入至 SERDES quad。复位所有 SERDES 通道,
包括 Quad 通道但非 PCS 逻辑。
tx_pwrup_ch[3:0]_c
I
通道
1 = 高电平有效,发送通道上电后。 0 = 发送通道断电。
rx_pwrup_ch[3:0]_c
I
通道
1 = 高电平有效,接收通道上电后。 0 = 接收通道断电。 .
pcie_done_ch[0:3]_s
O
通道
1 = 远端接收器检测完成
0 = 远端接收器检测未完成
pcie_con_ch[3:0]_s
O
通道
远端接收器检测结果。
1 = 检测到远端接收器
0 = 未检测到远端接收器
rx_los_low_ch[3:0]_s
O
通道
每个通道的信号丢失 (LO 阈值范围)检测。
lsm_status_ch[3:0]_s
O
通道
1 = 数据通道已与 comma 字符同步
0 = 数据通道未找到 comma 字符
ctc_urrun_ch[3:0]_s
O
通道
1 = 接收时钟补偿器 FIFO 欠载运行错误
0 = 无 FFIFO 错误
ctc_orun_ch[3:0]_s
O
通道
1 = 接收时钟补偿器 FIFO 过载错误
0 = 无 FIFO 错误
rx_cdr_lol_ch[3:0]_s
O
通道
1 = 接收 CDR 锁定丢失
0 = 保持锁定
tx_pll_lol_qd_s
O
Quad
1 = 发送 PLL 锁定丢失
0 = 保持锁定
ctc_ins_ch[3:0]_s
O
通道
1 = CTC 添加的字符 SKIP
ctc_del_ch[3:0]_s
O
通道
1 = CTC 删除的字符 SKIP
rx_cdr_trained_ch[3:0]_s
O
通道
1 = 说明 CDR_TRAIN_DIV 路径已经训练了 CDR
状态信号
11
LatticeECP3 SERDES/PCS
使用指南
表 8-5. SERDES_PCS I/O 说明 (续)
信号名称
I/O
类型
说明
FPGA 接口时钟
rx_full_clk_ch[3:0]
O
通道
接收通道恢复时钟。在用户模式下,时钟源总是通道的恢复时钟。对于
10 GbE 等标准,支持时钟补偿,时钟源是相应发送通道的系统时钟。对
于 PCS 旁路模式,它也是发送系统时钟,因此要求 raw 模式实际上通
过 8b10b 模式下 8b10b 解码器禁止 (10 位或 20 位数据通道)来实
现。
rx_half_clk_ch[3:0]
O
通道
接收通道恢复半速时钟。在 2:1 gearing 模式下,输出除以 2。
tx_full_clk_ch[3:0]
O
通道
TX PLL 全速时钟。仅 tx_full_clk_ch0 可直接驱动主时钟网络。所有
tx_full_clk_ch[3:0] 信号可以通过使用 USE SECONDARY 时钟参数驱动
次时钟网络。 3
tx_half_clk_ch[3:0]
O
通道
TX PLL 半速时钟。仅 tx_half_clk_ch0 可直接驱动主时钟网络。所有
tx_half_clk_ch[3:0] 信号可以通过使用 USE SECONDARY 时钟参数驱动
次时钟网络。 3
refclk2fpga
O
Quad
参考时钟至 FPGA 内核。选择该时钟后,只要参考时钟有效就一直保持
有效,即使当 quad 为掉电模式。
fpga_rxrefclk_ch[3:0]
I
Quad
来自 FPGA 逻辑的 RX 参考时钟,用于 CDR PLL
fpga_txrefclk
I
Quad
来自 FPGA 逻辑的 TX 参考时钟,用于 TX SERDES PLL
ebrd_clk_ch[3:0]2
I
通道
来自 FPGA 的接收通道时钟输入,用于 CTC FIFO 读。
rxiclk_ch[3:0]
I
通道
来自 FPGA 的接收通道时钟输入。用于使用与参考和 / 或接收参考时钟
同步的时钟来为 RX FPGA Interface FIFO 提供时钟。
txiclk_ch[3:0]
I
通道
来自 FPGA 的发送通道时钟输入。每个通道来自 FPGA 发送的时钟输
入。使用与参考时钟同步的时钟来为 TX FPGA Interface FIFO 提供时
钟。在使用 CTC 时,还使用与参考时钟同步的时钟来为 RX FPGA
Interface FIFO 提供时钟。
低速接收 / 发送数据和 SERDES 客户端接口信号
rxd_ldr_ch[3:0]
O
通道
单端串行低数据速率输出 (RX)至 FPGA 内核。
txd_ldr_ch[3:0]
I
通道
来自 FPGA 内核的单端串行低数据速率输入 (TX)。
sci_wrdata[7:0]
I
—
写数据输入。
sci_wrn
I
—
写输入选通信号。
sci_sel_quad
I
—
选择 quad 寄存器。
sci_sel_ch[3:0]
I
—
选择通道寄存器。
sci_addr[5:0]
I
—
地址总线输入。
sci_rd
I
—
读数据选择。
sci_rddata[7:0]
O
—
读数据输出。
sci_int
O
—
中断输出。
1. 配置时, hdoutp 和 hdoutn 都拉高至 VCCOB。
2. wrapper 模块端口列表不提供该时钟。根据 CTC 模式,软件自动分配时钟。参见 FPGA 接口时钟使用章节,了解更多详细信息。
3. 通用布线用于访问次时钟网络。用户可能得到一个 PAR 警告,但是在大多数应用中这个延迟小到可以被忽略。使用时序参数并查看追踪报
告,确保没有时序冲突。
12
LatticeECP3 SERDES/PCS
使用指南
SERDES/PCS 功能说明
LatticeECP3 器件有 1 到 4 个嵌入式 SERDES/PCS 逻辑 quad。每个 quad 依次支持 4 个独立的全双工数据通道。
单通道可支持一个数据链路,每个 quad 最多可支持四个这样的通道。
嵌入式 SERDES CDR PLL 和 TX PLL 支持的数据速率覆盖各种行业标准协议。
参见图 8-3 了解下面所列的每项内容。
• SERDES
– 均衡器
– CDR (时钟和数据恢复)
– 解串器
– 预加重
– 串行器
– 两种串行回环模式, TX 至 RX 或 RX 至 TX
• SERDES 桥 (SB)
– 反相器 —— 根据 PCI Express 的要求对接收数据取反。
– SERDES 桥并行回环
• PCS 核
– 字对齐
– 8b10b 解码器
– 8b10b 编码器
– 链路状态机
– 时钟容限补偿
• FPGA 桥 (FB)
– 下采样 FIFO
– 上采样 FIFO
SERDES
均衡器
随着数字传输的数据速率超过 Gbps 数量级,与频率相关的衰减导致接收信号受到严重的码间干扰,因而必须在数据
收发器中使用一个均衡器来正确恢复数据。提供 6 个档位的频率范围:Mid_Low,Mid_Med,Mid_High,Long_Low,
Long_Med, Long_High。
预加重
预加重是指一个系统过程,旨在相对于其它频率分量,增强某些频率的信号分量。目的就是尽量减少衰减差异这一
现象所造成的不利影响,从而改善整体信号的信噪比。用户可以选择高达 80% 预加重。
参考时钟的使用
SERDES quad 包含 4 个带有 RX 和 TX 电路的通道,还有一个包含 TX PLL 的辅助通道。 TX PLL 的参考时钟可由
主差分参考时钟引脚或相邻 quad 的参考时钟或 FPGA 内核提供。此外,SERDES 块中的 PLL 提供了输出时钟,可
用于作为系统时钟来驱动 FPGA。
RX 的参考时钟可由 TX PLL 的参考时钟或 FPGA 内核提供。 FPGA 内核为 TX PLL 和 RX 提供的参考时钟可能来自
于不同的时钟源。
13
LatticeECP3 SERDES/PCS
使用指南
SERDES 时钟架构
图 8-5 显示了整个 SERDES 时钟架构。这个图分成 2 部分, Quad 和通道。为简洁起见,每条通道仅显示一条。此
外,不同的模块的各个控制位如下图所示。这些可能是基于 quad 的控制寄存器位或基于通道的控制寄存器位。在某
些情况下,它可以是基于通道控制端口的。有些是寄存器和控制端口两者的结合。使用这两种模式可实现某些特定
功能特性的动态控制。
图 8-5. SERDES 时钟架构
Quad 1
REFCLK_OUT_SEL[1] (Reg)
REFCLK_OUT_SEL[0] (Reg)
TXREFCLK from FPGA Core
REFCLK to FPGA Core
TXREFCLK_SEL (Reg)
PULSE SYNC
TX_SYNC_QD_C
0
REFCLKN
D
(Reg or Core)
Q
(To All TX Channels)
CLK3G4TX
TX_PLL(QD)
8X, 10X,
16X, 20X,
25X
1
REFCLKP
Channel 2
TX_FULL_CLK (CH)
REFFC2D CO_FLOOP (Reg)
TX_DIV11_MODE (Reg/Core)
REFCLK_MODE[1:0]
REFCLK25X (QD_REG*)
0
REFCLK from FPGA Core
1
RX_REFCLK_SEL (Reg)
RX_CDR
(CH)
1
/11
Serializer(CH)
8:1/10:1
0
/2
1
0
BUS8B_SEL
(QD_REG*)
/11
1
0
/2
/2
TX_HALF_CLK (CH)
DeSerializer(CH)
8:1/10:1
RX_FULL_CLK (CH)
1
RX_DIV11_MODE (Reg/Core)
/2
0
RX_DIV2_MODE (Reg/Core)
RX_HALF_CLK (CH)
1. All control bits are quad based.
2. All control bits are channel based, except as indicated (*).
3. These clocks are user-transparent.
时钟架构的主要部件包括:
• 每个 RX 和每个 TX 分频器 (DIV)模式 ——DIV2, DIV11
• 多个 quad REFCLK 连接
• 使用 FPGA 的 tx_sync_qd_c 信号的多通道发送同步
• OOB 低数据速率应用支持
速率模式
每个通道的 TX 可独立编程以下面某种速率运行:
• FULL_RATE
• HALF_RATE (DIV2)
• DIV11
RX 也可以每通道使用一个独立的参考时钟,使发送器和接收器在完全不同的速率下运行。
这里有一点很重要,请注意 PLL VCO 是未受影响的,它支持该协议的最高速率。该协议所需的所有分频速率都可以
14
LatticeECP3 SERDES/PCS
使用指南
通过对分频器多路开关选择进行适当的编程得到。由于 PLL 无需重新编程 , 从而实现了非常快速的数据速率转换。
这对于许多应用来说是很有价值的。
注:LatticeECP3 PCS 不能在运行时进行速率改变。简单地改变 refclk 速率不会使 SERDES 在新的速率范围下工
作。你需要重新对 SERDES 进行编程,并且这仅可能通过使用一个新的位流来实现。
TX PLL 和 4 个 CDR PLL 通常以相同频率工作,该频率为参考时钟频率的若干倍。表 8-6 显示了各种可能的时钟速
率模式。列出的位时钟为参考时钟频率的倍数。
表 8-6. TXPLL 和 RX CDRPLL 支持的模式
参考时钟模式
refclkPmode (Quad)
Bus_width
位时钟 (全速)
位时钟 (div2, div11)
20x
0
10
Refclk x 20
Refclk x 10
16x
0
8
Refclk x 16
Refclk x 8
10x
1
10
Refclk x 10
Refclk x 5
8x
1
8
Refclk x 8
Refclk x 4
25x
—
8
Refclk x 25
Refclk x 12.5
25x
—
10
Refclk x 25
Refclk x 12.5
20x
0
10
Refclk x 20
Refclk x 20/111
1. DIV11 模式。
来自 FPGA 内核的参考时钟
如图 8-5 中所述,Tx 参考时钟可由 FPGA 内核提供。在这种情况下,FPGA 资源将时钟信号传给 SERDES 所引起
的额外的抖动将传递给发送数据,就具体情况而言,可能会违反Tx抖动特性规范。当使用一个来自FPGA的SERDES
Tx 参考时钟时需要加以注意。
15
LatticeECP3 SERDES/PCS
使用指南
图 8-6. 参考时钟的使用框图
SERDES
PCS/FPGA Core
HDIN_ch0
CDR PLL 0
1/2
1/11
DES0
CDR PLL 1
1/2
1/11
DES1
[0]
HDIN_ch1
Data to PCS
[1]
HDIN_ch2
CDR PLL 2
1/2
1/11
DES2
CDR PLL 3
1/2
1/11
DES3
[2]
HDIN_ch3
[3]
[3:0]
REFCLKP
REFCLKN
RX_REFCLK
from FPGA Core(ch[3:0])
REFCLK to FPGA Core
REFCLK to TX PLL(QUAD)
TX PLL
HDOUT_ch0
SER0
1/2
1/11
HDOUT_ch1
SER1
1/2
1/11
HDOUT_ch2
Data from PCS
SER2
1/2
1/11
HDOUT_ch3
SER3
1/2
1/11
全速、 Div 2 和 Div 11 数据速率
每个 TX 串行器和 RX 解串器根据协议可分为全数据速率和 div2 速率或 div11 速率,在每个通道的每个方向上允许不
同的数据速率。请参见图 8-6,了解更多信息。
如图 8-7 所示,四个通道可以进行不同的配置。
16
LatticeECP3 SERDES/PCS
使用指南
图 8-7. IPexpress GUI 的全速和半速示例
本示例中的实际数据速率和 FPGA 接口时钟速率如表 8-7 所示。 IPexpress GUI 将在本文档的后续章节中讨论。
表 8-7. 时钟速率示例
通道
数据速率
参考时钟
倍频器
Channel 0
1 Gbps
Channel 1
500 Mbps
FPGA 接口数
据总线宽度
计算的参考
时钟速率
10 x
数据速率
模式
FULL
100 MHz
8 (10)
10 x
DIV2
100 MHz
8 (10)
3
FPGA 接口
时钟速率
tx_full_clk
tx_half_clk
100 MHz
100 MHz
50 MHz
50 MHz
50 MHz
25 MHz
Channel 2
1 Gbps
10 x
FULL
100 MHz
16 (20)
50 MHz
100 MHz
50 MHz
Channel 3
500 Mbps
10 x
2
100 MHz
16 (20)
25 MHz
50 MHz
25 MHz
DIV2
1. 阴影单元格中的时钟用作每个模式下的 FPGA 接口时钟。
2. 在 DIV2 模式下, tx_full_clk 调整为半速。 tx_half_clk 仅用于 16 位总线接口。
3. 10 位 SERDES only 模式或 SDI 模式。
全速和半速 (DIV2)之间的动态开关
本章节说明了如何在全速和半速 (DIV2)之间进行动态的开关控制。
两种速率模式控制信号通过或门,如图 8-8 所示。
图 8-8. 速率模式控制信号
rx_div2_mode_ch[3:0]_c
Rate_Mode_Rx(CH_15[1])
Receiver Rate ( 0: Full Rate, 1: Half Rate)
tx_div2_mode_ch[3:0]_c
Rate_Mode_Tx(CH_14[1])
Transmitter Rate ( 0: Full Rate, 1: Half Rate)
17
LatticeECP3 SERDES/PCS
使用指南
tx_div2_mode_chx_c 是 FPGA 结构发送给 TX 的输入控制信号。
rx_div2_mode_chx_c 是 FPGA 结构发送给 RX 的输入控制信号。
Rate_Mode_Tx(CH_14[1]) 是针对 TX 路径的控制寄存器位。
Rate_Mode_Rx(CH_15[1]) 是针对 RX 路径的控制寄存器位。
在 rx 线上, pcs_rst 需在开关切换后发出。
在 tx 线上,换为新速率时无需复位。
参考时钟源
refclkp, refclkn
专用 CML 输入。除非使用其他的时钟源,这是 rx 和 tx 首选的时钟源。时钟信号可能是 CML、 LVDS 或 LVPECL。
请参见 TN1114C,莱迪思 SERDES 的电气建议,例如接口电路。
fpga_txrefclk, fpga_rxrefclk
来自 FPGA 逻辑的参考时钟。 主时钟引脚(PCLK)应作为 FPGA 的时钟输入引脚。时钟信号可能是 CML、LVDS、
LVPECL 或单端。
FPGA PLL
当 FPGA PLL 用作参考时钟,连到 PLL 的参考时钟应分配给一个专用的 PLL 输入引脚。在更高的数据速率情况下,
FPGA PLL 输出抖动可能会不能满足系统特性。不推荐在抖动敏感的应用中使用一个 FPGA PLL。
扩频时钟 (SSC)支持
链路两端的端口必须一直以两者之间低于 600pm 的速率差异传输数据。这个规定允许比特率时钟源有 +/- 300ppm
容限。必须遵守最小的时钟周期。首选的方法是调整扩展技术,不允许超过调制的额定频率。数据速率可在 0%至 0.5%的额定频率范围内进行调制。调制率在不超过 30KHz 到 33KHz 的范围内。根据 +/- 300ppm 的容限,这里要
求,当数据使用 SSC 调制时,两个端口需要相同的比特率时钟。
在 PCI Express 应用中,根复合体 (root complex)是负责扩频参考时钟,然后端点 (endpoint)基本上使用相同
的时钟,通过 TX 返回频谱。因此,不需要单独的 RXREFCLK。主要应用是在插件卡上。插件卡无须使用来自连接
器的 REFCLK,但必须接收和发送与 PCI Express 连接器 REFCLK 相同的 SSC。
虽然 LatticeECP3 架构允许在一个 quad 中混合 PCI Express 通道和千兆以太网、串行 RapidIO 或 SGMII 通道,使
用 PCI Express SSC 作为发送参考时钟将会导致违反千兆以太网、串行 RapidIO 和 SGMII 发送抖动参数的规定。
信号丢失
每个通道包含一个可编程的信号丢失检测器,如图 8-9 所示。
信号丢失阈值由可编程电流源的值决定。电流源值使用rlos_lset[2:0] 控制位来选择。阈值检测的结果通过rx_los_low
状态信号标示给 FPGA。
18
LatticeECP3 SERDES/PCS
使用指南
图 8-9. 信号丢失检测器
HDINP
Current source
value depends on
rlos_lset[2:0]
rx_los_low
Reference voltage on this
node is derived from VCM
HDINN
Note: rx_los_low shows that a signal has been detected for data rates above 1 Gbps with a maximum
CID (Consecutive Identical Digits) of 7 bits (i.e., a minimum input signal transition density as is sent by 8b10b).
rx_los_low is supported with a default setting of rlos_lset[2:0] = 2, except in PCI Express mode and
SDI mode. In PCI Express mode, 2 and 3 are supported.
In SDI mode, it is recommended to use the carrier detect output signal (/CD) from the external SDI cable equalizer.
表 8-8. 信号丢失检测器的响应时间
说明
最小值
典型值
最大值
单位
检测到信号丢失所需的时间 (rx_los_low 从 0 变为 1)
—
8
10
ns
检测到信号出现所需的时间 (rx_los_low 从 1 变为 0)
—
8
10
ns
失锁
发送 PLL 和单独通道 CDR 都有数字的基于计数器的失锁检测器。如果发送 PLL 失锁,发出 PLL 失锁信号,并且将
一直发出该信号,直到 PLL 重新获得锁定。如果 CDR 失锁,该通道将发出失锁信号并锁定参考时钟,使 CDR 中的
VCO 重新开始训练。完成后,通道的失锁信号释放, CDR 转回锁定传进来的信号。 CDR 将继续锁定数据,或返回
再次失锁状态,这样的话将重复再训练周期。有关 CDR 失锁的详细信息,请参阅本文档中的 SERDES/PCS 复位章
节。
表 8-9. 锁丢失检测器的响应时间
最小值
典型值
最大值
单位
检测到回路失锁所需的时间 (tx_pll_lol, rx_cdr_lol, 0 变为 1)
说明
—
200
500
us
检测到回路锁定所需的时间 (tx_pll_lol, rx_cdr_lol, 1 变为 0)
—
200
500
us
TX 通道间偏移
控制信号 tx_sync_qd_c 复位所有有效的 TX 通道,从 bit 0 开始串行化。大多数多通道协议标准要求确保 TX 通道间
偏移在一个确定的规定值范围内。
TX 串行器的复位通常是由于 tx_sync_qd_c 信号跳变或 PLL 锁定丢失时刻而产生的。
SERDES PCS 配置设置
LatticeECP3 PCS 可配置用于各种应用。使用 IPexpress 模块生成器工具选择设置,允许用户选择 PCS 的模式和特
性选项。选项选择保存在自动配置文件中,之后位流生成器可以用它来将用户选择写入位流。更改 PCS 选项选择
时,推荐用户重新运行 IPexpress,产生一个新的 PCS 模块,并创建一个新的自动配置文件。在运行位流生成器之
前,一些选项可通过手动编辑自动配置文件来进行更改。配置之后, PCS 选项可通过可选的 SERDES 客户端接口
总线写入 PCS 寄存器来进行动态修改。 SERDES 客户接口允许 SERDES/PCS quad 通过寄存器来进行控制,以不
同于原来的配置存储器单元。可通过 SCI 访问的控制和状态寄存器表请参见附录 A。
19
LatticeECP3 SERDES/PCS
使用指南
自动配置文件
每个 PCS 模式的初始寄存器设置可通过使用 IPexpress 中的自动配置功能实现。模块生成器提供了一个自动配置文
件,包含了所选模式下 quad 和通道寄存器的设置。可参考这个文件来进行前端仿真,还可以集成到位流中。当一个
自动配置文件集成到位流中,那么在配置过程中,所有的 quad 和通道寄存器将根据自动配置文件定义的值进行设
置。如果在工作时,用户需要更改控制寄存器或监控状态寄存器,那么设计中必须包含 SCI。
发送数据
PCS quad 发送数据路径的每通道包含一个 8b10b 编码器和串行器。
8b10b 编码器
该模块实现了一个 8b10b 编码器,符合 IEEE 802.3ae-2002 1000BASE-X 规范标准。编码器根据规范实现 8 位到
10 位的代码转换,并且同时遵守所规定的运行 (running disparity)规则。 8b10b 编码器可通过在每个通道上将
CHx_8B10B 属性设置为 “BYPASS” 来将其旁路,其中 x 是通道编号。
串行器
8b10b 编码数据进行了并到串转换并且通过嵌入式 SERDES 进行片外传送。
接收数据
PCS quad 接收数据路径的每个通道包含以下子模块:解串行器、字对齐、8b10b 解码器、可选的链路状态机以及可
选的接收时钟容限补偿 (CTC) FIFO。
解串行器
数据是在传至片上到嵌入式 SERDES 的过程中从串行变为并行的。
字对齐 (字节边界检测)
这个模块执行 comma 这一字符检测和对齐操作。接收逻辑使用逗号 (comma)字符来对传入数据流进行 10 位字
符的字对齐。逗号 (comma)的描述可以查阅 802.3.2002 1000BASE-X 规范的 36.2.4.9 章节,以及 10GBASE-X
规范 48.2.6.3 章节的图 48-7。
字对齐模块支持大量可编程选项:
• 字对齐控制由嵌入式链路状态机 (LSM)或 FPGA 控制实现。除了 8b10b 数据包模式外,还支持 8 位 SERDES
Only、 10 位 SERDES Only 以及 SDI 模式。
• 可以设置两种可编程字对齐字符(通常一个用于 positive disparity,一个用于 negative disparity)以及一个可编程
的每位掩码寄存器用于对齐比较。对齐字符和掩码寄存器可按每个 quad 来设置。对于许多协议来说,字对齐字
符可设为 “XX00000011” (jhgfiedcba 位用于 positive disparity comma 字符对应代码组 K28.1、 K28.5 和
K28.7)以及 “XX01111100” (jhgfiedcba 位用于 negative disparity comma 字符对应代码组 K28.1、 K28.5 和
K28.7)。但是,用户也可定义任意 10 位模式。
• 第一个对齐的字符由分配给属性 COMMA_A 的 10 位数值所定义。该值适用于 PCS quad 中的所有通道。
• 第二个对齐的字符由分配给属性 COMMA_B 的 10 位数值所定义。 该值适用于 PCS quad 中的所有通道。
20
LatticeECP3 SERDES/PCS
使用指南
• 掩码寄存器定义了要比较哪个字对齐位 (掩码寄存器中值为 ‘1’ 的位表示需要检查字对齐字符寄存器中的相应
位)。掩码寄存器由 COMMA_M 属性的 10 位值决定。此值适用于 PCS quad 中的所有通道。当属性
CHx_RXWA (字对齐)设置为 “ENABLED”,并且 CHx_ILSM (内部链路状态机)设置为 “ENABLED”,某个基
于协议的链路状态机的工作将控制字对齐。若欲了解更多有关基于协议的链路状态机的工作的信息,请参见下面
特定协议的链路状态机章节。
8b10b 解码器
8b10b 解码器实现了一个 8b10b 解码器操作,符合 IEEE 802.3-2002 参数规范标准。解码器根据规范实现 10 位到
8 位的代码转换,并且同时遵守所规定的运行差异规则。当检测到代码违例时,接收数据 rxdata 设为 0xEE,rx_k_chn
设为 ‘1’。
外部链路状态机选项
当属性 CHx_ILSM (内部链路状态机)设为 “DISABLED”,并且 CHx_RXWA (字对齐)设为 “ENABLED”,控制信
号 word_align_en_ch(0-3) 用于使能字对齐。这个信号应当由 FPGA 结构中实现的 FPGA 外部链接状态机产生。当
word_align_en_ch(0-3)_c 为高电平时,字对齐将锁定对齐位并保持锁定状态。它将停止输入数据与用户定义的字对
齐字符的比较,并保持当前第一次比较成功的 COMMA_A 或 COMMA_B 的对齐状态。如果需要重新对齐,触发
word_align_en_ch(0-3)_c 信号由低电平变为高电平。字对齐将重新锁定下一次符合用户定义的字对齐字符的输入。
如果需要,word_align_en_ch(0-3)_c 可通过 PCS quad 外部实现的链路状态机控制,仅在特定条件下允许对字对齐
进行更改。
图 8-10 说明了链路状态机选项。
图 8-10. PCS 字对齐和链路状态机选项
word_align_enable
CH_01[7]
word_align_en_ch0_c
from FPGA fabric
ilsm_en
CH_04[6]
EN
Internal Link
State Machine
1
External
1:8 / 1:10
Deserializer
0
Internal
Word
Aligner
lsm_sel
CH_04[7]
8b10b
Decoder
当选择了一个链路状态机并在某一通道使能后,一旦链路同步成功,该通道的 lsm_status_ch(0-3)_s 状态信号将变
为高电平。
千兆以太网模式下的 Idle 信号插入
PCS 设为千兆以太网模式,将 /I2/ 信号插入接收数据流用以自动协商。千兆以太网自动协商以软逻辑方式执行。该
功能以每 2048个时钟周期插入连续的8 个 /I2/ 有序集。/I2/ 插入由输入到 PCS 的 xmit_ch(0-3)信号来控制,xmit_ch(03) 信号由自动协商软逻辑来驱动。图 8-11 说明了当 PCS 设为千兆以太网模式时,接收逻辑的一个通道 (此示例中
的 channel 0),并说明了这些控制 / 状态信号。
21
LatticeECP3 SERDES/PCS
使用指南
图 8-11. 千兆以太网模式下的 PCS 接收路径 (Channel 0 示例)
DeSerializer
Clock
Tolerance
Compensation
(CTC)
Gigabit
Ethernet
/I2/
Insert
8b10b
Decoder
rxdata_ch0[7:0]
rx_k_ch0[0]
xmit_ch0[0]
Word
Aligner
rx_disp_err_ch0[0]
rx_cv_err_ch0[0]
Link State
Machine
lsm_status_ch[0]_s
时钟容限补偿
时钟容限补偿 (CTC)模块执行恢复的接收时钟和锁定的参考时钟之间的时钟速率调整。时钟补偿是通过在预先定
义的位置插入或删除数据字节来实现的,并且同时保证不会造成数据包丢失。16 字节的 CTC FIFO 用于在两个时钟
域之间传输数据,并且将在 LatticeECP3 SERDES 规定的最大 ppm 容限范围内允许时钟差异。(请参见 LatticeECP3
系列数据手册中的直流和开关特性章节)。
在通道属性 CHx_CTC 设为 “ENABLED” 时,该通道就使能了时钟容限补偿模块。当通道属性 CHx_CTC 设为
“DISABLED” 时, CTC 就被旁路。
1 字节删除的图示说明如图 8-12 所示。
图 8-12. 时钟容限补偿 1 字节删除示例
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
SK
I
I
I
S
D
E = End of Packet
I = Logical Idle
Before CTC
Delete if CTC FIFO Almost Full & SK = CC_MATCH4
SK = Skip
S = Start of Packet
After CTC
D = Data
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
I
I
I
1 字节插入的图示说明如图 8-13 所示。
22
S
D
D
LatticeECP3 SERDES/PCS
使用指南
图 8-13. 时钟容限补偿 1 字节插入示例
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
SK
I
I
I
S
D
E = End of Packet
I = Logical Idle
Before CTC
Insert if CTC FIFO Almost Empty & SK = CC_MATCH4
SK = Skip
S = Start of Packet
After CTC
D = Data
rxiclk_ch0 or
ebrd_clk_ch0
E
rxdata_ch0[7:0]
I
SK
SK
I
I
I
S
2 字节删除的图示说明如图 8-14 所示。
图 8-14. 时钟容限补偿 2 字节删除示例
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
I
SK1
SK2
I
I
I
S
D
D
D
E = End of Packet
I = Logical Idle
SK1 = CC_MATCH3
Before CTC
SK2 = CC_MATCH4
After CTC
S = Start of Packet
D = Data
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
I
I
I
I
S
D
D
D
D
D
SK1
SK2
I
I
I
S
D
D
D
2 字节插入的图示说明如图 8-15 所示。
图 8-15. 时钟容限补偿 2 字节插入示例
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
I
E = End of Packet
I = Logical Idle
SK1 = CC_MATCH3
Before CTC
SK2 = CC_MATCH4
After CTC
S = Start of Packet
D = Data
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
E
I
I
SK1
SK2
SK1
SK2
4 字节删除的图示说明如图 8-16 所示。
23
I
I
I
S
D
LatticeECP3 SERDES/PCS
使用指南
图 8-16. 时钟容限补偿 4 字节删除示例
rxiclk_ch0 or
ebrd_clk_ch0
E = End of Packet
rxdata_ch0[7:0]
E
I
I
SK1
SK2
SK3
SK4
I
I
I
S
D
D
D
D
I = Logical Idle
SK1 = CC_MATCH1
SK2 = CC_MATCH2
SK3 = CC_MATCH3
Before CTC
After CTC
SK4 = CC_MATCH4
S = Start of Packet
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
D = Data
E
I
I
I
I
I
S
D
D
D
D
SK3
SK4
I
I
I
S
D
D
D
D
4 字节插入的图示说明如图 8-17 所示。
图 8-17. 时钟容限补偿 4 字节插入示例
rxiclk_ch0 or
ebrd_clk_ch0
E = End of Packet
rxdata_ch0[7:0]
E
I
I
SK1
SK2
D
D
D
D
I = Logical Idle
SK1 = CC_MATCH1
SK2 = CC_MATCH2
SK3 = CC_MATCH3
Before CTC
After CTC
SK4 = CC_MATCH4
S = Start of Packet
rxiclk_ch0 or
ebrd_clk_ch0
rxdata_ch0[7:0]
D = Data
E
I
I
SK1
SK2
SK3
SK4
SK1
SK2
SK3
SK4
I
I
I
S
当使用 CTC 时,针对不同的应用,对时钟补偿必须做以下适当的设置:
• 使用 CC_MATCH_MODE 属性设置插入 / 删除模式长度。该属性设置了在执行插入和删除之前, CTC 所比较的
跳过字节 (skip byte)的数目。 CC_MATCH_MODE 的值为 “1” (1 字节插入 / 删除)、 “2” (2 字节插入 / 删
除)以及 “4” (4 字节插入 / 删除)。最小的数据包间间隙也必须根据目标应用适当地进行设置。数据包间间隙通
过属性 CC_MIN_IPG 来指定。 CC_MIN_IPG 的允许值为 “0”、 “1”、 “2” 和 “3”。跳过字符删除后允许的最小数据
包间间隙按照表 8-10 中这些属性的设置来执行。
• 跳过字节或定序集必须按照所选的 CC_MATCH_MODE 进行设置。对于 4 字节插入 / 删除(CC_MATCH_MODE =
“4”),第一个字节必须分配给属性 CC_MATCH1,第二个字节必须分配给属性 CC_MATCH2,第三个字节必须分
配给属性 CC_MATCH3,并且第四个字节必须分配给属性 CC_MATCH4。所有的都为 10 位二进制值。
例如:
如果
4
字节跳过定序集设置为
/K28.5/D21.4/D21.5/D21.5,那 么
“CC_MATCH1”
应设为
“0110111100”, “CC_MATCH2” = “0010010101”, “CC_MATCH3” = “0010110101” 并 且 “CC_MATCH4” =
“0010110101”。
对于 2 字节插入 / 删除 (CC_MATCH_MODE = “2”),第一个字节必须分配给属性 CC_MATCH3,并且第二个字
节必须分配给属性 CC_MATCH4。
24
LatticeECP3 SERDES/PCS
使用指南
对于 1 字节插入 / 删除 (CC_MATCH_MODE = “1”),跳过字节必须分配给属性 CC_MATCH4。
• 时钟补偿 FIFO 的高位水印和低位水印必须根据所使用的协议进行适当的设置。设置值的范围可从 0 至 15,并且高
位水印必须设置比低位水印更高的值 (两者不可设为相同的值)。高位水印值通过给属性 CCHMARK 一个值来
设置。 CCHMARK 的允许值以十六进制表示,从 “0” 到 “F”。低位水印值通过给属性 CCLMARK 一个值来设置。
CCLMARK 的允许值以十六进制表示,从 “0” 到 “F”。
• 当通过 ispLEVER 模块生成器生成 PCS 模块时,如果选择了 “Error Status Ports”,根据 PCS/FPGA 接口的
cc_overrun_ch(0-3),可以对每个通道上的时钟补偿 FIFO 过载进行监测。
• 当通过 ispLEVER 模块生成器生成 PCS 模块时,如果选择了 “Error Status Ports”,根据 PCS/FPGA 接口的
cc_underrun_ch(0-3),可以对每个通道上的时钟补偿 FIFO 欠载进行监测。
计算最小的数据包间间隙
表 8-10 显示了数据包间间隙的用户自定义值 (由 CC_MIN_IPG 属性定义)和确保的最小数据包间字节数之间的关
系,这个最小数据包间字节数是指,从 PCS 跳过字符删除后的最小数据包间字节数。表中将数据包间间隙显示为一
个乘数。数据包间最小字节数等于每次插入 / 删除的字节数乘以表中所列的乘数。例如,如果每次插入 / 删除的字节
数为 4 (CC_MATCH_MODE 设为 “4”),并且最小的数据包间间隙属性 CC_MIN_IPG 设为 “2”,那么最小的数据包
间间隙等于 4(CC_MATCH_MODE = “4”)乘以 3(表 8-10 中 CC_MIN_IPG = “2”)或 12 字节。PCS 不会执行跳
过字符删除,直到最小的数据包间字节数通过 CTC。
表 8-10. 最小的数据包间间隙乘数
CC_MIN_IPG
插入 / 删除
乘数
0
1x
1
2x
2
3x
3
4x
请注意带有 TW 后缀的 LatticeECP3-150EA 器件系列的 CTC 支持:对于初始版本的带有 TW 后缀的 LatticeECP3150EA 器件是不支持 PCS 中 CTC 的。 CTC 功能可以被旁路,并在软 IP 中实现。目前莱迪思提供的许多 IP 核是以
软逻辑形式实现 CTC 逻辑。
使用 Diamond 中的 IPexpress
IPexpress是用以创建和配置SERDES和PCS块的。设计师们使用图形用户界面来为特定quad或通道选择SERDES
协议标准。 IPexpress 从这个图形用户界面获得输入并产生配置文件 (.txt 文件)和 HDL 网表。 HDL 模型用于仿真
和综合流程。配置文件包含属性层映射信息。这个文件是仿真和 ispLEVER bitgen 程序的输入。强烈推荐设计师们
在 IPexpress 中进行更改和更新,然后重新生成配置文件。在一些例外情况下,用户可以修改配置文件。
图 8-18 显示了当使用 IPexpress 为 SERDES 协议标准生成 SERDES/PCS 块时的工具流程。
25
LatticeECP3 SERDES/PCS
使用指南
图 8-18. SERDES_PCS Diamond 用户流程
IPexpress
SERDES/PCS Module
GUI Configuration
SERDES/PCS
Behavioral Model
IPexpress
SCUBA Engine
Module netlist
(.v or .vhd)
Module netlist
(.v or .vhd)
.ptx file converted from .txt file
(Autoconfig file: Attribute Info)
Synthesis
CAE Simulator
Bitstream
(includes register map
memory cell configuration)
LatticeECP3
Device
IPexpress 中的 PCS 模块生成器
图 8-19 显示了在 IPexpress 图形用户界面中选择 PCS 时的主窗口。
26
Diamond
Map, Place and Route
LatticeECP3 SERDES/PCS
使用指南
图 8-19. IPexpress PCS 主窗口
27
LatticeECP3 SERDES/PCS
使用指南
Quad 设置选项卡
图 8-20 显示了当输入了文件名并且在主窗口中勾选了 Customize 按钮后,Quad 设置选项卡窗口。在这个窗口中首
先 必 须 要 求 输 入 的 是 要 为 每 个 通 道 选 择 一 种 协 议 模 式。每 个 通 道 可 以 配 置 为 ‘RX and TX’、 ‘RX Only’、 ‘TX
Only’、 ‘Disabled’ 或 ‘Low Speed Data Port’。
图 8-20. 配置图形用户界面 ——Quad 设置选项卡
表 8-11. SERDES_PCS 图形用户界面属性 ——Quad 选项卡设置
图形用户界面内容
属性名称
属性范围
默认值
Channel Protocol
CHx_MODE
RX and TX, RX Only, TX Only
DISABLED
Disable Channel1
CHx_MODE
ENABLE, DISABLE
DISABLED
Protocol
CHx_PROTOCOL
GIGE, SGMII, XAUI, SRIO, PCIE, SDI, G8B10B, 10BSER,
8BSER, CPRI, OBSAI
G8B10B
RX and TX, RX Only, TX Only
DISABLED
Low Speed Data Port CHx_LDR
1. 对于 328-ball csBGA 封装的 LatticeECP3-17EA 器件,仅 channel 0 和 3 可用。
28
LatticeECP3 SERDES/PCS
使用指南
参考时钟设置选项卡
在该选项卡中,选择 TX 和 RX 参考时钟源的属性。用户可以选择 EXTERNAL 或 INTERNAL 参考时钟。此外,还有
一个工具来提供所需要的时钟速率以及用于特定数据速率的乘法器设置。除此之外,对于给定的数据总线宽度,工
具提供通道到内核接口所需的时钟速率。
图 8-21. 配置图形用户界面 —— 参考时钟设置选项卡
29
LatticeECP3 SERDES/PCS
使用指南
表 8-12. SERDES_PCS 图形用户界面属性 —— 参考时钟设置选项卡
图形用户界面内容
属性名称
范围
默认值
(图形用户界面)
默认值
(属性)
Transmit
Max. Data Rate1
N/A
0.23 至 3.2 Gbps
2.5 Gbps
N/A
TX Refclk Source
PLL_SRC
INTERNAL, EXTERNAL
INTERNAL
REFCLK_INT
TX/RX Multiplier
REFCK_MULT
8X, 10X, 16X, 20X, 25X
TX Reference clock Rate #REFCLK_RATE2
根据协议
根据协议
Protocol
用户无法访问。仅供参考。
TX Rate
CHx_TX_DATA_RATE
FULL, DIV2, DIV11
FULL
FPGA Bus Width
CHs_TX_DATA_WIDTH
8, 10, 16, 20
根据协议
FPGA Interface Clock
#CH0_TX_FICLK_RATE
0.23 至 3.2 Gbps
2.5 Gbps
N/A
INTERNAL, EXTERNAL
INTERNAL
REFCLK_INT
FULL, DIV2, DIV11
FULL
FULL
8, 10, 16, 20
根据协议
FULL
Receive
Max. Data Rate1
N/A
Protocol
用户无法访问。仅供参考。
Refclk Source
CHx_CDR_SRC
Multiplier
用户无法访问。仅供参考。
RX Rate
CHx_RX_DATA_RATE
RX Reference Clock Rate
#CH0_RXREFCLK_RAT
E
FPGA Bus Width
CHx_RX_DATA_WIDTH
FPGA Interface Clock
#CH0_RX_FICLK_RATE
1. 速率并不反映在自动配置文件中。相反, DATARATE RANGE 是为特定数据速率所指定的,如 :150 Mbps  LOWLOW  230 Mbps, 230
Mbps < LOW  450 Mbps,450 Mbps < MEDLOW 0.9 Gbps,0.9 Gbps < MED  1.8 Gbps,1.8 Gbps < MEDHIGH  2.55 Gbps,2.55
Gbps < HIGH  3.2Gbps。
2. '#' 后面的属性表示仅供参考。这些属性也包括在自动配置文件中,以便参考。
30
LatticeECP3 SERDES/PCS
使用指南
SERDES 高级设置
该选项卡是用于访问发送和接收 SERDES 的所有 4 个通道的高级属性的。选择发送属性,如:PreEmphasis、
Termination、 Differential Output Voltage。选择接收属性,如:Equalization、 Termination、 I/O Coupling。 还可以
选择发送 SERDES 时钟和 PLL 的属性。
图 8-22. 配置图形用户界面 ——SERDES 高级设置选项卡
31
LatticeECP3 SERDES/PCS
使用指南
表 8-13. SERDES_PCS 图形用户界面属性 ——SERDES 高级设置选项卡
图形用户界面内容
属性名称
值
默认值
5
Differential Output Voltage CHx_TDRV8
-4 (640mV) , -3 (780mV), -2 (870mV), -1 (920mV),
0 (1040mV:default), 1 (1130mV)6, 2 (1260mV)7,
3 (1350mV)7, 4 (1440mV)7
PreEmphasis
CHx_TX_PRE
Disabled, 0 (0%), 1 (5%), 2 (12%), 3 (18%), 4 (25%),
5 (33%), 6 (40%), 7 (48%)
TX I/O Termination
(Ohms)3
CHx_RTERM_TX
50, 75, 5K
Equalization1
CHx_RX_EQ
Disabled, Mid_Low, Mid_Med, Mid_High, Long_Low,
Long_Med, Long_High
RX I/O Termination
(Ohms)3
CHx_RTERM_RX
50, 60, 75, High
RX I/O Coupling
CHx_RX_DCC
AC, DC
Loss of Signal Threshold
CHx_LOS_THRESHOLD_LO
2 (+15%),3 (+25%)
24
TX PLL Reference Clock
I/O Termination (Ohms)3
PLL_TERM
50, 2K
50
TX PLL Reference Clock
I/O Coupling
PLL_DCC
AC, DC
AC10
PLL_LOL_SET
0: +/- 1350ppm x29
1: +/- 2400ppm x2
2: +/- 6800ppm
3: +/- 400ppm
PLL Loss of Lock
0
DISABLED
50
DISABLED
50
AC2
0
1. 参见表 8-106 了解详细信息。
2. 内部片上 AC 耦合电容的典型值是 5 pF。
3. 端接电阻及它们的使用:
RX I/O 端接:
– 50:除了 SMTPE,目前所有的协议都使用一个 50 欧姆的端接电阻。
– 60:以供灵活选择。
– 75:SMPTE 使用一个 75 欧姆的端接电阻。
– HIGH:不使用 Rx 时的默认值。
TX I/O 端接:
– 50:除了 SMTPE,目前所有的协议都使用一个 50 欧姆的端接电阻。
– 75:SMPTE 使用一个 75 欧姆的端接电阻。
– 5K:如 PCI Express 电气空闲和 PCI Express RX 检测。用户不需要为 RX 检测设置该端接值。请参见 PCI Express 接收器检测章节。
TX PLL 端接:
– 50:如果印刷电路板上没有 50 欧姆的端接电阻。
– 2K:如果印刷电路板上有 50 欧姆的端接电阻。
4. PCS 配置,对于除 PCI Express 外的所有协议,图形用户界面仅支持值 2。对于 PCI Express,值 2 和值 3 都支持。
5. TDRV_AMP_BOOST(CH_13[3]) 设为 1,以实现该信号幅度。
6. 该设置是 PCI Express 的默认设置。使用 PCI Express 协议时,推荐使用该默认设置。因而 IPexpress 图形用户界面中 TDRV 下拉窗口是不可
更改的,显示为灰色。其他设置可仍然通过编辑 autoconfig 文件 (.txt 文件)中的 CHn_TDRV 属性来使用。
7. 这些设置中的 VCCOB 必须为 1.5V。
8. 这些值为典型值。对于整个频率范围内大约有 +/-20% 的裕度。请参见表 8-105 中 CHn_TDRV 行,了解详细信息。
9. ‘x2’ 为内部 LOL 计数器中成功的 ppm 双倍计数。
10. 推荐在大多数应用中使用交流耦合。直流耦合应当仅与外部交流耦合电容结合使用。
32
LatticeECP3 SERDES/PCS
使用指南
PCS 位置的指定
用户可以通过约束文件 (.lpf)来指定其希望的 PCS quad 位置。使用约束 “locate”。语法示例如下所示。
LOCATE COMP "pcs_inst_name" SITE "PCSB" ;
Quad 名称
Quad A
Quad B
Quad C
Quad D
位置名称
PCSA
PCSB
PCSC
PCSD
高速 I/O 端接拓扑结构如图 8-23 所示。
图 8-23. 高速 I/O 端接
VCCIB
50/60/75/High
50/60/75/High
VCCA
HDINP
5 pF
EQ
HDINN
PCI Receiver Detect
HDOUTP
HDOUTN
50/75/5K
50/75/5K
VCCOB
PCS Advanced1 设置
通过此选项卡可访问所有四个通道的发送和接收PCS的高级属性。每个TX和RX通道的极性和工作模式(如8b10b)
可以独立进行选择。此外,字对齐值也可以选择,如 comma 值、 comma 掩码和 comma 对齐。
33
LatticeECP3 SERDES/PCS
使用指南
图 8-24. 配置图形用户界面 ——PCS Advanced1 设置选项卡
表 8-14. SERDES/PCS 图形用户界面 ——PCS Advanced1 设置选项卡
图形用户界面内容
Transmitter
Receiver
Word Alignment
属性名称
默认值
Invert the Transmit Signal
CHx_TX_SB
DISABLED
Enable 8b10b Encoder
CHx_TX_8B10B
根据协议
FPGA FIFO Bridge
CHx_TX_FIFO
根据协议
Invert the Receive Signal
CHx_RX_SB
DISABLED
Dynamically Invert Port
N/A
DISABLED
Enable 8b10b Decoder
CHx_RX_8B10B
根据协议
FPGA FIFO Bridge
CHx_RX_FIFO
根据协议
Word Alignment Block
CHx_RXWA
根据协议
Internal Link
CHx_ILSM
根据协议
Specific Comma
#CHx_SCOMMA
根据协议
Plus Comma Value
CHx_COMMA_A1
1100000101
Minus Comma Value
CHx_COMMA_B
0011111010
Comma Mask
CHx_COMMA_M
根据协议 2
1. 根据定义, COMMA_A 和 COMM_B 是带有 positive 和 negative running disparity 的一组 8b10b 编码控制字符。用户必须提
供符合协议的适当的 IDLE 序列来获得链接状态机同步。例如, 1 GbE 协议需要 K28.5+D5.6 或 D16.2 用作 IDLE (字对齐和
同步状态机)。默认值使用小端字节序格式。
2. 在大多数应用中, K28.5 用作逗号字符。默认的掩码值是 1111111111。在 G8B10B 模式可以使用任意逗号字符,因此掩码是
1111111100,以检测所有的三种逗号字符, K28.1、 28.5、 28.7。
34
LatticeECP3 SERDES/PCS
使用指南
PCS Advanced2 设置
该选项卡用于为时钟容限补偿模块设置值。
图 8-25. 配置图形用户界面 ——PCS Advanced2 设置选项卡
表 8-15. SERDES/PCS 图形用户界面 ——PCS Advanced2 设置选项卡
图形用户界面内容
属性名称
默认值
CHx_CTC
根据协议 1
Size of ordered set
CHx_CC_MATCH_MODE
根据协议
Byte N
CHx_CC_MATCH1
根据协议
Byte N+1
CHx_CC_MATCH2
根据协议
Byte N+2
CHx_CC_MATCH3
根据协议
Byte N+3
CHx_CC_MATCH4
根据协议
Inter-packet gap
CHx_CC_MIN_IPG
根据协议
Deletion threshold
CCHMARK
9
Insertion threshold
CCLMARK
7
CTC block
1. 始终禁止:XAUI、 SDI、 CPRI、 OBSAI、 10 位 SERDES 以及 8 位 SERDES。
始终使能:串行 RapidIO。
所有其他模式:默认为禁止。在 IP 中提供大多数 CTC 功能。
35
LatticeECP3 SERDES/PCS
使用指南
控制设置
该选项卡是用于选择 SCI 接口和其他调试和控制选项的。此外,用户可以使能 SCI、错误报告、PLL quarter 时钟以
及回环功能。
图 8-26. 配置图形用户界面 —— 控制设置选项卡
表 8-16. 选项卡 5, SERDES_PCS 图形用户界面属性 —— 控制设置选项卡
图形用户界面内容
属性名称
默认值
Loopback Mode (Ch0, Ch1, Ch2, Ch3)
DISABLED
Loopback serial data after equalizer
Loopback serial data after transmit driver
Loopback parallel data after de_serializer
DISABLED1
Transmitter Electrical Idle
signal tx_idle_ch0_c is provided
DISABLED
Include the TX and RX Reset Sequence
ENABLED
Include Reset Sequence Generation
2
Provide SERDES Client Interface
N/A
Provide the SERDES Client Interface Interrupt Port
INT_ALL
DISABLED
Reference Clock to FPGA core
QD_REFCK2CORE
DISABLED
注:ispLEVER 8.0 中不支持复位序列发生器。
1. 当回环模式在默认状态 (禁用)时,用户可以在 HDL 模块中使用两个 SERDES 桥并行回环控制信号 (sb_felb_ch[3:0]_c 和
sb_felb_rst_ch[3:0]_c),动态打开和关闭回环模式。如果不使用回环模式,这些信号应连接到地。
2. 本文档的 SERDES/PCS 复位章节说明了复位序列产生。
FPGA 核和复位序列的参考时钟
复位序列在复位状态机中使用参考时钟。
如果 Tx Refclk 时钟源选择 “Internal”,复位状态机使用内部参考时钟。
如果 Tx Refclk 时钟源选择 “External”,复位状态机使用 Reference Clock to FPGA Core 信号,对用户而言该信号可
见 (控制寄存器位 QD_0A[1] 置 1)。仅当选择了 “Reference Clock to FPGA Core” 时, REFCLK2FPGA 信号将包
括在 wrapper 模块中。
36
LatticeECP3 SERDES/PCS
使用指南
生成选项
该选项卡为用户提供了选择 PCS 模块生成输出文件的选项。
图 8-27. 配置图形用户界面 —— 生成选项选项卡
当第一次将之前在旧的 Diamond 版本中创建的项目移植到最新的版本中时,强烈推荐在最新的版本中重新生成 PCS
模块,即使不需要做任何配置上的更改。这将确保使用最新的原始库文件。如果不这样做的话,设计可能在后续流
程中失败,或者通过流程但是会在板上显示无法预计的错误。
当在现有的项目中重新生成 PCS 模块时,通常 HDL 文件保持不变,并且仅配置文件需要重新生成。在这种情况下,
用户可以运行 “Generate Bitstream Data” 和 “Force One Level” 选项以节省编译时间。
• Automatic—— 选择该方式时,IPexpress 将仅生成必须的文件。这可以包括 HDL 和 TXT 文件或仅 TXT 文件。这是
默认设置。
• Force Module and Settings Generation—— 选择该方式时,将生成 HDL 和 TXT 文件。这将使项目导航器的处理
过程强制复位到综合。
• Force Settings Generation Only—— 选择该方式时,将仅生成 TXT 文件。如果 HDL 生成是必需的,那么将会提
供错误信息。
• 流程定义 —— 生成选项在两种模块处理流程的工作是不同的。
– HDL 源代码处理流程: 项目导航器中的 HDL 文件
现有的 LPC 文件可以从 IPexpress 中打开,用以重新生成。在这种情况下,通过图形用户界面设置的复位点
将成为新的开始点。因而,当用户双击一个处理过程或者运行 “Force One Level” 选项时,它将从复位点
开始运行。
– LPC 源代码处理流程:项目导航器中的 LPC 文件 
打开 LPC 文件并重新生成 PCS 模块将重新复位整个处理过程,无论 HDL 模块是否重新生成。
在这两种情况下,处理过程窗口中的勾选记号将保持不变,但是一旦用户开始处理过程就会立即进行更新该过
程的勾选记号状态。
37
LatticeECP3 SERDES/PCS
使用指南
配置文件说明
IPexpress 生成了这个文件,包含属性级映射信息。仿真模型以及位流生成的过程都是用这个文件来自动将 PCSD
quad 初始化为 IPexpress 中所选的模式。
配置文件使用 “txt” 作为文件类型扩展名。
下面是一个配置文件示例。
#
#
#
#
This file is used by the simulation model as well as the bitstream
generation process to automatically initialize the PCSD quad to the mode
selected in the IPexpress. This file is expected to be modified by the
end user to adjust the PCSD quad to the final design requirements.
DEVICE_NAME “LFE3-95E”
CH0_MODE
CH1_MODE
CH2_MODE
CH3_MODE
TX_DATARATE_RANGE
PLL_SRC
REFCK_MULT
#REFCLK_RATE
“RXTX”
“DISABLED”
“DISABLED”
“DISABLED”
“HIGH”
“REFCLK_EXT”
“10X”
250.0
CH0_PROTOCOL
CH0_LDR
CH0_RX_DATARATE_RANGE
CH0_TX_DATA_RATE
CH0_TX_DATA_WIDTH
CH0_TX_FIFO
CH0_CDR_SRC
#CH0_TX_FICLK_RATE
CH0_RX_DATA_RATE
CH0_RX_DATA_WIDTH
CH0_RX_FIFO
#CH0_RX_FICLK_RATE
CH0_TDRV
CH0_TX_PRE
CH0_RTERM_TX
CH0_RX_EQ
CH0_RTERM_RX
CH0_RX_DCC
CH0_LOS_THRESHOLD_LO
CH0_TX_SB
CH0_TX_8B10B
CH0_RX_SB
CH0_RX_8B10B
CH0_RXWA
CH0_ILSM
#CH0_SCOMMA
CH0_COMMA_A
CH0_COMMA_B
CH0_COMMA_M
CH0_CTC
CH0_CC_MATCH_MODE
CH0_CC_MATCH1
“G8B10B”
“RXTX”
“HIGH”
“FULL”
“8”
“DISABLED”
“REFCLK_EXT”
250.0
“FULL”
“8”
“DISABLED”
250.0
“0”
“DISABLED”
“50”
“DISABLED”
“50”
“AC”
“2”
“DISABLED”
“ENABLED”
“DISABLED”
“ENABLED”
“ENABLED”
“ENABLED”
“1111111111”
“1100000101”
“0011111010”
“1111111100”
“ENABLED”
“2”
“0000000000”
38
LatticeECP3 SERDES/PCS
使用指南
CH0_CC_MATCH2
CH0_CC_MIN_IPG
“0000000000”
“3”
CH0_SSLB
CH0_SPLBPORTS
CH0_PCSLBPORTS
PLL_TERM
PLL_DCC
PLL_LOL_SET
CCHMARK
CCLMARK
INT_ALL
QD_REFCK2CORE
"DISABLED"
"DISABLED"
"DISABLED"
"50"
"AC"
"0"
"9"
"7"
"DISABLED"
"ENABLED"
8 位和 10 位 SERDES-Only 模式
本章节说明了 SERDES/PCS 模块的两种工作模式, 8 位 SERDES-Only 和 10 位 SERDES-Only。这些模式都是专
为需要访问高速 I/O 接口,并且无需 LatticeECP3 PCS 逻辑提供的基于协议的操作的应用而设计的。
发送路径
• 串行器:8 位或 10 位并行数据转换为串行数据。
接收路径
• 解串行器:串行数据转换为 8 位或 10 位并行数据。
• 用户定义的对齐模式下的可选字对齐。
通用 8b10b 模式
SERDES/PCS 块的通用 8b10b 模式是专用于需要 8b10b 编码 / 解码应用,并且无需额外特定协议的数据操作而设
计的。 LatticeECP3 SERDES/PCS 块可支持通用 8b10b 应用,高达 3.2 Gbps/ 通道。在通用 8b10b 模式下,字对
齐器可以由嵌入式 PCS 链路状态机 (LSM)控制。
当选择并使能了嵌入式链路状态机时,一旦链接同步成功, lsm_status_ch[3:0]_s 状态信号将变为高电平。
为了该模式下的链接同步,8b10b模式下SERDES通道接收器输入(hdinp_ch[0-3]/hdinn_ch[0-3])需要满足以下条件:
• 串行数据需要周期性的使用 8b10b 编码的逗号字符。需要周期性的使用是因为一旦没有同步, LSM 可以重新与
逗号字符同步。逗号字符应该对应 “ 特定逗号 ” 值,如图 8-24 所示。例如,当特定逗号值设为 K28P157,串行
链路上的逗号值应该为 K28.1 (k=1, Data=0x3C)、K28.5 (k=1, Data=0xBC) 或 K28.1 (k=1, Data=0xFC) 中任意一
个的 8b10b 编码值。注意:通常 K28.5 是最常用的。
• 逗号字符后要紧跟一个数据字符
• 后一个逗号字符要在前一个逗号字符后的偶数个周期上出现
其他信息:
• 需要大约四个有效的逗号 / 数据对, LSM 才能达到链路同步
• 四个连续错误 (非法的 8b10b 编码字符、编码违例、不一致 (disparity)错误、两个逗号间非偶数个时钟周期)
可引发 LSM 未锁定
39
LatticeECP3 SERDES/PCS
使用指南
• CDR 失锁条件将导致 LSM 未锁定,大量的代码违例和不一致错误也将导致 LSM 未锁定
• 当使用内部复位序列状态机, CDR 失锁 (rx_cdr_lol_ch[3:0]_s) 或信号丢失 (rx_los_low_ch[3:0]_s ) 条件,将导致
RX 复位序列状态机复位 SERDES 以及 LSM 未锁定
下面的两个例子说明了两个逗号之间有效和无效的偶数时钟周期边界的差别 (注:C = 逗号, D = 数据)。
有效 (偶数)逗号边界:
字时钟周期
0
1
2
3
4
5
6
7
8
9
10
11
字符
C
D
C
D
C
D
D
D
D
D
C
D
无效 (奇数)逗号边界:
字时钟周期
0
1
2
3
4
5
6
7
8
9
10
11
12
字符
C
D
C
D
C
D
D
D
D
C
D
C
D
在上面无效 (奇数)逗号边界的例子中,逗号字符出现在周期 9 和 11,因而是无效的,因为它们不是在前一个逗号
字符后的偶数个周期上出现。
此外,LSM 可以被禁用,字对齐器可由 FPGA 结构的 word_align_en_ch[3:0]_c 输入引脚控制。参见第 21 页 “ 外部
链路状态机选项 ” 和第 33 页 “PCS Advanced1 设置 ”,了解更多信息。
发送路径
• 串行器
• 8b10b 编码器
接收路径
• 解串行器
• 根据用户定义的字对齐字符或来自嵌入式 GbE 链路状态机的字符进行字对齐
• 8b10b 解码
• 时钟容限补偿 (可选)
千兆位以太网和 SGMII 模式下的 LatticeECP3 PCS
LatticeECP3 SERDES/PCS 块的千兆位以太网模式支持全面兼容,从串行 I/O 到 IEEE 802.3-2002 1000 BASE-X 千
兆位以太网标准的 GMII/SGMII 接口。
发送路径
• 串行器
• 8b10b 编码器
接收路径
• 解串行器
• 基于 IEEE 802.3-2002 1000 BASE-X 定义的对齐字符的字对齐。
• 8b10b 解码
40
LatticeECP3 SERDES/PCS
使用指南
• 千兆以太网链路状态机符合图 36-9 中 (同步状态机, 1000BASE-X)的 IEEE 802.3-2002 标准,仅一点例外。
图 36-9 要求接收 4 个连续正确的代码组,以使 LSM 从 SYNC_ACQUIRED_{N} (N=2,3,4) 变为
SYNC_ACQUIRED_{N-1}。而现在实际的 LSM 实现要求 5 个连续正确的代码组来触发转换。
• 千兆以太网载波检测:IEEE 802.3-2002 (1000BASE-X)的 36.2.5.1.4 章节定义了 carrier_detect 功能。在千兆
以太网模式下,此功能不包含在 PCS 中,并且 carrier_detect 信号不会提供给 FPGA 结构。
• 时钟容限补偿逻辑能处理时钟域的差异。
千兆以太网 (1000BASE-X) Idle 插入
这对于时钟补偿和自动协商来说是必需的。自动协商是由 FPGA 逻辑实现的。莱迪思千兆以太网 PCS IP 核提供自
动协商,下面将详细讨论。
Idle 模式插入对于时钟补偿和自动协商来说是必需的。自动协商是由 FPGA 逻辑实现的。该模块在自动协商过程中,
自动在接收数据流中插入 /I2/ 符号。在自动协商时,链路的另一端将不断发送 /C1/ 和 /C2/ 序列集。时钟补偿器不会
删除这些序列集,因为它被配置为仅插入 / 删除 /I2/ 序列集。为了防止时钟补偿器的过载 / 欠载,必须周期性地插入
/I2/ 序列集,为时钟补偿器提供插入 / 删除机会。
在执行自动协商时,该模块将每隔 2048 个时钟周期插入连续的 8 个 /I2/ 的序列集 (每个占两个字节)。由于此模块
在 8b10b 解码器后面,此操作将不会引入任何运行不一致 (running disparity)的错误。这些 /I2/ 序列集不会传入
FPGA 接收接口,因为在自动协商过程中,GMII 接口由 RX 状态机驱动为 IDLE。一旦自动协商完成后,禁止 /I2/ 插
入,以防止破坏任何接收到的数据。
请注意,该状态机只在自动协商时有效。自动协商状态机和 GbE 接收状态机在软逻辑中实现。该状态机由自动协商
状态机的信号 xmit_ch 决定。这个信号是在 TX 数据总线上提供。虽然这个信号是相对静态的 (尤其是在自动协商
后),它包含在 TX 数据总线中。
表 8-17. GbE IDLE 状态机控制和状态信号
模块信号
xmit_ch[3:0]
方向
In
说明
来自 FPGA 逻辑自动协商状态机
千兆以太网 Idle 插入和 correct_disp_ch[3:0] 信号的使用
correct_disp_ch[3:0] 信号用于 PCS 的发送端,以确保数据包间间隙在 negative disparity 状态下开始。请注意,在
以太网帧最后,发送器的当前 disparity 状态可以是 positive 或者 negative,根据以太网帧的大小和数据内容决定。
然而,从 PCS 的 FPGA 软逻辑端,PCS 发送器目前的 disparity 状态是未知的。这就是 correct_disp_ch[3:0] 信号的
作用。如果一旦进入一个数据包间间隙,发出 correct_disp_ch[3:0] 信号一个时钟周期,当目前是 positive disparity
时,将强制 PCS 发送器在发送数据流中插入一个 IDLE1 序列集。但是,如果目前是 negative disparity,则不对发送
数据流做任何改变。
从 PCS 的 FPGA 软逻辑端,数据包间间隙为不断发送的 IDLE2 序列集如下:tx_k_ch=1,txdata= 0xBC tx_k_ch=0,
txdata=0x50。
请注意,在 PCS 通道中, IDLE2 意味着目前的 disparity 状态将被保留。 IDLE1 意味着目前的 disparity 状态应当翻
转。那么,就有可能可以确保数据包间间隙以 negative disparity 状态开始。如果在数据包间间隙前的 disparity 状态
为 negative,那么数据包间间隙将不断发送 IDLE2。如果在数据包间间隙段前的 disparity 状态为 positive,那么将
发送一个 IDLE 后面跟连续的 IDLE2。
41
LatticeECP3 SERDES/PCS
使用指南
在 PCS 的 FPGA 软逻辑端,数据包间间隙总是将 IDLE2 输入 PCS。当第一次出现数据包间间隙时,将发出一个时
钟周期的 correct_disp_ch[3:0] 信号,k_cntrl=0,data=0x50。如果需要的话,PCS 将会把这个 IDLE2 转换为 IDLE1。
在余下的数据包间间隙, IDLE2 应输入 PCS 并且 correct_disparity_chx 信号应保持无效。
例如,如果发送连续的 512 字节以太网帧和 512 字节 /I/,可以观察到:
• 在第一个数据包间间隙,可以看到所有的 negative disparity /I2/ (K28.5(-) D16.2(+))
• 在下一个数据包间间隙,周期以 positive disparity /I1/(K28.5 (+), D5.6 (+/- 相同 ))开始,然后所有剩下的序列都
是 negative disparity /I2/
• 在下一个数据包间间隙,可以看到所有的 negative disparity /I2/
• 在下一个数据包间间隙,周期以 positive disparity /I1/(K28.5 (+), D5.6 (+/- 相同 ))开始,然后所有剩下的序列都
是 negative disparity /I2/
编码器模块支持许多可编程选项。它们是:
• 按每个字强制 negative 或 positive disparity
• 直接从 FIFO 桥输入数据 —— 外部的多路复用器
• 根据运行差异 (running disparity)(100BASE-X 和 FC)改变编码字
• 软件寄存器控制的旁路模式
XAUI 模式
使用莱迪思 XAUI IP 核, SERDES/PCS 块的 XAUI 模式支持全面兼容,从串行 I/O 到 IEEE 802.3-2002 XAUI 标准
的 XGMII 接口。 XAUI 模式支持 10 千兆以太网。
发送路径
• 串行器
• 发送状态机根据 IEEE 802.3ae-2002 规范,将 XGMII idle 转化为相应的 ||A||、 ||K||、 ||R|| 字符。
• 8b10b 编码
接收路径
• 解串行器
• 基于 IEEE 802.3-2002 定义的对齐字符的字对齐 。
• 8b10b 解码
• XAUI 链路状态机符合图 48-7——IEEE 802.3ae-2002 标准的 PCS 同步状态图,仅有一点例外。图 48-7 要求接收 4
个连续正确的代码组,以使 LSM 从 SYNC_ACQUIRED_{N} (N=2,3,4) 变为 SYNC_ACQUIRED_{N-1}。而现在
实际的 LSM 实现要求 5 个连续正确的代码组来触发转换。
• PCS 中的时钟容限补偿逻辑在 XAUI 模式下是禁止的。MCA(Multi-Channel Alignment, 多通道对齐)及 CTC 是在
XAUI IP 核中实现的。
• x4 多通道对齐应当在 FPGA 内核逻辑中实现。
42
LatticeECP3 SERDES/PCS
使用指南
PCI Express 版本 1.1 (2.5Gpbs)模式下的 LatticeECP3 PCS
SERDES/PCS 块的 PCI Express 模式支持 x1、 x2 和 x4 PCI Express 应用。
发送路径
• 串行器
• 8b10b 编码
• 接收器检测
• 电气空闲状态
接收路径
• 解串行器
• 基于 Sync 编码的字对齐
• 8b10b 解码
• 链路同步状态机功能包括了在 IEEE 802.3ae-2002 10GBASE-X 规范下的 PCS 同步状态机(图 48-7)中定义的操
作。
• x2 或 x4 PCI Express 操作,可用一个 PCS quad 设为 PCI Express 模式。
• 时钟容限补偿逻辑能处理时钟域的差异。
• x2 或 x4 多通道对齐应当在 FPGA 内核逻辑中实现。
表 8-18 说明了 PCI Express 模式下的特定端口。
表 8-18. PCI Express 模式特定端口
信号
方向
类别
说明
pcie_done_ch[3:0]_s
Out
通道
1 = 远端接收器检测完毕
0 = 远端接收器正在检测
pcie_con_ch[3:0]_s
Out
通道
远端接收器检测的结果。
1 = 检测到远端接收器
0 = 未检测到远端接收器
pcie_det_en_ch[3:0]_c
In
通道
FPGA 逻辑(用户逻辑)通知 SERDES 块,它要申请一次 PCI Express 接收器
检测操作。
1 = 使能 PCI Express 接收器检测
0 = 正常工作
pcie_ct_ch[3:0]_c
In
通道
1 = 申请发送器进行远端接收器检测
0 = 正常工作
Out
通道
每个通道 PCI Express 接收状态端口。 RxStatus# 是接收数据路径的一种编
码状态。如果在 16 位数据总线模式下是 2 位宽。
rxstatus[2:0]
状态信号 rxstatus 是接收数据路径的编码状态。编码如下所示。
43
LatticeECP3 SERDES/PCS
使用指南
表 8-19. rxstatus 编码
rxstatus[2:0]
说明
优先级
0
0
0
接收到的数据正常
8
0
0
1
CTC 插入 1 个字节
7
0
1
0
CTC 删除 1 个字节
6
0
1
1
检测到接收器 (pcie_done, pcie_con)
1
1
0
0
8b10b 解码错误 (编码违例 ——rx_cv_err)
2
1
0
1
CTC FIFO 上溢 (ctc_orun)
3
1
1
0
CTC FIFO 下溢 (ctc_urun)
4
1
1
1
接收不一致 (disparity)错误 (rx_disp_err)
5
PCI Express 端接
在电气层, PCI Express 采用了两根单向的低压差分信号对,每个通道速率为 2.5Gbps。发送和接收是独立的差分
对,每个通道总共有 4 根数据线。通过带有可编程均衡器的输入接收器和带有可编程预加重的输出发送器优化了链
路。 PCI Express 规范要求差分线路必须在接收端使用共模端接。每条链路要求在远端 (接收器)使用一个端接电
阻。使用的标称电阻值为 100 欧姆。这是通过使用如图 8-28 所示的 CML 输入的嵌入式端接特性实现的。该规范要
求在链路的发送端使用交流耦合电容(CTX)。这消除了发送和接收器件之间潜在的共模偏置的不匹配。莱迪思 CML
输出必须外加该电容。
PCI Express L2 状态
对于 PCI Express L2 状态, rx_pwrup_c 信号不应该变为无效,从而使 rx 通道掉电。这将强制 rx 端接为高阻状态,
并不允许远端检测到接收器。而应该使用 rx_pcs_rst_c 信号将通道保持在复位状态来节省功耗。
图 8-28. PCI Express 接口图
PCI Express Application
LatticeECP3
CML Driver
LatticeECP3
CML Receiver
VCCIB = 1.2V
VCCOB = 1.2V
Zo = 50
50
50
75 to 200 nF
表 8-20. 差分 PCI Express 规范
信号
ZTX-DIFF-DC
参数
直流差分 TX 阻抗
最小值
80
ZRX-DIFF-DC
直流差分输入阻
抗
80
CTX
交流耦合电容
75
正常值
100
100
最大值
单位
说明
位置
Ohm
TX 直流差分模式低阻抗。 ZTX-DIFFDC 是发送器的小信号阻抗,在直流工
作点上测得,等于当 TX 在驱动静态逻
辑信号 1 或者 0 时,在 D+ 和 D- 之间
连接一个 100 欧姆电阻。
内部
120
Ohm
所有 LTSSM 状态下的 RX 直流差分模
式阻抗。当发送从 Fundamental Reset
变为 Detect 时,(LTSSM 的初始状
态),在满足一个端口上所有未配置的
线路上的接收器端接值之前,需要 5 ms
转换时间。
内部
200
nF
所有的发送器都是交流耦合的。传输介
质或者发送元件本身都需要交流耦合。
外部
120
44
LatticeECP3 SERDES/PCS
使用指南
PCI Express Electrical Idle 发送
Electrical Idle 是一个稳定状态,发送器 P 和 N 电压都保持在相同的恒定值(即,Electrical Idle 差分峰值输出电压,
VTX-IDLE-DIFFp,在 0 和 20mV 之间)。 Electrical Idle 主要用于节省功耗和非激活状态。
根据 PCI Express 基本规范,在发送器进入 Electrical Idle 之前,通常必须发送 Electrical Idle 序列 (EIOS),一个
K28.5(COM)之后有三个 K28.3(IDL)。在发送完 Electrical Idle 序列的最后一个符号后,发送器必须在一个 TTXIDLE-SET-TO-IDLE 规定的小于 20UI 时间内进入有效的 Electrical Idle 状态。
要做到这一点, FPGA 内核逻辑至 PCS 的 Electrical Idle Enable (tx_idle_chx_c)随每个发送数据一起发送。该信
号以类似于流水线的方式发送到 PCS-SERDES 边界。对于所有有效数据来说,该信号为 LOW。为初始化 Electrical
Idle,在它发出最后一个 K28.5 (IDL)字符后的这个时钟, FPGA 逻辑将该信号变为 HIGH。因为当信号以流水线
方式发送到 PCS-SERDES 边界,发送数据和该信号之间的关系和在 FPGA-PCS 边界上的完全相同。
在 PCS-SERDES 边界,Electrical Idle Enable 信号处于上升边沿的 14UI 后,发送最后一个字符 K28.3(IDL)的最
后一位 (bit7)。在 16UI (<20UI)后,发送差分缓冲器实现了 Electrical Idle 状态。
图 8-29. 发送 Electrical Idle
2 word clocks
FPGA-PCS Boundary
EOS
TxData_chx
00
Data
TxElecIdle_chx
PCS-SERDES Boundary
TxData_chx
TX FIFOs and Pipeline Delay
EOS
00
Data
HDOUTP/N
Bit 0
Bit 7 of last K28.3 character
TTX-IDLE-SET-TO-IDLE
< 20 UI
T TX-IDLE-TO-DIIF-DATA-MIN
< 20 UI
只要 FPGA 内核逻辑认为发送器需要保持 Electrical Idle 状态,它需要用时钟打入数据(最好是全零)以及 Electrical
Idle Enable 信号 (tx_idle_chx_c)为有效 (高电平)。发送器必须保持在 Electrical Idle 状态,最少 50UI (20ns)
(TTX-IDLE-MIN)。
PCI Express Electrical Idle 检测
quad 中的每条通道都有一个信号丢失检测器。一旦 Electrical Idle 序列 (EOS)的三个 K28.3 (IDL)中的两个接
收到后,即为检测到 Electrical Idle。在 Electrical Idle 序列收到后,接收器应当至少等待 50ns (TTX-IDLE-MIN),
然后使能 Electrical Idle Exit 检测器。
这些信号(每个通道一个,每个 quad 四个)应当从 PCS 输出,并且应当可以用于 FPGA 内核。从而,支持 electrical
idle 所需的状态机可以在 FPGA 内核实现。
PCI Express 接收器检测
图 8-30 显示了一个接收器检测先后次序。接收器检测测试可以在一个 quad 的每条通道独立进行。在开始接收器检
测测试之前,必须通过将 tx_idle_ch#_c 输入设为高电平来使发送器进入 electrical idle。接收器检测测试可以通过将
相应的 pci_det_en_ch#_c 驱动为高电平,在 tx_elec_idle 变为高电平的 120 ns 后开始。这通过将驱动器端接电阻设
为高阻抗,并通过高阻抗的驱动器端接电阻将两个差分输出拉高到 VCCOB,使相应的 SERDES 发送缓冲器进入接
收器检测模式。
将 SERDES 发送缓冲器设为接收器检测状态需要高达 120 ns。 120 ns 后,接收器检测测试可以通过将通道的
pcie_ct_ch#_ 输入驱动为高电平四个字节 (字)的时钟周期来启动。然后,相应通道的 pcie_done_ch#_s 被异步清
零。经过足够的时间来完成接收器检测测试后 (由发送端的时间常数决定), pcie_done_ch#_s 接收器检测状态端
45
LatticeECP3 SERDES/PCS
使用指南
口将变为高电平,并且接收器检测状态可以通过 pcie_con_ch#_s 端口来监测。如果同时 pcie_con_ch#_s 端口为高
电平,那么该通道的接收器就被检测到了。但是,如果 pcie_con_ch#_s 端口为低电平,那么该通道接收器没有被检
测到。一旦接收器检测测试结束, tx_idle_ch#_c 信号可以变为无效。
接收器检测处理如下:
1. 用户将 pcie_det_en 驱动为高电平,使相应的 TX 驱动器进入接收器检测模式。这将驱动器端接电阻设为高阻
抗 (5K 欧姆)并通过高阻抗驱动器终端电阻将两个差分驱动器的输出变为共模状态。 TX 驱动器需要一些
时间来进入这个状态,因而 pcie_det_en 必须驱动为高电平至少 120ns,然后 pcie_ ct 信号有效。
46
LatticeECP3 SERDES/PCS
使用指南
2.
3.
4.
5.
6.
7.
用户将 pcie_ct 驱动为高电平四个字节时钟。
SERDES 将相应的 pcie_done 驱动为低电平。
SERDES 按其所需时间 (基于时间常数)驱动内部信号 (对应 pcie_ct) 来检测接收器。
SERDES 驱动相应的 pcie_con 连接状态。
SERDES 将相应的 pcie_done 驱动为高电平。
用户可以根据 pcie_done 信号的有效状态来采样 pcie_con 状态,以决定接收器检测是否成功。
图 8-30. PCI Express 模式接收器检测序列
tx_elec_idle
pcie_det_en[0:3]
tdets
tdetw (4 byte clocks)
tdeth
pcie_ct[0:3]
pcie_con[0:3]
previous status
invalid
detected status
pcie_done[0:3]
tdone > 2us
PCI Express 掉电模式的使用
应当使用 rx_serdes_rst_ch[3:0] 复位信号,而非 rx_pwrup_ch[3:0] 信号。这使得 RX 终端保持在 50 欧姆,以使远端
发送器可检测到接收器已连接。
PCI Express Beacon 支持
本章节重点说明 LatticeECP3 PCS 是如何支持 Beacon 检测和发送的。用于 Beacon 检测的 PCI Express 要求已经
与 Beacon 发送和 Beacon 检测所需的 PCS 支持一起说明。
Beacon 检测要求
• 对于从 L2 (P2)状态的退出来说, Beacon 是必须的。
• Beacon 是周期随机数据的一个直流平衡信号,需要包含一些脉冲宽度  2ns (500 MHz)且 < 16us (30 Khz)。
• 脉冲间的最大时间应 < 16 us。
• 直流平衡必须在 < 32 us 内恢复。
• 对于脉冲宽度 > 500 ns,输出 beacon 电压必须比 VTX-DIFFp-p (800 mV 至 1200 mV)低 6 db。
• 对于脉冲宽度 < 500 ns,输出 beacon 电压必须  VTX-DIFFp-p 且比 VTX-DIFFp-p 低  3.5 db。
PCS Beacon 检测支持
• 信号丢失阈值检测电路检测在接收器缓冲器端规定的电压是否达到。
• 这由 rlos_lo_ch(0-3) 信号标识。
47
LatticeECP3 SERDES/PCS
使用指南
• 该设置可用于 PCI Express Electrical Idle 检测以及 PCI Express beacon 检测 (在电源状态 P2 下)。
• 远端发送器件的 beacon 输出电压可以比 VTX-DIFFpp 低 6 db(即 201 mV)。如果检测到该信号,那么就检测到
beacon。
PCS Beacon 发送支持
发送 K28.5 字符 (IDLE)(5 个 1 后面跟 5 个 0),每隔 2 ns 提供 2 ns 的周期脉冲宽度 (1.0 UI = 400 ps,乘以 5
= 2 ns)。这满足了较低的要求。输出 beacon 电压可为 VTX-DIFFp-p。这是有效的 beacon 发送。
SDI (SMPTE)模式
LatticeECP3 SERDES/PCS 块的 SDI 模式支持所有三种 SDI 模式, SD-SDI、 HD-SDI 和 3G-SDI。
发送路径
• 串行器
接收路径
• 解串器
• 根据用户定义的对齐模式的可选的字对齐。
下面是广播视频行业中最常用的数据速率。
• SD-SDI (SMPTE259M):270Mbps
• HD-SDI (SMPTE292M):1.485Gbps, 1.485Gbps/1.001 = 1.4835Gbps
• 3G-SDI (SMPTE424M):2.97Gbps, 2.97Gbps/1.001 = 2.967Gbps
大多数设计人员提出,他们希望能够支持所有这些速率。因为这样的话,在广播台或者卫星前端或电缆前端,他们
就无需事先知道 RX 的数据速率。
不同速率之间的切换时间越短越好。重新锁定 CDR 的时间是不可避免的。在 LatticeECP3 SERDES 中, PLL 不需
要重新锁定。这是因为 LatticeECP3 的每个 RX 和 TX 都有分频器。视频链路通常有单向性 (即:不同的通道可以
以不同的速率运行,更重要的是,同一个通道中的 RX 和 TX 可以以不同的速率运行)。
并且,根据设备部署的地区,要么使用全 HD/3G-SDI 速率 (欧洲 / 亚洲)来传输视频,要么使用分数速率 (北美
——NTSC)。这使我们能够开发两种可用的解决方案样例,提供高 quad 利用率的多速率 SMPTE 支持。
请注意,同一个 SERDES Quad 中不能同时支持 3G/HD 全速和部分 TX 速率。一般来说,根据上述讨论,不同地区
使用不同的速率,因而这一限制是可以接受的。
48
LatticeECP3 SERDES/PCS
使用指南
图 8-31. 示例 A:3G/HD/SD 全 RX/TX 速率支持以及 3G/HD 分数 TX 速率支持
SERDES/PCS Quad
External Clock
148.5 MHz
Ch 3
Tx
Ch 3
Rx
1.485
270
Gbps Mbps
(DIV2) (DIV11)
Ch 2
Tx
Ch 2
Rx
AUX
Ch 1
Tx
Ch 1
Rx
Ch 0
Tx
Ch 0
Rx
2.97 1.485
Gbps Mbps
(DIV1) (DIV2)
PLL
(x20)
270
2.97
Mbps Gbps
(DIV11) (DIV1)
2.97 1.485
Gbps Gbps
(DIV1) (DIV2)
RX2
Core
Clock
(74.175
MHz)
TX
Core
Clock
RX1
Core
Clock
RX0
Core
Clock
RX3
Core
Clock
FPGA Core
为了支持大多数的应用需求,提供针对每个 RX 和 TX 的可选的 DIV 支持。在 LatticeECP3 中,已经添加 DIV11。一
个可用的多速率配置是从主引脚到 TX PLL,提供一个 148.5MHz REFCLK。 TX PLL 将为 x20 模式。由此产生的输
出时钟将为 2.97GHz。然后,通过在 1.485Gbps 使用 DIV2 并且在 270Mbps 使用 DIV11 实现快速切换,并且无需
重新训练和锁定 PLL。
串行 RapidIO (SRIO)模式
本章节说明了 SERDES / PCS 块的串行 RapidIO 模式的工作。LatticeECP3 支持使用一个 PCS quad 的 1x 和 4x 串
行 RapidIO 应用。 SRIO1.0 突出了其具有多频支持,包括 3.125Gbps、 2.5Gbps 和 1.25Gbps。这些速率的比例是
2.5:2:1。通过整数分频器在同一个 quad 中支持所有这些速率是不可能的,但 2.5 Gbps 和 1.25 Gbps 的比例为 2:1
(全速率:半速)。
发送路径
• 串行器
• 8b10b 编码
接收路径
• 解串器
• 基于在 RapidIO 物理层 1x/4x LP—— 串行规范中定义的同步编码组的字对齐。
• 8b10b 解码
• 时钟容限补偿逻辑能处理时钟域的差异。
串行数字视频和带外低速 SERDES 工作
LatticeECP3 SERDES/PCS 支持任意低于 SERDES TX PLL 和 RX CDR 本身支持的数据速率 (<250Mbps:带外
信号, OOB), 通过旁路接收器 CDR 和相关的 SERDES/PCS 逻辑 (如:100Mbps 快速以太网, 143Mbps 或
177Mbps 的 SD-SDI)。尽管这些带外路径大多使用低数据速率,更高速率可以用于其他功能。请参见本文档的多速
率 SMPTE 支持章节,了解更多信息。
49
LatticeECP3 SERDES/PCS
使用指南
此外,对于 SD-SDI,这些速率有时必须与 HD-SDI 速率共用同一个差分 RX 对 (即:SD-SDI 速率可能有效,然后
数据速率可能切换为 HD-SDI 速率)。因为没有办法预测这两种速率哪一种是有效的,因此可以并行发送输入数据流
到两个 SERDES,一个高速 SERDES (已经在 quad 中) 以及一个低速 SERDES (在 quad 外实现)。一种可能的
实现如图 8-32 所示。
每个通道有一个 RXD_LDR 输入,即低数据速率单端输入从 RX 缓冲器到 FPGA 内核。在内核中,可使用软逻辑构
建一个低速时钟数据恢复 (CDR)模块或一个数据恢复单元 (DRU)。一个通道寄存器位 RXD_LDR_EN 可以使能
该数据路径。如果通过其他寄存器位使能,来自 FPGA 的信号也可以在 LatticeECP3 中使能它。
在发送方向,也可以使用一个在 FPGA 内核中通过软逻辑构建的串行器并使用 TXD_LDR 引脚来发送数据到
SERDES。它将在预加重逻辑之前进行多路复用输入,靠近与边界扫描路径多路复用的常用高速 SERDES 路径。概
念图如图 8-32 所示。低数据率路径可通过设置一个通道寄存器位 TX_LDR_EN 来选择。
另外,在输出端,高速 SERDES 用于发送高速数据或使用抽取方式来发送低速数据 (SERDES 持续以高速运行,
但是输出数据仅可以在第 n 个时钟周期时进行变化,其中 n 是一个抽取因子)。
图 8-32. 可能的串行数字视频支持的实现
SERDES/PCS Block
Quad Top
FPGA Core
RXD_LDR_EN
BSRPAD
from JTAG config logic
BSCAN
Input Cell
RXD_LDR
BSTPAD
from JTAG config logic
RX power up
HDINP
HDINN
EQ
Input Data
TX power up
SERDES
0
HDOUTP
0
HDOUTN
1
Output Data
BSCAN
Output Cell
1
TXD_LDR
TXD_LDR_EN
50
LatticeECP3 SERDES/PCS
使用指南
开放式基站架构计划 (OBSAI)
OBSAI 是一个开放的论坛,旨在形成蜂窝基站的一个开放的市场。
LatticeECP3 SERDES/PCS 支持大多数 OBSAI 特性,除了 3.84Gbps 速率。
发送路径
• 串行器
• 发送状态机设为千兆以太网模式
• 8b10b 编码
接收路径
• 解串行器
• 基于 IEEE 802.3-2002 1000 BASE-X 定义的对齐字符的字对齐
• 8b10b 解码
一个基站收发机系统 (Basestation Transceiver System, BTS)有四个组件 / 模块,它们之间有三个主要接口或者
参考点 (Reference Points, RP)。
• RP3 – RF 模块从便携式设备 (终端)接收信号并向下转换为数字数据。
• RP2 – 基带模块获取编码的信号并进行处理,然后发送到传输模块,它将通过地面网络进行发送。
• RP1 – 一个包含这三个功能之间的协调的控制模块。
目前,业界主要关注的是提供较低功耗的射频模块和功率放大器,因此 OBSAI 的主要工作是定义参考点 3(RP3)。
事实上,现在关注的规范是 RP3-01,即射频拉远单元。
OBSAI RP3 电气规范是基于 XAUI 电气规范并根据基站收发机系统的需求进行定制化。 XAUI 电气接口符合 IEEE
802.3ae-2002. RP3 3.1 版的 Clause 47 规定,规定了支持以下速率 3.84Gbps、3.072Gbps、2.304Gbps、1.536Gbps
和 0.736Gbps 中的后四个。
RP3 电气特性定义了接收器符合的掩码,并提供了一个示例发送器输出掩码。BER 应优于 1 x 10-15,它比 XAUI 要
求的 1 x 10-12 更为严格。RP3 电气规范在 UI 上的规定也不同于 XAUI 规范。XAUI 允许 +/- 100ppm 的差异。该差
异不适用于 OBSAI 系统,由于 BTS (Base Transceiever Station)是完全同步的系统。
由于 BTS 是一个同步系统,它必须通过测量并校准经过任何总线的延迟。OBSAI 已经非常仔细地考虑到这点,并且
提出一个在 RP3 链路上进行主帧同步的方法 (将在之后的章节进行更多有关帧的讨论) 。延迟校准考虑到所有因
素,包括处理和收发模块的缓冲器延迟以及链路上的延迟。
数据链路层的另一个主要考虑是发送器和接收器之间的同步。同步确保了链路上的实际数据可以成功解码。错误的
频率以及同步的状态一直受到监控。
RP3-01 已经进一步规范了线路速率,应为 768Mbps 的整数倍,最高可达 3.84Gbps,并且也考虑了 OBSAI 兼容的
线路速率。由于可用线路速率数量有限,远程射频单元和本地单元之间的自协商已经定义。这个规范扩展的内容,包
括两个 RP3-01 节点间的以太网传输、将 RP1 信息映射到 RP3 链路 (由于 RRH 没有实际的 RP1 链路)、延迟测
量、 RP3-01 单元间的同步以及数据在 RP3-01 链路上的多路复用。
51
LatticeECP3 SERDES/PCS
使用指南
LatticeECP3 SERDES/PCS 中每个功能模块的延迟在 CPRI 章节中进行说明。
通用公共无线接口 (CPRI)
CPRI 的目的是允许基站制造商和元件供应商能共享公共协议并更方便地适用于不同客户的平台。
发送路径
• 串行器
• 发送状态机设为千兆以太网模式
• 8b10b 编码
接收路径
• 解串行器
• 基于 IEEE 802.3-2002 1000 BASE-X 定义的对齐字符的字对齐
• 8b10b 解码
与 OBSAI 不同的是, CPRI 不指定机械或者电气接口规范。从范围上看, CPRI 比 OBSAI 的带宽窄得多。 CPRI 单
纯只看 RRH 和基带模块之间的链路。在 CPRI 中,这些模块分别被称为无线电设备 (RE)和无线电设备控制
(REC)。换言之,CPRI 规定了与 OBSAI RP3 规范相同的接口。CPRI 的主要内容包括接口的物理和数据链路层。
它还规定了如何传输用户层数据、控制和管理 (C&M)层数据以及同步层的数据。
两大原因成为了 CPRI 更大的推动力 —— 很多公司的支持以及仅专注于一种接口连接 (在射频模块和基带模块之
间),甚至主要针对的是物理层和数据链路层。
CPRI 允许 4 种线路位速率选择:614.4Mbps、 1.2288Gbps、 2.4576Gbps 和 3.072Gbps ;至少支持这些速率中的
一个。更高的线路速率通常会与稍低的线路速率相比。
CPRI 没有物理层协议的强制性要求,但使用的协议必须达到 1 × 10-12 的 BER 要求,这比 OBSAI 规范稍宽松一些。
它还规定了时钟稳定性和相位噪声的要求。
CPRI 还推荐了两个电气变量:高电压 (high voltage, HV)和低电压 (low voltage, LV)。 HV 根据 IEEE 802.32002 中 1000Base-CX clause 39 在 100 欧姆阻抗时来指定。LV 根据 XAUI 来指定。LV 推荐用于所有速率,并且是
本器件的关注焦点。
在处理 CPRI 和 OBSAI 规范时,理解两个链路层的需求是很重要的:
• 链接延迟准确性和电缆延迟校正
• 启动同步
链路延迟准确性和电缆延迟校准
虽然下面主要是从 CPRI 的要求来讨论,同样的要求也适用于 OBSAI 实现。
RE 或 RRH 的频率锁定至 REC 或 BTS。因此,在这个同步系统中,为了满足空中接口时序要求,校准 RRH 和 BTS
之间的所有延迟是十分必要的。该接口需要基本机制的支持,以校准链路上的电缆延迟和单跳和多跳连接的往返延
迟。具体而言,定义了延迟校准的参考点以及 RE (无线电设备)输入输出信号之间的时序关系。在单跳情况下,
REC 主端口和 RE 从端口之间的链路的所有定义和需求如图 8-33 所示。
52
LatticeECP3 SERDES/PCS
使用指南
图 8-33. REC 主端口和 RE 从端口之间的链路 (单跳情况下)
Radio
Antenna
T12
R1
Radio Equipment
Control (REC)
R2
T14
Toffset
R4
Radio Equipment
(RE)
R3
T34
参考点 R1-4 对应 REC 的输出点 (R1)和 REC 的输入点 (R4),并且 RE 的输入点 (R2)和输出点 (R3)终止
了一种特定的逻辑连接。天线如 Ra 所示,以供参考。
• T12 是从 REC (R1)输出点到 RE (R2)输入点的下行链路信号的延迟,实际上是下行链路电缆的延迟。
• T34 是从 RE (R3)输出点到 REC (R4)输入点的上行链路信号的延迟,实际上是上行链路电缆的延迟。
• Toffset 是 R2 的输入信号和 R3 的输出信号之间的帧偏置。
• T14 是 R1 的输出信号和 R4 的输入信号之间的帧时序差异 (即往返延迟 ——RTT)。
延迟测量是使用帧时序来实现的。 CPRI 有一个 10ms 帧基于 UMTS 射频帧号或 B 节点帧编号,也称为 BFN。每个
UMTS 无线帧有 150 个超帧 (hyperframe)(即每个超帧是 66.67us),带有相应超帧号 (HFN = 0<=Z<=149)。
每个超帧有 256 个 (0<=W<=255)基本帧 (即每个基本帧是 260.42ns = Tchip 或 Tc)。
RE 决定了其输出信号 (上行链路)的帧时序相对于其输入信号 (下行链路)的帧时序是固定偏置 (Toffset) 的。
Toffset 是一个任意值,其大于等于 0 且小于 256 Tc(它不能超出一个超帧大小)。不同的 RE 可能使用不同的 Toffset
值。 REC 事先知道每个 RE 的 Toffset 值 (预先定义的值或 RE 通过更高层消息通知 REC)。
为了确定 T14,从 REC 到 RE 的下行链路 BFN 和 HFN 将返回给从 RE 到 REC 的上行链路。如果上行链路发出错
误条件信号, REC 认为上行链路 BFN 和 HFN 是无效的。因此, T14 = T12 + Toffset + T34。
如前所述,系统是同步的。此外,假设超帧是固定长度的并且 RRH-BTS 互连(电缆长度)在两个方向上都相同(即
T12 = T34,两根光纤是在同一光纤束中),互连延迟传输后变为 (T14 - Toffset)/2。确定 T14 的方法之前已经讨论
过。因而,影响延迟校准的主要因素是 Toffset。因而,互连延迟仅是在链路的每侧测得的超帧到达和离开的时间差。
延迟校准要求根据 3GPP 和 UTRAN 规范,特别是 CPRI 规范中的要求 R-21(CPRI v3.0 第 20 页),其中规定,一
条链路的电缆延迟的往返延迟测量值精度为 +/- Tc/16。此外,R-20 规定了接口的往返延迟时间的绝对精度,不包括
在传输介质上的往返延迟 (不考虑电缆长度)应当满足类似的要求 (T14 为 +/- Tc/16) 。考虑到前面的讨论,在
REC 主端口和 RE 从端口之间的下行链路上的绝对链路延迟精度,不考虑电缆长度,应为上述规定的一半(+/- Tc/32
或大约为 8ns (8.138ns))。因此, T14 和 Toffset 都需要绝对精度小于 +/- 8ns。
53
LatticeECP3 SERDES/PCS
使用指南
下一步重要的是要确定对于不同的速率,多少不确定的位数是可以接受的。从本质上讲,各 CPRI 和 OBSAI 比特率
可以乘以 8.138ns 来确定可接受的非确定值 / 变量的位数。当讨论了 SERDES 的串行 / 并行数据路径之后,其影响
结果将非常清晰。
大多数 SERDES 有一定程度的不确定性,会引入到串行和解串的过程中。因此,由于每个字的位数翻倍了, 16 位
总线架构的 SERDES 的延迟不确定性可能是 8 位总线架构的 SERDES 的两倍。
TX 和 RX 延迟分别在表 8-23 中列出。表中还列出了延迟之间的可变性。该可变性直接造成了前面讨论中所要求的
绝对延迟精度。可变性来自三个方面:TX FPGA 桥 FIFO、RX FPGA 桥 FIFO 和 RX 时钟容限补偿 FIFO。由于 CPRI
系统是一个同步系统, RX CTC FIFO 被旁路并且使用 RX 恢复时钟。
造成延迟可变性的其他因素还有 FPGA 桥 FIFO。这个 FIFO 可以被旁路,如果接口到 FPGA 的是 8 位总线模式。在
16 位接口模式下, FPGA 桥 FIFO 不能被旁路,由于 2:1 gearing 是通过 FIFO 实现的。
SONET/SDH
同步光纤网络 (Synchronous Optical Networking, SONET)和同步数字体系 (Synchronous Digital Hierarchy,
SDH)是标准化的复用协议,通过光纤或电气接口传输数据。 SONET 通用标准在 Telcordia Technologies Generic
Requirements 文件 GR-253-CORE 中进行了详细说明。适用于 SONET 和其他传输系统(如异步光纤系统或数字无
线系统)的通用标准可以在 Telcordia GR-499-CORE 中找到。SONET 和 SDH 最初设计用于传送来自于各种不同源
的电路模式通信 (如 T1, T3)。在 SONET 之前,实现电路间通信的最大难点是,这些不同电路的同步源是不同
的。这意味着每个电路都是以一个略有不同的速度和相位工作。 SONET 允许在一个帧协议下,同步传输来自许多不
同源的不同电路。
LatticeECP3 SERDES/PCS 为收发器提供了三种 SONET/SDH 数据速率支持:STS-3/STM-1 (155.52 Mbps)、
STS-12/STM-4(622.08 Mbps)以及 STS-48/STM-16(2.488 Gbps)。SONET/SDH 应用使用 8 位 SERDES 模式。
为了实现 SONET/SDH 线路兼容,LatticeECP3 还需要外部元件。SERDES 的输出端需要一个外部线路驱动器。为
了过滤来自输入数据流的高频抖动,需要在将恢复时钟用作发送参考时钟之前,使用一个抖动清除器。
对于片到片或者背板应用,不需要外部线路驱动器和时钟抖动清除器。
图 8-34 显示了使用外部元件的线路端解决方案。
54
LatticeECP3 SERDES/PCS
使用指南
图 8-34. SONET/SDH 线路接口
Line
TX Clock
Jitter
Cleaner
Client Recovered
Clock
Line
Driver
Line
Interface
Client
Interface
LatticeECP3
RX Reference
Clock
VCXO
FPGA 接口时钟的使用
图 8-35 说明了在 PCS 核和 FPGA 桥后段的概念图,以及 PCS 和 FPGA 边界间的主要时钟。
图 8-35. PCS/FPGA 时钟接口概念图
PCS
RX
REFCLK
FPGA
Recovered Clock
CDR
BYPASS
rxdata_ch0
BYPASS
RX FIFO
DEC
CTC
FIFO
rx_half_clk_ch0
/2
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX FIFO
txdata_ch0
tx_full_clk_ch0
tx_half_clk_ch0
/2
TX
在上图以及本章节随后的时钟图中,请注意后缀的 “i” 表示 [3:0],即每个表示一个通道。
55
LatticeECP3 SERDES/PCS
使用指南
要求如果通过写入到寄存器位来改变时钟多路复用的任何一个选择器, FPGA 软逻辑应复位使用该多路复用时钟的
逻辑电路。
PCS 输出 16 个时钟。有两个发送时钟 (每通道)以及两个接收时钟 (每通道)。两个发送时钟提供全速和半速时
钟,都来自于 TX PLL。每个接收通道还有两个时钟 (全速和半速时钟)。所有 16 个时钟可以按需求用作 FPGA 逻
辑的本地 (次)或全局 (主)时钟。当 gearing 是 2:1 模式时使用 tx_half_clks。如表 8-5 所示,仅 tx_full_clk_ch0
和 tx_half_clk_ch0 可以直接驱动主时钟布线。其他通道时钟也可以驱动主时钟网络,但是使用通用布线。所有
tx_full_clk_ch[3:0] 和 tx_half_clk_ch[3:0] 信号可以通过使用 USE SECONDARY 时钟参数,驱动次时钟网络。通用
布线也用于驱动次时钟网络。
发送时钟用于 TX FIFO 的写端口 (或相移 FIFO,根据不同情况)。两个接收时钟中的一个连接到 RX FIFO 的读时
钟。另一个时钟用于 CTC FIFO 的读端口,并且可能可以用于 RX FIFO 的写端口 (根据不同情况)。根据 CTC 和
TX FIFO 是否旁路以及 PCS 是用 8 位 /10 位接口模式还是 16 位 /20 位接口模式,可能有四种使用实例。有效的路
径通过加粗线突出显示。它也表明需要多少和什么样的时钟树。有一些更常见的用户首选的模式。
本章节说明了 6 种支持的实例的工作情况。这些实例在表 8-21 中列出。
表 8-21. SERDES/PCS Quad 和 FPGA 内核之间的 6 个接口实例
接口
数据宽度
RX CTC FIFO
RX 相移 /
向下采样 FIFO
TX 相移 /
向上采样 FIFO
Case I-a2
8/10 位
是
是
是
Case I-b2
8/10 位
旁路
是
是
Case I-c2
8/10 位
是
旁路
旁路
2
Case I-d
8/10 位
旁路
旁路
旁路
1, 2
Case II-a
16/20 位
是
是
是
Case II-b1, 2
16/20 位
旁路
是
是
1. 当使用 16/20 位数据宽度时,通常使用 TX 相移(向上采样)FIFO 和 RX 相移(向下采样)FIFO。它们不能被旁路。不要求 RX 和 TX 同时拥
有相同的 FPGA 接口数据路径宽度。可以独立进行控制。为了简洁起见,它们一起在同一个使用实例中进行了说明。
2 TX 相移 (向上采样) FIFO 和 RX 相移 (向下采样) FIFO 不需要一起被旁路。它们可以独立进行控制。同样为了简洁起见,它们一起在同
一个使用实例中进行了说明。
2:1 Gearing
为了确保 FPGA 全局时钟树的性能,推荐当 SERDES 线速率大于 2.5Gbps 时,使用一个 16/20 位宽的接口。在这
个接口, FPGA 接口时钟以一半的字节时钟频率运行。
尽管 16/20 位宽的接口可以一半的字节时钟频率在所有的 SERDES 线路上运行,但是当 SREDES 线路速率足够低
并满足要求时 (2.5Gbps 及更低), 8 / 10 位宽接口仍是首选,因为这可在 FPGA 内核中有最高效的 IP 实现。
6 个接口实例的决策矩阵如表 8-22 所示。
56
LatticeECP3 SERDES/PCS
使用指南
表 8-22. 6 个接口实例的决策矩阵
SERDES线路速率
数据路径宽度
CTC 是必须的?
多通道必须对齐?
是
否
Case I_c1
是
Case I_b2
否
Case I_d2
是
Case I_b3
否
Case I_d3
是
是
Case II_a4
否
是
Case II_b5
必须旁路,不可用
是
Case II_b6
否,单通道链路
8/10 位
(1:1 gearing)
否
是,多通道链路
小于等于 3.2 Gbps
16/20 位
(2:1 gearing)
否,单通道链路
是,多通道链路
接口实例
Case I_a1
是
小于等于 2.5 Gbps
RX FIFO 是必须
的?
必须旁路,不可用
1. 本实例专用于单通道链接,线路速率为 2.5 Gbps 及更低 (8/10 位宽接口), quad 中要求时钟容限补偿。当链路两端分别连到各自的参考
时钟源时,且两个参考时钟源相差不超过 +/- 300ppm,要求使用 CTC。如果内核中的 IP 要求 RX 相移 FIFO 就使用 Case I_a。如果 IP 不
要求这个 FIFO,就使用 Case I_b。
2. 本实例专用于单通道链接,线路速率为 2.5 Gbps 及更低 (8/10 位宽接口), quad 中不要求时钟容限补偿。当链路两端连接到相同的参考时
钟源时,不要求使用 CTC。这通常用于同一块电路板上的芯片到芯片的连接。参考时钟间为 0ppm 偏差,因此不要求使用 CTC, CTC 可以
被旁路。当 CTC 功能由内核中的 IP 实现时, quad 中也不需要使用 CTC。
3. 本实例专用于多通道链接,线路速率为 2.5 Gbps 及更低 (8/10 位宽接口)。多通道对齐必须在 FPGA 设计中实现。由于多通道对齐必须在
CTC 之前实现,当需要多通道对齐时,quad 中的 CTC FIFO 必须被旁路,并且多通道对齐和 CTC(如果需要的话)都由 FPGA 设计实现。
4. 本实例专用于单通道链接,线路速率为 3.2Gbps 及更低,quad 和 FPGA 内核(16/20 位宽接口)之间要求使用一个 2:1 gearbox。quad 中包
含时钟容限补偿。当链路两端分别连到各自的参考时钟源时,且两个参考时钟源相差不超过 +/- 300ppm,要求使用 CTC。
5. 本实例专用于单通道链接,线路速率为 3.2Gbps 及更低,quad 和 FPGA 内核(16/20 位宽接口)之间要求使用一个 2:1 gearbox。quad 中不
包含时钟容限补偿。当链路两端连接到相同的参考时钟源时,不要求使用 CTC。这通常用于同一块电路板上的芯片到芯片的连接。参考时
钟间 0ppm 偏差,因此不要求使用 CTC, CTC 可以被旁路。当 CTC 功能由 FPGA 设计实现时, quad 中也不需要使用 CTC。
6. 本实例专用于多通道链接,线路速率为 3.2Gbps 及更低,quad 和 FPGA 内核(16/20 位宽接口)之间要求使用一个 2:1 gearbox。多通道对齐
必须在 FPGA 设计中实现。由于多通道对齐必须在 CTC 之前实现,当需要多通道对齐时, quad 中的 CTC FIFO 必须被旁路,并且多通道
对齐和 CTC (如果需要的话)都由 FPGA 设计实现。
57
LatticeECP3 SERDES/PCS
使用指南
Case I_a:8/10 位, CTC FIFO 和 RX/TX FIFO 未旁路
图 8-36. 8/10 位, CTC FIFO 和 RX/TX FIFO 未旁路
PCS
RX
REFCLK
FPGA
Recovered Clock
CDR
BYPASS
rxdata_ch0
BYPASS
DEC
RX
FIFO
CTC
FIFO
/2
rx_half_clk_ch0
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
FPGA
Clock
Tree
txdata_ch0
tx_full_clk_ch0
TX
/2
tx_half_clk_ch0
1. TX FIFO 在本实例中仅作为相移 FIFO。
2. RX FIFO 在本实例中仅作为相移 FIFO。
3. 来自 TX PLL(tx_full_clk)的 quad 级全速时钟可以直接到达 FPGA 中央时钟多路复用器。这是相对更高性
能的通路。源于中央时钟多路复用器的全局时钟树为 FPGA 中的用户接口逻辑提供时钟。时钟树的叶子节
点连接到 FPGA 发送输入时钟 (txiclk),每个通道的 CTC FIFO 读时钟 (ebrd_clk)以及 FPGA 接收输入
时钟 (rxiclk)。该实例可能是单通道使用的最常见实例。
FPGA 逻辑中的时钟和数据信号接口实例 (Case I_a)
下面是一部分 SERDES / PCS 在顶层模块的实例化模块,说明了在 Verilog 中时钟和数据端口是如何映射的。
.txiclk_ch0(txclk),
.rxiclk_ch0(txclk),
.rx_full_clk_ch0(),
.tx_full_clk_ch0(txclk),
.tx_half_clk_ch0(),
.txdata_ch0(txdata_2_pcs),
.rxdata_ch0(rxdata_from_pcs),
.tx_k_ch0(txkcntl_2_pcs),
.rx_k_ch0(rxkcntl_from_pcs),
根据不同情况, ebrd_clk_ch0 由软件自动布线。
请注意 tx_full_clk_ch0 使用线名为 'txclk',并且同时输出给 txi_clk_ch0 和 rxi_clk_ch0,如图 8-36 所示。
58
LatticeECP3 SERDES/PCS
使用指南
Case I_b:8/10 位, CTC FIFO 被旁路
图 8-37. 8b/10 位, CTC FIFO 被旁路
PCS
RX
REFCLK
FPGA
Recovered Clock
BYPASS
CDR
rxdata_ch0
BYPASS
DEC
FPGA
Clock
Tree
RX
FIFO
CTC
FIFO
/2
rx_half_clk_ch0
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
FPGA
Clock
Tree
txdata_ch0
tx_full_clk_ch0
TX
/2
tx_half_clk_ch0
1. TX FIFO 在本实例中仅作为相移 FIFO。
2. RX FIFO 在本实例中仅作为相移 FIFO。
3. TX FPGA 通道输入时钟与之前的实例类似,使用一个时钟树来提供时钟源,时钟树由全速率发送 FPGA 输
出时钟直接连接到 FPGA 中央时钟多路开关来驱动。一旦 CTC FIFO 被旁路,恢复时钟需要控制 RX FIFO
的写端口。每个通道的恢复时钟可能需要驱动一个单独的本地或全局时钟树 (即,每个 quad 多达 4 个本
地或全局时钟树)。然后时钟树将驱动 FPGA 接收时钟输入来控制 RX FIFO 的读端口。在本实例中将 CTC
FIFO 旁路的最大的原因是为了在 FPGA 内核中实现多通道对齐。这也意味着使用弹性缓冲器的 CTC 可以在
FPGA 内核中实现。CTC FIFO 可以通过恢复时钟或主恢复时钟写入。CTC FIFO 的读操作可以通过 TX 时钟
树的 TX 时钟实现。
59
LatticeECP3 SERDES/PCS
使用指南
Case I_c:8/10 位, RX/TX FIFO 被旁路
图 8-38. 8/10 位, RX/TX FIFO 被旁路
RX
PCS
REFCLK
FPGA
Recovered Clock
CDR
BYPASS
rxdata_ch0
BYPASS
8b10b
Decoder
RX
FIFO
CTC
FIFO
rx_half_clk_ch0
/2
rx_full_clk_ch0
rxiclk_ch0
REFCLK
AUX
ebrd_clk_ch0
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
txdata_ch0
FPGA
Clock
Tree
tx_full_clk_ch0
tx_half_clk_ch0
TX
/2
1. TX 通道时钟类似于之前的两个实例。在 RX 通道,FPGA 的输入时钟现在是 ebrd_clki。FPGA TX 时钟树驱
动该时钟。在该实例中, ebrd_clki 由软件自动布线。
60
LatticeECP3 SERDES/PCS
使用指南
Case I_d:8/10 位, CTC FIFO 和 RX/TX FIFO 被旁路
图 8-39. 8b/10 位, CTC FIFO 和 RX/TX FIFO 被旁路
RX
FPGA
PCS
REFCLK
Recovered Clock
CDR
BYPASS
BYPASS
DEC
rxdata_ch0
RX
FIFO
CTC
FIFO
/2
rx_half_clk_ch0
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
FPGA
Clock
Tree
txdata_ch0
tx_full_clk_ch0
TX
/2
tx_half_clk_ch0
1. 在本实例中, FPGA 的时钟树可以互换看作是时钟域。 TX 通道时钟类似于前面的三个实例。在 RX 通道,
恢复通道 RX 时钟发送到 FPGA。本实例对于支持视频应用是十分有帮助的。
61
LatticeECP3 SERDES/PCS
使用指南
Case II_a:16/20 位, CTC FIFO 和 RX/TX FIFO 未旁路
图 8-40. 16/20 位, CTC FIFO 和 RX/TX FIFO 未旁路
PCS
RX
REFCLK
FPGA
Recovered Clock
CDR
BYPASS
rxdata_ch0
BYPASS
DEC
FPGA
Clock
Tree
RX
FIFO
CTC
FIFO
/2
rx_half_clk_ch0
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
FPGA
Clock
Tree
txdata_ch0
tx_full_clk_ch0
tx_half_clk_ch0
TX
/2
1. TX FIFO 在本实例中作为相移 FIFO 和向上采样 FIFO。
2. RX FIFO 在本实例中作为相移 FIFO 和向下采样 FIFO。
3. 这是当 FPGA 无法保持全字节频率时的一种非常常见的单通道使用实例。需要两个时钟树。这些时钟树由
发送全速时钟和发送半速时钟直接连到 FPGA 时钟中央多路复用器来驱动。全速时钟树驱动 CTC FIFO 读
端口和 RX FIFO 写端口。半速时钟树驱动 RX FIFO 和 FPGA 逻辑。
62
LatticeECP3 SERDES/PCS
使用指南
Case II_b:16/20 位, CTC FIFO 被旁路
图 8-41. 16/20 位, CTC FIFO 被旁路
PCS
RX
REFCLK
FPGA
Recovered Clock
CDR
BYPASS
rxdata_ch0
BYPASS
DEC
Case II_b
RX
FIFO
CTC
FIFO
/2
FPGA
Clock
Tree
rx_half_clk_ch0
rx_full_clk_ch0
rxiclk_ch0
REFCLK
ebrd_clk_ch0
AUX
TX PLL
txiclk_ch0
BYPASS
SER
8b10b
Encoder
TX
FIFO
FPGA
Clock
Tree
txdata_ch0
tx_full_clk_ch0
/2
TX
tx_half_clk_ch0
1. TX FIFO 在本实例中作为相移 FIFO 和向上采样 FIFO。
2. RX FIFO 在本实例中作为相移 FIFO 和向下采样 FIFO。
3. 这是当 FPGA 无法保持全字节频率时的一种非常常见的多通道对齐使用实例。接收时钟树 (多达四个)可
以是本地或者全局的。它们以半速时钟工作。发送时钟树由发送半速时钟直接连接到 FPGA 时钟中央多路
复用来驱动。
63
LatticeECP3 SERDES/PCS
使用指南
SERDES/PCS 块延迟
表 8-23 说明了发送器和接收器中每个功能块的延迟。延迟以并行时钟周期给出。图 8-42 说明了每个块的位置。
表 8-23. SERDES/PCS 延迟分析
项目
说明
最小值
平均值
最大值
固定值
旁路
单位
FPGA 桥 —— 不同时钟 1:1 Gearing
1
3
5
—
1
word clk
FPGA 桥 —— 相同时钟 1:1 Gearing
—
—
—
3
1
word clk
3
5
—
—
word clk
T2
FPGA 桥 ——2:1 Gearing
8b10b 编码器
1
—
—
—
2
1
word clk
T3
SERDES 桥发送
—
—
—
2
1
word clk
串行器:8 位模式
—
—
—
15 + 1
—
UI + ps
串行器:10 位模式
—
—
—
18 + 1
—
UI + ps
预加重 ON
—
—
—
1 + 2
—
UI + ps
预加重 OFF
—
—
—
0 + 3
—
UI + ps
—
—
—
1
—
UI + ps
发送数据延迟
T1
T4
T5
接收数据延迟
R1
R2
1
2
均衡 ON
均衡 OFF
—
—
—
2
—
UI + ps
解串行器:8 位模式
—
—
—
10 + 3
—
UI + ps
解串行器:10 位模式
—
—
—
12 + 3
—
UI + ps
R3
SERDES 桥接收
—
—
—
2
1
word clk
R4
字对齐 3
3.1
—
4
—
—
word clk
R5
8b10b 解码器
—
—
—
1
1
word clk
R6
时钟容限补偿
7
15
23
1
1
word clk
FPGA 桥 —— 不同时钟 1:1 Gearing
1
3
5
—
1
word clk
FPGA 桥 —— 相同时钟 1:1 Gearing
—
—
—
3
1
word clk
FPGA 桥 ——2:1 Gearing
1
3
5
—
—
word clk
R7
1. 1 = -245ps, 2 = +88ps, 3 = +112ps。
2. 1 = +118ps, 2 = +132ps, 3 = +700ps。
3. 表 8-24 显示了不同字对齐偏移情况下的字对齐器延迟。确切的偏移值可以从通道状态寄存器 CH_22, bit [3:0] 获得。
表 8-24. 字对齐器延迟 vs. 偏移
wa_offset[3:0] (CH_22[3:0])
延迟 (字时钟)
0
4.0
1
3.9
2
3.8
3
3.7
4
3.6
5
3.5
6
3.4
7
3.3
8
3.2
9
3.1
64
LatticeECP3 SERDES/PCS
使用指南
图 8-42. 发送器和接收器延迟框图
SERDES
SERDES Bridge
PCS
EQ
R6
R7
WA
DEC
CTC
FIFO
Polarity
Adjust
Deserializer
1:8/1:10
CDR
HDINN
R5
R3
R2
BYPASS
Receiver
FPGA Core
FPGA
EBRD Clock
R4
R1
HDINP
FPGA Bridge
Recovered Clock
REFCLK
Receive Data
RX
FIFO
BYPASS
BYPASS
BYPASS
FPGA
Receive Clock
Transmit Clock
REFCLK
TX PLL
T2
T1
T3
T4
T5
HDOUTP
HDOUTN
Encoder
Polarity
Adjust
Serializer
8:1/10:1
TX
FIFO
Transmit Data
BYPASS
BYPASS
Transmitter
BYPASS
FPGA
Transmit Clock
SERDES 客户端接口
SCI 允许 SERDES/PCS quad 通过寄存器来控制而不是配置存储器单元。这是一个简单的寄存器配置接口。 FPGA
内核中的 SCI 框图如图 8-43 所示。
图 8-43. SCI 接口框图
SCI
CLK
SCI_WRATA[7:0]
SCI_ADDR[9:0]
SCI
SCI_WRN
SCI_RD
Address
Decoder
(Soft)
Address
Decoder
(Soft)
SCI_SEL_CH0
SCI_SEL_CH1
SCI_SEL_CH2
SCI_SEL_CH3
SCI_SEL_QUAD
SCI_SEL_CH0
SCI_SEL_CH1
SCI_SEL_CH2
SCI_SEL_CH3
SCI_SEL_QUAD
Quad SERDES/PCS (Hard)
SC I_A D D R [5 :0 ]
SC I_A D D R [5 :0 ]
SCI_RDDATA[7:0]
Quad SERDES/PCS (Hard)
SCI_RDDATA[7:0]
SCI_RDATA[7:0]
SCI_INT
SCI_INT
FPGA 内核的接口逻辑应该由用户根据其接口机制来开发。请联系莱迪思的技术支持获取示例代码。
65
LatticeECP3 SERDES/PCS
使用指南
该块中的 SCI_ADDR 为 6 位总线宽度。块边界的总线宽度为 11 位。 高 5 位用于 quad 块选择和通道选择。 表 8-25
显示了 SERDES quad 的 SCI 地址映射。
请参见附录 A 和附录 B,了解 SERDES/PCS 寄存器地址和位说明。
表 8-25. 多达 4 个 SERDES/PCS Quad 的 SCI 地址映射
地址位
SCI_ADDR[5:0]
说明
寄存器地址位
000000 = 选择 register 0
000001 = 选择 register 1
...
111110 = 选择 register 62
111111 = 选择 register 63
SCI_ADDR[8:6]
通道地址位
000 = 选择 channel 0
001 = 选择 channel 1
010 = 选择 channel 2
011 = 选择 channel 3
100 = 选择 Quad
101 = 未用
110 = 未用
111 = 未用
SCI_ADDR[10:9]
Quad 地址位
00 = 选择 Quad A
01 = 选择 Quad B
10 = 选择 Quad C
11 = 选择 Quad D
通过这个接口的读写操作是异步的。在 WRITE 周期内,写数据和写地址必须在 SCI_WR 下降沿建立和保持。在
READ 周期内,时序与 SCI_RD 脉冲有关。图 8-44 和 8-45 分别说明了 WRITE 和 READ 周期。
图 8-44. SCI WRITE 周期,重要时序
SCI_WRN
SCI_ADDR[9:0]
SCI_SEL
SCI_WRDATA[7:0]
tsu1
th2
1. tsu is the setup time for address and write data prior to the falling edge of the write strobe.
2. th is the hold time for address and write data after the falling edge of the write strobe.
Note: To avoid accidental writing to control registers, registers should be used at the SCI input
ports to drive them low at power-up reset.
66
LatticeECP3 SERDES/PCS
使用指南
图 8-45. SCI READ 周期,重要时序
SCI_ADDR[9:0]
SCI_SEL_QUAD
SCI_SEL_CH
SCI_RD
SCI_RDDATA[7:0]
trddv
taddv
taddv
trdde
表 8-26. 时序参数
参数
tsu, trddv, taddv
典型值
单位
1.127
ns
th, trdde
0.805
ns
SCI 接口和存储器读 / 写一样简单。下面是伪代码的示例:
Write:
• Cycle 1: Set sci_addr[5:0], sciw_data[7:0], sci_sel = 1’b1
• Cycle 2: Set sci_wrn from 0  1
• Cycle 3: Set sci_wrn from 1  0, sci_sel = 1’b0
Read:
• Cycle 1: Set sci_addr[5:0], sci_sel = 1’b1
• Cycle 2: Set sci_rd from 0  1
• Cycle 3: Obtain reading data from sci_rddata[7:0]
• Cycle 4: Set sci_rd from 1  0
中断和状态
状态位可通过 SCI 读取,该位为一个字节宽,因而可以一次读取 8 个中断状态信号的状态。 SCI_INT 信号变为高电
平,表示有中断事件发生。然后,用户需要读取 QIF 状态寄存器,判断中断是来自 quad 还是某个通道。这个寄存器
不是读后清除的。它会在所有 quad 或通道的中断源清除后被清除。一旦中断源总数确定,用户可以读相关的 quad
或通道中的寄存器来确定实际的中断源。表 8-27 和 8-28 列出了所有的中断源。
67
LatticeECP3 SERDES/PCS
使用指南
表 8-27. Quad 中断源
Quad SCI_INT 源
int_qd_out
说明
寄存器名称
Quad 中断。如果在 quad 中有任何中断事件,该寄存器位
将置为有效。该寄存器位会在所有中断事件清除后被清
PCS Quad 状态寄存器 QD_20
除。
int_ch_out[0:3]
Channel 中断。如果在各相应通道中有任何中断事件,该
寄存器位将置为有效。这些寄存器位会在各个相应通道中 PCS Quad 状态寄存器 QD_20
的所有中断事件清除后被清除。
ls_sync_statusn_[0:3]_int
ls_sync_status_[0:3]_int
Link Status Low (未同步)通道中断
Link Status High (同步)通道中断
PCS Quad 中断状态寄存器 QD_22
~PLOL, PLOL
~PLOL 和 PLOL 上产生中断 ——PLL 失锁
SERDES Quad 状态寄存器 QD_25
表 8-28. 通道中断源
通道 SCI_INT 源
说明
寄存器名称
fb_tx_fifo_error_int
fb_rx_fifo_error_int
cc_overrun_int
cc_underrun_int
FPGA 桥 TX FIFO 错误中断
FPGA 桥 RX FIFO 错误中断
CTC FIFO 过载和欠载中断
PCS 通道通用中断状态寄存器 CH_23
pci_det_done_int
rlos_lo_int
~rlos_lo_int
rlol_int
~rlol_int
pci_det_done 产生中断
rlos_lo 产生中断
~rlos_lo 产生中断
rlol 产生中断
~rlol 产生中断
SERDES 通道中断状态寄存器 CH_2A
SERDES 客户端接口应用示例
莱迪思半导体的 ORCAstra FPGA 配置软件是一款基于 PC 的图形用户界面,允许用户通过对 FPGA 寄存器的控制
位编程,来配置莱迪思 FPGA 的运行模式。
SERDES/PCS 状态信息在屏幕上实时显示,并且任何配置可以保存到控制寄存器中,以用于其他的测试。图形用户
界面的使用不会影响 FPGA 内核部分的编程。更多有关 ORCAstra 的信息和可下载文件可从莱迪思半导体网站
www.latticesemi.com/products/designsoftware/orcastra.cfm 获取。
用户可以从 IPexpress 获取完整的 LatticeECP3 ORCAstra 接口设计。除了包含 ORCAstra 接口的 HDL 文件,还提
供一个包含 ORCAstra 接口的文件,文件名为 "chip.v" (用于 Verilog)。
SERDES/PCS Quad 的动态配置
SERDES/PCS quad 可通过寄存器控制,寄存器可由可选的 SERDES 客户端接口进行访问。
当通过配置存储器单元控制时,配置完成后,要求 SERDES/PCS quad 必须达到工作状态 ,不需要用户进一步干
预。这意味着任何初始化 SERDES/PCS quad 所需的特定复位序列必须通过硬件自动处理。换言之, SCI 的使用是
可选的, SERDES/PCS quad 不假定在 FPGA 内核中使用软 IP。
SERDES 调试功能
PCS 回环模式
LatticeECP3 系列提供三种回环模式,通过 PCS/FPGA 接口的控制信号控制,便于测试外部 SERDES/ 板上接口和
内部 PCS/FPGA 逻辑接口。提供了两种回环模式,将接收到的数据传回发送数据路径。回环模式对于检测高速串行
SERDES 封装引脚连接以及嵌入式 SERDES 和 / 或 PCS 逻辑是十分有用的。
68
LatticeECP3 SERDES/PCS
使用指南
RX 至 TX 串行回环模式
将接收到的串行数据传回发送缓冲器,无需经过 CDR 或解串行器。在 IPexpress 图形用户界面中选择 RX-to-TX
Serial Loopback 选项会使得 LB_CTL[1:0] 设为 '10' 并将 TDRV_DAT_SEL[1:0] 寄存器设为 '11'(请参见表 8-81 和 884)。
TX 至 RX 串行回环模式
此模式将发送的串行数据传回接收器 CDR 块。在 IPexpress 图形用户界面中选择 TX-to-RX Serial Loopback 选项会
将 LB_CTL[1:0] 设为 '01' (参见表 8-81)。
SERDES 并行回环模式
将接收到的并行数据传回发送数据路径,无需经过 PCS 逻辑。在 IPexpress 图形用户界面中禁止时,并行回环模式
可以通过 FPGA 内核控制信号 sb_felb_ch[3:0]_c 和 sb_felb_rst_ch[3:0]_c 进行动态控制。 SERDES 并行回环可以
通过分别将每个通道的相应 sb_felb_ch[3:0]_c 位设为 “1” 来进行选择。
如果没有使用该回环模式的动态功能,两个控制信号应连接到地。
当在 IPexpress 图形用户界面中使能回环模式时,控制寄存器位 sb_pfifo_lp(CH_03[5]) 置 1,并且回环模式置 1。
FPGA 内核中的控制信号 sb_felb_ch[3:0]_c 和 sb_felb_rst_ch[3:0]_c 在 PCS 模块中不可用。
上述讨论请参见图 8-46。
图 8-46. 三种回环模式
SERDES
REFCLK
PCS Core
SERDES
Bridge
FPGA Bridge
(FB)
CDR
LB_CTL[3:0]
INV
DATA
EQ
PD/
Sampler
Serial Loopback
Tx to Rx
hdinn_ch0
WA
DES
CK 1:8/1:10
FIFO
SERDES Parallel Loopback
hdinp_ch0
SLB_R2T_D
SLB_EQ2T
SLB_R2T_CK
LB_CTL[1:0]
Serial Loopback
Rx to Tx
hdoutp_ch0
DATA
hdoutn_ch0
CK
PLB_R2T
SER
8:1/10:1
8b10b
Decoder
CTC
FIFO
RX
FIFO
LSM
8b10b
Encoder
TX
FIFO
INV
TDRV_DAT_SEL[1:0]
rx_data_ch0[23:0]
SERDES PLB EN
图 8-47. 回环使能信号
sb_felb_ch[3:0]_c
sb_pfifo_lp(CH_03[5])
SERDES Bridge Far End Parallel
Loopback Enable
LB_CTL[1:0](CH_11[5:4] = ‘10’)
TDRV_DAT_SEL[1:0](CH_14[6:5] = ‘11’)
RX-to-TX Serial Loopback Enable
LB_CTL[1:0](CH_11[5:4] = ‘01’)
TX-to-RX Serial Loopback Enable
69
txdata_ch0[23:0]
LatticeECP3 SERDES/PCS
使用指南
ORCAstra
莱迪思 ORCAstra 软件能帮助您快速探索配置选项,而无需冗长的重新编译过程或者对您的电路板做任何更改。图
形用户界面中创建的配置可以保存到存储器中并在以后使用时重新载入。为了使用 ORCAstra,ORCASTRA 模块必
须在 IPexpress 中创建,并在 FPGA 设计中使用。
还可以使用宏功能来支持基于脚本的配置和测试。图形用户界面还可以用于实时显示系统状态信息。使用 ORCAstra
软件不会干扰 FPGA 的编程。
图 8-48 显示了 ORCAstra 图形用户界面的顶层窗口。用户可以在此窗口中读写地址单元的数据而无需进入每个 PCS
通道的子窗口。当调用时, ORCAstra 将自动识别器件类型。或者,可以通过器件下拉菜单选择器件类型。
图 8-48. ORCAstra 顶层屏幕快照
默认情况下,图 8-48 中的数据盒使用的是大端字节序(即,最重要的位在左边)。用户可以通过 Options 选项卡下
的 Display Data Reversed in Data Box 更改为小端字节序。
点击选项卡 Interface=None 并在下拉列表中选择 1 ispVM JTAG Hub USB Interface。
然后从 Select Target JTAG Device 窗口中选择 C2 0A 80 80。
70
LatticeECP3 SERDES/PCS
使用指南
图 8-49. JTAG 器件选择
然后点击 ORCAstra Hub I/O 窗口中的 OK。
图 8-50. Hub ID 选择
图中显示了在 channel 0 和 channel 1 中有数据通信。在此示例中,我们假设 PCS SCI 地址映射到设计中的 Quad 0。
双击 PCS0 (Quad 0)按钮将打开主窗口,如图 8-51 所示。
这些标准的 Windows 菜单控制了器件和接口的选择。它们还支持各种配置选项,包括使用储存的文件设置和保存配
置。
71
LatticeECP3 SERDES/PCS
使用指南
图 8-51. ORCAstra 主窗口
控制盒和按钮、状态盒和文本窗口
将鼠标光标移动到一个控制盒并点击鼠标左键来设置控制位。所选控制盒的位的位置和功能都显示在文本窗口中,
并与 LatticeECP3 系列数据手册中的寄存器映射表对应。当光标移动到位的名称上时,仅显示其功能。状态盒与控
制盒类似,不过拥有 LED 显示和彩色背景。
图 8-52 显示了 SERDES 缓冲器选项窗口。可以从下拉菜单中选择配置选项。
图 8-52. SERDES 缓冲器选项窗口
72
LatticeECP3 SERDES/PCS
使用指南
更多有关 ORCAstra 的信息和可下载文件可以从下面莱迪思半导体网站获得:www.latticesemi.com/products/designsoftware/orcastra.cfm.
其他设计考虑
SERDES/PCS 的仿真
表 8-29. 仿真模型位置
仿真器
Active-HDL
模型地址
ispTOOLS\cae_library\simulation\blackbox\pcsc-aldec.zip
ModelSim
ispTOOLS\cae_library\simulation\blackbox\pcsd-mti_6.0-V1-1.zip
NC-Verilog
ispTOOLS\cae_library\simulation\blackbox\pcsd-ncv.zip
VCS
ispTOOLS\cae_library\simulation\blackbox\PCSD_sim.vp.zip
16/20 位字对齐
PCS 接收器不能识别 16 位字边界。当使能字对齐器时, PCS 仅能实现 BYTE 对齐。 16 位字对齐应该在 FPGA 结
构中实现并且这是一种非常直接的方法。仿真模型也使用相同的工作方式。如果用户使用下面所述的对齐机制,其
功能可以得到增强。
例如,如果 FPGA 接口的发送数据为:
YZABCDEFGHIJKLM... (每个字母一个字节, 8 位或 10 位)
然后 8b10b 解码器后以及 rx_gearbox 前 PCS 中的输入数据为:
YZABCDEFGHIJKLM...
在 rx_gearbox 后,数据变为:
1. {ZY}{BA}{DC}{FE}{HG}{JI}{LK}....
或
2. {AZ}{CB}{ED}{GF}{IH}{KJ}{ML}...
明显可以看出,序列 2 没有对齐。有一个字节的偏移,但是需要 16/20 位对齐。在这里我们假定特定字符 ‘A’ 应该一
直放在低字节。
翻转一个 20 位数据结合当前的 16/20 位数据形成如下所示的 32/40 位数据:
1. {DCBA}{HGFE}{LKJI}...
^
| **Found the A in lower 10-bit, set the offset to ‘0’, send out aligned
data ‘BA’
下一个时钟周期:
{FEDC}{JIHG}{NMLK}...
^
| ** 发出对齐的数据 ‘DC’
等。
16/20 位对齐后,输出数据为:
{ZY}{BA}{DC}{FE}{HG}{JI}{LK}...
73
LatticeECP3 SERDES/PCS
使用指南
2. {CBAZ}{GFED}{KJIH}....
^
| ** 在前 10 位找到 A,设置偏移为 ‘10’,发出对齐的数据 ‘BA’
下一个时钟周期:
{EDCB}{IHGF}{MLKJ}...
^
| ** 发出对齐的数据 ‘DC’
等。
20 位对齐后,输出数据为:
{ZY}{BA}{DC}{FE}{HG}{JI}{LK}...
注:通常先发送和接收一个 8/10 位字节或一个 16/20 位字的 LSB。
欲获取 16/20 位字对齐代码示例,请将您的申请发送到 [email protected]。
未使用的 Quad/ 通道和电源
在未使用的 quad 和通道上,VCCA 应当上电。VCCIB、VCCOB、HDINP/N、HDOUTP/N 和 REFCLKP/N 应保持
悬空。未使用的通道输出应为三态,使用大约 10 KOhm 内部电阻连接差分输出对。在配置过程中, HDOUTP/N 拉
高至 VCCOB。
即使当通道用作 Rx Only 模式或 Tx Only 模式,通道的 VCCOB 和 VCCIB 都必须上电。未使用的 SERDES 默认配
置为掉电模式。
复位和掉电控制
SERDES quad 对所有通道的每个发送器和接收器都有复位和掉电控制,如图 8-53 所示。复位信号高电平有效,通
过将 pwrup 信号驱动为低电平可实现掉电。各种复位和掉电控制操作将在下面章节说明。
注:当器件上电并且芯片级上电复位有效, SERDES 控制位 (在 PCS 中)将清零 (或将变为其默认值)。这将使
SERDES quad 进入掉电状态。
图 8-53. SERDES/PCS Quad 复位和掉电控制
SERDES/PCS Quad
FPGA Core
RX
CH0 ------------------------------------------TX
RX
CH1 ------------------------------------------TX
rx_pwrup_ch0
rx_serdes_rst_ch0
tx_pwrup_ch0
rx_pwrup_ch1
rx_serdes_rst_ch1
tx_pwrup_ch1
tx_serdes_rst
AUX Channel
serdes_rst_qd
RX
CH2 ------------------------------------------TX
RX
CH3 ------------------------------------------TX
74
rx_pwrup_ch2
rx_serdes_rst_ch2
tx_pwrup_ch2
rx_pwrup_ch3
rx_serdes_rst_ch3
tx_pwrup_ch3
LatticeECP3 SERDES/PCS
使用指南
通常,所有复位是通过上电复位和各种 FPGA 结构复位。复位逻辑如图 8-54 和表 8-30 所示。
图 8-54. SERDES/PCS 复位图
(default=0)
tpwrup_ch[3:0]
rpwrup_ch[3:0]
(default=0)
rrst_ch[3:0]
trst
(default=0)
lane_tx_rst_ch[3:0]
lane_rx_rst_ch[3:0]
serdes_rst
(default=0)
quad_rst
(default=0)
Configuration Register Block
ffc_quad_rst
resets all PCS logic
TRI_ION
resets the complete
SERDES Quad
serdes_rst_qd
tx_pcs_rst_ch[3:0]
4RX and 4TX PCS
channels digital logic
rx_pcs_rst_ch[3:0]
rx_serdes_rst_ch[3:0]
tx_serdes_rst
resets selected digital
logic in the SERDES
tx_pwrup_ch[3:0]
sets selected channel to
power down mode
rx_pwrup_ch[3:0]
表 8-30. SERDES/PCS 复位表
复位信号
FPGA
tx_pcs_rst_ch[3:0]_c
控制寄存器
lane_tx_rst[3:0]
rx_pcs_rst_ch[3:0]_c
lane_rx_rst[3:0]
rst_qd_c
quad_rst
serdes_rst_qd_c
serdes_rst
rx_serdes_rst_ch[3:0]_c
rrst[3:0]2
tx_serdes_rst_c
trst
TRI_ION (配置)
PCS1
TX
PCS1
RX
PCS
SERDES SERDES CTRL寄存
TX
RX
器
TX
PLL
CDR
PLL
X
X
X
X
X
X
X
X
X
X
X
X
X3
X
X
X
1. 包括 SB (SERDES 桥)、 PCS 内核以及 FB (FPGA 桥)子模块。
2. 仅内部使用。该复位通常应连到 '0',除非需要复位 CDR PLL。
3. tx_serdes_rst_c 复位不会复位 TX PLL。该信号仅会强制 tx_pll_lol_qd_s 变为高电平。
75
X
X
X
X
LatticeECP3 SERDES/PCS
使用指南
表 8-31. 复位控制说明 1, 2, 3
复位信号
FPGA
控制寄存器
说明
rst_qd_c
quad_rst
高电平有效,异步输入。复位所有的 SERDES 通道,包括辅助通道和 PCS。该
复位包括 serdes_rst、 txpll、 cdr、 lane_tx_rst 和 lane_rx_rst。
serdes_rst_qd_c
serdes_rst
高电平有效,异步输入到 SERDES quad。将软件寄存器位用作门控信号。该复
位仅用于 SERDES 块,包括 TXPLL 和 CDRPLL。
tx/rx_pcs_rst_ch[3:0]_c
rx_serdes_rst_ch[3:0]_c
lane_tx/rx_rst[0:3] 高电平有效,异步输入。复位 SB、 PCS 内核和 FB 块中的单个 TX/RX 通道。
rrst[0:3]
复位失锁 (rlol),信号丢失和校准电路。
tx_serdes_rst_c
trst
复位 AUX PLL (plol)失锁。
1. 对于 quad 中所有以全数据速率模式运行的通道,并行端时钟确保同相。
2. 对于 quad 中所有以半数据速率模式运行的通道,每个通道都有一个独立的除 2 电路。因为在 “serdes_rst” 信号释放后,quad 中没有机制来
确保这些除 2 电路同相, PCS 设计应当假设除法器 (及并行端时钟) 不是同相的。
3. 在半数据速率模式下,因为无法确保并行端时钟同相,这可能会增加多通道链路的发送和接收端的通道到通道的偏移。
表 8-32. 复位脉冲规范
说明
参数
最小值
典型值
最大值
单位
tSERDES_RST_QD
Quad SERDES 复位高电平时间
1
us
tRX_PCS_RST
通道 RX PCS 复位高电平时间
3
ns
tTX_PCS_RST
通道 TX PCS 复位高电平时间
3
ns
tRX_SERDES_RST
通道 RX SERDES 复位高电平时间
3
ns
tTX_SERDES_RST
Quad TX SERDES 复位高电平时间
3
ns
掉电控制说明
每个 RX 和 TX 通道可以单独通过软件寄存器位或来自 FPGA 的控制信号进行掉电控制。每个通道的掉电控制位仅对
SERDES 宏单元中选定的块和高速 I/O 缓冲器进行掉电控制。
表 8-33. 掉电控制说明
信号
FPGA
寄存器
serdes_pd
说明
低电平有效,异步输入到 SERDES quad,作用在所有通道,包括辅助通道。当驱
动为低电平时,它使整个宏断电,包括发送 PLL。所有的时钟都停止工作,因此整
个宏的功率耗散降至最低。该信号释放后,需要紧跟 TX 和 RX 复位序列。
tx_pwrup_ch[0:3]_c
tpwrup[0:3]
高电平有效,发送通道上电 —— 串行器和输出驱动器上电。该信号释放后,需要
紧跟 TX 复位序列。该信号释放后,需要紧跟 TX 复位序列。
rx_pwrup_ch[0:3]_c
rpwrup[0:3]
高电平有效,接收通道上电 ——CDR、输入缓冲器 (均衡器和放大器)以及信号
丢失检测器上电。该信号释放后,需要紧跟 RX 复位序列。
表 8-34. 掉电 / 上电时序规范
参数
说明
最小值
典型值
最大值
单位
tPWRDN
serdes_pd 后的掉电时间
20
ns
tPWRUP
serdes_pd 后的上电时间
20
ns
76
LatticeECP3 SERDES/PCS
使用指南
SERDES/PCS 复位
复位序列和复位状态图
上电和配置后,进行所有 SERDES 复位和 FPGA 复位。
复位序列产生
IPexpress 图形用户界面中包括复位序列 (Diamond 1.1 及以上版本提供)。
我们推荐在 IPexpress 中选择复位序列产生选项,如 Control Setup 选项卡章节所述。为 SERDES/PCS 生成的 HDL
文件将包括 Tx 复位状态机和 Rx 复位状态机。
锁状态信号定义
tx_pll_lol_qd_s:
: 1 = TX PLL 失锁
: 0 = TX PLL 锁定
需要 1,400,000 UI 来申明 TX PLL 锁定
rx_cdr_lol_ch[3:0]_s
: 1 = CDR 失锁
: 0 = 保持锁定
需要 400,000 个参考时钟周期 (最差情况下)来申明 CDR PLL 锁定
rx_los_low_ch[3:0]_s
: 1 = 每个通道的信号丢失检测
: 0 = 检测到信号
rx_cdr_lol_ch[3:0]_s 状态信号是 CDR 锁定状态指示符,如上定义。然而,在 CDR 锁定过程中,当没有输入数据出
现时, CDR PLL 将锁定到一个参考时钟。这避免了在其恢复时,输入数据被忽略。
为了确保在 CDR 锁定状态检测时有输入数据出现,推荐结合使用 rx_los_low_ch[3:0]_s 信号和 rx_cdr_lol_ch[3:0]_s
信号。
TX 复位序列
1. QUAD_RESET:
上电时,使 rst_qd_c 和 tx_pcs_rst_ch[3:0]_c 有效。
2. WAIT_FOR_TIMER1: 启动 TIMER1。等待至少 20 ns。
3. CHECK_PLOL:
释放 rst_qd_c。
4. WAIT_FOR_TIMER2: 启动 TIMER2。如果 TIMER2 计时满并且 TX PLL 没有被锁定,转到第 1 步。
5. NORMAL:
释放 tx_pcs_rst_ch#_c。正常工作情况下,如果 tx_pll_lol_qd_s 变为高电平,转到
第 1 步。
RX 复位序列
1. WAIT_FOR_PLOL:
等待直到 TX PLL 锁定并且接收数据出现。rx_serdes_rst_ch[3:0]_c 设为 0,因为当
它有效时, rx_los_low[3:0]_s 变为高电平。
2. RX_SERDES_RESET: 使 rx_serdes_rst_ch[3:0]_c 和 rx_pcs_rst_ch[3:0]_c 有效。
3. WAIT_FOR_TIMER1: 等待至少 3 ns。
4. CHECK_LOL_LOS:
释放 rx_serdes_rst_ch_c。复位 TIMER2。
77
LatticeECP3 SERDES/PCS
使用指南
5. WAIT_FOR_TIMER2: 等待 cdr_lol_ch[3:0]_s 和 rx_los_low_ch[3:0] 变为低电平。如果 rx_lol_los
(rx_cdr_lol_ch_s || rx_los_low_ch_s) 信号跳变,转到第 4 步。如果 TIMER2 计时满并
且 rx_lol_los = 1,转到第 1 步。
6. NORMAL:
释放 rx_pcs_rst_ch_c。如果 rx_lol_los 变为高电平,转到第 1 步。
注:当输入数据源在正常工作状态下中断,RX复位序列提供了CDR重锁定特性。RX复位可按每个通道来设置。
复位序列状态图如图 8-55 和 8-56 所示。
可从莱迪思网站查阅一组复位序列代码示例。
图 8-55. TX 复位状态图
Power Up
Quad Reset
tx_pcs_rst_ch[3:0]_c <= 1
rst_qd_c <= 1
Wait for TIMER1
tx_pcs_rst_ch[3:0]_c <= 1
rst_qd_c <= 1
TIMER1
Check PLOL
tx_pll_lol_qd_s
tx_pcs_rst_ch[3:0]_c <= 1
rst_qd_c <= 0
Wait for TIMER2
tx_pcs_rst_ch[3:0]_c <= 1
rst_qd_c <= 0
Normal
tx_pcs_rst_ch[3:0]_c <= 0
rxt_qd_c <= 0
Notes:
TIMER 1: rst_qd_c asserted for a minimum of 20 ns.
TIMER 2: Time to declare TX PLL lock: 1,400,000 UI.
78
TIMER2 & tx_pll_lol_qd_s
LatticeECP3 SERDES/PCS
使用指南
图 8-56. RX 复位状态图
Power Up
Wait for PLOL
TIMER2 & rx_lol_los
tx_pll_lol_qd_s || rx_los_low_ch[3:0]_s
rx_pcs_rst_ch[3:0]_c <= 1
rx_serdes_rst_ch[3:0]_c <= 0
RX_SERDES_RESET
rx_pcs_rst_ch[3:0]_c <= 1
rx_serdes_rst_ch[3:0]_c <= 1
Wait for TIMER1
rx_pcs_rst_ch[3:0]_c <= 1
rx_serdes_rst_ch[3:0]_c <= 1
rising edge (rx_lol_los)
falling edge (rx_lol_los)
TIMER1
Check LOL_LOS
rx_pcs_rst_ch[3:0]_c <= 1
rx_serdes_rst_ch[3:0]_c <= 0
rx_lol_los
Wait for TIMER2
rx_pcs_rst_ch[3:0]_c <= 1
rx_serdes_rst_ch[3:0]_c <= 0
TIMER2 & ~rx_lol_los
Normal
rx_pcs_rst_ch[3:0]_c <= 0
rx_serdes_rst_ch[3:0]_c <= 0
Notes:
TIMER 1: rx_serdes_rst_ch[3:0]_c asserted for minimum 3 ns.
TIMER 2: Time for rx_lol_los signal to stay low (400,000 reference clock cycles). Any FPGA clock can be used to satisfy the timer requirement.
In the diagram above, rx_lol_los is defined as rx_cdr_lol_ch[3:0]_s || rx_los_low_ch[3:0]_s.
The tx_pll_lol_qd_s input to the state diagram RTL code should be tied low in Rx Only mode or when the recovered clock is used as the Tx PLL
reference clock, as in SDI applications.
When multiple receiver channels rx_serdes_rst_ch[3:0]_c are to be asserted, it is recommended to activate the reset signals one channel at a time.
Simultaneous resetting of multiple receiver SERDES channels may cause a current surge in the SERDES/PCS quad.
The rx_los_low output from SERDES may be triggered for some input streams with continuous zeros, like the SDI pathological pattern. For such
applications, the rx_los_low input to the reset state machine must be connected to the carrier detect output (must be inverted) of the cable equalizer
if available. In general, CD=1 means carrier is present. So this signal must be inverted to replace rx_los_low. If a cable equalizer is not available, users
may tie it to zero but in this case, the CDR can lock to a local reference clock when there is no input data present.
79
LatticeECP3 SERDES/PCS
使用指南
电源供电顺序要求
当使用 SERDES 1.5V VCCIB 或 VCCOB 时, 1.5V 电源供电但 1.2V 电源未供电时, SERDES 不应置于稳定的状
态。 1.2V 和 1.5V 电源应同时加到 SERDES 上。对于在电源和稳压器的 ramp_up 时间的正常变化,不需要考虑。
参考文档
• TN1033, 高速印刷电路板的设计考虑
• TN1114, 莱迪思 SERDES 的电气建议
• HB1009, LatticeECP3 系列手册
• DS1021, LatticeECP3 系列数据手册
技术支持
热线电话:+86-21-52989090
电子邮件:[email protected]
网站:
www.latticesemi.com.cn
版本历史
日期
2009 年 2 月
版本
01.0
初始版本。
更改摘要
2009 年 3 月
01.1
针对每种模式表,更新了数据总线的使用。
2009 年 6 月
01.2
更新了参考时钟使用框图。
tdrv_amp 属性设置改为 tdrv 属性。
添加了外部链接状态机选项章节。
在千兆以太网模式章节添加了 Idle 插入。
更新了图形用户界面截屏。
更新了字对齐延迟。
2009 年 11 月
01.3
分别给出了 tx 和 rx 端更新的复位序列状态图。
更新了 los 设置。
添加了 SONET 支持。
删除了远端并行回环特性。
重新定义了数据速率范围。
最小数据速率降低为 150 Mbps。
2010 年 2 月
01.4
更新了复位序列状态图。
2010 年 3 月
01.5
在 IPexpress 图形用户界面中添加了生成选项卡。
2010 年 6 月
01.6
更新了 Lattice Diamond 设计软件支持。
时钟图中去除了 refclk_to/from_nq 信号。
2010 年 12 月
01.7
在 IPexpress 图形用户界面中添加了复位序列产生选项。
添加了有关逗号掩码的详细信息。
2011 年 7 月
01.8
SERDES 支持的标准表 —— 更新了千兆以太网、 SGMII、 10 位
SERDES、 8 位 SERDES 和通用 8b10b 的信息。
更新了发送数据总线章节。
更新了接收数据总线章节。
更新了信号丢失检测器图的注脚。
SERDES_PCS 图形用户界面属性 ——Quad 选项卡设置 —— 协议增加
了 SGMII。
SERDES/PCS 延迟分析表 —— 更新了 gearing 信息。
80
LatticeECP3 SERDES/PCS
使用指南
日期
版本
更改摘要
仿真模型位置表 —— 添加了 VCS 行。
更新了 SERDES/PCS 复位图。
更新了 Rx 复位状态图的注脚。
2011 年 7 月 (续)
01.8 (续)
更新了 SERDES 控制寄存器 QD_0A 表中 bit 5 的信息。
更新了 SERDES 控制寄存器 CH_13 表中 bits 3 和 2:0 的信息。
添加了 PCS 状态寄存器 CH_21 表的注脚。
参考表中的属性表 —— 更新了 TX_DATARATE_RANGE 和
CHn_RX_DATARATE_RANGE 的属性值。更新了第一个注脚。
2011 年 9 月
01.9
SERDES 控制寄存器 CH_14,更正了寄存器位 tpwrup 的默认值。
删除了参考表中的属性表中 int_all 的所有保留位和 los hi 位。
PCS 控制寄存器 QD_02,更新了默认值。
2011 年 11 月
02.0
SERDES_PCS I/O 说明表 —— 更新了 tx_full_clk_ch[3:0] 和
tx_half_clk_ch[3:0] 的说明。
更新了 Tx 通道间偏移章节。
更新了字对齐 (字节边界检测)章节的字对齐控制小节。
更新了外部链路状态机选项章节。
掉电控制说明表 —— 更新了 tx_pwrup_ch[0:3]_c 信号说明。
附录 A, SERDES 控制寄存器 QD_0B 表 —— 更新了 Bit 7 的说明。
附录 A, PCS 控制寄存器 CH_01 表 —— 更新了 Bit 7 的说明。
2012 年 2 月
02.1
2012 年 4 月
02.2
附录 C,参考表中的属性表 —— 更新了 {CHn_RXWA, CHn_ILSM} 的
属性值。
更新文档,加入了新的公司标志。
更新了每款 LatticeECP3 器件的 SERDES/PCS Quad 数量表中的 328
球型 csBGA 封装的相关数据。
SERDES_PCS I/O 说明表 —— 更新了 refclk2fpga 的说明。
SERDES_PCS 图形用户界面属性 —— SERDES 高级设置选项卡表 ——
更新了脚注 3。
添加了 FPGA 核和复位序列的参考时钟章节。
更新了通用 8b10b 模式章节。
更新了 FPGA 接口时钟章节。
附录 A,通道接口寄存器对应表 —— 更新了 CH_16、 CH_17 和
CH_23 的信息。
附录 A, SERDES 控制寄存器 CH_11 表 —— 将 Bit 3:2 改为 “ 保留 ”。
2012 年 5 月
02.3
阐明 8b10b 模式下 LSM 同步的数据模式要求。
2012 年 8 月
02.4
添加了 LatticeECP3-17EA 328 csBGA 器件有限的通道使用限制信息。
SERDES_PCS I/O 说明表 —— 添加了脚注 3。
更新了 RX 复位状态图脚注。
81
LatticeECP3 SERDES/PCS
使用指南
附录 A. 配置寄存器
Quad 寄存器概述
表 8-35. Quad 接口寄存器表
BA
寄存器
名称
D7
D6
D5
D4
reg_sync_toggle
force_int
char_mode
xge_mode
high_mark[3]
high_mark[2]
high_mark[1]
high_mark[0]
D3
D2
D1
D0
low_mark[3]
low_mark[2]
low_mark[1]
low_mark[0]
pfifo_clr_sel
仅内部使用
仅内部使用
每个 Quad PCS 控制寄存器
00
QD_00
01
QD_01
02
QD_02
03
QD_03
04
QD_04
仅内部使用
05
QD_05
仅内部使用
06
QD_06
仅内部使用
07
QD_07
仅内部使用
08
QD_08
09
QD_09
仅内部使用
仅内部使用
ls_sync_status_3_int_ctl ls_sync_status_2_int_ctl ls_sync_status_1_int_ctl ls_sync_status_0_int_ctl ls_sync_statusn_3_int_ctl ls_sync_statusn_2_int_ctl ls_sync_statusn_1_int_ctl ls_sync_statusn_0_int_ctl
每个 Quad SERDES 控制寄存器
0A
QD_0A
仅内部使用
保留
tx_refck_sel
refck_dcc_en
refck_rterm
refck_out_sel[1]
refck_out_sel[0]
0B
QD_0B
refck25x
bus8bit_sel
保留
保留
保留
保留
refck_mode[1]
refck_mode[0]
0C
QD_0C
保留
保留
保留
保留
保留
保留
cdr_lol_sel[1]
cdr_lol_sel[0]
0D
QD_0D
仅内部使用
仅内部使用
仅内部使用
pll_lol_sel[1]
pll_lol_sel[0]
tx_vco_ck_div[2]
tx_vco_ck_div[1]
tx_vco_ck_div[0]
0E
QD_0E
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
0F
QD_0F
plol_int_ctl
-plol_int_ctl
保留
保留
保留
保留
保留
保留
每个 Quad 时钟复位寄存器
10
QD_10
保留
保留
保留
保留
serdes_pd
serdes_rst
quad_rst
trst
11
QD_11
保留
保留
保留
保留
保留
保留
保留
保留
每个 Quad PCS 状态寄存器
20
QD_20
int_qd_out
int_ch[3]
int_ch[2]
int_ch[1]
int_ch[0]
21
QD_21
ls_sync_status_3
ls_sync_status_2
ls_sync_status_1
ls_sync_status_0
ls_sync_statusn_3
ls_sync_statusn_2
ls_sync_statusn_1
ls_sync_statusn_0
22
QD_22
ls_sync_status_3_int
ls_sync_status_2_int
ls_sync_status_1_int
ls_sync_status_0_int
ls_sync_statusn_3_int
ls_sync_statuns_2_int
ls_sync_statusn_1_int
ls_sync_statusn_0_int
23
QD_23
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
24
QD_24
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
每个 Quad SERDES 状态寄存器
25
QD_25
plol
-plol
保留
保留
保留
保留
保留
保留
26
QD_26
plol_int
-plol_int
保留
保留
保留
保留
保留
保留
27
QD_27
保留
保留
保留
保留
保留
保留
保留
保留
28
QD_28
保留
保留
保留
保留
保留
保留
保留
保留
每个 Quad PCS 控制寄存器详细信息
表 8-36. PCS 控制寄存器 QD_00
位
名称
说明
Transition = 复位四个 TX 串行器,最小化 TX 线路间偏
移
Level = TX 串行器正常工作
类型
默认值
RW
0
7
reg_sync_toggle
6
force_int
1 = 强制产生中断信号
0 = 正常工作
RW
0
5
char_mode
1 = 使能 SERDES 特性模式
0 = 禁止 SERDES 特性模式
RW
0
4
xge_mode
1 = 选择 10Gb 以太网
0 = 根据通道模式选择
RW
0
类型
默认值
3:0
保留
表 8-37. PCS 控制寄存器 QD_01
位
7:0
名称
说明
仅内部使用
82
LatticeECP3 SERDES/PCS
使用指南
表 8-38. PCS 控制寄存器 QD_02
位
名称
说明
类型
默认值
7:4
high_mark[3:0]
时钟补偿 FIFO 高位水印。中间值是 4’b1000。
RW
4’b1001
3:0
low_mark[3:0]
时钟补偿 FIFO 低位水印。中间值是 4’b1000。
RW
4’b0111
类型
默认值
RW
0
说明
类型
默认值
说明
类型
默认值
说明
类型
默认值
说明
类型
默认值
说明
类型
默认值
表 8-39. PCS 控制寄存器 QD_03
位
7:3
名称
说明
保留
2
pfifo_clr_sel
1
仅内部使用
0
仅内部使用
1 = pfifo_clr 信号或通道寄存器位清零 FIFO
0 = pfifo_error 内部信号自动清零 FIFO
表 8-40. PCS 控制寄存器 QD_04
位
7:0
名称
仅内部使用
表 8-41. PCS 控制寄存器 QD_05
位
7:0
名称
仅内部使用
表 8-42. PCS 控制寄存器 QD_06
位
7:0
名称
仅内部使用
表 8-43. PCS 控制寄存器 QD_07
位
7:0
名称
仅内部使用
表 8-44. PCS 控制寄存器 QD_08
位
7:0
名称
仅内部使用
83
LatticeECP3 SERDES/PCS
使用指南
表 8-45. PCS 控制寄存器 QD_09
位
名称
说明
类型
默认值
7
ls_sync_status_3_int_ctl
1 = 使能 ls_sync_status_3 中断 (同步)
0 = 禁止 ls_sync_status_3 中断 (同步)
RW
0
6
ls_sync_status_2_int_ctl
1 = 使能 ls_sync_status_2 中断 (同步)
0 = 禁止 ls_sync_status_2 中断 (同步)
RW
0
5
ls_sync_status_1_int_ctl
1 = 使能 ls_sync_status_1 中断 (同步)
0 = 禁止 ls_sync_status_1 中断 (同步)
RW
0
4
ls_sync_status_0_int_ctl
1 = 使能 ls_sync_status_0 中断 (同步)
0 = 禁止 ls_sync_status_0 中断 (同步)
RW
0
3
ls_sync_statusn_3_int_ctl
1 = 当 ls_sync_status_3 变为低电平时使能
ls_sync_status_3 中断 (未同步)
0 = 当 ls_sync_status_3 变为低电平时禁止
ls_sync_status_3 中断 (未同步)
RW
0
2
ls_sync_statusn_2_int_ctl
1 = 当 ls_sync_status_2 变为低电平时使能
ls_sync_status_2 中断 (未同步)
0 = 当 ls_sync_status_2 变为低电平时禁止
ls_sync_status_2 中断 (未同步)
RW
0
1
ls_sync_statusn_1_int_ctl
1 = 当 ls_sync_status_1 变为低电平时使能
ls_sync_status_1 中断 (未同步)
0 = 当 ls_sync_status_1 变为低电平时禁止
ls_sync_status_1 中断 (未同步)
RW
0
ls_sync_statusn_0_int_ctl
1 = 当 ls_sync_status_0 变为低电平时使能
ls_sync_status_0 中断 (未同步)
0 = 当 ls_sync_status_0 变为低电平时禁止
ls_sync_status_0 中断 (未同步)
RW
0
类型
默认值
0
每个 Quad PCS 控制寄存器详细信息
表 8-46. SERDES 控制寄存器 QD_0A
位
名称
7
仅内部使用
6
保留
5
TX_REFCK_SEL
4
保留
3
REFCK_RTERM
2
保留
说明
RW
0
TxPLL 参考时钟选择
0 = REFCLKP/N
1 = FPGA 内核
RW
0
参考时钟输入缓冲器的端接电阻
0 = 高阻
1 = 50 欧姆
RW
1
1
REFCLK_OUT_SEL[1]
0 = refclk2fpga 输出禁止
1 = refclk2fpga 输出使能
0
REFCLK_OUT_SEL[0]
0 = tx_refck_local 输出使能
1 = tx_refck_local 输出禁止
注:请参见图 8-9,了解参考时钟选择控制信号。
84
RW
0
RW
0
RW
0
LatticeECP3 SERDES/PCS
使用指南
表 8-47. SERDES 控制寄存器 QD_0B
位
名称
说明
类型
默认值
7
REFCK25X
1 = 内部高速位时钟是 25x
0 = 参见 REFCK_MODE
RW
0
6
BUS8BIT_SEL
1 = 选择 8 位总线宽度
0 = 选择 10 位总线宽度
RW
0
5
保留
RW
0
RW
0
4
保留
1 = 从相邻 quad 选择 RX REFCLK
0 = 从当前 quad 选择 RX REFCLK
3
保留
1 = 从相邻 quad 选择 TX REFCLK
0 = 从当前 quad 选择 TX REFCLK
RW
0
2
保留
1 = 对相邻 quad 使能 REFCLK
0 = 对相邻 quad 禁用 REFCLK
RW
0
RW
00
类型
默认值
RW
00
类型
默认值
RW
0
RW
0
类型
默认值
1:0
REFCK_MODE[1:0]
如果 REFCK25X = 0,则:
00 = 内部高速位时钟为 20x
01 = 内部高速位时钟为 10x
10 = 内部高速位时钟为 16x
11 = 内部高速位时钟为 8x
如果 REFCLK25X = 1,则:
xx = 内部高速位时钟为 25x
表 8-48. PCS 控制寄存器 QD_0C
位
7:2
1:0
名称
说明
保留
CDR_LOL_SET[1:0]
CDR 失锁设置
Lock
00 = +/-1000ppm x2
01 = +/-2000ppm x2
10 = +/-4000ppm
11 = +/-300ppm
Unlock
+/-1500ppm x2
+/-2500ppm x2
+/-7000ppm
+/-450ppm
表 8-49. PCS 控制寄存器 QD_0D
位
名称
7:6
仅内部使用
5
仅内部使用
4:3
2:0
说明
PLL_LOL_SET[1:0]
00 = +/- 1350ppm x2
01 = +/- 2400ppm x2
10 = +/- 6800ppm
11 = +/- 400ppm
TX_VCO_CK_DIV[2:0]
VCO 输出频率选择
00x = 除 1
100 = 除 4
110 = 除 16
01x = 除 2
101 = 除 8
111 = 除 32
表 8-50. PCS 控制寄存器 QD_0E
位
7:0
名称
说明
仅内部使用
85
LatticeECP3 SERDES/PCS
使用指南
表 8-51. PCS 控制寄存器 QD_0F
位
名称
说明
类型
默认值
7
PLOL_INT_CTL
1 = PLOL 失锁中断使能
0 = PLOL 失锁中断禁止
RO CR
0
6
-PLOL_INT_CTL
1 = PLOL 获得锁定中断使能
0 = PLOL 获得锁定中断禁止
RO CR
0
类型
默认值
RW
1
5:0
保留
每个 Quad 复位和时钟控制寄存器详细信息
表 8-52. PCS 控制寄存器 QD_10
位
7:4
名称
说明
保留
3
serdes_pd
0 = 触发断电
2
serdes_rst
1 = 触发 serdes 复位
RW
0
1
quad_rst
1 = 触发 quad 复位
RW
0
0
trst
1 = TX 复位
RW
0
说明
类型
默认值
说明
类型
Int?
表 8-53. PCS 控制寄存器 QD_11
位
7:0
名称
保留
每个 Quad PCS 状态寄存器详细信息
表 8-54. PCS 状态寄存器 QD_20
位
7:6
名称
保留
5
ion_delay
0 = 来自 tri_ion 的延迟全局复位
RO
否
4
int_qd_out
1 = 每个 quad 中断状态
RO
否
int_ch_out[3:0]
1 = 每个通道中断状态
RO
否
3:0
86
LatticeECP3 SERDES/PCS
使用指南
表 8-55. PCS 状态寄存器 QD_21
类型
Int?
1 = sync_status_3 产生报警
0 = sync_status_3 未产生报警
RO
是
ls_sync_status_2
1 = sync_status_2 产生报警
0 = sync_status_2 未产生报警
RO
是
5
ls_sync_status_1
1 = sync_status_1 产生报警
0 = sync_status_1 未产生报警
RO
是
4
ls_sync_status_0
1 = sync_status_0 产生报警
0 = sync_status_0 未产生报警
RO
是
3
ls_sync_statusn_3
1 = 当 sync_status_3 变为低电平时, sync_status_3
产生报警 (未同步)
0 = 当 sync_status_3 变为低电平时, sync_status_3
未产生报警 (未同步)
RO
是
2
ls_sync_statusn_2
1 = 当 sync_status_2 变为低电平时, sync_status_2
产生报警 (未同步)
0 = 当 sync_status_2 变为低电平时, sync_status_2
未产生报警 (未同步)
RO
是
1
ls_sync_statusn_1
1 = 当 sync_status_1 变为低电平时, sync_status_1
产生报警 (未同步)
0 = 当 sync_status_1 变为低电平时, sync_status_1
未产生报警 (未同步)
RO
是
ls_sync_statusn_0
1 = 当 sync_status_0 变为低电平时, sync_status_0
产生报警 (未同步)
0 = 当 sync_status_0 变为低电平时, sync_status_0
未产生报警 (未同步)
RO
是
说明
位
名称
7
ls_sync_status_3
6
0
说明
表 8-56. PCS 中断状态寄存器 QD_22
位
名称
类型
Int?
RO
CR
是
7
ls_sync_status_3_int
1 = sync_status_3 产生报警
0 = sync_status_3 未产生报警
6
ls_sync_status_2_int
1 = sync_status_2 产生报警
0 = sync_status_2 未产生报警
RO
CR
是
5
ls_sync_status_1_int
1 = sync_status_1 产生报警
0 = sync_status_1 未产生报警
RO
CR
是
4
ls_sync_status_0_int
1 = sync_status_0 产生报警
0 = sync_status_0 未产生报警
RO
CR
是
ls_sync_statusn_3_int
1 = 当 sync_status_3 变为低电平时, sync_status_3
产生中断 (未同步)
0 = 当 sync_status_3 变为低电平时, sync_status_3
未产生中断 (未同步)
RO
CR
是
ls_sync_statusn_2_int
1 = 当 sync_status_2 变为低电平时, sync_status_2
产生中断 (未同步)
0 = 当 sync_status_2 变为低电平时, sync_status_2
未产生中断 (未同步)
RO
CR
是
ls_sync_statusn_1_int
1 = 当 sync_status_1 变为低电平时, sync_status_1
产生中断 (未同步)
0 = 当 sync_status_1 变为低电平时, sync_status_1
未产生中断 (未同步)
RO
CR
是
ls_sync_statusn_0_int
1 = 当 sync_status_0 变为低电平时, sync_status_0
产生中断 (未同步)
0 = 当 sync_status_0 变为低电平时, sync_status_0
未产生中断 (未同步)
RO
CR
是
3
2
1
0
87
LatticeECP3 SERDES/PCS
使用指南
表 8-57. PCS 状态寄存器 QD_23
位
7:0
名称
说明
类型
默认值
说明
类型
默认值
说明
类型
Int?
仅内部使用
表 8-58. PCS 状态寄存器 QD_24
位
7:0
名称
仅内部使用
每个 Quad SERDES 状态寄存器详细信息
表 8-59. SERDES 状态寄存器 QD_25
位
名称
7
PLOL
1 = PLL 失锁
RO
是
6
-PLOL
1 = PLL 获得锁定
RO
是
类型
Int?
5:0
保留
表 8-60. SERDES 中断状态寄存器 QD_26
位
名称
说明
7
PLOL_INT
1 = PLOL 触发中断
0 = PLOL 未触发中断
RO
CR
是
6
-PLOL_INT
1 = -PLOL 触发中断
0 = -PLOL 未触发中断
RO
CR
是
说明
类型
默认值
说明
类型
默认值
5:0
保留
表 8-61. SERDES 状态寄存器 QD_27
位
7:0
名称
保留
表 8-62. SERDES 状态寄存器 QD_28
位
7:0
名称
保留
88
LatticeECP3 SERDES/PCS
使用指南
通道寄存器概述
表 8-63. 通道接口寄存器表
BA
寄存器名称
D7
D6
D5
D4
D3
D2
D1
D0
每个通道通用控制寄存器
00
CH_00
01
CH_01
word_align_enable
仅内部使用
仅内部使用
ge_an_enable
rio_mode
pcie_mode
fc_mode
uc_mode
仅内部使用
invert_tx
02
CH_02
pfifo_clr
pcie_ei_en
pcs_det_time_sel[1]
pcs_det_time_sel[0]
invert_rx
rx_gear_mode
tx_gear_mode
rx_ch
03
CH_03
sb_bypass
sb_pfifo_lp
tx_ch
internal use only
enc_bypass
仅内部使用
tx_gear_bypass
fb_loopback
04
CH_04
lsm_sel
ilsm_en
05
CH_05
min_ipg_cnt[1]
min_ipg_cnt[0]
rx_gear_bypass
ctc_bypass
dec_bypass
wa_bypass
rx_sb_bypass
sb_loopback
match_4_enable
match_2_enable
06
CH_06
cc_match_1[7]
cc_match_1[6]
cc_match_1[5]
07
CH_07
cc_match_2[7]
cc_match_2[6]
cc_match_2[5]
cc_match_1[4]
cc_match_1[3]
cc_match_1[2]
cc_match_1[1]
cc_match_1[0]
cc_match_2[4]
cc_match_2[3]
cc_match_2[2]
cc_match_2[1]
08
CH_08
cc_match_3[7]
cc_match_3[6]
cc_match_2[0]
cc_match_3[5]
cc_match_3[4]
cc_match_3[3]
cc_match_3[2]
cc_match_3[1]
09
CH_09
cc_match_4[7]
cc_match_3[0]
cc_match_4[6]
cc_match_4[5]
cc_match_4[4]
cc_match_4[3]
cc_match_4[2]
cc_match_4[1]
0A
CH_0A
cc_match_4[0]
cc_match_4[9]
cc_match_4[8]
cc_match_3[9]
cc_match_3[8]
cc_match_2[9]
cc_match_2[8]
cc_match_1[9]
0B
cc_match_1[8]
CH_0B
udf_comma_mask[7]
udf_comma_mask[6]
udf_comma_mask[5]
udf_comma_mask[4]
udf_comma_mask[3]
udf_comma_mask[2]
udf_comma_mask[1]
udf_comma_mask[0]
0C
CH_0C
udf_comma_a[7]
udf_comma_a[6]
udf_comma_a[5]
udf_comma_a[4]
udf_comma_a[3]
udf_comma_a[2]
udf_comma_a[1]
udf_comma_a[0]
0D
CH_0D
udf_comma_b[7]
udf_comma_b[6]
udf_comma_b[5]
udf_comma_b[4]
udf_comma_b[3]
udf_comma_b[2]
udf_comma_b[1]
udf_comma_b[0]
0E
CH_0E
udf_comma_a[9]
udf_comma_a[8]
udf_comma_b[9]
udf_comma_b[8]
udf_comma_mask[9]
udf_comma_mask[8]
0F
CH_0F
cc_underrun_int_ctl
cc_overrun_int_ctl
fb_rx_fifo_error_int_ctl
fb_tx_fifo_error_int_ctl
rx_dco_ck_div[0]
每个通道 SERDES 控制寄存器
10
CH_10
req_en
req_lvl_set
rcv_dcc_en
rate_sel[1]
rate_sel[0]
rx_dco_ck_div[2]
rx_dco_ck_div[1]
11
CH_11
仅内部使用
仅内部使用
lb_ctl[1]
lb_ctl[0]
仅内部使用
仅内部使用
rterm_rx[1]
rterm_rx[0]
12
CH_12
tdrv_amp[2]
tdrv_amp[1]
tdrv_amp[0]
tdrv_pre_set[4]
tdrv_pre_set[3]
tdrv_pre_set[2]
tdrv_pre_set[1]
tdrv_pre_set[0]
13
CH_13
ldr_core2tx_sel
仅内部使用
仅内部使用
仅内部使用
仅内部使用
14
CH_14
tx_div11_sel
tdrv_dat_sel[1]
tdrv_dat_sel[0]
tdrv_ppre_en
rterm_tx[1]
rterm_tx[0]
rate_mode_tx
tpwrup
15
CH_15
仅内部使用
仅内部使用
仅内部使用
仅内部使用
ldr_rx2core_en
rx_refck_sel
rate_mode_rx
rpwrup
16
CH_16
rx_div11_sel
rlos_lset[2]
rlos_lset[1]
rlos_lset[0]
17
CH_17
rlos_lo_int_ctl
-rlos_lo_int_ctl
rlol_int_ctl
~rlol_int_ctl
rlos_sel
pci_det_done_int_ctl
每个通道时钟复位寄存器
18
CH_18
19
CH_19
仅内部使用
仅内部使用
rrst
lane_rx_rst
lane_tx_rst
rx_f_clk_dis
rx_h_clk_en
sel_sd_rx_clk
tx_f_clk_dis
tx_h_clk_en
cc_underrun
cc_overrun
fb_rx_fifo_error
fb_tx_fifo_error
prbs_error_cnt[4]
prbs_error_cnt[3]
prbs_error_cnt[2]
prbs_error_cnt[1]
prbs_error_cnt[0]
每个通道通用状态寄存器
20
CH_20
21
CH_21
22
CH_22
wa_offset[3]
wa_offset[2]
wa_offset[1]
wa_offset[0]
23
CH_23
cc_underrun_int
cc_overrun_int
fb_rx_fifo_error_int
fb_tx_fifo_error_int
cc_re_o
cc_we_o
24
CH_24
25
CH_25
prbs_error_cnt[7]
prbs_error_cnt[6]
ffs_ls_sync_status
prbs_error_cnt[5]
fb_rxrst_o
fb_txrst_o
每个通道 SERDES 状态寄存器
26
CH_26
pcie_det_done
rlos_lo
-rlos_lo
27
CH_27
仅内部使用
仅内部使用
仅内部使用
仅内部使用
28
CH_28
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
29
CH_29
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
2A
CH_2A
pci_det_done_int
rlos_lo_int
-rlos_lo_int
rlos_hi_int
2B
CH_2B
2C
CH_2C
89
rlos_hi
-rlos_hi
rlol
-rlol
cdr_traine_done
pci_connect
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
仅内部使用
-rlos_hi_int
rlol_int
-rlol_int
LatticeECP3 SERDES/PCS
使用指南
每个通道 PCS 控制寄存器详细信息
表 8-64. PCS 控制寄存器 CH_00
位
7:4
名称
说明
类型
默认值
保留
3
rio_mode
1 = 选择 RapidIO 模式
0 = 选择其他模式 (10GbE, 1GbE)
RW
0
2
pcie_mode
1 = 选择 PCI Express 模式
0 = 选择其他模式 (RapidIO, 10GbE, 1GbE)
RW
0
1
fc_mode
1 = 选择 Fibre Channel 模式
0 = 选择其他模式 (PCI Express, RapidIO,
10GbE, 1GbE)
RW
0
uc_mode
1 = 选择 User Configured (G8B10B,仅 8BSER,仅
10BSER)模式
0 = 选择其他模式 (Fibre Channel, PCI Express,
RapidIO, 10GbE, 1GbE)
RW
0
说明
0
表 8-65. PCS 控制寄存器 CH_01
位
名称
类型
默认值
1 = 使能连续逗号对齐
0 = 禁止连续逗号对齐
RW
0
1 = 使能 GbE 自动协商
0 = 禁止 GbE 自动协商
RW
0
7
word_align_enable
6
仅内部使用
5
仅内部使用
4
ge_an_enable
3
保留
2
仅内部使用
1
invert_tx
1 = 发送数据取反
0 = 发送数据不取反
RW
0
0
invert_rx
1 = 接收数据取反
0 = 接收数据不取反
RW
0
90
LatticeECP3 SERDES/PCS
使用指南
表 8-66. PCS 控制寄存器 CH_02
位
名称
说明
类型
默认值
7
pfifo_clr
1 = 清零 PFIFO,如果 quad 寄存器位 pfifo_clr_sel 设为
1。该信号和接口信号 pfifo_clr 是逻辑或。
0 = 正常工作
RW
0
6
pcie_ei_en
1 = PCI Express 电气空闲使能
0 = 正常工作
RW
0
pcs_det_time_sel[1:0]
PCS 连接检测时间
11 = 16us
10 = 4us
01 = 2us
00 = 8us
RW
0
3
rx_gear_mode
1 = 在所选通道的接收路径使能 2:1 gearing
0 = 在所选通道的接收路径禁止 2:1 gearing
2
tx_gear_mode
1 = 在所选通道的发送路径使能 2:1 gearing
0 = 在所选通道的发送路径禁止 2:1 gearing
RW
0
1
rx_ch
1 = 接收的输出可在测试特性引脚上进行监控。测试
特性模式 (PCS 控制寄存器 QD_03 第 6 位)应当设
为 ‘1’。
RW
0
0
tx_ch
1 = 发送 PCS 输入,来自测试特性端口。测试特性模
式应当使能。
RW
0
说明
类型
默认值
5:4
表 8-67. PCS 控制寄存器 CH_03
位
名称
7
保留
6
sb_bypass
1 = 旁路 TX SERDES 桥
0 = 正常工作
RW
0
5
sb_pfifo_lp
1 = 从 RX 到 TX 通过并行 FIFO 使能并行回环
0 = 正常工作
RW
0
4
仅内部使用
3
enc_bypass
2
仅内部使用
1
tx_gear_bypass
RW
0
0
仅内部使用
1 = 旁路 8b10b 编码器
0 = 正常工作
1 = 旁路 PCS TX gear
0 = 正常工作
91
LatticeECP3 SERDES/PCS
使用指南
表 8-68. PCS 控制寄存器 CH_04
位
名称
说明
类型
默认值
7
lsm_sel
1 = 选择外部 RX 链路状态机
0 = 选择内部链路状态机
RW
0
6
ilsm_en
1 = 强制使能 RX 链路状态机
0 = 强制禁止 RX 链路状态机
RW
0
5
rx_gear_bypass
1 = 旁路 PCS RX gear
0 = 正常工作
RW
0
4
ctc_bypass
1 = 旁路时钟容限补偿
0 = 选择正常数据
RW
0
3
dec_bypass
1 = 旁路 8b10b 解码器
0 = 正常工作
2
wa_bypass
1 = 旁路字对齐
0 = 正常工作
RW
0
1
rx_sb_bypass
1 = 旁路 RX SERDES 桥
0 = 正常工作
RW
0
0
sb_loopback
1 = 使能 PCS 回环, SERDES 桥从 TX 到 RX
0 = 正常工作
RW
0
类型
默认值
RW
11
表 8-69. PCS 控制寄存器 CH_05
位
7:6
名称
min_ipg_cnt[1:0]
说明
执行最小 IPG
5
match_4_enable
1 = 使能 4 字符跳过匹配 (使用匹配 4, 3, 2, 1)
RW
0
4
match_2_enable
1 = 使能 2 字符跳过匹配 (使用匹配 4, 3)
RW
1
类型
默认值
RW
8’h00
类型
默认值
RW
8’h00
类型
默认值
RW
8’hBC
类型
默认值
RW
8’h50
3:0
保留
表 8-70. PCS 控制寄存器 CH_06
位
7:0
名称
cc_match_1[7:0]
说明
用户定义的时钟补偿器跳过模式 1 的低 8 位
表 8-71. PCS 控制寄存器 CH_07
位
7:0
名称
cc_match_2[7:0]
说明
用户定义的时钟补偿器跳过模式 2 的低 8 位
表 8-72. PCS 控制寄存器 CH_08
位
7:0
名称
cc_match_3[7:0]
说明
用户定义的时钟补偿器跳过模式 3 的低 8 位
表 8-73. PCS 控制寄存器 CH_09
位
7:0
名称
cc_match_4[7:0]
说明
用户定义的时钟补偿器跳过模式 4 的低 8 位
92
LatticeECP3 SERDES/PCS
使用指南
表 8-74. PCS 控制寄存器 CH_0A
位
名称
说明
类型
默认值
7:6
cc_match_4[9:8]
用户定义的时钟补偿器跳过模式 4 的高 2 位
[9] = 差异错误
[8] = K 控制
RW
2’b01
5:4
cc_match_3[9:8]
用户定义的时钟补偿器跳过模式 3 的高 2 位
[9] = 差异错误
[8] = K 控制
RW
2’b01
3:2
cc_match_2[9:8]
用户定义的时钟补偿器跳过模式 2 的高 2 位
[9] = 差异错误
[8] = K 控制
RW
2’b00
1:0
cc_match_1[9:8]
用户定义的时钟补偿器跳过模式 1 的高 2 位
[9] = 差异错误
[8] = K 控制
RW
2’b00
说明
类型
默认值
用户定义的逗号掩码的低 8 位
RW
8’hFF
说明
类型
默认值
RW
8’h83
类型
默认值
RW
8’h7C
表 8-75. PCS 控制寄存器 CH_0B
位
7:0
名称
udf_comma_mask[7:0]
表 8-76. PCS 控制寄存器 CH_0C
位
7:0
名称
udf_comma_a[7:0]
用户定义的逗号字符 ‘a’ 的低 8 位
表 8-77. PCS 控制寄存器 CH_0D
位
7:0
名称
udf_comma_b[7:0]
说明
用户定义的逗号字符 ‘b’ 的低 8 位
表 8-78. PCS 控制寄存器 CH_0E
类型
默认值
7:6
位
udf_comma_a[9:8]
名称
用户定义的逗号字符 ‘a’ 的高 2 位
说明
RW
2’b10
5:4
udf_comma_b[9:8]
用户定义的逗号字符 ‘b’ 的高 2 位
RW
2’b01
3:2
udf_comma_mask[9:8]
用户定义的逗号掩码的高 2 位
RW
2’b111
1:0
保留
1. 在大多数应用中,K28.5 用作逗号字符。默认的掩码值是 1111111111。在 G8B10B 模式可以使用任意逗号字符,因此掩码是 1111111100,以
检测所有的三种逗号字符, K28.1、 28.5、 28.7。
93
LatticeECP3 SERDES/PCS
使用指南
表 8-79. PCS 中断控制寄存器 CH_0F
位
7:4
名称
说明
类型
默认值
保留
3
cc__underrun_int_ctl
1 = 使能 cc_underrun 中断
0 = 禁止 cc_underrun 中断
RW
0
2
cc_overrun_int_ctl
1 = 使能 cc_overrun 中断
0 = 禁止 cc_overrun 中断
RW
0
1
fb_rx_fifo_error_int_ctl
1 = 使能接收 FPGA 桥 FIFO 空 / 满条件下的中断
RW
0
0
fb_tx_fifo_error_int_ctl
1 = 使能发送 FPGA 桥 FIFO 空 / 满条件下的中断
RW
0
每个通道 SERDES 控制寄存器详细信息
除非另有说明,在任何 SERDES 控制寄存器被写入后,所有通道必须进行复位。
表 8-80. SERDES 控制寄存器 CH_10
位
名称
说明
类型
默认值
RW
0
7
REQ_EN
1= 使能接收器均衡
0= 禁止接收器均衡
6
REQ_LVL_SET
均衡器级别设置
1 = 远距离均衡
0 = 中距离均衡
RW
0
5
RCV_DCC_EN
1 = 使能接收器 DC 耦合
0 = 使能接收器 AC 耦合
RW
0
RATE_SEL[1:0]
均衡器频率范围选择:
00 = 高频率范围
01 = 中频率范围
10 = 低频率范围
11 = 保留
RW
00
RX_DCO_CK_DIV[2:0]
VCO 输出频率选择:
00x = 除 1
01x = 除 2
100 = 除 4
101 = 除 8
110 = 除 16
111 = 除 32
RW
000
类型
默认值
回环控制:
[3] = 仅内部使用
[2] = 仅内部使用
[1] = slb_eq2t_en,串行 LB 从均衡器到驱动器使能
[0] = slb_t2r_en,串行 tx 到 rx LB 使能
R/W
4'h0
00 = HiZ, 01 = 50 Ohm, 10 = 60 Ohm, 11 = 75
Ohm
R/W
2'b01
4:3
2:0
表 8-81. SERDES 控制寄存器 CH_11
位
名称
7:4
LB_CTL[3:0]
3:2
保留
1:0
RTERM_RX[1:0]
说明
94
LatticeECP3 SERDES/PCS
使用指南
表 8-82. SERDES 控制寄存器 CH_12
位
7:5
4:0
名称
说明
类型
默认值
TDRV_AMP[2:0]
CML 驱动放大器幅度设置:
000 = 0%
001 = +8%
010 = +11%
011 = +20%
100 = -17%
101 = -12%
110 = -10%
111 = -6%
RW
000
TDRV_PRE_SET[4:0]
TX 驱动预加重级别设置 [2:0]
000 = 0%
001 = 5%
010 = 12%
011 = 18%
100 = 25%
101 = 33%
110 = 40%
111 = 48%
[4:3] 精调
00 = 0%
01 = 2%
10 = 3%
11 = 5%
RW
5’b00000
说明
表 8-83. SERDES 控制寄存器 CH_13
位
类型
默认值
7
ldr_core2tx_sel
1 = 从 FPGA 内核选择低速串行数据
RW
0
6
pden_sel
保留
RW
0
TDRV_AMP_BOOST
TX 驱动幅度提升
0 = 0%
1 = -25%
RW
0
TDRV_DRVCUR_SET[2:0]
000 = 48%
001 = 30%
010 = 60%
011 = 50%
100 = 0%
101 = -7%
110 = 19%
111 = 8%
RW
100
5:4
3
2:0
名称
保留
95
LatticeECP3 SERDES/PCS
使用指南
表 8-84. SERDES 控制寄存器 CH_14
位
名称
说明
类型
默认值
TX_DIV11_SEL
0 = 发送的全速选择 (高清的 SMPTE)
1 = 除 11 的发送选择 (标清的 SMPTE)
RW
0
TDRV_DAT_SEL [1:0]
驱动器输出选择:
00 = 来自串行器的数据多路复用到驱动器 (正常工作)
11 = 如果 slb_eq2t_en=’1’,串行 LB 从均衡器到驱动器
RW
00
TDRV_PRE_EN
1 = TX 驱动器预加重使能
0 = TX 驱动器预加重禁止
RW
0
RTERM_TX[1:0]
TX 端接电阻选择。当选择 PCI Express 时禁止。
0x = 5K 欧姆
10 = 50 欧姆
11 = 75 欧姆
RW
10
1
RATE_MODE_TX
0 = 发送全速选择
1 = 发送半速选择
RW
0
0
tpwrup
0 = 断电发送通道
1 = 上电发送通道
RW
0
类型
默认值
7
6:5
4
3:2
表 8-85. SERDES 控制寄存器 CH_15
位
名称
说明
7
仅内部使用
6
仅内部使用
5
仅内部使用
4
仅内部使用
3
ldr_rx2core_en
1 = 使能边界扫描输入路径,用于连接高速接收输入
到 FPGA 中的较低速的 SERDES (针对带外应用)
RW
0
2
rx_refck_sel
RX CDR 参考时钟选择
0 = REFCLKP/N
1 = FPGA 内核
RW
0
1
RATE_MODE_RX
0 = 接收的全速选择
1 = 接收的半速选择
RW
0
0
rpwrup
0 = 断电接收通道
1 = 上电接收通道
RW
0
表 8-86. SERDES 控制寄存器 CH_16
位
名称
说明
7
RX_DIV11_SEL
0 = 接收的全速选择 (高清的 SMPTE)
1 = 除 11 的接收选择 (标清的 SMPTE)
6
rlos_sel
1 = 选择 rlos_hi
0 = 选择 rlos_lo
5:3
2:0
保留
RLOS_LSET[2:0]
针对更小的摆幅, LOS 检测器参考电流调整
000 = 默认
010 = +15%
011 = +25%
96
类型
默认值
RW
0
RW
0
RW
000
RW
010
LatticeECP3 SERDES/PCS
使用指南
表 8-87. SERDES 中断控制寄存器 CH_17
位
名称
说明
类型
默认值
7
保留
6
pci_det_done_int_ctl
1 = 使能 PCI Express 的远端接收器的中断检测
RW
0
5
rlos_lo_int_ctl
1 = 当输入电平低于编程的 LOW 阈值时 (使用
rlos_set),使能 RX 信号丢失中断
RW
0
4
-rlos_lo_int_ctl
1 = 当输入电平满足或高于编程的 LOW 阈值时,使能
RX 信号丢失中断
RW
0
3
保留
2
保留
1
rlol_int_ctl
1 = 由于接收器失锁使能中断
RW
0
0
-rlol_int_ctl
1 = 由于接收器从失锁状态恢复,使能中断
RW
0
类型
默认值
每个通道的复位和时钟控制寄存器详细信息
表 8-88. 复位和时钟控制寄存器 CH_18
位
名称
7
仅内部使用
6
仅内部使用
5:3
保留
说明
2
rrst
1 = RX 复位
RW
0
1
lane_rx_rst
1 = 复位接收逻辑
RW
0
0
lane_tx_rst
1 = 复位发送逻辑
RW
0
类型
默认值
RW
0
表 8-89. 复位和时钟控制寄存器 CH_19
位
7:5
4
名称
说明
保留
tx_f_clk_dis
1 = 禁止 tx_f_clk
3
tx_h_clk_en
1 = 使能 tx_h_clk
RW
0
2
rx_f_clk_dis
1 = 禁止 rx_f_clk
RW
0
1
rx_h_clk_en
1 = 使能 rx_h_clk
RW
0
0
sel_sd_rx_clk
1 = 选择 sd_rx_clk
RW
0
97
LatticeECP3 SERDES/PCS
使用指南
每个通道 PCS 状态寄存器详细信息
表 8-90. PCS 状态寄存器 CH_20
位
7:5
名称
说明
类型
Int?
保留
4
pfifo_error
1 = 并行 FIFO 错误
0 = 无并行 FIFO 错误
RO
是
3
cc_underrun
1 = CTC FIFO 欠载
0 = CTC FIFO 未欠载
RO
是
2
cc_overrun
1 = CTC FIFO 过载
0 = CTC FIFO 未过载
RO
是
1
fb_rx_fifo_error
1 = FPGA 桥 (FB) RX FIFO 过载
0 = FB RX FIFO 未过载
RO
是
0
fb_tx_fifo_error
1 = FPGA 桥 (FB) TX FIFO 过载
0 = FB TX FIFO 未过载
RO
是
类型
Int?
RO
CR
否
类型
Int?
RO
否
说明
类型
Int?
表 8-91. PCS 状态寄存器 CH_21
位
7:0
名称
说明
PRBS 错误计数。读时清零。停止翻转。
prbs_errors1
1. 内置的 PRBS 发生器和校验器仅供内部使用。
表 8-92. PCS 状态寄存器 CH_22
位
名称
7:4
保留
3:0
wa_offset[3:0]
说明
字对齐偏移
表 8-93. PCS 中断状态寄存器 CH_23
位
7:4
名称
保留
3
cc_underrun_int
1 = cc_underrun 产生中断
0 = cc_underrun 未产生中断
RO
CR
是
2
cc_overrun_int
1 = cc_overrun 产生中断
0 = cc_overrun 未产生中断
RO
CR
是
1
fb_rx_fifo_error_int
1 = fb_rx_fifo_error 产生中断
0 = fb_rx_fifo_error 未产生中断
RO
CR
是
0
fb_tx_fifo_error_int
1 = fb_tx_fifo_error 产生中断
0 = fb_tx_fifo_error 未产生中断
RO
CR
是
98
LatticeECP3 SERDES/PCS
使用指南
表 8-94. PCS 状态寄存器 CH_24
位
名称
说明
类型
Int?
7
保留
6
ffs_ls_sync_status
1 = 链路状态机同步
0 = 链路状态机未同步
RO
否
5
fb_rxrst_o
1 = FPGA 桥 RX 正常工作
0 = FPGA 桥 RX 复位
RO
否
4
fb_txrst_o
1 = FPGA 桥 TX 正常工作
0 = FPGA 桥 TX 复位
RO
否
3
保留
2
保留
1
cc_re_o
1 = CTC FIFO 读使能
0 = CTC FIFO 读禁止
RO
否
0
cc_we_o
1 = CTC FIFO 写使能
0 = CTC FIFO 写禁止
RO
否
说明
类型
Int?
说明
类型
Int?
表 8-95. PCS 状态寄存器 CH_25
位
7
名称
保留
每个通道 SERDES 状态寄存器详细信息
表 8-96. SERDES 状态寄存器 CH_26
位
名称
7
保留
6
pci_det_done
1 = SERDES 发送器未完成接收器检测流程
0 = SERDES 发送器完成了接收器检测流程
RO
CR
是
5
rlos_lo
1 = 指示接收器检测到输入信号低于已编程 LOW 阈值
RO
CR
是
4
-rlos_lo
1 = 指示接收器检测到输入信号大于或等于已编程
LOW 阈值
RO
CR
是
3
保留
RO
CR
是
2
保留
RO
CR
是
1
rlol
1 = 指示 CDR 丢失数据锁定。 CDR 锁定为参考时钟
RO
是
0
-rlol
1 = 指示 CDR 已经锁定数据
RO
是
99
LatticeECP3 SERDES/PCS
使用指南
表 8-97. SERDES 状态寄存器 CH_27
位
名称
7
仅内部使用
6
仅内部使用
5
仅内部使用
4
仅内部使用
3:2
1
0
说明
类型
Int?
保留
cdr_trained
1 = 指示 CDR 训练完成
RO
否
pci_connect
1 = SERDES 发送器检测到接收器 (在发送器件端)
0 = SERDES 发送器未检测到接收器 (在发送器件
端)
RO
否
说明
类型
Int?
说明
类型
Int?
说明
类型
Int?
表 8-98. SERDES 状态寄存器 CH_28
位
7:0
名称
仅内部使用
表 8-99. SERDES 状态寄存器 CH_29
位
7:0
名称
仅内部使用
表 8-100. SERDES 中断状态寄存器 CH_2A
位
7
名称
保留
6
pci_det_done_int
1 = 产生 pci_det_done 中断
RO CR
是
5
rlos_lo_int
1 = 产生 rlos_lo 中断
RO CR
是
4
-rlos_lo_int
1 = 产生 -rlos_lo 中断
RO CR
是
3
保留
RO CR
是
2
保留
RO CR
是
1
rlol_int
1 = 产生 rlol 中断
RO CR
是
0
-rlol_int
1 = 产生 -rlol 中断
RO CR
是
说明
类型
Int?
说明
类型
Int?
表 8-101. PCS 状态寄存器 CH_2B
位
7
名称
保留
表 8-102. PCS 状态寄存器 CH_2C
位
7
名称
保留
100
LatticeECP3 SERDES/PCS
使用指南
附录 B. 各种标准下的寄存器设置
各种标准下的每个通道寄存器的设置
表 8-103. 各种标准下的每个通道寄存器的设置
1GbE
10GbE
字符
K23.7 (F7)
Carrier extend
K27.7 (FB)
SOP
1GFC
PCI-Ex
RapidIO
PAD
ST
Start TLP
A (对齐)
SKIP R
SKIP
SC
K28.2 (5C)
SoS
Start DLP
K28.3 (7C)
ALIGN A
IDLE
PD
K28.4 (9C)
SEQ
COMMA
(用于对齐)
K
K28.0 (1C)
K28.1 (3C)
FTS
+D5.6 or D16.2
= IDLE
SYNC K
K29.7 (FD)
EOP
T
END
K30.7 (FE)
ERR
ERR
END BAD
K28.5 (BC)
+D21.4+D21.5
+D21.5 = IDLE
K28.6 (DC)
K28.7 (FC)
R (跳过)
各种标准下每个 Quad 的寄存器设置
表 8-104. 各种标准下每个 Quad 的寄存器设置
1GbE
10GbE
1G, 2G FC
PCI-Ex 1x
PCI-Ex 4x
RapidIO 1x
RapidIO 4x
寄存器
comma_a_lo
hex 03
hex 03
hex 03
hex 03
hex 03
hex 03
hex 03
comma_b_lo
hex FC
hex FC
hex FC
hex FC
hex FC
hex FC
hex FC
comma_mask_lo
hex 7F
hex 7F
hex 7F
hex 7F
hex 7F
hex 7F
hex 7F
101
LatticeECP3 SERDES/PCS
使用指南
附录 C. 参考表中的属性
表 8-105. 参考表中的属性
独立的属性名称
非独立的属性名称
属性值
寄存器映射
{QD_0b[2]}
QUAD_MODE
{Qn_REFCK_NQ_EN}8
SINGLE
MASTER
SLAVE
SLAVE_END
CHn_PROTOCOL
{10G_MODE,
CHn_PROT_MODE,
CHn_RX_DET,
CHn_GE_AN_EN}
GIGE
:{0,
0000,00,1}
FC
:{0,0010,00,0}
XAUI
:{1,0000,00,0}
SRIO
:{0,1000,00,0}
PCIE
:{0,0100,00,0}
SDI
:{0,0001,00,0}
G8B10B
:{0,0001,00,0}
10BSER
:{0,0001,00,0}
8BSER
:{0,0001,00,0}
CPRI
:{0,0001,00,0}
OBSAI
:{0,0001,00,0}
{QD_00[4],
CH_00[3:0],
CH_02[5:4],
CH_01[4]}
CHn_MODE
{CHn_TXPWDNB,
CHn_RXPWDNB}
RXTX
RXONLY
TXONLY
DISABLED
:{11}
:{01}
:{10}
:{00}
{CH_14[0],
CH_15[0]}
TX_DATARATE_RANGE
{PLL_DIV}
LOWLOW
LOW
MEDLOW
MED
MEDHIGH
HIGH
:{110}
:{101}
:{100}
:{010}
:{010}
:{000}
{QD_0D[2:0]}
CHn_RX_DATARATE_
RANGE
{CHn_CDR_DIV}
LOWLOW
LOW
MEDLOW
MED
MEDHIGH
HIGH
:{110}
:{101}
:{100}
:{010}
:{000}
:{000}
{CH_10[2:0]}
REFCK_MULT
{REFCK25X,
REFCK_MODE}
8X :{0,11}
10X:{0,01}
16X:{0,10}
20X:{0,00}
25X:{1,00}
{QD_0b[7],
QD_0b[1:0]}
CHn_RX_DATA_RATE
{CHn_RX_RATE_MODE,
CHn_RX_DIV11}
FULL :{00}
DIV2 :{10}
DIV11:{01}
{CH_15[1],
CH_16[7]}
CHn_TX_DATA_RATE
{CHn_TX_RATE_MODE,
CHn_TX_DIV11}
FULL :{00}
DIV2 :{10}
DIV11:{01}
{CH_14[1],
CH_14[7]}
102
:{0}
:{1}
:{1}
:{0}
LatticeECP3 SERDES/PCS
使用指南
表 8-105. 参考表中的属性 (续)
独立的属性名称
非独立的属性名称
属性值
寄存器映射
{CH_19[4],
CH_19[3],
CH_02[2]}
CHn_TX_DATA_WIDTH
{CHn_TXCLKF,
CHn_TXCLKH,
CHn_TX_GEAR}
8 :{0,1,0}
10:{0,1,0}
16:{0,1,1}
20:{0,1,1}
CHn_RX_DATA_WIDTH
{CHn_RXCLKF,
CHn_RXCLKH,
CHn_RX_GEAR}
8 :{0,0,0}
10:{0,0,0}
16:{1,1,1}
20:{1,1,1}
{CH_19[2],
CH_19[1],
CH_02[3]}
CHn_TX_FIFO
DISABLED:{1}
ENABLED :{0}
{CH_03[1]}
CHn_RX_FIFO
DISABLED:{1}
ENABLED :{0}
{CH_04[5]}
PLL_SRC
{TXREFCK_NQ_SEL,
TXREFCK_SEL}
REFCLK_EXT :{0,0}
REFCLK_CORE:{0,1}
REFCLK_NQ :{1,0}8
{QD_0B[3],
QD_0A[5]}
CHn_CDR_SRC
{RXREFCK_NQ_SEL,
CHn_RXREFCK_SEL,
CHn_TRAIN_EN,
CHn_TRAIN_DIV }
REFCLK_EXT :{0,0,0,0}
REFCLK_CORE:{0,1,0,0}
REFCLK_NQ :{1,0,0,0}8
TRAIN_DIV4 :{0,0,1,0}8
TRAIN_DIV8 :{0,0,1,1}8
{QD_0B[4],
CH_15[2],
CH_15[7],
CH_15[6]}
CHn_TDRV7
{CHn_TDRV_AMP,
CHn_TDRV_DRVCUR_SET,
CHn_TDRV_AMP_BOOST}
-4:
-3:
-2:
-1:
0:
1:
2:
3:
4:
{CH_12[7:5],
CH_13[2:0],
CH_13[3]}
CHn_TDRV
{CHn_TDRV_AMP,
2: {100,000,0,1,00101} {CH_12[7:5],
CH_13[2:0],
CH_13[3],
CH_14[4],
CH_12[4:0]}
(仅适用于 PCI Express 协议) CHn_TDRV_DRVCUR_SET,
CHn_TDRV_AMP_BOOST,
CHn_TDRV_PRE_EN,
CHn_TDRV_PRE_SET}
CHn_TX_PRE
{CHn_TDRV_PRE_EN,
CHn_TDRV_PRE_SET}
CHn_RTERM_TX
{110,100,1}
{100,101,0}
{100,100,0}
{101,100,0}
{000,100,0}
{001,100,0}
{011,100,0}
{100,000,0}
{000,000,0}
DISABLED:{0,00000}
0:{1,00000}
1:{1,00001}
2:{1,00010}
3:{1,00011}
4:{1,00100}
5:{1,00101}
6:{1,00110}
7:{1,00111}
{CH_14[4],
CH_12[4:0]}
50:{10}
75:{11}
5K:{0X}
{CH_14[3:2]}
CHn_RX_EQ
{CHn_REQ_EN,
CHn_REQ_LVL_SET,
CHn_RATE_SEL}
DISABLED :{0,0,00}
MID_LOW :{1,0,10}
MID_MED :{1,0,01}
MID_HIGH :{1,0,00}
LONG_LOW :{1,1,10}
LONG_MED :{1,1,01}
LONG_HIGH:{1,1,00}
{CH_10[7],
CH_10[6],
CH_10[4:3]}
CHn_RTERM_RX
{CHn_RX_RTERM}
50 :{01}
60 :{10}
75 :{11}
HIGH:{00}
{CH_11[1:0]}
103
LatticeECP3 SERDES/PCS
使用指南
表 8-105. 参考表中的属性 (续)
独立的属性名称
非独立的属性名称
CHn_RX_DCC
CHn_LOS_THRESHOLD_LO1
属性值
AC:{0}
DC:{1}
寄存器映射
{CH_10[5]}
0:{0000}
1:{0001}
2:{0010}
3:{0011}
4:{0100}
5:{0101}
6:{0110}
7:{0111}
{mc1_ser_ctl_chN[75],
CH_16[2:0]}
PLL_TERM
50:{1}
2K:{0}
{QD_0A[3]}
PLL_DCC
AC:{0}
DC:{1}
{QD_0A[4]}
PLL_LOL_SET
0:{00}
1:{01}
2:{10}
3:{11}
{QD_0D[4:3]}
{CHn_RLOS_E}
CHn_TX_SB
{CHn_TXPOL,
CHn_TXSBBYP}
DISABLED:{0,0}
ENABLED :{1,0}
{CH_01[1],
CH_03[6]}
CHn_RX_SB
{CHn_RXPOL,
CHn_RXSBBYP}
DISABLED:{0,0}
ENABLED :{1,0}
{CH_01[0],
CH_04[1]}
CHn_TX_8B10B
ENABLED :{0}
DISABLED:{1}
{CH_03[3]}
CHn_RX_8B10B
ENABLED :{0}
DISABLED:{1}
{CH_04[3]}
CHn_COMMA_A
注2
{QD_0C[0:7],
QD_0E[6:7]}
CHn_COMMA_B
注2
{QD_0D[0:7],
QD_0E[4:5]}
CHn_COMMA_M
注2
{QD_0B[0:7],
QD_0E[2:3]}
CHn_RXWA
DISABLED:{1}
ENABLED :{0}
{CH_04[2]}
CHn_ILSM
DISABLED:{1}
ENABLED :{0}
{CH_04[7]}
ENABLED :{0,0}
DISABLED{1,1}
{CH_19[0] ,
CH_04[4]}
CHn_CC_MATCH1
注2
{QD_0A[1:0],
CH_06[7:0]}
CHn_CC_MATCH2
注2
{QD_0A[3:2],
CH_07[7:0]}
CHn_CC_MATCH3
注2
{QD_0A[5:4],
CH_08[7:0]}
CHn_CC_MATCH4
注2
{QD_0A[7:6],
QD_09[7:0]}
1:{0,0}
2:{1,0}
4:{0,1}
{CH_05[4],
CH_05[5]}
0:{00}
1:{01}
2:{10}
3:{11}
{CH_05[7:6]}
CHn_CTC
CHn_CC_MATCH_MODE
CHn_CC_MIN_IPG
{CHn_RXRECCLK}
{CHn_MATCH_2_EN,
CHn_MATCH_4_EN}
104
LatticeECP3 SERDES/PCS
使用指南
表 8-105. 参考表中的属性 (续)
独立的属性名称
非独立的属性名称
属性值
寄存器映射
{QD_02[7:4]}
CCHMARK
0 :{0000}
1 :{0001}
2 :{0010}
3 :{0011}
4 :{0100}
5 :{0101}
6 :{0110}
7 :{0111}
8 :{1000}
9 :{1001}
10:{1010}
11:{1011}
12:{1100}
13:{1101}
14:{1110}
15:{1111}
CCLMARK
0 :{0000}
1 :{0001}
2 :{0010}
3 :{0011}
4 :{0100}
5 :{0101}
6 :{0110}
7 :{0111}
8 :{1000}
9 :{1001}
10:{1010}
11:{1011}
12:{1100}
13:{1101}
14:{1110}
15:{1111}
CHn_SSLB
DISABLED
:{0000, 00} {CH_11[7:4],
CH_14[6:5]}
ENABLED_EQ2T:{0010,
11}
ENABLED_T2R :{0001,
00}
CHn_SPLBPORTS4
{PFIFO_CLR_SEL,
CHn_SB_PFIFO_LP}
QD_REFCK2CORE
{QD_02[3:0]}
DISABLED:{0,0}
ENABLED :{1,1}
{QD_03[2],
CH_03[5]}
DISABLED:{0}
ENABLED :{1}
{QD_0a[1]}
INT_ALL
{PLOLINT,
PLOLNINT,
CHn_PCIDETINT,
CHn_RLOSLINT,
CHn_RLOSLNINT,
CHn_RLOLINT,
CHn_RLOLNINT,
CHn_LSSYNCINT,
CHn_LSSYNCNINT,
CHn_TXFIFOINT,
CHn_RXFIFOINT,
CHn_CCORUNINT,
CHn_CCURUNINT}
{QD_0F[7],
DISABLED:{
0,0,0,0,0,0,0,0,0,0000 QD_0F[6],
CH_17[6],
,0000,0,0,0,0}
CH_17[5],
ENABLED:{
1,1,1,1,1,1,1,1111,111 CH_17[4],
CH_17[1],
1,1,1,1,1}
CH_17[0],
QD_09[7:4],
QD_09[3:0],
CH_0F[0],
CH_0F[1],
CH_0F[2],
CH_0F[3]}
CHn_LDR
{CHn_LDR_RX_EN,
CHn_LDR_TX_SEL}
DISABLED:{0,0}
RXTX
:{1,1}
RXONLY :{1,0}
TXONLY :{0,1}
105
{CH_15[3],
CH_13[7]}
LatticeECP3 SERDES/PCS
使用指南
表 8-105. 参考表中的属性 (续)
独立的属性名称
非独立的属性名称
属性值
{PLL_SRC, CHn_CDR_SRC} {REFCKLOCAL}
注5
寄存器映射
{QD_0A[0]}
{CHn_TX_8B10B,
CHn_RX_8B10B}
{BUS8BIT_SEL}
注6
{QD_0B[6]}
{CHn_RXWA, CHn_ILSM}
{CHn_SIG_DET}
{CH_04[6]}
{DISABLED, X}3 {0}
{ENABLED, DISABLED}{0}
{ENABLED, ENABLED} {1}
{CHn_RXWA, CHn_ILSM}
{CHn_C_ALIGN}
{CH_01[7]}
{DISABLED, X}23 {0}
{ENABLED, DISABLED}{0}
{ENABLED, ENABLED}{0}
1. rx_los_low 仅显示检测到数据速率高于 1 Gbps 的信号,最大 CID(Consecutive Identical Digits,连续相同的数字)为 7 位(即,使用 8b10b
发送的最小输入信号的转换密度)。除 PCI Express 和 SDI 以外的所有协议, rx_los_low 仅支持 rlos_lset[2:0] = 2 的默认设置。对于 PCI
Express,支持 2 和 3。在 SDI 模式下,推荐使用来自外部的 SDI 电缆均衡器的载波检测输出信号 (/CD)。 rlos_hset 不支持。
2. 用户在配置图形用户界面的 “PCS Advanced Setup” 中设置的或默认的 10 位符号代码。因为 GUI 中的 10 位符号表示为 LSB 到 MSB,符号表示
在表中进行了适当的替换以适用于软件。
3. X = 不关心。
4. 如果使能了任何通道, quad 位将设为 1。
5. 如果 PLL_SRC 和所有使能的 CHn_CDR_SRC 都设为 REFCLK_CORE,那么该位应该为 1,否则该位应设为 0。
6. 如果使能的通道 CHn_TX_8B10B 或 CHn_RX_8B10B 设为 DISABLED,那么该位应该为 1 否则该位应该设为 0。
7. TDRV_AMP属性已经被TDRV代替。当打开.lpc文件,软件将自动用TDRV代替 TDRV_AMP属性。如果用户试图在不重新生成PCS模块的情
况下进行重新编译,软件将在 automake.log 文件中记录错误。用户应该编辑 .txt 文件或使用 IPexpress 重新生成 PCS 模块。
8. refclk_to/from_nq 信号仅供内部使用。
表 8-106. 特定协议 SERDES 的设置选项
数据率
数据率范围
REFCK 乘法器
数据宽度
GbE
1.25
MED
10x, 20x, 25x
8, 16
SGMII
1.25
MED
10x, 20x, 25x
8
PCI Express
2.5
HIGH
25x, 20x
8, 16
3.125
HIGH
20x, 10X
16
10x, 20x, 25x
8, 16
协议
XAUI
G8B8B
8 位 SERDES only
10 位 SERDES only
ANY_VALUE
USER_DEF
LOWLOW, LOW
MEDLOW,
MED, MEDHIGH,
HIGH
8x, 16x
8, 16
10x, 20x, 25x
10, 20
8x, 10x, 16x, 20x,
25x
8, 10, 16, 20
1.MID: 长度大约 20"
LONG:长度大约 40"
LOW:小于 1.2 Gbps
MED:1.2 Gbps 到 2 Gbps 之间
HIGH:大于 2 Gbps
106
RX 均衡器 1
DISABLE,
MID_MED,
LONG_MED
MID_LOW,
DISABLE,
MID_HIGH
LONG_HIGH
DISABLE,
MID_LOW,
MID_MED,
MID_HIGH,
LONG_LOW,
LONG_MED,
LONG_HIGH
LatticeECP3 SERDES/PCS
使用指南
附录 D. Lattice Diamond 使用概述
本附录讨论了在包括 LatticeECP2M SERDES/PCS 模块的项目中使用 Lattice Diamond 设计软件。
有关 Lattice Diamond 使用的一般信息,请参阅 Lattice Diamond 教程。
如果你一直在使用 ispLEVER 软件进行 FPGA 项目设计, Lattice Diamond 可能看起来变化很大。但如果你仔细观
察,你会发现有许多相似之处,因为 Lattice Diamond 与 ispLEVER 是基于相同的工具集和工作流程基础上的。所作
的改变是为了提供一个更简单、更集成、增强的用户界面。
将 ispLEVER 项目转换到 Lattice Diamond 中
ispLEVER 中创建的设计项目可以很方便地导入到 Lattice Diamond。这个过程是自动的,除了 ispLEVER 进程属性,
这与 Diamond 策略设置相同,以及 PCS 模块。导入项目后,你需要为其设置一个策略,并重新生成所有 PCS 模块。
导入 ispLEVER 设计项目
保存一个 ispLEVER 项目副本备份,或新复制一个作为 Diamond 项目。
1. 在 Diamond 中,选择 File > Open > Import ispLEVER Project。
2. 在 ispLEVER Project 对话框中,找到项目的 .syn 文件并打开它。
3. 如果需要,为 Diamond 项目更改基本文件名或位置。如果你改变了文件位置,新的 Diamond 文件将放到
新的位置,但是原来的源文件不会被删除或者拷贝。 Diamond 项目将参考原始位置的源文件。
项目文件按默认的策略设置转换为 Diamond 格式。
调整 PCS 模块
IPexpress 创建的 PCS 使用一种不常用的文件结构,从 ispLEVER 导入项目时,需要进行额外的调整。可以使用两
种方法进行调整。首选的方法是在 Diamond 中重新生成模块。然而,这可能将模块升级到更新的版本。升级通常是
可取的,但如果由于某种原因,你不希望升级 PCS 模块,可以将 .txt 文件复制到实现文件夹来进行手动调整。如果
你使用此方法,请务必记住将 .txt 文件复制到所有以后使用的实现文件夹。
重新生成 PCS 模块
1. 在 File List 视图的 Input Files 文件夹中找到 PCS 模块。该模块文件扩展名为 .lpc、 .v 或 .vhd 文件。
2. 如果 File List 视图显示模块的 Verilog 或 VHDL 文件,并且你要重新生成 模块,导入模块的 .lpc 文件。
a. 在 File List 视图,右击实现文件夹 (
) 并选择 Add > Existing File。
b. 查看模块的 .lpc 文件, <module_name>.lpc,并且选择它。
c. 点击 Add。 .lpc 文件添加到 File List 视图。
d. 右击模块的 Verilog 或 VHDL 文件并选择 Remove。
3. 在 File List 中,双击模块的 .lpc 文件。该模块的 IPexpress 对话框打开。
4. 在对话框底部,点击 Generate。显示了 Generate Log 选项卡。检查错误并关闭。
107
LatticeECP3 SERDES/PCS
使用指南
在 File List 中,使用 .ipx 文件替代 .lpc 文件。IPexpress manifest (.ipx) 文件新用于 Diamond。.ipx 文件保持追踪复
杂模块所需的文件。
使用 Lattice Diamond 中的 IPexpress
使用 Lattice Diamond 中的 IPexpress 与使用 ispLEVER 基本相同。
配置图形用户界面选项卡都是一样的,除了 Generation Options 选项卡。图 8-57 显示了 Generation Options 选项卡
窗口。
图 8-57. Generation Options 选项卡
表 8-107. SERDES_PCS 图形用户界面参数 ——Generation Options 选项卡
图形用户界面显示
Automatic
说明
Force Module and Settings Generation
自动生成所需的 HDL 和配置 (.txt)文件。有些改变不需要重新生成这两个文件。
生成 HDL 和配置文件。
Force Settings Generation Only
仅生成属性文件。如果还需要生成 HDL 文件,你会得到一个错误信息。
Force Place & Route Process Reset
复位 Place & Route Design 进程,迫使它使用新生成的 PCS 模块再运行一遍。
Force Place & Route Trace Process Reset 复位 Place & Route Trace 进程,迫使它使用新生成的 PCS 模块再运行一遍。
注意:
默认选项设置为 Automatic。如果选择 Automatic 或 Force Settings Generation Only,并且不选择子选项 (Process Reset Options),则不
会生成 HDL 模块,复位指针设置为自动生成位流。
生成结束后,在这个流程窗口中的复位标志将被相应复位。
108
LatticeECP3 SERDES/PCS
使用指南
使用仿真向导创建一个新的仿真项目
本节介绍如何使用仿真向导来创建一个仿真项目 (.spf)文件,因此你可以将它导入到一个独立的仿真器。
1. 在 Project Navigator 中,点击 Tools > Simulation Wizard。打开仿真向导。
2. 在仿真器界面准备页面,点击 Next。
3. 在 Simulator Project Name 页面中,在 Project Name 文本框中输入你的项目名称并浏览文件的路径位置,
利用 Project Location 文本框和 Browse 按钮找到你希望放置仿真项目的位置。
当你在此向导页中指定了一个项目名称,将会在你选择的文件路径创建相应的文件夹。弹出的对话框询问你
是否希望创建一个新的文件夹,点击 Yes。
4. 点击 Active-HDL® 或 ModelSim® simulator 仿真器复选框并点击 Next。
5. 在 Process Stage 页,选择您要创建哪种类型的仿真项目的 Process Stage。有效的类型有 RTL、 PostSynthesis Gate-Level、Post-Map Gate-Level 和 Post-Route Gate-level+Timing。只有这些进程阶段可被激
活。
请注意,如果你的项目中定义超过不止一个策略,你可以重新选择一个作为当前的策略。
软件支持每个项目实现有多个的策略,让您体验到使用一组共同的源文件来获得优化的设计选择。由于每个
策略可能已被处理用于不同阶段,此对话框允许您指定您要载入哪一个阶段。
6. 在 Add Source 页上,在 Source Files 列表框中选择源文件,或使用右边的查看按钮,选择其他所需的源文
件。请注意,如果你想将源文件保留在您刚创建的本地仿真项目目录中,请勾选 Copy Source to
Simulation Directory 选项。
7. 单击 Next,出现一个 Summary 页面,提供了项目选择的信息,包括仿真库。默认情况下,勾选了 Run
Simulator 复选框,将打开你之前在 Simulator Project Name 页中选择的仿真工具向导。
8. 点击 Finish。
运行向导后产生 Simulation Wizard Project (.spf) 文件和一个仿真脚本 DO 文件。如果需要的话,你可以导入 DO 文
件到当前项目。如果你使用 Active- HDL,向导将生成一个 .ado 文件,并且如果你正在使用 ModelSim,它还会创建
.mdo 文件。
注:PCS 配置文件 (.txt)必须在第 6 步添加。
109