解释一下Vivado IP协议中的Shared Logic in Example 与 Shared Logic in Core
首先,什么是Shared Logic?字面意思很好理解,就是共享逻辑,主要包括时钟、复位等逻辑。当选择Shared Logic in core时,这些共享的逻辑就会被集成到IP的内部,也就是说这些逻辑是不能被修改的。当选择Shared Logic in example design时,这些共享逻辑就会出现在IP的接口上,我们可以根据自己的需求进行控制,那为什么叫in example design呢?因为Vivado的IP都会提供一个example,在shared logic在example中就相当于是这些逻辑是对外开放的。
我们以JESD204B协议为例,下图显示了Shared Logic in core和Shared Logic in example design接口上的区别,可以看到,Shared Logic in core的输入接口是比较少的,因为这些时钟和复位的逻辑都被集成到了内部,但这些IP提供了这些逻辑的输出接口,我们在外面可以监测这些逻辑是否正确;Shared Logic in example design的输入接口明显要多一些,这些时钟、复位接口都需要我们自己提供,灵活性更强,当然我们可以直接参考example中的控制方式。
选择Shared Logic in example design可以在某些端口应用上在外部控制,而使用Share Logic in core是集成在内部,外部有输出接口可以检测,
下面详细介绍一下两者端口上的说明
Shared Logic in example design
时钟和重置端口:
rx_core_clk | IN | 核心逻辑时钟,是串行线性速率的1/40 |
rx_reset | IN | 核心异步复位逻辑 |
re_reset_gt | OUT | JESD物理层的接受数据路径复位输出,其输出连接至物理层中的接受数据路径 |
rx_reset_done | IN | JESD物理层复位完成,表示物理层已经完成接受复位过程 |
rx_aresetn | OUT | AXI_Stream总线的复位,与数据接受接口相关联 |
s_axi_aclk | IN | AXI总线的时钟,与用户接口关联 |
s_axi_aresetn | IN | AXI总线的复位,与用户接口关联 |
Shared Logic in Core
refclk_p/refclk_n | IN | 差分参考时钟输入,用于收发机的参考时钟 |
glbclk_p/glbclk_n | IN | 差分的核心逻辑时钟输入,全局逻辑时钟,引用时钟不能用于SYSREF和SYNC的同步抓取,频率上等于串行线性速率的1/40 |
s_axi_aclk | IN | AXI总线的时钟,和用户接口连接 |
s_axi_aresetn | IN | AXI总线的复位,低有效,和用户接口连接 |
rx_reset | IN | 核心异步复位逻辑 |
rx_core_clk_out | OUT | 核心逻辑输出,频率上等于线性速率的1/40 |
rx_aresetn | OUT | AXI4-Stream的复位逻辑,与RX数据接口相连接。 |
物理层的数据接口:
Shared Logic in Example Design
gt0_rx下:
gtN_rxdata[31:0] | IN | 物理层的接受数据,N=Lanes - 1 |
gtN_rxcharisk[31:0] | IN | 来自物理层的RX K码 |
gtN_rxdisperr[3:0] | IN | 来自物理层的数据不一致性错误 |
gtN_rxnotintable[3:0] | IN | RX不在8b/10b的编码表来自物理层 |
rxencommalign_out | OUT | Rx数据允许comma字符对齐发送到JESD204 PHY |
数据接受接口:
数据接受都是由Rx_core_clock提供时钟
AXI4-Stream Interface Signals 只读 | ||
---|---|---|
rx_aresetn | out | 输出异步复位 |
rx_tdata[(32*N)-1:0] | out | AXI接受数据:先接受最低有效字节中的数据,Lane0 就是rx_tdata[31:0], Lane1 就是rx_tdata[63:32] Lane2 就是rx_tdata[(N+1)*32-1:(N*32)] |
rx_tvalid | out | 输出数据有效 |
Receive Data Interface
Signal Name | Direction | Description |
rx_start_of_frame [3:0] | Out | 帧的起始边界标志位 |
rx_end_of_frame [3:0] | Out | 帧的结束边界标志位 |
rx_start_of_multiframe [3:0] | Out | 多帧的起始边界标志位 |
rx_end_of_multiframe [3:0] | Out | 多帧的结束边界标志位 |
rx_frame_error[(LANES*4)-1:0] | Out | 错误标志位,每个通道32位,4个字节,也就是每个通道对应4个字节,而每个位对应每个字节,也就是说((通道数*4)-1)是字节数也就是错误标志位的位宽。 |
rx_sync | Out | 同步请求信号,低有效,完成同步后拉高,准备接受ILA和正常数据。 |
rx_sysref | In | 只有子类1模式时才可以被选用,用来和核心时钟同步,其输入为一个TX和RX生成的SYSREF的外部设备驱动。确定性延迟的参考信号。 |