马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 beiyu96 于 2019-6-30 11:51 编辑
最近根据项目需要在ZYNQ平台在这款图像传感器的开发,在做传感器端到ZYNQ端的数据接口的数据对齐部分出现问题,一开始我是根据XILINX官方文档介绍的自动相位调整状态机(文档名为XAPP585)进行数据的采样对齐,状态机的原理如下所示: file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg 动态相位补偿原理如下: ① 初始化时,Master数据延时假定设为数据眼图的中间位置,Slave和Master的延时相隔半个数据周期。 ② 在Master和Slave的数据不全为零或不全为壹时启动动态相位补偿算法。相位补偿的基本原理是:如果Master和Slave采样到的数据相同,则说明采样太靠后,延时减少一个Tap(如图[a]);如果Master和Slave采样到的数据不同,则说明采样点太靠前,延时增加一个Tap(如图)。 ③如果延时Tap值为最小或最大位置时,则交换Master和Slave的的参考关系,同时输出数据作相应调整; 我是在传感器的TRAINING模式下进行的测试,传感器处在TRAINING模式下各数据通道会不断发送0xe9的数据,在未进行移位校正的情况下会出现0xe9、0x9e、0xd1、0x1d、0xa3、0x3a、0x47、0x74的八种数据组合,但做出来的效果不对: 1、根据XAPP585所描述的,自动相位调整状态机会调整IDELAY的数值使得采样点在数据的中心点保持数据的稳定输出,但在我做的测试中,delay值在0和31变化,是不符合此状态机的逻辑的,正常情况下,延时值应该会在稳定的两个相邻值变化,输出保持稳定,实验结果如图A所示。
2、也有出现相位调整状态机将数据相位调整好数据稳定输出的情况,但出来的数据并不是 0xe9、0x9e、0xd1、0x1d、0xa3、0x3a、0x47、0x74之中的其中一个(最常遇到0x4f),说明数据虽然能够稳定输出,但是并没有将采样点调整好。 (数据通道是576Mbps,IDELAYCTRL的参考时钟采用279Mhz,31抽头下能够遍历一个数据周期) 图A
图B
我自己用了另外的办法:delay值从0开始检查数据通道是否出现0xe9、0x9e、0xd1、0x1d、0xa3、0x3a、0x47、0x74中的数值,如若出现便记录下当前的延迟值作为延迟开始数值以及当前数值,继续增加延迟值直到该数值消失,并记录下当前延时数值为结束数值,取结束数值与开始数值的平均数作为最终延迟值,但取这个平均数作为延迟值后输出就不再是之前记录的那个数值,这是为何呢?莫非数据传输的延迟是动态在变化的?实验结果如图C所示。
图C
这个问题纠结了很长时间,有没有做过的朋友告诉我哪里出了问题?谢谢 代码以及参考文档、文章如下: [url=]xapp585-lvds-source-synch-serd ...[/url] [url=][url=]lvds_rx_1.rar[/url][/url] [url=][url=][url=]lvds_rx_2.rar[/url][/url][/url]
|