赞
踩
代码规范: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)来补偿信道引起的失真,或者设计适当的编码和调制方案来提高系统的抗干扰能力。
从接收到的信号中恢复出发送端的时钟信息,并利用这些信息来准确重定时(resample)接收到的数据,以便正确地恢复原始数据。
作用:直流平衡
千兆网1Gbps
万兆网10Gbps
参考:FPGA GTX全网最细讲解,aurora 8b/10b协议,HDMI视频传输,提供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:顶层文件中修改如下代码:
发送数据:
接收数据:
r_receive_char在接收端初始阶段不稳定,可以在接收几轮数据之后再观察稳定的波形。
结果发现接收数据端发生了错位:
查找资料之后,目前只找到一种解决方案:
在数据接收端通过判断r_receive_char的错位模式,对r_receive_data进行相应的拼接。但是这种解决方案类似于“对着答案写问题”,希望今后更进一步的学习可以解决这个问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。