如题,本人正在使用Cyclone IV GX EP4CGX75CF23,现在在调试serdes的时候遇到了大问题,还请知道的好心朋友帮指导指导,先提前谢过了!
Serdes使用的Deterministic Latency模式做收发器,现发现接收到的rx_patterndetect信号有时候与0xBC对不齐,还有就是rx_patterndetect信号拉高时其下面对应的数据可能并非是0xBC,在pattern附近都没看到0xBC。
对于这种对不齐,但是如果0xBC还是存在的情况,我使用的是把帧头0xBC扩展成0x5A5A5A5A5A5ABC,共7个字节(当然,tx_ctrlenable只会在BC上面才拉高),到了接收端,不再利用pattern信号来做同步,直接检测7字节的数据缓存单元,当其与我发送的数据序列一致时则认为找到帧头了,只要收到以后,我会把此通道的一个标志信号flag永久拉高,除非复位请求(外部主复位或者我一直都检测不到pattern信号被拉高)
当我使用SignalTab观察数据时发现,有个时候,即便我4个通道的数据在SignalTab上显示都正确的时候,那个帧头7字节的特殊字串也是正确的,但我的flag标志却只会被拉高1,2个。每个通道的代码一样,我只是例化4次而已,时序约束都通过,使用85°模型,时序余量最小值为0.35。 |