引 言
随着电子信息技术的不断进步,人工智能、医
疗器械、机器视觉等领域都在高速发展 [1] ,工业相机
是机器视觉系统中的一部分 [2] ,对工业相机而言,传
输图像的速率、传输过程的抗干扰能力是其关键,
工业相机需在特定环境下持续工作,高速视频传输
技术在此场景下至关重要。
FPGA ( Field Programmable Gate Array ),现场
可编程门阵列器件内部含有丰富的可编程逻辑结
构,具有数据并发处理、数据实时处理、高速传输接
口等特点 [3] ,使其在图像采集领域得到了广泛的应
用。国内外在图像传输过程中采用以太网作为传
统传输方案,但该技术存在丢包率高的问题,部分
系统转向非标准化协议导致其不易推广,在缓存方
面,采用 RAM ( Random Access Memory ),使得传输
速率大大降低。 GTH ( Gigabit Transceiver )高速串
行收发器具有低功耗、高速数据传输、时钟恢复等
特点 [4] ,可以实现 10 Gbps 以上的传输,因此, GTH
在图像传输、通信等领域得到广泛应用。文中针对
工 业 相 机 传 输 速 度 慢 、传 输 质 量 差 等 问 题 ,采 用
Xilinx ZYNQ UltraScale+ 系列芯片,结合 GTH 收
发器实现对图像数据的高速采集传输系统。
1 系统总体方案设计
系 统 使 用 Xilinx 公 司 型 号 为 XCZU5EV ⁃
2SFVC784I 的 ZYNQ UltraScale+ 系列芯片。芯片
PS 端 集 成 四 个 ARM Cortex ™ ⁃ A53 和 两 个 ARM
Cortex™⁃R5 处理器 [5] 。


数据流图如图 1 所示。系统使用 OV5640 作为
图像采集模块,像素配置为 RGB565 格式, PS 端对
SCCB ( Serial Camera Control Bus )总线进行参数配
置 , FPGA 进 行 DVP ( Digital Video Port )图 像 采
集 [6] 。 OV5640 采集的图像数据经过 FIFO ( First In
First Out )缓存后输出到板载的 GTH 光口,对视频
数据进行回环高速传输,传输结束后,对传输过程
中由于频率误差导致的偏移进行对齐,将对齐后的
数据通过 FIFO 缓存传入 DDR4 ( Double Data Rate )
缓存单元中。根据需要从 DDR4 中读取图像数据到
HDMI ( High Definition Multimedia Interface )模 块
显示。

2 核心模块设计
2.1 视频采集模块
系 统 使 用 OV5640 采 集 图 像 信 息 ,最 高 具 有
2 592×1 944 的分辨率,最高支持 500 万像素的分辨
率输出,具有白平衡调节、降噪等功能。 OV5640 输
出 支 持 DVP 接 口 ,选 取 DVP 接 口 时 , AVDD 和
DOVDD 的供电需求为 2.8 V , DVDD 供电需求为
1.5 V [7] 。 控 制 接 口 为 SCCB 接 口(兼 容 IIC )。
SIO_C 为输入管脚, SCCB 的时钟线, SIO_D 为 IO
管脚, SCCB 的数据线。
SCCB 写寄存器的示意图如图 2 所示。 ID Ad⁃
dress 表示器件地址和读写位, Sub⁃address 表示 16
位寄存器地址包含高字节和低字节, Write Data 表
示写数据[8] 。

DVP 接口时序如图 3 所示。 VSYNC ( Vertical
Synchronization )为场同步信号, VSYNC 高电平期
间 输 出 一 帧 图 像 数 据 。 HSYNC ( Horizontal Syn⁃
chronization )为行同步信号, HREF 为高电平时直接
输出像素数据。

2.2 数据编码解码模块
视 频 数 据 以 HS 、 VS 、 DE 、 RGB 格 式 输 入 [9] ,
GTH 传输的数据为高速串行差分信号,因此需要进
行以下处理。 GTH 的发送入口为 32 位,需要将 24
位的 RGB 数据先转化为 16 位的 RGB 数据,再由 16
位的 RGB 数据转换为 32 位的 RGB 数据。将视频
数据的 VS 、 DE 、 RGB 数据处理为 32 位的并行数据,
并准备输入给 GTH 的发送端口。使用 FIFO 实现
16 位转换 32 位。当 VSYNC 达到上升沿时,发送场
同步开始帧头,编码为 32 ’ h55_00_00_bc 和 32 ’ h55_
00_01_bc ,当 FIFO 中的数据量没达到要求时发送
无效数据,编码为 32 ’ h55_00_02_bc 和 32 ’ h55_00_
03_bc ,当 FIFO 中的数据有一定量时,发送有效数
据开始帧,编码为 32 ’ h55_00_04_bc ,当一行数据发
送完成时发送有效数据结束帧,编码为 32 ’ h55_00_
05_bc ,当 VSYNC 达到下降沿时,发送场同步结束
帧 尾 ,编 码 为 32 ’ h55_00_06_bc 和 32 ’ h55_00_
07_bc 。
数据解码模块是将进行拼接处理后的数据进
行解析,将解析后的数据存入到 FIFO 中进行缓存,
与数据编码模块相似。
2.3 GTH 模块
系统选用的为 Xilinx 的 ZYNQ UltraScale+ 系
列 的 开 发 版 ,开 发 板 为 AXU5EV ⁃ P ,芯 片 型 号 为
XCZU5EV⁃2SFVC784I ,该芯片具有 4 对 GTH 串行
高 速 收 发 器 ,最 高 传 输 速 率 可 达 到 16.3 Gbps [10] 。
AUX5EV⁃P 开发板上,有 2 路光纤接口 SFP1~SFP
2 ,连 接 在 FPGA 芯 片 的 GTH 的 通 道 上 。 其 中
SFP1 光 模 块 接 口 连 接 到 GTH 的 Channel0 上 ,
SFP2 和 GTH 的 Channl1 相 连 接 。 光 模 块 的
TX_Disable 信 号 和 RX_LOSS 连 接 到 FPGA 的 普
通 IO 口上。 TX_Disable 信号用来使能光模块的发
射,如果 TX_Disable 信号为低,发送使能,否则发送
关闭,正常使用时信号为低 [11] 。
GTH 结构图如图 4 所示。发送器由一个 PCS
( Physical Coding Sublayer )和 一 个 PMA ( Physical
Medium Attachment )组成 [12] ,数据从 FPGA 逻辑流
入 FPGA 的 TX 接口,通过 PCS 和 PMA ,然后作为
高速串口从 TX 驱动器流出。接收器同样由一个
PCS 和 PMA 组成,高速串行数据流入 GTH 收发器
RX 的 PMA ,进入 PCS ,最后流入 FPGA 逻辑。其
中 PCS 负责串化和解串化, PMA 负责数据流的编
码解码,能够实现时钟恢复、线路编码 (8B10B) 、预加

重等功能 [13] ,可以减小信号衰弱、时钟扭曲。
系统使用 Vivado 内部的 GTH Transceivers IP
核。 GTH 端口支持多种通信协议,包含但不限于
SATA 、 aurora 8B10B 等,文中选择无协议模式自定
义参数,包括通信速率、参考时钟选择、编解码方
式 、 Comma 值 设 定 等 。 GTH 配 置 参 数 如 表 1
所示。

应用程序通过在发送端用户时钟上升沿的时
候将数据写入 TXDATA 端口,通过 GTH 收发器传
输数据。传入的数据经过 8B10B 编码后,进入一个
发送缓存区,该发送缓存主要是将 PMA 层和 PCS
层两个时钟隔离,解决两个子层的时钟速率相位差
异和速率匹配问题,最后经过高速 GTH 进行并串
转换,根据自己的需要选择预加重、去加重、极性转
换等功能,接收端存在弹性缓冲区,具有时钟纠正
和通道绑定功能,其余和发送端类似。
2.4 数据对齐模块
GTH 在高速传输数据的时候,由于不同的系统
时钟之间造成的频率误差,数据可能会发生错位,
例如 32 位数据的低 x 位数据和下一个 32 位数据的
高 (32- x ) 位数据拼接在一起,从而发生移位的情
况。为了校准,发送端需要发送一个可识别的序
列, Comma 码。接收端在收到 Comma 码时,需要将
Comma 码移动到字节边界,以便接收到的并行字节
和发送的并行字节匹配。 Comma 对齐的并行数据
视图如图 5 所示。

Comma 是 8B10B 编码中内容,在 8B10B 编码
方案中会有 +1 和 -1 两种状态,也被称为极性偏
差。当 K 码设为 K28.5 后,由于 8B10B 编码的极性
问题,会出现两种编码结果,互为按位取反关系,分
别 称 为 MCOMMA ( Minus Comma )和 PCOMMA
( Plus Comma )模式,也就是 -1 和 +1 ,检测器可以
对编码进行对齐, Comma 对齐功能说明如表 2 所
示。文中选用第四种模式,检测到正、负符号时对
齐到该符号位置。

GTH 收 发 器 外 部 用 户 数 据 接 口 的 宽 度 为 32
位,内部数据宽度为 40 位。在实际测试中,发送的
32 位数据有时候会出现 16 位的数据偏移情况,就是
说发送和接收的数据会出现 16 位的偏移, GTH 偏
移演示如表 3 所示。


信迈提供ZYNQ软硬件控制器定制服务。