章节合集:
核心功能模块
1. LVDS接收端
物理层接收(lvds_rx_recv.v)

训练同步模块(lvds_rx_training.v)

8b/10b解码器(lvds_receive.v)

2. LVDS发送端
8b/10b编码器(lvds_send.v)

物理层发送(lvds_tx_top.v)

3. 系统集成(lvds_top.v / gsds_LVDS.v)

01 数据通信测试
LVDS数据通信的测试采用软逻辑分析仪测试方法,其原理是在FPGA逻辑代码 设计阶段或综合完成后在工程中插入一个软逻辑分析仪的核,软逻辑分析仪通过综 合块RAM资源,用工作时钟把内部的LVDS相关信号采集到块RAM里,采完以后 再通过FPGA的JTAG接口把块RAM里的LVDS相关数据读到外部PC上显示。最 后通过PC上的显示数据,判定发送端和接收端之间的LVDS 通讯是否正常。
LVDS帧加载器的格式测试结果如下图所示。

由测试结果可知,在整个数据传输的中,分别抓取到数据的帧头、帧位、数据 域、校验位。符合 LVDS 数据帧格式的定义。完成了帧格式的测试,接下来需要对 8B/10B 编码进行测试。首先,对于10B编码后,特殊字符的编码结果如下表所示。

对于发送端,10bit数据的帧格式如下图5-5所示。

如图所示,从蓝色标签的104开始到146结束表示一帧数据的编码,同时此时数据的极性为负。接收端,10 bit数据的帧格式如下图所示。

从蓝色标签的 436 开始到 480 结束表示一帧数据的编码,同时此时数据的极性为正。
数据交互测试,PC 端的发送读取指令,发送端通过 LVDS 通讯接口向接收端下发接收数据指令。通过发送端的软逻辑分析仪,当PC上显示的发送端下发接收数据指 令数据时,表明发送端发送接收数据指令成功。当数据线接收到接收端返回的数据包时,表明 LVDS 数据通讯功能测试完成。 数据交互的逻辑控制及寄存器定义为:对应的信号指令为0x0100FF01时,表示读取接收端固化版本号;对应的信号指令为0x08000002作为数据读取。测试结果如下图所示。

如图所示。当接收端接收到的指令为0x08000002时,data_flag 标志位拉高,此时加载的数据为连续的数据,当接收到的指令为0x0100FF01时, flag 标志位拉高,此时加载的数据为代码的固件版本号 20230421。为了验 证 LVDS 数据传输的过程中没有出现数据丢帧和数据误传的错误,对数据稳定的长时间测试,首先,接收端和发送均发送相同的数据 10'b0010010011,将接收到的数据与 10'b0010010011 作对比,当不相等时, err_flag 标志位拉高,否则保持低电平。测试时间为 12 小时,采用 VIVADO 的 trigger 触发模式,当抓取到err_flag发生状态跳转时,立即停止采样,并将标签停止在状态跳变处。测试结果如图所示。

源码: