Arria10平台,lvds参考时钟能否驱动不同bank的LVDS SERDES Receiver?
某传感器芯片输出80对lvds数据信号和pclk0、pclk1的lvds时钟信号。pclk0、pclk1分别对应40对lvds数据。现基于Arria10 GX设计,采用。Bank3E、3F接收pclk0对应的40对lvds数据,Bank 3G、3H接收pclk1对应的40对lvds数据。
调试中发现,pclk0输入Bank3E后,接入至LVDSSERDES Receiver IP核的refclk后,布线将报错,如Info (14709): The constrained I/O pad drives a IOPLL, which drivesthis LVDS_CLOCK_TREE。Error (175006): Could not find path between the LVDS_CLOCK_TREE anddestination LVDS_CHANNEL。即无法驱动相邻的Bank3F的LVDS SERDES Receiver。
有研发人员称在Arria5上可驱动相邻bank的LVDS SERDES Receiver,但Arria10手册上提到只有同一个bank的IOPLL才能驱动同一个bank的LVDS SERDES Receiver,不能驱动相邻bank的LVDS SERDES Receiver。
问题如下:
1.是否必须采用零延迟时钟缓冲器?即将pclk0一分为二输入至Bank3E、3F?pclk1一分为二输入至Bank 3G、3H?
2.如果不采用时钟分配器,pclk0输入至Bank3E后,有没有办法通过数字逻辑设计,驱动Bank3E、3F接收pclk0对应的40对lvds数据?
pclk0通过IOPLL输出的时钟为局域时钟,好像只能直接输出至SERDES,能通过级联的IOPLL再驱动不同bank的SERDES吗?
40对LVDS,每对速率是多少啊?
速率低(<600M)的话,用DDIO试一下。
还有看了Ip的例化,可以选择external PLL,不知道你们试这种设置了吗?
Ip例化external PLL和内部PLL的选项都试过,只要FIFO输出至管脚,布线都会报错。
每对lvds数据的速率为400MHz,参考时钟pclk0/1频率为100MHz。倒是没考虑过DDIO,我试试看。
每个A10 bank最多可以实现24对LVDS serders. 在最新的quartus version, 增加了对LVDS RX的参考钟必须从本bank输入。在LVDS 400M时如果是-1的器件对DDIO还可以试一试。如果不可以可以试试I/O PLL 迭代的方式
I/O PLL级联不可行,即使时钟与lvds数据信号都在一个bank布线也会报错。
Arria10不支持DDIO,看来必须采用零延迟时钟缓冲器,即将pclk0一分为二输入至Bank3E、3F,pclk1一分为二输入至Bank 3G、3H。
参考时钟pclk0/1频率为100-166MHz,零延迟时钟缓冲器输入输出接口均应为lvds接口,找了一款德州仪器的cdcvf855芯片,一路时钟输入,4路时钟输出,支持零延迟同相,支持时钟频率上限为220MHz,应能满足要求。缺点就是面积不算小,增加两片芯片后电路板小型化难度加大了,不知道还有没有两路通道输出的其它零延迟时钟缓冲器芯片。
小编你好。
我看了下altera的IP例化。
选择Altera GPIO,在register mode 一栏选择DDIO就可以了。
不知道你所说的不支持,是性能不支持,还是功能不支持呢?
当然DDIO也仅是作为不改版调试的一种手段。
400M数据,2.5ns的理论采样窗口,除去数据的skew,和时钟的uncertaininnty
走线skew,其实还是有机会的.
依稀记得当年为了搞定LVDS,最后一招是看IO report,手动修改IO delay.
然后写入QSF文件,只重新生成bit file.
小编在正确的时序约束后,可以参考。当然小编所说的加新的随路时钟是无风险的解决方案。
Arria10无法使用DDIO的IP,该IP显示为灰色。事实上,相当多的IP即使支持Arria10,也需要升级版本。
传感器芯片最低数据速率400MHz,对应时钟频率100MHz。最高数据速率664MHz,对应时钟频率166MHz。
自己设计类似DDIO的逻辑不知道合适不,感觉稳定性是个问题。还是选择零延迟时钟缓冲器吧,就是两对lvds通道输出的零延迟时钟缓冲器芯片还没找到,4通道的还是尺寸大了点
