最近有个项目用到Xilinx公司KU系列的板子开发SATA3.0接口与SSD进行高速数据传输。鉴于工程有点复杂,借此博客做些记录,也供大家共同进步。
Xilinx公司有提供了GTP、GTH、GTX、GTZ、GTY多种高速串并转换口,在建立Vivado工程选择芯片具体型号时就可以看到各个芯片所具有的资源数量。我使用的是xcku060-ffva1156-2-e型号具有28个GTHE3可调用高速串并转换收发器。
万事开头难,首先在Xilinx官网上找到了pg182与ug576支持文档,又在AD巨头提供的资源中找到了一个用在AD9371例程中调用GTHE3的开源IP Core,文末会给出资源链接。
之前使用过GTP,所以深知此类IP Core的Example Design的重要性。果然在pg182中就花费了大片篇幅讲解Example Design中提供的模块使用方法。废话不多说,分析如下:
1. Reset Controller Helper Block
该模块主要用于简化复位与初始化串并收发器的工作。该模块包含三个状态机:发送复位,接收复位与全复位。发送与接收是相互独立的,既可以由外部信号触发控制也可以由全复位状态机触发控制。
发送复位与接收复位都可以选择1、复位相关的PLL与相关数据链路2、只复位相关的数据链路。在复位成功后各自有一个User Indicator信号应该置高。
2. Transmitter User Clocking Network Helper Block
该模块用于管理单个或多个收发器中发送通道的TXUSRCLK与TXUSRCLK2时钟。内部会例化BUFG_GT原语(带分频功能的全局时钟Buffer)。
3. Receiver User Clocking Network Helper Block
该模块用于管理单个或多个收发器中接收通道的RXUSRCLK与RXUSRCLK2时钟,内部也会例化BUFG_GT原语。
4. User Data Width Sizing Helper Block
该模块用于简化用户接口与收发器数据接口之间的对接过程。每个收发通道的TXDATA与RXDATA都为128bits,未配置使用的位则被tied off或悬空。该模块分为发送与接收两部分,模块实现都是用wire型信号assign实现,未使用组合逻辑或时序逻辑
4.1 Transmitter Module
该模块中的 gtwiz_userdata_tx_in信号宽度等于用户数据宽度*使能通道数,经过转换,该信号的最低有效位对应在XY网格位置中最低通道的最低有效位。在用户数据宽度为20、40、80、160bits时,还负责驱动每个收发器的TXCTRL0与TXCTRL1端口中的某些位,并处理解缠绕情况。但在其他位宽的情况中则不由该模块进行驱动上述端口。
4.2 Receiver Module
同发送模块
5. Transmitter Buffer Bypass Controller Helper Block
在发送通道的buffer未启用的情况下,该模块用于自动处理buffer bypass,处理完成后会提供一个done信号与一个error信号。
6. Receiver Buffer Bypass Controller Helper Block
同发送模块
7. Transceiver Common Primitive
用于例化Transceiver Common原语模块,可以放在IP CORE之内或之外,可以使用一个Transceiver Common模块配置多个Transceiver Channel模块(共享模式),但该使用方法对新手不友好,若想使用,可以参照AR#65228
8.Design Flow Steps
IP Core参数设置界面分为Basic、Physical Resource、Optional Features、
Structure Options,此处不再详细分析,后续再行细说。
9. Constraining the Core
在Hierarchy界面可以看到一个在IP Core之外的xdc约束文件,其中有对GTHE3启用的参考时钟进行周期约束和位置约束,对free run clock进行周期约束,还将需要用户约束的信号以注释的方式提前给出,
在IP Core内部还可以看到一个*_0.xdc文件,其中对启用的GTHE3通道的位置做了约束,其他是一些set_false_path的约束,不懂~
pg182 https://www.xilinx.com/support/documentation/ip_documentation/gtwizard_ultrascale/v1_7/pg182-gtwizard-ultrascale.pdf
ug565 https://www.xilinx.com/support/documentation/user_guides/ug576-ultrascale-gth-transceivers.pdf
AD公司FPGA支持库 https://github.com/analogdevicesinc/hdl/tree/master