概述
ISERDES(Input Serializer/Deserializer)是 Xilinx FPGA I/O 逻辑(IOLOGIC)中的一个专用硬核原语,用于实现高速串行数据到低速并行数据的转换。它是实现源同步接口(如 LVDS、DDR 存储器接口、ADC 接口、MIPI 等)的核心组件。
与吉比特收发器(GTX/GTH)不同,ISERDES 属于 SelectIO 资源,通常用于处理几百 Mbps 到 1.6 Gbps 左右的数据速率。
1. 核心功能与作用
在高速接口设计中,外部进入 FPGA 的串行数据频率很高(例如 600MHz DDR,等效 1.2Gbps),FPGA 内部的通用逻辑(Fabric)无法在这个频率下稳定运行。
ISERDES 的作用:
- 降频扩宽:将高速串行流(1 bit 宽)转换为低速并行流(4/8/10/14 bit 宽)。
- 公式: F_parallel = F_serial × DDR_Factor / Width
- 数据对齐:提供 Bit-slip(比特滑动)功能,用于在未对齐的串行流中找到正确的字(Word)边界。
2. 硬件架构 (以 7 Series ISERDESE2 为例)
Xilinx 7 系列(Artix-7, Kintex-7, Virtex-7)中最常用的原语是 ISERDESE2。
2.1 工作模式
- SDR (Single Data Rate): 仅在时钟上升沿采样。
- DDR (Double Data Rate): 在时钟的上升沿和下降沿都采样(最常用)。
2.2 级联模式 (Master/Slave)
每个 I/O Tile 包含两个 ISERDESE2 单元(Master 和 Slave)。
- 单独使用 (Master): 支持 1:2 到 1:8 的解串比例。
- 级联使用 (Master + Slave): 支持 1:10 或 1:14 的解串比例(常用于 ADC 或 HDMI 视频接口)。
2.3 关键端口说明
| 端口名 | 方向 | 描述 |
|---|---|---|
| D | Input | 来自 IBUF 或 IDELAY 的高速串行数据输入。 |
| CLK | Input | 高速串行时钟(通常由 BUFIO 驱动)。 |
| CLKDIV | Input | 低速并行时钟(通常由 BUFR 或 MMCM 驱动)。 |
| RST | Input | 异步复位。 |
| BITSLIP | Input | 字对齐控制信号。每给一个脉冲,并行数据内部移位 1 bit。 |
| Q[7:0] | Output | 解串后的并行数据输出。 |
| SHIFTIN/OUT | In/Out | 用于 Master 和 Slave 之间的级联连接。 |
3. 时钟架构(至关重要)
ISERDES 正常工作依赖于两个时钟,且它们必须相位对齐:


