xilinx的transceiver调试

使用平台:vivado2018.03

使用IP:UltraScale FPGAs Transceivers Wizard(1.7)

主要目的:在questasim上仿真transceiver成功。

使用XCZU系列在vivado2018.03上建立工程,

选择IP Catalog-->FPGA Features and Design--> IO Interfaces --> UltraScale FPGAs Transceiver Wizard

设置界面

 

仿真验证过程:

1、对代码的初步验证,结果不通过

在修改代码后,仿真能正常出波形,立马就验证了下rx和tx的数据。

对tx的四个通道写入了四组相同的数据

 

仿真得出的rx内容:

 

发现数据与tx的数据不相同,但是数据很有规律的变化。可以理解为数据没有对齐。

2、在数据中加入同步码,并根据同步码,来纠正数据。

故在发送数据前面加一个同步码,用来校验数据位。

在发送端,加入了一个同步码,同步码内容如下:

然后,在接收端,进行识别同步码:

先缓存,连续两个相邻数据内容

根据内容,计算需要移位的多少:

内容有点长,所以只截图了一部分

根据 需要移位的多少 进行数据对齐

 

3、固定数据结果验证,结果通过

结果验证:

 在发送端,还是继续发送64'h1234_5678_9abc_def0的数据内容,观察接收的数据在处理后是否正确:

截图中:

o_data: 是第一个通道的发送数据;

Rx_data_real : 是进行移位之后的正确数据;

i_rx_data:是transceiver接收到的原始数据。

通过图中观察到,Rx_data_real o_data 值是一样的,更改是可以的。

4、随机数验证,结果通过

然后通过把数据内容更换为随机数观察:

发现数据还是有点对不上。怀疑是数据延迟太多,以至于找不到对应的数据,

故在把发送的数据内容更换为“计数器的计数”

通过观察发现,从tx的内容产生,到rx接收并移位完成,有16拍时钟的延迟,所以才导致在随机数中没有找到对应的数据。

重新进行随机数验证,通过往前后多查找一些数据,

往后16拍查找数据:

发现, Rx_data_real o_data 值是一样的。

原创:https://blog.csdn.net/weixin_36590806/article/details/111067326

转载请说明出处。

posted @ 2020-12-12 16:12  hhh-fpga  阅读(1223)  评论(0编辑  收藏  举报