LVDS TX RX IP调试笔记

分享一篇LVDS的调试笔记,简单实现了LVDS RX的时钟沿及bit位序调整。

1. 调试环境

zynq开发板的bank13使用2.5V供电,差分走线在XH2.54排针引出LVDS引脚,支持LVDS25 IO标准。使用短杜邦线连接进行本板发送接收回环。由于杜邦线并非差分走线,所以LVDS频率降低为200MHz。

软件 vivado2021.1
硬件 ZYNQ PI开发板(xc7z020)

2. 程序设计

此IP用于板卡间LVDS通信,使用xc7z020平台验证,理论上程序兼容xilinx 7 Series系列芯片,其他系列或厂家的芯片可在此程序修改适配,功能框图如下:

2.1. 程序结构

  1. top_lvds:顶层模块,用于产生发送的数据,例化rx tx模块。

  2. lvds_tx:lvds发送模块,将并行数据转串行发送。

  3. lvds_rx:lvds接收模块,将串行数据接收转并行。

  4. clk_wiz_0:pll,50MHz外部晶振输入,150MHz、25MHz、200MHz时钟输出。

  5. clk_wiz_1:pll,25MHz LVDS时钟引脚输入,25MHz、200MHz时钟输出。

  6. ila_0:用于抓信号调试。

2.2. 模块详解

2.2.1. top_lvds
  1. 通过1段式状态机控制发送数据,先发送65535个0x5c,之后发送递增数据。

  2. pll输入为50MHz的外部晶振,输出150MHz时钟用于IDELAYCTRL原语模块做参考时钟,输出25MHz、200MHz时钟用于LVDS发送。

  3. IDELAY或者ODELAY的延迟精度是由IDELAYCTRL的输入时钟决定的,调整刻度=1/( REFCLK 322)。

  4. REFCLK推荐值为200MHz,但本实验LVDS频率只有200MHz,半个时钟周期为2500ps,需要减小REFCLK使调整范围变大。REFCLK=150MHz时,调整刻度为104ps,104ps * 31 = 3224ps大于200MHz的半个时钟周期,满足调整要求。

2.2.2. lvds_tx
  1. OSERDESE2原语模块用于并行转串行输出,数据格式为SDR单边沿模式。

  2. tx_clk =25MHz;tx_clk_x8 =200MHz。

2.2.3. lvds_rx

delay状态机不断增加delay值,检测rx_data数据跳变,跳变说明delay刚好到时钟边沿。

bslip状态机不断滑位,直到匹配到模板数据0x5c。

3. 功能仿真

此仿真为实现后带时序仿真

3.1. 数据和时钟

LVDS时钟25M,数据200M,一个时钟周期发送8bit数据

3.2. 延时和滑位

  1. 未延时和移位时,tx发送0x5c匹配码,rx接收到为0xe2。

  2. 不断改变delay值,当delay=0x0c时数据变化,说明到达数据边沿,然后将延时加上或者减去四分之一个时钟周期,使采样位于数据中心。

  3. bslip发送脉冲进行移位,当检测到0x5c匹配码时,移位完成。

4. 时序和资源

4.1. 时序

存在一个时序报红。

  1. IDELAYCTRL的REFCLK不能低于190MHz,本实验实验杜邦线回环,LVDS只能跑到200MHz,为了增大IDELAY延时刻度,强行将REFCLK降为150MHz。正式产品LVDS速度可以提高,REFCLK为200MHz时,此报红会消除。

1.1. 资源

5. 上板测试

接线如下:

通过ila抓取信号,发送的数据回环接收正常;状态机状态正常

相关推荐
XINVRY-FPGA2 天前
XCVU9P-2FLGC2104I Xilinx AMD Virtex UltraScale+ FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
brave and determined2 天前
可编程逻辑器件学习(day34):半导体编年史:从法拉第的意外发现到塑造现代文明的硅基浪潮
人工智能·深度学习·fpga开发·verilog·fpga·设计规范·嵌入式设计
stay_cloud2 天前
《Verilog语言与FPGA实现》课程实验
verilog·fpga·数码管
brave and determined3 天前
可编程逻辑器件学习(day30):数字电路设计中的流水线技术:原理、实现与优化
学习·fpga开发·verilog·fpga·数字电路·硬件设计·嵌入式设计
brave and determined4 天前
可编程逻辑器件学习(day29):Verilog HDL可综合代码设计规范与实践指南
深度学习·fpga开发·verilog·fpga·设计规范·硬件编程·嵌入式设计
brave and determined7 天前
可编程逻辑器件学习(day26):低主频FPGA为何能碾压高主频CPU?
人工智能·嵌入式硬件·深度学习·学习·fpga开发·云计算·fpga
brave and determined8 天前
可编程逻辑器件学习(day24):异构计算:突破算力瓶颈的未来之路
人工智能·嵌入式硬件·深度学习·学习·算法·fpga·asic
坏孩子的诺亚方舟8 天前
FPGA系统架构设计实践7_时序收敛作业概述
fpga·xilinx·时序收敛·作业流程
坏孩子的诺亚方舟11 天前
FPGA系统架构设计实践5_IP的封装优化
fpga·vivado·rqs·工程质量
坏孩子的诺亚方舟12 天前
FPGA系统架构设计实践4_SelectIO
fpga·xilinx·selectio