原创 基于FPGA的MIPI摄像头开发1(XILINX的MIPI D-PHY IP核)

2022-4-8 21:48 5893 14 14 分类: FPGA/CPLD 文集: FPGA开发板
       XILINX的ULTRASCALE+系列的FPGA,自带MIPI 的两个IP核,分别是MIPI D-PHY IP 和MIPI CSI-2 IP,D-PHY可以认为是低级的IP核,可以将每一LANE的数据解析出来,各LANE之间的数据相对独立,需要用户自己组成完整的一帧图像,CSI-2是高级的IP核,直接出来的就是一帧图像数据。这里简单介绍一下D-PHY,CSI-2的后面其它文章会有介绍。关于ULTRASCLAE+的开发板,请见其它文章。
       以下SENSOR的图片是关于OV5640的,其它MIPI接口的SENSOR,只要有正确的初始配置数据,都是可以使用的。之所以选择OV5640开发,主要是OV5640比较常见,市场上容易买到,并且之前的基于CYUSB3065的UVC摄像头开发板,SENSOR用的也是OV5640,正好配置数据可以直接拿来用,不会有问题。另外就是OV5640同时支持DVP接口和MIPI接口,方便测试。下面是第一张图片,SENSOR配置的是VGA@60分辨率,只用了一个LANE的数据。

        这个图片的信息主要是:

A:像素时钟是非连续的,行消隐和帧消隐时是没有时钟的。像素时钟的频率是线速率/8,由位时钟转化成字节时钟。

B:同步码后面会放大细节,仔细分析每一个字节信息。上图的一个扫描行有3个同步码,图像有效数据开始前有2个,图像有效数据结束后有1个。

C:信号dl0_rxvalidhs变高时,图像数据才是有效的。

接下来研究一下这三个同步码。下面是第一个同步码的信息,

        同步码共计4个字节,上图分别是:02 19 02 20。用户可以对照MIPI协议来解读。

第1个字节02,代表行开始。(Line Start Code)

第2、3字节0219,代表行号(第一行数据的话是0001,依次是0002,0003,最后一行数据是03F9)。

第4个字节20,代表ECC。

下面是第2个同步码,

2个同步码后,信号dl0_rxvalidhs变高,所以红框后面的数据均为图像有效数据。第1个字节为2a,代表图像数据的格式是RAW8的。第23字节0x0280,代表一行是640个像素点。第4个字节为ECC。这4个字节即为32位的PACKET HEADER,其后才是图像数据。

下面是第3个同步码,

同步码只关注前4个字节就可以,这是分别是:03 01 00 16。这4个字节需要对照MIPI协议理解。

1个字节03,代表一行数据结束。(Line End Code

第2、3字节代表行号,这里是0001。

第4字节是ECC。

通过以上三个同步码,一个扫描行的信息就很完整了。以下再抓取一帧相关的帧头,帧尾信息。帧头如下:

帧开始的是单独的一个短包,如上图最左侧的红线位置。最右侧的是第一行数据。放大帧开始的短包,如上图中间的红色椭圆,第1个字节00,代表帧开始(Frame Start Code)。00后面的16位数据e3a4是帧计数值,这个数据是循环的。第4字节是CRC值。

帧结束的波形如下:

帧结束也是单独的一个短包,如上图最右侧的红线位置,放大帧结束的短包,如上图的红色椭圆形位置,第1个字节01,代表帧结束。(Frame End Code


良子USB,20220408
专注USB3.0、FPGA、PCIE、UVC摄像头开发
QQ:1345482533

作者: 良子usb, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3903348.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
14
关闭 站长推荐上一条 /3 下一条