aurora 64B/66B ip核设置与例程代码详解

Posted lionsde

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aurora 64B/66B ip核设置与例程代码详解相关的知识,希望对你有一定的参考价值。

转自:https://blog.csdn.net/u014586651/article/details/84349328

1.概述

                  本文是总结aurora 64B/66B ip的学习成果。主要是从ip核的设置与ip的例程代码两方面来介绍aurora的使用情况。

2.参考文档

               《pg074-aurora-64b66b》

               《ug476_7Series_GTX_GTH_Transceivers》

3.Aurora 64B/66B ip设置

                本例程使用环境:

                编译环境:vivado 2017.4

                选用FPGA:xc7k325t-2ffg900i

4.IP设置界面简介

               下面是IP设置情况,重点部分我会打框提醒。

 

       4.1 IP第1页情况

              本页主要是设置aurora的速率参数。

               1)line rate:线速率,即aurora的速率,(注意:不同的FPGA型号支持的最大速率不同,可参考ug476);

               2)GT refclk:gtx的参考时钟,这个时钟根据线速率设定,

                     gt_refclk=line_rate÷20。也可在ug476中查表;

               3)Init clk:初始化时钟频率,对7系列FPGA默认为50MHZ;

               4) GT DRP clk :GT的DRP时钟,只有7系列FPGA有,默认为100MHZ;

               5)Dataflow mode :数据流模式,根据需要选择;

               6)本页其他设置默认即可,若想了解可参考《pg074》。

 

                                                                                     图 1 IP第一页

 

        4.2  IP第2页情况

                 本页主要是设置aurora的GT使用情况。

                  1)Lanes:使用的GT线数;

                  2)Lane assignment:GT线的分布情况;

 

                                                                                                             图 2 IP 第2页

          4.3 IP第3页情况

                 本页主要是共享逻辑的设置,包含在ip核中,还是包含在外部例程中。这个根据需要自行设置即可,不影响aurora的性能。

 

                                                                                                图 3 IP第3页

 

5. Aurora的例程情况

         5.1  例程代码的生成

                在生成的ip核上,鼠标右键选择open example design 即可打开例程。

 

                                                                                              图 4 例程生成位置

        5.2  例程代码的情况

        5.2.1  整体情况

                  从整体上看一个例程里面的顶层下面有6个模块。我们可以分为两组情况:

                  通常不需要修改的模块:

                  1)aurora_64b66b_0_support;

                  2)aurora_64b66b_0_rst_sync_exdes;

                  3)aurora_64b66b_0_EXAMPLE_AXI_TO_LL;

                  4)aurora_64b66b_0_EXAMPLE_LL_TO_AXI;

                  通常需要修改的模块:

                  1)aurora_64b66b_0_FRAME_CHECK;

                  2)aurora_64b66b_0_FRAME_GEN;

 

                                                                     图 5  例程代码整体情况

                其层次结构如下图所示:

 

                                                               图 6 aurora例程子程序层次框

          5.2.2  aurora_64b66b_0_support 模块

                     support模块是aurora的主要支撑模块,若不特殊需要,这个模块可以全部引用。他主要是包含以下4个部分内容:

                     1)gt_common_support:gt的公共支撑部分,主要是各种时钟的处理,本质上是一个PLL,可以不变,原班引用;

                      2)aurora_64b66b_0_CLOCK_MODULE:这个时钟模块,主要是将aurora的参考时钟通过分频,生成user用户端使用的时钟。本质上是一个PLL,可以不变,原班引用;

                      3)aurora_64b66b_0_SUPPORT_RESET_LOGIC:aurora的复位逻辑,可以不变,原班引用;

                      4)aurora_64b66b_0:这个即生成的aurora的IP核,是必不可少的一部分。

 

                                                 图 7  aurora_64b66b_0_support模块的情况

           5.2.3  aurora_64b66b_0_rst_sync_exdes模块

                     aurora_64b66b_0_rst_sync_exdes模块是aurora的同步复位模块,不用修改,直接引用即可。              

            5.2.4  aurora_64b66b_0_EXAMPLE_AXI_TO_LL模块

                       aurora_64b66b_0_EXAMPLE_AXI_TO_LL模块是将AXI接口接收到的数据,转换为用户可识别的数据,输出给LocalLink interface。不用修改,可以直接引用。

             5.2.5  aurora_64b66b_0_FRAME_CHECK模块

                        aurora_64b66b_0_FRAME_CHECK模块是aurora的帧格式检查模块,主要是将输入信号通过判断对比最初的信号,来判断是否有输入错误。最后返回一个错误计数DATA_ERR_COUNT。当然在实际用于时,这个模块需要做改变,即这就是我们需要修改的aurora的RX模块。输入信号不变,数据处理过程根据需要改变。

CHECK模块的信号为:

 

 

 

 

                                                                                             图 8   接收模块的信号接口

            5.2.6   aurora_64b66b_0_EXAMPLE_LL_TO_AXI模块

                        aurora_64b66b_0_EXAMPLE_LL_TO_AXI模块是将用户输入的数据(即输出数据)调整到AXI接口的数据。是数据格式的调整,不用修改,直接引用即可。

 

              5.2.7  aurora_64b66b_0_FRAME_GEN模块

                         aurora_64b66b_0_FRAME_GEN模块是aurora的帧生成模块,换句话说,这个模块是数据生成模块。它主要是产生随机数,然后拼成aurora协议格式的数据,然后输出来给aurora_64b66b_0_EXAMPLE_LL_TO_AXI模块,送入AXI接口。

本模块在实际运用中需要根据自己需求情况,更改输出的数据。这也是FPGA的数据发送模块及TX模块。

 

                                                                                   图9   发送模块的信号接口

6.  Aurora收发时序

           6.1  数据发送时序

                  发送时序主要信息如下:

                  1)只有在tvalid与tready同时有效时,发送的数据才有效;

                  2)Tkeep信号在tlast信号时才有效;

                  3)在一组数据发送过程中可以设置暂停位。

 

                                                                                           图10   数据发送时序

              6.2  数据接收时序

                     接收时序主要信息如下:

                     1)只有在tvalid有效时,接收的的数据才有效;

                     2)Tkeep信号在tlast信号时才有效;

                     3)在一组数据接收过程中可能有暂停位。

 

 

                                                                                                  图 11    数据接收时序

              6.3  Aurora传输格式

                     Aurora的数据传输格式是地位在前,高位在后,如下所示:

 

                                                                                                   图12    AXI4 的数据格式
---------------------
作者:风中月隐
来源:CSDN
原文:https://blog.csdn.net/u014586651/article/details/84349328
版权声明:本文为博主原创文章,转载请附上博文链接!






以上是关于aurora 64B/66B ip核设置与例程代码详解的主要内容,如果未能解决你的问题,请参考以下文章

Aurora 64B/66B 协议介绍

Quartus II 与ModelSim-Altera联合仿真FFT IP核之FFT IP调用与例程数据验证-lab1

GTX_IP核实现SMA口发送数据IP核配置

spring mvc 简介与例程

64B/66B编码

FPGA实战操作 -- PCIe总线(例程设计分析)