当前位置: 首页 > news >正文

GTX 不同复位之间的区别

设备 : ZYNQ

技术手册 : Zynq 7000 SoC Technical Reference Manual (Zynq 7000 SoC技术参考手册)

参考该技术手册第21章节 Input/Output 小节下 GTX Low-Power Serial Transceivers 器件说明,其中可以获取到ZYNQ各个收发器对应的物理引脚约束信息。
Out-of-Band Signaling 项目下提到:

For more details on GTX Transceivers, see 7 Series FPGAs GTX Transceiver User Guide (UG476).

或者进入 VivadoIP coreIDE 界面的 Documentation -> Product Guide 可以获取对应 IP 文档。

GT 时钟

一个 Quad 包含4个收发器以及一个 GTXE2_COMMON 资源,无论用户在IDE中选择 QPLL还是CPLL,GTXE2_COMMON都会被例化,因此使用同一个Quad的不同收发器的例化时候需要注意,若直接使用 example design 有可能出现 gtwizard_0_common 资源冲突.解决方式就是在IDE中选择 Include the shared logic in the example design 分别例化两组收发器,然后将使用CPLL时钟的收发器例化文件中的 GTXE2_COMMON 例化去掉即可。

GTX收发器中的CPLL标称工作范围在1.6 GHz到3.3 GHz之间。GTH收发器CPLL的标称工作范围为1.6 GHz ~ 5.16 GHz。7系列fpga收发器向导根据应用需求选择合适的CPLL设置.大于以上速率必须使用QPLL。

另外,同一型号的不同速度标识的设备上GT收发器最高可运行速度不同,因此在硬件选型的时候需要注意设备速度型号是否满足要求.

GT 复位

GT收发器的必须要复位后才能正常使用,然而在设备运行中需要复位的场景有很多,所要求的复位的操作也不相同.但庆幸的是Xilinx官方已经为我们做好了大部分的复位逻辑,我们只需要根据手册以及当前环境去驱动对应信号即可.

全复位

在FPGA上电后,gt收发器开始初始化,GT收发器使用FSM(有限状态机来控制初始化过程).驱动有限状态机复位即可完成CPLL/QPLL,TX,RX复位.驱动信号为soft_reset_tx_insoft_reset_rx_in,需要注意的是,驱动这两个信号将复位并且初始化目前Quad下所有Tx或Rx通道(该部分代码为与IP中,只能看到无法修改).
用户可以在顶层读取 fsmresetdone 类型信号来判断状态机是否完成复位操作.

FSM复位GT收发器的驱动逻辑是驱动 GTTXRESET 和 GTRXRESET 这两个信号会复位所有TX和RX组件,如果有需要用户也可驱动这两个信号完成所有组件复位.

需要注意的是,若套用Example设计,则设计中对外暴露的RESET端口有可能无效,在(CoreName)_init中可以看见


generate
if (EXAMPLE_USE_CHIPSCOPE == 1) 
begin : chipscope
assign  gt0_gttxreset_i                      =  gt0_gttxreset_in || gt0_gttxreset_t;
assign  gt0_gtrxreset_i                      =  gt0_gtrxreset_in || gt0_gtrxreset_t;
assign  gt0_txuserrdy_i                      =  gt0_txuserrdy_in && gt0_txuserrdy_t;
assign  gt0_rxuserrdy_i                      =  gt0_rxuserrdy_in && gt0_rxuserrdy_t;
assign  gt1_gttxreset_i                      =  gt1_gttxreset_in || gt1_gttxreset_t;
assign  gt1_gtrxreset_i                      =  gt1_gtrxreset_in || gt1_gtrxreset_t;
assign  gt1_txuserrdy_i                      =  gt1_txuserrdy_in && gt1_txuserrdy_t;
assign  gt1_rxuserrdy_i                      =  gt1_rxuserrdy_in && gt1_rxuserrdy_t;
end
endgenerate generate
if (EXAMPLE_USE_CHIPSCOPE == 0) 
begin : no_chipscope
assign  gt0_gttxreset_i                      =  gt0_gttxreset_t;
assign  gt0_gtrxreset_i                      =  gt0_gtrxreset_t;
assign  gt0_txuserrdy_i                      =  gt0_txuserrdy_t;
assign  gt0_rxuserrdy_i                      =  gt0_rxuserrdy_t;
assign  gt1_gttxreset_i                      =  gt1_gttxreset_t;
assign  gt1_gtrxreset_i                      =  gt1_gtrxreset_t;
assign  gt1_txuserrdy_i                      =  gt1_txuserrdy_t;
assign  gt1_rxuserrdy_i                      =  gt1_rxuserrdy_t;
end
endgenerate 

该文件在ipcore下是只读文件,我无法修改,可能与GUI中某一项设置有关,但我目前没有发现.因此对外暴露的 gtx_gtrxreset_in gtx_gttxreset_in 可能是无效端口.所以我建议若无法确定这两个信号是否有效,则直接驱动 soft_reset_tx_insoft_reset_rx_in 信号进行完整复位初始化最为稳妥.

在收发器外接光纤等可拔插器件时,连接回复需要复位.可驱动全局复位,也可驱动单组件复位.

复位区别

实际使用过程中,若使用Example Design,对外暴露的复位引脚主要有 `GTRXRESET` `PMARESET` `PCSRESET`
  1. GTRESET
    通过阅读ug476可知,在顺序模式下驱动 GTRXRESET 可以进行全域复位流程,驱动 GTRXRESET 还会复位有限状态机.另外,根据手册建议在 RXN/RXP 或者远端重新上线时候,复位 GTRXRESET以确保数据能够被正确的锁定.

  2. PMARESET
    使用 PMARESET 进行复位复位组件实际上与 GTRXRESET 进行复位的唯一区别就是使用 GTRXRESET 进行复位将重置组件的FSM即有限状态机.
    另外,GUI默认设置来看,使用 GTRXRESET 连接到的是各个通路的FSM,前文提到,若使用设计示例进行开发则所有的收发器TX和RX的reset均由 SOFT_RESET 控制,也就是说若使用总复位信号则会使所有统一组下的收发器TX或RX复位,若用户不能接接受这种情况,则可以使用 PMARESET 进行复位 , 示例代码中将每一组收发器的收发通道的PMA复位引出,使用该信号复位不会影响其他收发通道.

  3. PCSRESET
    单独使用数字域复位的情况较少,在文档中也只提到了在并行时钟源进行复位的时候可以选择使用PCS复位.

总结

在结构较为简单且对设备恢复工作时间没有严格要求的情况下,使用设计示例提供的soft_reset端口进行复位与初始化最为稳妥,若多个收发器同时被开启是使用且相互间独立,则更适合使用PMARESET进行复位.
在输入时钟或PLL时钟发生变化时可以直接驱动soft_reset,FSM在复位GT收发器是之前会复位QPLL/CPLL,在时钟锁定之后才会去复位收发器.

相关文章:

  • LeetCode-16.最接近的三数之和 C++实现
  • 保姆级教程:RK3588部署yolo目标检测模型
  • HarmontOS-ArkUI V2状态 !!语法糖 双向绑定
  • AI(人工智能)学习中的主要分类及其详细说明
  • Python异常处理全面指南
  • Spring Batch 专题系列(七):Spring Batch 与数据库集成
  • Apipost,前端后端测试都在用的接口设计调试工具
  • python——循环语句
  • 如何选择合适的数据类型以节省存储空间和提升查询效率?
  • Android 应用添加Tile到SystemUI QuickSettings
  • 微信小程序边框容器带三角指向
  • 力扣热题100——普通数组(不普通)
  • 广告ROI提升警报:亚马逊新功能如何重构卖家流量漏斗
  • SpringAI版本更新:向量数据库不可用的解决方案!
  • ​​eBay东南亚爆单密码:72小时交付计划如何重构厦门仓+东南亚供应链?​
  • SpringAI+DeepSeek大模型应用开发——1 AI概述
  • 云游戏盒子的硬件设计与趋势分析
  • (3)VTK C++开发示例 --- 旋转的锥体
  • 什么是高防服务器
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB WIFI测试 #WIFI蓝牙二合一 #RTL8733BU