代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客
开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个流程-CSDN博客
源码下载:GitHub - Redamancy785/FPGA-Learning-Record: 项目博客:https://blog.csdn.net/weixin_51460407
一、功能定义
零、低速通信接口的缺陷
1、同步通信要求传输数据线与时钟线等长,高速通信也意味着PCB绘制过程中对走线的要求极高。
2、异步通信冗余度高,不适合高速传输。
3、低速接口高速通信时会产生偏斜。
信道偏斜(Channel Skew)通常指的是在数字通信系统中,信号在信道中传播时由于多种因素导致的时延差异。这种时延差异可能是由于信道的物理特性或者信号在信道中经历的多径传播造成的。信道偏斜会影响信号的时序,可能导致信号的失真,特别是在高速数字通信中,这种失真可能会引起码间干扰(ISI)或其他性能问题。
在设计和分析通信系统时,需要考虑信道偏斜的影响,并采取相应的措施来减少其对系统性能的影响。例如,可以使用均衡器(Equalizer)来补偿信道引起的失真,或者设计适当的编码和调制方案来提高系统的抗干扰能力。
一、GT收发器
1、CDR技术
从接收到的信号中恢复出发送端的时钟信息,并利用这些信息来准确重定时(resample)接收到的数据,以便正确地恢复原始数据。
2、8B10B编码
作用:直流平衡
3、收发器结构
4、发送数据
5、接收数据
6、时钟架构
7、CPLL与QPLL区别
8、拓展——使用GT收发器实现万兆网传输
千兆网1Gbps
万兆网10Gbps
二、GT收发案例
1、IP核配置过程以及例程生成
参考:FPGA GTX全网最细讲解,aurora 8b/10b协议,HDMI视频传输,提供2套工程源码和技术支持 - 知乎
2、顶层文件修改
step1:顶层文件中添加如下代码:
reg [31:0] r_sent_cnt;
reg [31:0] r_sent_data;
reg [3 :0] r_sent_char;
wire [31:0] r_receive_data;
wire [3 :0] r_receive_char;
always @(posedge gt0_rxusrclk2_i or negedge gt0_rxresetdone_i)
begin
if (gt0_tx_system_reset_c || r_sent_cnt == 299)
r_sent_cnt <= 0;
else
r_sent_cnt <= r_sent_cnt + 1;
end
always @(posedge gt0_rxusrclk2_i or negedge gt0_rxresetdone_i)
begin
if (gt0_tx_system_reset_c )
r_sent_data <= 0;
else if(r_sent_cnt == 199)
r_sent_data <= 32'hbcbcbcbc;
else if(r_sent_cnt >= 200 && r_sent_cnt <= 299)
r_sent_data <= (r_sent_cnt - 200);
else
r_sent_data <= r_sent_data;
end
always @(posedge gt0_rxusrclk2_i or negedge gt0_rxresetdone_i)
begin
if(r_sent_cnt == 199)
r_sent_char <= 4'b1111;
else
r_sent_char <= 0;
end
step2:顶层文件中修改如下代码:
3、运行仿真
发送数据:
接收数据:
r_receive_char在接收端初始阶段不稳定,可以在接收几轮数据之后再观察稳定的波形。
结果发现接收数据端发生了错位:
查找资料之后,目前只找到一种解决方案:文章来源:https://www.toymoban.com/news/detail-853924.html
在数据接收端通过判断r_receive_char的错位模式,对r_receive_data进行相应的拼接。但是这种解决方案类似于“对着答案写问题”,希望今后更进一步的学习可以解决这个问题。文章来源地址https://www.toymoban.com/news/detail-853924.html
到了这里,关于基于vivado+Verilog FPGA开发 — GT收发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!