FPGA图像处理 —— fpga实现cameralink接口图像传输
摘要
本文利用zynq7020芯片实现了cameralink接口时序控制,将自制的测试采图上传至PC端上位机进行显示。其中,图片格式为1280@720P大小的的RGB888彩色图条。旨在进一步理解cameralink协议的传输规则,以及探究协议的实现方式。此外也起到了对现有采集卡及软件的测试调试作用。这些都为下一阶段图像处理的学习及对工业相机的研究打下基础。
1 理论基础
1.1 cameralink协议
camearlink协议手册涉及内容很多,包括不同的工作模式,此次用的是base模式。在这里简要做总结。
如上图所示,红圈处为base模式所涉及的信号,包括四路数据线和一路时钟线,都是差分的。portA、B、C ,DVAL、FVAl、LVAl等、是协议层面的信号,共28bit,而x0、x1、x2、x3对fpga来讲是实际的输出端口(实际上cameralink一开始就跟fpga没关系的,全篇协议内容都是配合收发芯片DS90CR284等来制定的)。但是对cmos或ccd来说输出的数据一般为8/12位的像素,那么这里涉及一个映射问题。这8/12bit数据是连接到portA呢还是B呢,抑或是随意连接呢?既然是协议,就要约定好了,cameralink给出了如下的约定。
如下图所示,按照表格进行信号的映射
以上是协议层面的映射,而涉及到传输链路的稳定及准确性,还要对总数为28bit的信号进行排序编码。与简单的按bit顺序编码不同,cameralink协议约定了一种特殊的顺序,这种编码结果可能是考虑到传输的稳定性和准确率。
如下如所示,即为cameralink的传输链路上的bit编码规则。
1.2 OSERDES2
xilinx的7系列芯片具有很多IO资源,其中就包括OSERDES2资源,其功能是将并行数据串行化发出。cameralink的base模式通过4个数据通道将28bit的数据发出,因此需要使用4个串行化因子为7:1的OSERDES2资源。
如下图所示,即为其工作时序,详细说明可以阅读官方手册
2 设计框架
colorbar 模块负责对应生成采图像素
clk_wiz0 模块例化了pll,生成慢速时钟40m以及快速时钟280m
axi_stream_gen 负责产生行、场同步信号等图像控制信号
cameralink_coder 负责对28bits信号进行映射和编码
cameralinkTx 负责串行化发送
3 主要子模块分析
3.1 axi_stream_gen模块
产生 LVAL(tlast)、FVAL(tuser)、DVAL(tvaild)等图像控制信号。Hcnt、Vcnt 为行场计数,控制colorbar模块彩色块的产生。信号时序如下图。
3.2 cameralinkTx模块
这个模块是例化了4路OSERDES2的原语,将28bit信号经4路通道串行发出,此外还利用OSERDES2生成了一路源同步时钟。
在编写此模块时,我们可以借助xilinx的selectio IP 来辅助生成。
将IP 配置成Cameralink Transmitter 模式,IO采用差分信号 。
创建IP后,打开IP的源码,可以复制过来当做CameralinkTx模块,不过要做些许修改。将DDR改成SDR,DATA_WIDTH 改成7,将D1-D7改成1100011即可。如下图。
4 总结
4.1 测试
连接cameralink采集卡,在camexpert 这个软件中配置成RGB模式,设置相应的参数,启动接收。测试结果如下,可见,可以正确接收到图片。
4.2注意事项
对于OSERDES2的RST端口,要等时钟稳定后,延时几个周期后再拉低。之前直接将此端口置0,一直仿真不出波形,这里是直接将PLL的locked信号取反连接到RST,解决了问题。
欢迎大家一块讨论分享分析,有不足之处也请多指正!
FPGA图像处理 —— fpga实现cameralink接口图像传输相关推荐
- FPGA图像处理的开发流程
FPGA图像处理的开发流程 1.需求分析及问题描述 问题描述应该清楚地描述问题而不是解决方法.它应该包括系统需要做什么.为什么要做,而不包括怎么做. 为了描述更具体,至少需要讨论三个方面. 第一是系统 ...
- 优秀的 Verilog/FPGA开源项目介绍(二十五)- FPGA图像处理库
今天介绍几个和图像处理的项目,废话不多说,我们开始吧~ FPGA-Imaging-Library https://github.com/dtysky/FPGA-Imaging-Library 介绍 一 ...
- (123)FPGA面试题-介绍低速接口(UART、IIC、SPI),SPI有几根线,每根线的作用?(三)
1.1 FPGA面试题-介绍低速接口(UART.IIC.SPI),SPI有几根线,每根线的作用?(三) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介 ...
- Xilinx FPGA时钟及I/O接口规划(一)
引言:从本文开始,我们介绍Xilinx FPGA时钟及I/O接口规划设计.I/O和时钟规划是定义和分析FPGA和印刷电路板(PCB)之间连接的过程,并将各种互连信号分配给FPGA器件的物理管脚,正确的 ...
- FPGA图像处理的一些基础知识,FPGA是如何实现最高实时性的?相比于GPU的优势在哪?
先来说一下工业上用到的图像传感器种类和部分我知道的厂家.如上图所示,工业上除了会用到手机和相机中常见的面阵传感器之外,还会用到线阵传感器.线阵传感器的分辨率是几k乘1,也就是它只扫描一行图像,主要用于 ...
- FPGA白平衡 自动白平衡 FPGA图像处理
FPGA白平衡 自动白平衡 FPGA图像处理 工程和算法包含以下内容: 1,MATLAB中实现图像处理. 2,verilog代码利用MATLAB联合modelsim仿真实现的图像处理. 3,小梅哥AC ...
- Modelsim联合Matlab进行FPGA图像处理仿真与测试的学习总结(以RGB转Ycbcr转Gray为例)
文章目录 一.Modelsim联合Matlab进行FPGA图像仿真的步骤 二.具体实现方法 2.1 新建一个Modelsim项目并编写测试代码 2.2 新建v文件来编写待测试代码 2.3 建成项目后, ...
- FPGA高速数据采集设计JESD204B接口
FPGA高速数据采集设计JESD204B接口的应用场景 作者:陈刀刀 本文为明德扬原创文章,转载请注明出处! 一,JESD204B应用的优缺点 接触过FPGA高速数据采集设计的朋友,应该会听过新术语& ...
- FPGA图像处理入门如何学习?
1提问 哦哦,好的,我用的是米联客的zynq开发板,但是感觉米联客的教程不是很详细,所以之前看的是正点原子的领航者zynq的教程,目前刚学完HDMI显示实验,我想用fpga来做图像处理,所以找到了你的 ...
- NVMe协议逻辑实现、nvme固态硬盘,支持master和slave两种模式,FPGA、SSD控制器,接口统一标准化、简单方便
NVMe协议逻辑实现.nvme固态硬盘,支持master和slave两种模式,FPGA.SSD控制器,接口统一标准化.简单方便. 1.支持admin和nvme命令集. 2.支持随机和顺序读写,顺序读写 ...
最新文章
- python lxml 安装及应用
- 「云毕业照」刷爆朋友圈!AI人脸融合技术谁家强?
- 实验一:JDK下载与安装、Eclipse下载与使用总结心得
- MySQL 触发器错误
- jupiter 依赖_Jupiter 介绍
- centos部署python flask_python 微服务框架之nameko实践
- C#算法设计排序篇之06-堆排序(附带动画演示程序)
- [转载]POJ 分类
- 用javascript实现以下功能!_用python80行代码实现一个微信消息撤回捕捉功能
- Springmvc集成CXF请看教程二
- 【java笔记】数组概念初始化及相关操作
- symbol lookup error: undefined symbol:PySlice_Unpack
- javascript拾遗
- Atitit. c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0 attilax总结 1. 版本历史	1 1.1. C# 1.0-纯粹的面向对象	2 1.2. C# 2.0
- php位运算符与逻辑运算_php 或_php 逻辑运算符和
- Cocos2d-x手机游戏开发视频教程
- 51驱动DS1302制作电子时钟1602显示
- 一个优秀的UI设计师必备的能力,你都有吗?
- chrome设置主页打开为百度,免去每次都要输入网址
- 离散数学复习:命题逻辑的推理理论