基于FPGA的cameralink编解码测试系统设计_基于fpga的cameralink编码测试系统设计-程序员宅基地

技术标签: cameralink  fpga  pci-e  lvds  

1、目的

项目需要设计一个多功能参数可变的cameralink相机视频接收机,接收到相机传过来的视频数据通过PCIE往上位机发。开始没有可供测试的相机,于是想着用FPGA模拟cameralink协议自行写一个视频发送机,用于对接自己的设计的cameralink视频接收机;采用两块FPGA板对接,用lvds差分信号传输数据;

发送机实现FPGA对视频数据的cameralink协议编码;

接收机实现FPGA对视频数据的cameralink协议解码;

接收到的数据是:portA,portB,portC,portD,portE,portF,portG,portH共八个端口的数据;

FPGA将8个端口的数据根据不同的传输模式进行重组,写入内存空间;上位机从内存读到数据以后显示出来。

CPU读取当前模式寄存器,确认当前cameralink工作模式;

CPU根据cameralink工作模式确定图像数据组合的方式;

2、设计架构图

base模式:一次性传3个像素  占用A,B,C共3个端口

midium模式:一次性传6个像素  占用A,B,C,D,E,F共6个端口

full模式:一次性传8个像素  占用A,B,C,D,E,F,G,H共8个端口

3、参数计算

//

2021年11月17日

cameralink全参数设计:

wire [31:0]slvReg1;//0008

wire [31:0]slvReg2;//000C

wire [31:0]slvReg3;//0010

wire [31:0]slvReg4;//0014

localparam VERSION1       = 32'h20211117;0018

localparam VERSION2       = 32'h000000A1;001C

wire [31:0]gpio_i1=VERSION1;

wire [31:0]gpio_i2=VERSION2;

//c_mode 

//[7:6]=00    -->BASE   [7:6]=01  -->MEDIUNM   [7:6]=10  -->FULL

//[5:4]=00    -->8BIT   [5:4]=01  -->10BIT     [5:4]=10  -->12BIT  [5:4]=11  -->14BIT

//[3:0]=0000  -->640*512

//[3:0]=0001  -->320*240

//[3:0]=0010  -->1024*1024

//[3:0]=0011  -->1280*1280

//[3:0]=0100  -->1280*720

//[3:0]=0101  -->1902*1080

cameralink像素的排列方式:

在BASE模式下:

1、当像素是14bit的时候,B端口的低6位  +   A端口的8位组成14bit,C端口空置,一个时钟产生1个像素

2、当像素是12bit的时候,B端口的低4位  +   A端口的8位组成12bit 第1个像素,

                                                   C端口的8位  +    B端口的高4位组成12bit 第2个像素,,一个时钟产生2个像素

3、当像素是10bit的时候,B端口的低2位  +   A端口的8位组成10bit 第1个像素,

                                                   C端口的8位  +    B端口的B5,B4组成10bit 第2个像素,,一个时钟产生2个像素

4、当像素是8bit的时候, A端口的8位组成8bit 第1个像素,

                                       A端口的8位组成8bit 第1个像素,

                                       A端口的8位组成8bit 第1个像素,一个时钟产生3个像素

在medium模式下:

1、当像素是14bit的时候,一个时钟产生2个像素   【不考虑这种情况,medium模式不用来传输14bit数据】

2、当像素是12bit的时候,一个时钟产生4个像素

3、当像素是10bit的时候,一个时钟产生4个像素

4、当像素是8bit的时候  ,一个时钟产生6个像素

在full模式下:

1、仅用于8bit传输,一个时钟产生8个像素,1个端口代表一个像素

weixin:  tecliu_23 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xh_24/article/details/121414397

智能推荐

yshon对讲机如何调频率_对讲机频率如何设置?-程序员宅基地

文章浏览阅读524次。展开全部TK2118-3118调频率方法1. 按住MONI键+DIAL键开e68a84e8a2ad3231313335323631343130323136353331333363396461机至显示SELF;2. 按一下LOW显CH1,转动频道旋钮"ENC"选择所需信道;3. 按一下PTT键显------2,按一下LOW键显示接收频率,按住 "1"键转动频道旋钮"ENC"调整数,松开 "1"键转动..._yshon对讲机设置

Linux安装Git并配置完成拉取项目代码和提交(1)-程序员宅基地

文章浏览阅读747次,点赞21次,收藏19次。本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!

数模3—Matlab线性规划、非线性规划、多目标规划(超全解法合集)-程序员宅基地

文章浏览阅读1.9w次,点赞49次,收藏461次。生产两种机床,利润分别为XXX, A机器和B机器加工,两种机器工作时间…若不存在不等式约束,用"[]”代替A和b: [x, fval ] = linprog (f,[],[], Aeq, beq, lb, ub)若不存在等式约束,用"[]”代替Aeq和beq: [x, fval ] = linprog Cf,A,b,[],[] ,lb,ub)A机器和B机器加工,有顺序要求,有不同损耗费用,不同的工作时间…每种资产的平均收益率…结论,4个人攻碉楼,2个人追替身的情况下,百姓的士气最大,最大值为220。_线性规划

stm32f103运行python_microPython 有没有在 STM32F103上运行的固件-程序员宅基地

文章浏览阅读1.7k次。匿名用户1级2017-02-20 回答进入第一个个连接进入之后我们就可以选择红色方框Buid Firmware。之后我们就可以下载相应的固件了,但是这个固件是比较早的就是了,是2015年的固件,所以我们接下来要做的就是来自己编译一个固件。首先我们需要将我们的micropython的github开源项目的内容下载下来。选择下图的图标就是可以下载下来。或者在window或者linux底下直接使用Git..._micropython stm32f103

RK3568平台(时间篇)linux内核延时机制_linux延时-程序员宅基地

文章浏览阅读736次,点赞26次,收藏18次。内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待。前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源)。所以,前者一般用在延时时间在毫秒以内的精确延时,后者用于延时时间在毫秒以上的长延时。为了充分利用 CPU 资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。_linux延时

集合遍历与删除,java list 交集 并集 差集 去重复并集-程序员宅基地

文章浏览阅读75次。2019独角兽企业重金招聘Python工程师标准>>> ..._java 遍历出所有差集

随便推点

BGP防环机制_allow-as-loop-程序员宅基地

文章浏览阅读2.5k次。EBGP之间使用AS号来防环,可通过命令allow-as-loop来解除。IBGP水平分割:从IBGP邻居学到的BGP路由不发送给IBGP邻居路由反射器中的:originator-id和cluster-id 起源id和集群id路由聚合时会自动产生指向null的路由(无论手动和自动都会)IBGP学到的路由默认不能引入到IGP中( EBGP可以引入),可通过命令配置。用实验来模拟一下最后一个,IBGP学到的路由默认不能引入IGP中,可以用命令修改,import-bgp ibgp。AR2和._allow-as-loop

【个人作品】记之-串口日志记录工具-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。一款用于记录嵌入式设备的串口调试信息设备,目前可以同时支持两路串口输入数据,且串口参数可配置。

Ros系统配置DNS服务器,ros如何设置dns服务器-程序员宅基地

文章浏览阅读835次。ros如何设置dns服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。本章节指导用户为Linux系统的ECS或BMS主机添加域名解析并添加安全组,防止下载Agent安装包与采集监控数据时出现异常。本章节以ECS为例介绍如何修改DNS和添加安全组,BMS操作步骤类似。添加DNS服务..._ros 路由 dns

Google 安装印象笔记剪藏插件_manifest version 2 is deprecated, and support will-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏4次。有时候我们看到较好的网页内容,希望能够保存到自己的笔记中,方便以后的查看有学习。以往我们习惯搜藏网页,但是时间一长容易忘记已收藏的内容,同时有些东西也会随着原作者删除内容而导致之前收藏过的内容无法看到。为此 使用一款笔记工具保存自己想收藏的内容是十分必要的。https://yinxiang.com/product/webclipper/install/可以安装多种浏览器的插件:这里一安装 谷歌浏览器的插件为例。点击下述网址可以查看官方安装插件的说明。https://yinxiang.com/webclipp_manifest version 2 is deprecated, and support will be removed in 2024. see h

用好ASP.NET 2.0的URL映射-程序员宅基地

文章浏览阅读68次。简介:   URL映射是ASP.NET 2.0中提供的新特性。URL映射技术帮助我们将一个特定URL映射为另一个URL。为了帮助理解,我们假设你在站点有一个叫Homepage.aspx的页面来访问主页,所有的用户也都用这个页面来访问你的主页。但由于某些原因,你要将主页改为OriginalHome.aspx。此时使用URL映射让你可以映射到新页面,而不必通知用户。   如果我们设置了URL...

C语言等级考试是把题目删了,历年全国计算机的等级考试二级C语言上机考试地训练题目库及答案详解(72页)-原创力文档...-程序员宅基地

文章浏览阅读90次。实用标准文案1. 填空给定程序的功能是调用 fun 函数建立班级通讯录。 通讯录中记录每位学生的编号,姓名和电话号码。 班级的人数和学生的信息从键盘读入, 每个人的信息作为一个数据块写到名为 myfile5.dat 的二进制文件中。请在程..._c语言二级填空题可以删填空之外的东西嘛