基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代

article/2025/6/6 4:09:16
引 言
随着电子信息技术的不断进步,人工智能、医
疗器械、机器视觉等领域都在高速发展 [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软硬件控制器定制服务。

http://www.hkcw.cn/article/GZDALhVamv.shtml

相关文章

smartGit 试用突破30天

1 下载 选择19.1版本 2 运行 我是linux环境 解压后, cd bin ./smartgit.sh 选择使用30天. 然后退出 3 绿色软件 破解步骤 下载破解文件:访问 Gitee 链接 goto下载下载破解文件 解压文件:下载后解压得到 crackSmartGit.jar 和 license.zip 用编辑…

一、基础环境配置

一、虚拟机 主:192.168.200.200 从:192.168.200.201 从:192.168.200.202 二、docker docker基础搭建,有不会的自行百度。 1.目录结构 /opt/software:软件包/opt/module:解压包,自定义脚本…

Java面试八股--08-数据结构和算法篇

1、怎么理解时间复杂度和空间复杂度 时间复杂度和空间复杂度一般是针对算法而言,是衡量一个算法是否高效的重要标准。先纠正一个误区,时间复杂度并不是算法执行的时间,在纠正一个误区,算法不单单指冒泡排序之类的,一个…

Oracle中的循环——FOR循环、WHILE循环和LOOP循环

目录 一、FOR循环 1.FOR循环语法结构 二、WHILE循环 1.WHILE循环语法结构 三、LOOP循环 1.LOOP循环语法结构 四、三个循环的区别(重要) Oracle中的循环常用的有:FOR循环、WHILE循环和LOOP循环 一、FOR循环 1.FOR循环语法结构 DECLARE --不声明变量&…

ubuntu 20.04挂载固态硬盘

我们有个工控机,可以接入一个固态硬盘。将固态硬盘插好后,就要进行挂载。在AI的指导下,过程并不顺利。记录如下: 1、检查硬盘是否被识别 安装好硬盘后,运行以下命令来检查Linux系统是否已识别新硬盘: …

SAP 自动编号的使用

1、NUMBER_RANGE_ENQUEUE用于锁定编号范围对象,防止多用户并发访问冲突 2、NUMBER_RANGE_DEQUEUE用于解锁已维护的编号范围对象。 3、此外,还提到了NUMBER_GET_NEXT函数模块,用于获取编号范围内的下一个号码。 文章目录 创建编号范围程序实现…

Python趣学篇:从零打造智能AI井字棋游戏(Python + Tkinter + Minimax算法)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《Python星球日记》 目录 🎮 前言一、项目概述与技术…

[定昌linux开发板]设置密码策略

找到etc/pam.d/目录下的common-password 2.先把common-password给复制一份,避免改错了 可以看到新增了一个common-password.bak文件 3.打开common-password,增加密码策略 输入: sudo vi /etc/pam.d/common-passwod 打开common-password文件 点击&…

Godot 敌人生成半径和围墙不匹配,导致敌人错误的生成在围墙外的解决代码

一、原视频 3. Preventing Invalid Spawning 二、原代码 func get_spawn_position():var player get_tree().get_first_node_in_group("player") as Node2Dif player null:return Vector2.ZEROvar spawn_position Vector2.ZEROvar random_direction Vector2.RIG…

LabVIEW磁悬浮轴承传感器故障识别

针对工业高端装备中主动磁悬浮轴承(AMB)的位移传感器故障检测需求,基于 LabVIEW 平台构建了一套高精度故障识别系统。通过集成品牌硬件与 LabVIEW 的信号处理能力,实现了传感器探头故障的实时监测与精准定位,解决了传统…

Qt开发:QThreadPool的介绍和使用

文章目录 一、QThreadPool 简介二、常用函数简介三、完整示例 一、QThreadPool 简介 QThreadPool 是 Qt 提供的用于高效管理线程资源的类。它通过线程池的方式管理和复用线程,适合处理大量、短时间运行的任务,避免频繁创建和销毁线程带来的性能开销。 常…

蚂蚁感冒--思维

1.相遇后不用考虑转头&#xff0c;继续走就可以 2.思维&#xff0c;不只是傻傻的模拟&#xff0c;要总结出规律&#xff0c;什么情况一定可以感染&#xff0c;然后感染之后再怎么这么样 P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒 - 洛谷 #include<bits/stdc.h> using names…

non-autoregressive sequence generation

非自回归non-autoregressive 传统rnn是autoregressive,而且encode和decode都是根据上一个input/output,这样花费的时间就和句子长度成正比 transformer的输入是并行的,但是decode阶段还是autoregressive 单纯把影像当成 NM 个独立像素去拟合&#xff0c;会缺乏像素之间的依赖…

实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题。主要涉及线性回归、回归的显著性、回归系数的置信区间。 vial <- seq(1, 10, 1) Viscosity <- c(160,171,175,182,184,181,188,19…

如何选择最高效的沟通方式?

日常沟通主要分为文字、语音和面对面三种形式&#xff0c;选择何种方式需根据沟通内容的复杂程度、决策难度及互动需求综合判断。 当沟通内容简单明确、以信息传递为主或涉及基础决策时&#xff0c;文字或语音是更高效的选择。这类方式不仅能降低时间成本&#xff0c;还能避免…

VueScan:全能扫描,高清输出

在数字化办公和图像处理的领域&#xff0c;扫描仪扮演着不可或缺的角色。无论是文档的数字化存档、照片的高清复制&#xff0c;还是创意项目的素材采集&#xff0c;一款性能卓越、操作便捷的扫描软件能大幅提升工作效率和成果质量。VueScan正是这样一款集多功能于一身的扫描仪软…

【Hot 100】279. 完全平方数

目录 引言完全平方数我的解题dp总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】279. 完全平方数❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引言 今天又…

Alita:通过 MCP 实现自主进化的通用 AI 代理

Alita 是一个创新的通用 AI 代理&#xff0c;采用极简主义设计哲学&#xff0c;强调 minimal predefinition&#xff08;最小预定义&#xff09;和 maximal self-evolution&#xff08;最大自主进化&#xff09;。通过利用 Model Context Protocols (MCPs)&#xff0c;Alita 能…

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…

大语言模型评测体系全解析(上篇):基础框架与综合评测平台

文章目录 一、评测体系的历史演进与技术底座&#xff08;一&#xff09;发展历程&#xff1a;从单任务到全维度评测1. 2018年前&#xff1a;单数据集时代的萌芽2. 2019-2023年&#xff1a;多任务基准的爆发式增长3. 2024年至今&#xff1a;动态化、场景化、多模态体系成型关键节…