易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

易灵思MIPI CSI 自环调试步骤

最近在帮助客户分析MIPI的问题,所以有此总结。第一次使用MIPI的人可能不知道怎么在易灵思平台上下手,今天我们来分享下MIPI的调试过程。

一、平台介绍

软件 :Efinity 2022.1.226.4.3

硬件平台 :易灵思的IMX477子卡加上代理商中印云端(全称:中印云端(深圳)科技有限公司)制作的Ti60F100核心板。

图片[1]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

二、获取并掌握MIPI传输评估工具

(1)获取易灵思提供的钛金系列FPGA-mipi-utility.xlsm文件,在文件内进行设置。

首先在Enter the video information中输入要传输的视频信息。要说明的是Pixel clock frequency对应IP核64位接口位宽的时钟,并不对应每个像素的时钟。  另外Horizontal blanking per line(us)是指Thfp + Thbp + Thsa和,

另外要求HSA,HBP和HFP的值都不能是0。因为要留给MIPI包中PH(Packet Head,32Bit)和PF(Packet Footer,16Bit)传输时间。

这是在传输过程确保能否正确传输的条件。

图片[2]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

图片[3]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

在Enter the MIPI interface details输入MIPI接口的参数

图片[4]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

在Enter the TX timing parameter settings栏可以勾掉use default values根据接收端的参数来设置。

图片[5]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

当参数都输入完成之后,在Results中提示PASS说明参数输入正确,否则会有错误提示,需要根据错误提示来修改参数。

图片[6]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 


三、硬件准备

 

 

(1)修改硬件电压。

MIPI自环测试先要把MIPI IO所在的bank电压调到1.2V,本demo中,我选择的是Bank_3A的IO作为输出和Bank_1B的IO作为输入。

图片[7]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

所以要把P1和P2的电压切换到VCC_1V2

图片[8]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

(2)生成example并管脚

因为生成的example是对应易灵思Ti60F225 demo板的,所我们要移植到Ti60F100 demo板上。管脚分配在J1和J2的对应位置。另外要修改下对应的时钟和复位即可。

图片[9]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

图片[10]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

时钟分配到GPIOL_P_07。这是一个全局时钟,频率为25M,刚好与原来的demo对应。正因为是全局,所以要注意pll要选择core输入。

图片[11]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

复位管脚我们分配给GPIOL_N_18

图片[12]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

四、评估传输参数

(1)根据时钟要求计算pixel时钟支持的范围。可能自环的时候这两个时钟会有一些矛盾,但是相差不大的话,经过确认是没有问题的。另外我们也相信能够发送成功的,接收也可以。

MIPI TX要求:

PIX_CLK_MHZ <= (DATARATE_MPBS * NUM_DATA_LANE) / PACK_BIT。

MIPI RX要求:

PIX_CLK_MHZ >= (DATARATE_MPBS * NUM_DATA_LANE) / PACK_BIT

MIPI接口参数如下:

 MIPI Data Lane = 2

MIPI Data Rate = 800Mbps

视频格式如下 :

parameter PIXEL_BIT  = 24,
 parameter PACK_BIT   = 48,
 parameter HSA        = 5,  //minimum value is pixel cnt value, eg: RGB888 - 2
 parameter HBP        = 5,   //minimum value is pixel cnt value, eg: RGB888 - 2
 parameter HFP        = 1024,
 parameter HACT_CNT   = 1920,     //h_total = 2945
 parameter VSA        = 1,
 parameter VBP        = 1,
 parameter VFP        = 100,
 parameter VACT_CNT   = 1080,     // v_total =    1182 3,480,990
 parameter HS_BYTECLK_MHZ = 100,
 parameter DATATYPE = 6'h24     //24 - RGB888

 

按照上面的公式计算像素时钟。

DATARATE_MPBS = 800
NUM_DATA_LANE = 2
PACK_BIT = 48
PIX_CLK_MHZ <= 800 * 2/ 48 = 33.33 //像素时钟频率

 

是这样就行了吗?当然不是,还要确认修改成两个lane之后原来的数据带宽是否还能传输呢?要用评估工具进行评估保证PASS。

这里Horizontal blanking per line(us) = (5+5+1024)*(1000/66)ns = 15.51us

图片[13]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

demo上我们选择30M.要计算视频带宽是否能传输,即要考虑公式也要考虑utility表。OK ,PASS.

===================================

五、MIPI 自环测试

===================================

连续时钟方案

(1)配置参数

首先我们想要测试的是两个lane的自环,所以要先在IP核把data lane修改成2。

图片[14]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

(2)修改传输时钟频率。

(3)上板调试

这一步到了测试环节。首先添加debug,观察r_fail和r_pass信号。上板之后我们检测r_pass和r_fail信号,如果r_pass为高,说明测试通。

assign led[1] = r_fail;
assign led[2] = r_pass;

图片[15]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

不连续时钟方案

在生成IP时选择时钟不连续

图片[16]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

demo中第一帧帧头解析错误,所以会出现不能pass的提示,但实际后面的帧都解析出来了。所以经过分析传输正常。

下面直观感受下什么是连续和不连续。

不连续发送的波形,可以看到很多LP_CLK_OE上拉

图片[17]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

连续时则没有。

图片[18]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

 

六、问题分析

(1)如果是不连续的话由于时钟是不连续的,所以通过逻辑分析仪抓取数据会出现明显的错误,这个是可以理解的。那要怎么分析数据,这里有个歪点子,因为是自环,所以发送时钟与接收时钟是同尖的。所以用发送时钟去抓取接收数据,事实证明很好用。就算相位有偏差也问题不大。

(2)另一个问题是,如果出现了没有pass的情况,应该怎样去定位问题?

检查控制寄存器。通过读取寄存器的值可以大致判断数据出错的方向。

图片[19]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

MIPI RX控制寄存器

图片[20]-易灵思MIPI CSI 自环调试步骤-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug

MIPI TX控制寄存器

 

如果还是不能正确接收数据的话,易灵思还会有一些别的方式可以帮助解析数据包。

请登录后发表评论

    没有回复内容