回答

收藏

基于Zynq7010和树莓派摄像头的图像采集系统设计

FPGA/DSP FPGA/DSP 4327 人阅读 | 0 人回复 | 2021-12-01

基于Zynq7010和树莓派摄像头的图像采集系统设计
近几年以树莓派为代表的开源硬件平台已经变的非常流行了,基于树莓派摄像头的图像应用也非常多,树莓派摄像头由于使用量比较大,在性价比上已经非常有优势了,XINLINX的Zynq器件在芯片内集成了ARM和FPGA,非常适合需要使用到ARM和FPGA的应用,本文就是基于XINLINX的Zynq7010器件和树莓派摄像头实现了一个多路的图像采集系统设计。
一、硬件设计相关
树莓派的摄像头接口用的30 PIN的FPC接口,只用了一边的15个PIN,具体如下图示:

具体信号说明如下:
1:GND
2:CAM1_DN0
3:CAM1_DP0
4:GND
5:CAM1_DN1
6:CAM1_DP1
7:GND
8:CAM1_CN
9:CAM1_CP
10:GND
11:CAM_GPIO
12:空
13:SCL0
14:SDA0
15:3V3
  以上是基于raspberry-pi-4的接口定义,树莓派摄像头使用2lane的MIPI CSI接口,通过I2C信号控制摄像头的传感器芯片,如500万像素摄像头使用的是安森美OV5647传感器芯片,800万像素摄像头使用的是索尼IMX219传感器芯片。
我们使用Zynq7010的PL部分连接树莓派摄像头,由于该芯片并没有MIPI专用的管脚,需要使用外部的电阻网络实现MIPI电平的匹配,具体实现电路如下:

用LVDS电平接收MIPI HS信号,用HSUL_12电平接收MIPI LP信号,如需要进一步了解,请参考XILINX官方的应用笔记:xapp894-d-phy-solutions.pdf。这里要注意下时钟线CAM1_CN和CAM1_CP要连接到PL的时钟脚上,并且这些信号尽量要放在同一个BANK内并且脚位靠近,否则容易“踩坑”。
XILINX的MIPI DPHY需要个200MHz自由运行的时钟在硬件设计时也要考虑加上,输入到PL侧的时钟管脚即可。
二、软件设计相关
XILINX提供了MIPI CSI-2 Rx Subsystem的IP核用来实现FPGA接收MIPI CSI摄像头数据,这是一个集成一体化的方案,MIPI CSI-2 Rx Subsystem IP的内部已经包含物理层MIPI D-PHY IP, 不再需要单独例化MIPI D-PHY IP。实际上接收子系统有包含有三个子核,分别为MIPI DPHY、MIPI CSI-2 Controller及Video Format Bridge。注意MIPI CSI-2 Rx Subsystem的IP核在vavido 2020.1之前的版本是需要购买授权才能使用,所以推荐使用vavido2020.1版本或者之后的版本进行MIPI CSI2的开发。
MIPI CSI摄像头数据输出的RAW10或者RAW8数据,我们只负责采集这些数据,然后发送到上位机进行后续处理,板卡上并没有进行格式处理或者进行显示等操作,所以不需要用到Video Format Bridge。Zynq7010的PS系统带有I2C接口,用来配置摄像头非常方便,但如果接多路摄像头时,由于摄像头是一样,I2C器件地址也是一样的,我们不能把所有摄像头的I2C接口都连接到一起,通过把PS的I2C接口信号布线到PL侧,PL侧在扩展出多路I2C信号分别连接各个摄像头的方法来解决这个问题。
MIPI CSI-2 Rx Subsystem的IP核的具体配置如下图示:

按上图配置后IP的接口信号及说明如下图示:

注意这里使能了CSI2 Controller Register Interface,可以提供A**线读取IP内部寄存器的状态来进行调试软件和硬件,经常用来调试查看的寄存器有如下:
1、地址偏移0x0_0000, Core ConfigurationRegister, bit0: Core Enable.
2、地址偏移0x0_0004, ProtocolConfiguration Register, bit4~3: Number of lanes.
3、地址偏移0x0_0010, Core StatusRegister,
Bit31~16acket Count.
Bit3:Short packet FIFO Full.
Bit2:Short packet FIFO not empty.
Bit1:Stream Line buffer Full.
Bit0:Soft reset/Core disable in progress.
4、地址偏移0x0_0024,Interrupt Status Register,
Bit31~16acket Count.
Bit3:Short packet FIFO Full.
Bit2:Short packet FIFO not empty.
Bit1:Stream Line buffer Full.
Bit0:Soft reset/Core disable in progress.
5、地址偏移0x0_0030, Generic ShortPacket Register,
Bit23~8:16-bit short packet data.
Bit7~6:Virtual channel number.
Bit5~0:Generic short packet code.
6、地址偏移0x0_003C, Clock LaneInformation Register,
Bit1:Stop state on clock lane.
7、地址偏移0x0_0040/44/48/4C, Lane0/1/2/3 Information Registers,
Bit5etection of stop state.
Bit2:Indicates the deskew reception.
Bit1etection of SoT Error.
Bit0etection of SoT Synchronization Error.
8、地址偏移0x0_1000, D-PHY CONTROLRegisters,
Bit1:Enable bit for D-PHY.
Bit0:Soft reset for D-PHY Controller.
9、地址偏移0x0_1018, D-PHY CL_STATUSRegister,
Bit5:Clock lane control error.
Bit4:Clock lane is in the Stop state.
Bit3:Set after the lane has completed initialization.
Bit2:Set to 1 when the core in ULPS (ULP State) mode.
Bit1~0:MODE,表示当前处于低功耗(LP)或者高速(HS)或者Escape模式。
10、地址偏移0x0_101C/20/24/28, Lane0/1/2/3 DL_STATUS Register,
Bit31~16:Number of packets received on the data lane.
Bit6ata lane is in the Stop state.
Bit5:This bit is set after the Data Lane Escape Timeout is elapsed. Write-to-1clears this bit.
Bit4:Set after the Data Lane High-Speed Timeout is elapsed. Write-to-1 clears thisbit.
Bit3:Set after the lane has completed initialization.
Bit2:Set to 1 when the core is in ULPS mode.
Bit1~0:MODE,表示当前处于低功耗(LP)或者高速(HS)或者Escape模式。
最后上个我们开发的实物图片:

也是采用核心板加扩展板的形式实现。
三、参考文档
3www.xilinx.compg232-mipi-csi2-rx.pdf
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条