弄了一个多月,实在弄不出来,时序约束还是资源问题呀。
时钟为20M,PLL倍频后60M用来传上行,20M用来传下行。现在已经用timequest约束了,然后把上行模块用logiclock也约束了。可是依然是加上了下行模块后视频有噪点,而且下行模块不分配物理引脚也是一样有影响。
各位能帮忙分析一下下吗?时序或者资源哪里的问题吗。
时序和资源你看综合报告和时序分析报告就能知道。你上下行用的同一个通道?上行下行速率多高?60M你能综合过,跑20M肯定不会出时序问题。
这种东西从你所说的实测现象来讲可能性太多了, 还是要一点一点的调, 可以考虑把代码一点一点的做增量改动,直到发现有问题的部分.
既然是到了板级的实测, 那就要假设功能仿真没有问题. 不知道是否做过完整的功能仿真.
然后再考虑时序和约束问题, 约束命令写的对不对, 有没有可能出现FIFO overflow 或者underflow的问题, 可以考虑加指示灯进行关键位置的test指示.
我只是用signaltapII抓了一下信号,你说的功能仿真是写testbench用modelsim吗?我们这里的工程师都没有做过....以前都是上板子直接跑,请问这样会有问题吗?
功能仿真要注意些什么呢?
上下行用的同一根光纤,频率不同而已。用的两对serdes,上行收发一对,下行收发一对。上行60M,下行20M。但是上行收到的数据用240m时钟打了两拍,signaltapII采样也用的240M。时须报告中有红色的(slack<0),都是关于240M时钟信号的,可能在这里出了问题,但是我感觉240m时钟和上行数据的传输关系不大。
时序报告里面关于240Mhz的slack姑且可以设成set_false_path不作考虑,因为本身就是异步采样,
时序分析软件不知道这两个时钟之间的关系,仍然以同步的方式进行分析,所以会报时序违规.
建议你还是从原代码先入手,看一看有没有非技术性失误.我记得我上个项目也是板级实测总也出不了结果,
最后发现是一处>=打成了>. 建议还是做一下功能仿真,写个testbench观察一下波形. 这种错误在仿真的时候一目了然.
与serdes有关的话,大多数都是时钟的问题,其次就是PCB设计问题。如果单独上行和单独下行都没问题,那么主要考虑PCB设计上是不是有问题了,等长、电源干扰、隔绝、IO是否分配正确等等。
我也想过是板子上的问题,可是我把下行模块的引脚分配去掉之后,这个时候下行应该没有实际物理信号的收发,可是下行模块依然影响上行的视频。
好的,我试一下,正好学学testbench。
请问一下如果用功能仿真出来的波形是正确的话是否能够说明很大的可能是硬件上存在问题呢?
!
我感觉逻辑的问题大一些,查查代码吧
