在网上找资料的时候发现的,有一定的参考价值,先收着,用的时候方便找。贴出原文:源博客地址
1. 概述
本设计采用FPGA技术,将CMOS摄像头(MIPI接口)的视频数据经过采集、存储、帧率转换及格式转换,最终通过HDMI接口显示在电视屏幕上。
2. 硬件系统框图
CMOS采用300万像素的摄像头芯片,FPGA采用ALTERA公司的CYCLONE IV,FLASH采用EPCS64,DDR2采用Hynix公司的1Gb内存条,HDMI采用Silicon Image公司的SiI9134。
3. FPGA逻辑框图
FPGA各部分逻辑模块如下图所示:
- MIPI DECODE,解析MIPI串口数据;
- I2C Master,配置CMOS芯片;
- DDR2 Control,配置与控制DDR2芯片组,实现读写仲裁;
- FIFO Write,将采集到的视频数据跨时钟域地写进DDR2中;
- FIFO Read,将DDR2中的数据跨时钟域地读出给后续图像处理模块;
- Frame Buffer,负责FIFO Write和FIFO Read的调度,实现帧率转换;
- RAW to RGB,将原始RAW8数据转换成RGB888数据;
- RGB to YUV,将RGB888数据转换成YUV422数据;
- HDMI TX,将处理好的视频数据发送给HDMI PHY芯片,同时通过I2C接口配置HDMI PHY芯片。
4. MIPI解码模块
这里以4-lan 10bit模式为例,介绍MIPI解码模块设计。
- DDIO,负责将DDR模式的时钟和数据转换成单边沿的数据与时钟(上升沿);
- Serial to Parallel,将串行数据转换成并行数据(8比特);
- 8bit to 10bit,负责解析出10bit模式的4通道数据;
- DVP Generate,生成DVP格式的视频流。
下面再介绍一下8bit到10bit的原理,关于更多的MIPI原理可参考博文:海思Hi3516A(2)MIPI
在数据传输时,以通道1 -> 通道2 -> 通道3 -> 通道4 -> 通道1…为循环传输8bit数据,每5个8比特数据组成4个10比特数据,第1->第4个8比特数据为4个10比特数据的高8位,第5个8比特数据为4个10比特数据的低2位的从高到低的拼接。
后面的涉及到具体的摄像头寄存器配置及设计效果验证,因此没有收录。