LVDS系列51:Xilinx Ultrascale系 ADC LVDS接口参考方法(十三)

 AFE处理顶层模块:

TOP_AFE5832x4作为顶层模块,例化了三个子模块:spi_ctrl_afe5832、initial_card、afe4_lvds_process;

spi_ctrl_afe5832模块:spi时序控制模块,接收外部几个通道的spi读写请求,转换为spi线路的时序去读写afe芯片;

initial_card模块:初始化模块,初始化afe,输出初始化结束的状态,实现复位等操作,需要使用到spi读写寄存器;

afe4_lvds_process模块:前述的afe的lvds数据接收处理模块,需要使用到spi读写寄存器;

实现逻辑:

上电后,100M时钟稳定,

initial_card模块通过spi和控制管脚初始化afe,初始完毕后拉高init_card_ok;

afe4_lvds_process模块接收到init_card_ok为1后开始lvds的解串同步扫描等操作;

如果同步成功拉高sync_lvds_ok信号,通知外部其他模块可以使用其输出数据;

如果同步失败拉高afe_soft_rst信号,通知initial_card模块再次进行一次AFE芯片的复位和初始化工作,将整个流程再次进行一遍;

 仿真验证:

在tb中模拟afe芯片的逻辑,实现spi时序和数据模拟,

afe_chip_tb模块是一个afe5832简易仿真模型,模拟afe芯片在本次实验中使用到的时序;

模块功能:

模拟AFE5832芯片的核心功能:

SPI从机响应:响应FPGA的SPI读写操作,模拟内部两组寄存器;

LVDS数据发送:生成符合AFE5832时序的LVDS的多通道串行数据;

时钟生成:产生LVDS接口所需的高速时钟(800MHz)和帧时钟(50MHz)

LVDS数据生成逻辑:

位时钟(800MHz):DDR模式,数据速率1.6Gbps;

帧时钟(50MHz):每20ns一个帧周期;

数据:每个帧时钟周期内传输20位数据(10位奇数+10位偶数);

双沿:在800MHz时钟的双边沿更新数据;

测试模式:当寄存器2的值为0x180时,进入测试模式,测试模式下,使用固定的测试数据或从寄存器5读取用户设置的测试数据,正常模式下,使用外部输入的adce_in和adco_in数据;

仿真结果:

如果直接给到正确测试数据,在仿真中,我们没有做时延等操作,所以在仿真模型输出的时序就是最好的时序,

上图为lvds_s2p模块,可以看到125M时钟域的8bit数据,转换到了100M时钟域的170bit,16通道联合的10bit数据,

上图为afe_sync模块时序,可以看到,512扫描开始一段时间,时序采样位置好,其中各通道的macth_cnt匹配计数器都在连续计数,这段时间每次扫描的sync_ok也都能拉高,表示能同步上,说明数据正确;

但是等到扫描多次后,扫描操作给数据通道施加的输入延时,导致之前的最佳时序渐渐采样不到正确数据,一直保持到扫描结束,

可以看到最后同步成功,输出正弦波波形;

上图为时延控制模块idelay_ctrl,其中扫描512次的detc_cnt计数器从0递增到511,

上图为通道0例化的idelay_lane延时控制单元模块,可以看到,在512次扫描中,匹配成功的扫描处于前面一小部分,得到的同步窗口是从0开始到73,所以这里最后设置的最佳延时值就取了中心点的36;

可以看出对于同步逻辑和有效窗口的搜索逻辑正确实现;

接下来验证如果,如果在第一次全秒扫描中给出错误的测试数据,模拟实际上板出现无法同步的极端情况,当afe软复位后,后续再次工作的串行时序和上一次不同,就有可能会同步上,这里仿真是验证这个软复位逻辑在同步失败后能否被触发;

把仿真模型中的下面代码:

改为:

在前面50毫秒,输出一个与测试数据不相干的值,逻辑就无法同步,一次扫描大概耗时50ms;

上图为afe_sync模块波形,可以看到在第一次扫描时,未同步,进行了第二次 ,然后扫描成功,

上图为时序控制模块逻辑,可以看到,state状态在3时,设置最佳延时值尝试锁定后,检测到locking_err拉高,表示最佳配置无法同步,于是拉高afe_soft_rst取重新开始复位扫描;

可以看到上图,在第二次扫描时把测试数据输出,就能同步成功,拉高looking_ok,扫描成功;

本文章由威三学社威三学院出品

对课程感兴趣可以私信联系

相关推荐
FPGA小迷弟2 小时前
vivado中的AXI Interconnect到底应该怎么用,他的底层原理是什么,一篇文档全部理清楚!!!
网络协议·tcp/ip·fpga开发·verilog·fpga
国科安芯11 小时前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v
尤老师FPGA19 小时前
GT系列2:GT基础架构(二)
fpga开发
想你依然心痛21 小时前
电源时序控制:多路电源的上电顺序与监控——复位、看门狗
fpga开发
Eloudy1 天前
hsb fpga/ 目录分析
fpga开发·量子计算
Hello-FPGA1 天前
GPU Direct DMA RDMA 与FPGA 通讯在Jetson 平台的测试表现
fpga开发
落chen4 天前
基于FPGA的串口UART-强化篇
fpga开发·串口·rs232
坏孩子的诺亚方舟18 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐18 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐18 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发