Lattice FPGA解码MIPI视频,IMX219摄像头4Line 1080P采集USB3.0输出,提供工程源码硬件原理图PCB和技术支持

这篇具有很好参考价值的文章主要介绍了Lattice FPGA解码MIPI视频,IMX219摄像头4Line 1080P采集USB3.0输出,提供工程源码硬件原理图PCB和技术支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。

本设计基于Lattice的LCMXO3LF-6900C-5BG256C开发板,采集IMX219摄像头的1080P 4Line MIPI视频,IMX219摄像头是专门的摄像头转接板,提供该转接板的原理图和PCB源文件,可以用Altium Designer系列软件打开,甚至可以直接打板批量生产,Lattice FPGA自带MIPI解码源语,直接调用即可完成MIPI解码,这也是Lattice FPGA在做MIPI视频编解码方面的独特优势,MIPI视频进入FPGA后,经过D-PHY解串,Byte对齐,Line对齐,MIPI CSI数据包解码,RAW10转Bayer,Bayer转RGB,RGB转YUV,视频输出矫正,最后的视频数据送入Cypress FX3 USB3.0接口输出;用Cypress官方的USB3.0摄像头上位机接收并显示视频;Lattice FPGA开发板提供该转接板的原理图和PCB源文件,可以用Altium Designer系列软件打开,甚至可以直接打板批量生产;

本文详细描述了设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
关于MIPI协议,请自行搜索,csdn就有很多大佬讲得很详细,我就不多写这块了;

2、Lattice FPGA解码MIPI的性能及其优越性

一个字:牛逼,表现如下:
1:Lattice FPGA解码MIPI,该FPGA自带MIPI解码源语,直接调用即可完成MIPI解码,这也是Lattice FPGA在做MIPI视频编解码方面的独特优势,且该FPGA较为小众,使用者和开发者都很少,提供工程源码的更少;
2:移植性还可以,可在Lattice 系列FPGA之间移植;
3:实用性达到天花板,可以做批量的USB摄像头,且我这里不仅提供源码还提供原理图和PCB;
4:支持高达4K分辨率的MIPI视频解码;

3、我这里已有的 MIPI 编解码方案

我这里目前已有丰富的基于FPGA的MIPI编解码方案,主要是MIPI解码的,既有纯vhdl实现的MIPI解码,也有调用Xilinx官方IP实现的MIPI解码,既有2line的MIPI解码,也有4line的MIPI解码,既有4K分辨率的MIPI解码,也有小到720P分辨率的MIPI解码,既有基于Xilinx平台FPGA的MIPI解码也有基于Altera平台FPGA的MIPI解码,还有基于Lattice平台FPGA的MIPI解码,后续还将继续推出更过国产FPGA的MIPI解码方案,毕竟目前国产化方案才是未来主流,后续也将推出更多MIPI编码的DSI方案,努力将FPGA的MIPI编解码方案做成白菜价。。。
基于此,我专门建了一个MIPI编解码的专栏,并将MIPI编解码的博客都放到了专栏里整理,对FPGA编解码MIPI有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏

4、详细设计方案

工程设计架构如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

IMX219摄像头及其转接板

采集IMX219摄像头的1080P 4Line MIPI视频,IMX219摄像头是专门的摄像头转接板,提供该转接板的原理图和PCB源文件,可以用Altium Designer系列软件打开,甚至可以直接打板批量生产;IMX219摄像头转接板插在Lattice FPGA开发板之上;如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
下面是IMX219的实物图和PCB截图;
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
下面是用高速示波器抓取的IMX219输出的MIPI 1920x1080 @30FPS Start of a frame波形,可以看到,这里的IMX219硬件设计师没有问题的,可以借鉴;
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

D-PHY

Lattice FPGA自带MIPI解码源语,直接调用即可完成MIPI解码,这也是Lattice FPGA在做MIPI视频编解码方面的独特优势,这个模块几乎是直接调用MIPI解码源语,输入是差分的MIPI视频数据,输出为并行视频数据,由于是源语,所以不需要太多解释,你只需要知道怎么用就行,不需要知道为什么,此模块的顶层接口如下:

mipi_rx_ddr (alignwd, buf_clk_lp0i, buf_clk_lp0o, buf_clk_lp0t, 
    buf_clk_lp1i, buf_clk_lp1o, buf_clk_lp1t, clk, clk_lp0, clk_lp1, 
    clk_s, init, reset, rx_ready, sclk, oclk, buf_data_lp0i, buf_data_lp0o, 
    buf_data_lp0t, buf_data_lp1i, buf_data_lp1o, buf_data_lp1t, data_lp0, 
    data_lp1, datain, q)/* synthesis NGD_DRC_MASK=1 */;
    input wire alignwd;
    input wire buf_clk_lp0o;
    input wire buf_clk_lp0t;
    input wire buf_clk_lp1o;
    input wire buf_clk_lp1t;
    input wire clk;
    input wire clk_s;
    input wire init;
    input wire reset;
    input wire [3:0] buf_data_lp0o;
    input wire [3:0] buf_data_lp0t;
    input wire [3:0] buf_data_lp1o;
    input wire [3:0] buf_data_lp1t;
    input wire [3:0] datain;
    output wire buf_clk_lp0i;
    output wire buf_clk_lp1i;
    output wire rx_ready;
    output wire sclk;
	output wire oclk;
    output wire [3:0] buf_data_lp0i;
    output wire [3:0] buf_data_lp1i;
    output wire [31:0] q;
    inout wire clk_lp0;
    inout wire clk_lp1;
    inout wire [3:0] data_lp0;
    inout wire [3:0] data_lp1;

数据对齐

数据对齐包括Byte对齐和Line对齐;
Byte对齐模块接收到来自D-PHY模块的原始未对齐位输出对齐的字节,MIPI通道上的字节没有任何定义的字节边界,因此此模块在线路上查找始终恒定的第一个字节0xB8,一旦找到0xB8就确定了字节边界偏移,将输出有效设置为determined,并在数据通道处于MIPI LP状态时开始输出正确的字节保持重置;
Line对齐模块从mipi接收多Line的Byte对齐数据,mipi字节时钟在多Line mipi总线中输出Line对齐的数据,不同Line上的数据可能以不同的偏移量出现,因此该模块将等待,直到所有Line的有效输出开始输出Line对齐数据,因此所有Line的字节以相同的时间刻度输出;这样MIPI视频才完成了真正的数据对齐;

MIPI CSI2

该模块的作用很简单,就是解析丢掉MIPI协议中的控制字符,提取出有效的视频数据,部分源码截图如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

视频数据格式转换

视频数据格式转换的顺序是:RAW10转Bayer,Bayer转RGB888,RGB888转YUV422;如果要做显示器输出的朋友,只需要做到Bayer转RGB888这一步即可输出了,这里做到了RGB888转YUV422的目的是送Cypress FX3 USB3.0接口输出;每一个模块的顶部都有详细的注释,一看就懂他的作用,以RGB888转YUV422模块为例截图如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

视频输出矫正

该模块的作用是做视频数据的位宽转换,将64bit 4个像素时钟的yuv422数据转换为32bit 2个像素时钟的yuv422数据,这样做的目的也是送Cypress FX3 USB3.0接口输出;

5、Lattice Diamond工程详解

Lattice Diamond是Lattice FPGA的开发工具,使用起来很简单,但国内用的很少;
开发板FPGA型号:Lattice的LCMXO3LF-6900C-5BG256C;
开发工具:Lattice Diamond3.12;
输入:IMX219,4Line 1080P分辨率;
输出:Cypress FX3 USB3.0接口输出;

工程源码架构如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
工程已经编译完成,如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
综合原理图部分截图如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

6、上板调试验证

硬件需求:
Lattice FPGA开发板一块;
IMX219摄像头转接板一块;
Cypress FX3 USB3.0转接板一块;
连接,IMX219摄像头转接板作为输入插在Lattice FPGA开发板上;Cypress FX3 USB3.0转接板作为输出插在Lattice FPGA开发板上;如下图:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
用Cypress官方的USB3.0摄像头上位机接收并显示视频;如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0

7、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式1:私,或者文章末尾的V名片。
资料获取方式2:文章末尾的公众号,回复 002006
网盘资料如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
资料清单如下:
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0
lattice fpga,FPGA解码MIPI视频专题,菜鸟FPGA图像处理专题,Lattice FPGA源码,fpga开发,Lattice,MIPI,IMX219,USB3.0文章来源地址https://www.toymoban.com/news/detail-783520.html

到了这里,关于Lattice FPGA解码MIPI视频,IMX219摄像头4Line 1080P采集USB3.0输出,提供工程源码硬件原理图PCB和技术支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包