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核设置与例程代码详解的主要内容,如果未能解决你的问题,请参考以下文章