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,在时钟锁定之后才会去复位收发器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值