Zynq高速串行CMOS接口的设计与实现 下载本文

表(4)ISERDESE2的参数描述 (1) 时钟方案

CLK和CLK_DIV必须是严格对齐的时钟,虽然允许使用BUFIO/BUFR,但任然有可能存在相位问题。图(5)时采用BUFIO/BUFR的方案。

图(5)采用BUFIO/BUFR的时钟方案

一般的,根据接口类型的差异,时钟必须满足以下的约束: a)networking interface

? CLK→BUFIO;CLKDIV→BUFR;

? CLK→MMCM/PLL;CLKDIV→和CLK相同的MMCM/PLL的CLKOUT[0:6]的输出,使用MMCM时CLK和CLKDIV必须使用相同的驱动BUF; ? CLK→BUFG;CLKDIV→BUFG。

b)MEMORY Interface Type

? CLK→BUFIO, OCLK→BUFIO,或CLKDIV→BUFR;

? CLK→MMCM或PLL, OCLK→MMCM,或CLKDIV由同一个MMCM/PLL的CLKOUT[0:6]驱动; ? CLK→BUFG,CLKDIV→不同的BUFG。

OCLK和CLKDIV的输入相位必须是严格对齐的,CLK和OCLK之间不要求相位关系。From CLK to OCLK的时钟域必须进行补偿。

其他接口类型的时钟方案参考文档UG471。 (2) BitSlip子模块

BitSlip用于调整并行寄存器输出串行数据的位置。在SDR模式下,每一个BitSlip脉冲让输出pattern的数据左移1bit;在DDR模式下,第一个BitSlip右移1bit,第二个BitSlip左移3bit,依次进行,移动规律如图(6)所示。BitSlip一定是和CLKDIV同步的一个脉冲。

图(6)BitSlip训练移位规律

在上面所介绍的资源中,IDELAYE2是动态相位对其训练的神器,ISERDESE2实现串并转换,其Bitslip功能是实现并行化数据对齐的关键。 2 LVDS高速接口实现实例

因为MIPI接口有其完整的物理层协议,因此不在这里讲具体实现,本文以Sony的IMX122 CMOS为例,聊一聊高速LVDS(HiSPi类似,只是电平标准有一点区别)接口在Xilinx 7系列FPGA和ZynqSoC上的实现。 2.1 需求分析

以Sony IMX122 CMOS为例,配置在1080P分辨率可输出30fps。CMOS在初始化完成后输出两通道稳定的LVDS数据,LVDS接收模块在收到配置完成信号后开始工作。因此,这个LVDS接收模块需要实现:

① CMOS工作在Slave模式下,向CMOS发出参考时钟(INCK)、行同步(XHS)、帧同步(XVS)信号;

② 接收LVDS数据并将它恢复成为指定的图像数据格式; ③ 提供测试信息接口。 2.2 IMX122 CMOS输出特性

本小节简介IMX122 CMOS的一些特性。 2.2.1 同步时序要求

在Slave模式下需要向CMOS提供周期稳定的XHS和XVS信号,两者的时序要求如图7所示。在产生同步时序时需要注意以下要点:

① XVS和XHS必须是稳定的周期性信号;

② XVS和XHS信号的低电平保持时间为4~100个INCK; ③ XHS可以和XVS同时拉低,也可延时一个时钟周期拉低。

图7 Slave模式下同步时序

2.2.2 输出数据率

在串行SDR LVDS模式下以12bit模式输出,数据率为891Mbps,每个通道的数据率为445.5Mbps。 2.2.3 Sync Code格式

在串行输出模式下,CMOS通过输出固定的Sync Code来指示图像的有效帧、行信息,接收器需通过查找这些Sync Code来恢复图像。IMX122可提供两种模式的Sync Code,这里配置为Sync Code1,其具体定义如图8所示。

图8 IMX122 Sync Code定义 2.2.4 输出图像组织形式

IMX122在1080P读出模式下,输入参考时钟INCK是37.125MHz。一帧图像输出固定为1125行,每行1100 INCK(29.63μs),有效输出为1984×1105。图像输出的时序如图9所示,图10是输出数据编