关于xilinx srio ip复位问题
语言 :Verilg HDL 、VHDL
EDA工具: Vivado
- 关键词: ip调用,Verilog HDL,srio ,复位
一、引言
在FPGA开发中, 在SRIO IP核使用时候,需要在必要时候对srio复位以确保两边设备可以正常的通信,博主总结了在实际应用中srio的处理方式。
二、FPGA 之间 srio通信复位处理
在使用 SRIO 进行 FPGA 之间的通信时,复位过程可能会影响通信链路的正确建立。以下是一些可能导致两块 FPGA 之间的 SRIO 连接无法建立的情况:
复位时序不同步:
如果两个 FPGA 的复位信号时序不同步,可能导致其中一个 FPGA 在另一个 FPGA 尚未完成复位时尝试建立 SRIO 连接。这可能导致通信链路的异常行为。确保在整个系统中复位信号同步是很重要的。
SRIO 模块未正确初始化:
如果在 SRIO 模块的复位过程中没有正确初始化,可能导致模块无法正确响应 SRIO 协议,从而影响通信链路。确保 SRIO 模块在复位后能够正确初始化。
等待复位完成的时间不足:
如果在 SRIO 模块复位后未等待足够的时间以确保模块完全初始化,可能会导致通信链路无法建立。请确保等待复位完成的时间是足够的。
SRIO 配置不匹配:
如果两个 FPGA 上的 SRIO 模块配置不匹配,例如,速率设置、协议版本不一致等,可能导致通信链路无法建立。确保两侧的 SRIO 配置是一致的。
两片fpga之间复位时候,需要注意时间上要尽量统一,且每个SRIO时钟域都有相关联的复位信号,复位应该在各自的时钟域中被断言至少四个时钟周期,并且在同步的情况下去除。如果核心被训练降频,即使phy_clk运行速度会比原始速率慢,复位仍然必须持续四个完整周期
三、FPGA与DSP之间srio通信复位处理
dsp与fpga之间srio通信时候,复位是两边上电进行一次复位 如果这个时候,srio没link的话,dsp会发送一个复位信号,即给一个上升沿给fpga,dsp会等10ms 然后再去link fpga 的srio.
四、FPGA与PPC之间srio通信复位处理
fpga和PPC的srio 如果没link上 那么 fpga检测到link为0 时,复位1s后 然后再继续link
五、总结
关于Xilinx SRIO IP的复位问题,最后再做如下总结:
1、在SRIO IP核的使用中,复位信号对于确保设备间正常通信至关重要。复位时序的同步性非常重要,以避免通信链路建立过程中的异常行为。
2、每个SRIO时钟域都应有相关的复位信号,并且复位信号应在相应的时钟域中被断言至少四个时钟周期。如果SRIO核心被训练降频,即使phy_clk的运行速度低于原始速率,复位信号仍然必须持续四个完整周期。
3、在SRIO模块的复位过程中,如果没有正确初始化,可能会导致模块无法正确响应SRIO协议,从而影响通信链路。
4、确保等待复位完成的时间是足够的,以确保SRIO模块完全初始化。
5、如果两个FPGA上的SRIO模块配置不匹配,例如速率设置或协议版本不一致,可能导致通信链路无法建立。确保两侧的SRIO配置是一致的。
6、在FPGA与DSP或PPC之间的SRIO通信中,复位处理也非常重要。例如,DSP在SRIO未连接时会发送一个复位信号给FPGA,并等待一段时间后再次尝试连接SRIO。
7、在SRIO IP核的配置中,复位模块的设计也很重要。内置的复位参考设计模块(srio_rst.v)具有单个复位输入sys_rst,此信号为异步输入,该模块将复位同步到每个时钟域,并扩展脉冲以满足最小复位周期要求