找回密码
 注册
关于网站域名变更的通知
查看: 634|回复: 3
打印 上一主题 下一主题

FPGA实现cameralink高清相机解码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-25 14:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、cameralink基础原理
       视频传输模式分为三种配置:Base(基本或初级)配置为一个Camera Link芯片,一根电缆;Medium(中档或中级)配置为两个Camera Link芯片,一根电缆; Full(全部或高级)配置为两个Camera Link芯片,两根电缆。
  
Base模式需要一块ChannelLink的芯片和一个CameraLink机械接口,发送器在每个像素时钟里发送 28bits数据,包括4bits的图像使能信号和24bits的图像数据。4bits图像使能信号包括:帧有效信号 (FVAL),高电平有效,它的反相即为帧同步信号;行有效信号(LVAL),高电平有效,它的反相即为行同步信号;数据有效信号(DVAL),只有在数据有效信号为高电平时,图像采集卡才接受图像信息。24bits图像数据可以是一个像素点的24-bitRGB数据、3个像素点的8-bit黑白图像数据、1到2个像素点的10-bit或12-bit的黑白图像数据、一个像素点的14-bit或16-bit的黑白图像数据。
Medium模式需要两块Channe1Link的芯片和两个CameraLink机械接口,发送器在每个像素时钟里发送4Obits数据,包括4bits的图像使能信号和36bits的图像数据。4bits图像使能信号与Base模式下相同。36bits图像数据可以是一个像素点的36-bit或30-bitRGB数据、4个像素点的8-bit黑白图像数据、3到4个像素点的10-bit或12-bit的黑白图像数据。
Full模式需要三块Channe1Link的芯片和两个CameraLink机械接口,发送器在每个像素时钟里发送68bits数据,包括4bits的图像使能信号和64bits的图像数据。4bits图像使能信号与Base模式下相同。        
9 r, H% W3 x* e9 w
端口分配
对于Base模式,28位数据信号中包括三个数据端口:A口(8位)、B口(8位)、C口(8位);四个视频控制信号FVAL(帧有效)、DVAL(数据有效)、LVAL(行有效)、SPARE(空,暂时未用)。
在Base(初级)结构中,端口A,B和C被分配到唯一的Cameralink驱动器/接收器对上;在Medium(中级)结构中,端口A、B和C被分配到第一个驱动器接收器对上,端口D,E和F被分配到第二个驱动器/接收器对上;在FULL(高级)结构中,端口A、B和C被分配到第一个驱动器/接收器对上,端口D,E和F被分配到第二个驱动器/接收器对上,端口G和H被分配到第三个驱动器/接收器对上。
如果相机在每个周期内仅输出一个像素,那么就使用分配给像素A的端口;如果相机在每个周期内输出两个像素,那么使用分配给像素A和像素B的端口;如果在每个周期内仅输出三个像素,那么就使用分配给像素A,B和C的端口;依此类推至相机每周期输出八个像素,那么分配给A到H的八个端口都将被使用。
二、FPGA解码过程
CSDN和百度文库有大量的关于cameralink协议解读的文章,不过需要注意的是网上大量文章都是讲述如何用解码芯片(多是DS90CR288A),这些文章都写得很好,讲清了cameralink的原理。
只是这些文章绝大部分是基于芯片解码,并不是完全由FPGA实现的,当时自己做设计的时候,有一个小地方被这些文章稍稍误导了,主要是该芯片的数据组合顺序很古怪,在FPGA里面参考了这些组合顺序,后面发现在FPGA里面使用这种数据组合顺序是错的。
这里将自己用FPGA实现FPGA实现2048*2048分辨率下  cameralink CMOS相机解码的过程简单记录一下 。

5 n* C& z! p  V( U9 ?3 z  j
以下是相机采集卡和FPGA之间的连接信号:
3 J+ `) H2 S% W7 p# a, C: k
1、相机是分辨率为2048*2048的cameralink接口的黑白相机;传感器使用SONY的CMOS SENSOR。
2、数据传输方式是LVDS,采用cameralink的Medium模式,采用A、B、C、D四个端口传输数据;E,F端口空置;
3、相机是8bit灰度数据,所以每个端口负责传输一个像素。
3、时钟频率是74.25M,每一个时钟下传输4个像素的数据,等于是像素频率是297M;
4、最容易错的是解码拿到数据以后数据的组合方式,如果看了芯片解码的顺序估计很多人都会犯晕的,不理解的。所以顺序还是参考正常的LVDS解码顺序,如下图,注意三个关键控制信号的位置;
5、下图是截图的24bit RGB屏幕的数据,其实是一样的,把三个8位的R、G、B颜色数据换成cameralink里面的三个8位的端口A、B、C即可。
                              
6、上图可以清楚的解释base模式下的数据传输方式,类似于lvds单通道传输。如果Medium模式,则就是LVDS的双通道传输,再加一组数据通道即可,控制信号可以共用第一组中的DVAL、FVAL、LVAL
5、解码以后再ila看到的结果
              
  
                       
6、验证行数是不是2048行,说明解码非常完美
                        
  
            

' ~- K2 X* J, l4 v9 I) S

该用户从未签到

2#
发表于 2021-5-25 15:01 | 只看该作者
谢谢分享,学习了!

该用户从未签到

3#
发表于 2021-5-25 15:18 | 只看该作者
FPGA实现cameralink高清相机解码( z) b" P# \. {: \5 V

该用户从未签到

4#
发表于 2021-5-25 18:17 | 只看该作者
高清相机解码' y# }' J% {" f) V5 U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-11 19:17 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表