MIPI CSI2 IP核
- 前言
- 正文
- 背景介绍
- MIPI CSI2 IP介绍
- IP 代码分析
- Reference:
前言
这是我第一次写学习笔记,旨在记录工作过程,方便以后查阅。同时也希望得到前人指点,或对后人有所帮助。学习笔记只会包括大致思路及基本知识,详细内容不便透露。
正文
背景介绍
我这个夏天的其中一个项目是测试microsemi公司的risc v processor。Risc V 作为一款著名开源架构, 好处无需赘述。我们目前想实现的是在microsemi的MPF300 video kit FPGA上,用其自带的摄像头传输视频信号,并把信号传到搭建的risc V进行测试。本次学习笔记要做的是要把双目摄像头的MIPI CSI2格式的信号通过某种途径传输至AXI格式的处理器上。由于我之前从未接触过相关领域,所以学习笔记将从零开始,学习相关基本知识。
MIPI CSI2广泛应用于手机摄像头传送至处理器,但本笔记主要基于Libero的IP core,可能稍有不同。
MIPI CSI2 IP介绍
Microsemi Libero有两个相关ip:receiver 和 transmitter。我的理解是Tx是编码出与csi相应的pixel data, 而Rx是将视频像素解码成我们想要的MIPI CSI2信号。因此目前我们只需要了解RX这个ip core。
该ip有两种模式:High speed mode & Low power mode. 在High speed mode下,传输形式有short packet and long packet. Short packets provide frame synchronization and line synchronization information. Long packets provide the pixel information.
我理解信息应该包含在long packet, short packet相当于起止作用。
- Frame start (short packet)
- Line start (optional)
- Few image data packets (long packets)
- Line end (optional)
- Frame end (short packet)
该ip必须与PolarFire® MIPI IOD generic interface blocks 和PLL结合使用,如图所示:
其中,IOD的输出RX_CLK_R由PLL连接至RX的输入。PLL的parallel clock由以下公式计算:
IP 代码分析
其源代码生成后可在以下路径找到: .\component\Microsemi\SolutionCore\mipicsi2rxdecoderPF\2.2.3\Obfuscated
主要由以下两部分组成:
- Embsync_detect
这部分给我感觉就是个整理的过程,它从IOD接收信号后把数据整理归置,供以后使用。 - mipi_csi2_rxdecoder
这部分就会由之前提到的long & short packet得到输出:frame_start_o, frame_end_o, frame_valid_o, line_start_o, line_end_o, word_count_o, line_valid_o, and data_out_,其工作原理可由FSM表示出来:
有限状态机在数字电路和microprocessor的课上都学过,所以很好理解,基本上就是一行一行传输图像,直至整个frame传输完毕。
*更多有关参数设定的内容请参考datasheet。
Reference:
UG0763 User Guide MIPI CSI-2 Receiver Decoder link