FPGA设计心得(4)Aurora IP core 的定制详情记录
文章目录
- 写在前面
- IP核定制页面预览
- IP核定制详解
- lane width
- Line Rate
- GT REFCLK (MHz)
- INIT clk (MHz)
- DRP clk (MHz)
- Dataflow Mode
- Interface
- Flow control
- Back Channel
- GT selection
- 写在最后
- 同行邀请
- 参考资料
写在前面
很久没有在夜里写博客了,现在是凌晨3点多,写这篇博客,夜真的太静了,这种感觉是真的好。为什么要在夜里写博客呢?
原因是通过这一段时间的学习,我发现白天我真的特别容易分心,夜里状态极好(读研期间养成的臭毛病之一),当然并不是推荐这种做法,毕竟以后工作还是白天,只是有特别需要完成的任务时(导师给的项目代码,但看懂还是需要自己通过定制类似的IP核实践一下,触类旁通),坚持一下还是很有必要的。
这篇博客讲的是Aurora IP核的定制问题,说实话,IP核的定制谁都会,随便选选都能用,但是我觉得还是有必要认真去了解特定的IP核定制,特别是其重要细节的选择,只要了解了,才能进行后面的仿真。
废话不多说,开始吧。(声明:有耐心的推荐阅读数据手册)
对了,这是上一篇博客,有助于这一篇博客的理解。
FPGA设计心得(3)Aurora IP core 的理论学习记录
IP核定制页面预览
第一页,物理层以及链路层信息选择:
第二页,选择IP核使用的GTX 通道以及那个MGT BANK等:
第三页:共享逻辑的位置,例如时钟以及复位等逻辑,是在核内还是在例子工程内(一般较为复杂的IP核,赛灵思会提供例子程序供学习以及修改作为自己的工程),为了灵活使用时钟等,个人倾向于在例子内:
IP核定制详解
lane width
物理层参数之一,数据手册给出的解释是:
选择该IP核中使用的收发器(Transceiver)的字节宽度。此参数定义收发器的TXDATA / RXDATA宽度以及用户接口数据总线的宽度。 有效值为2和4。
默认值为2;
对于用户接口,我们在定制页面给出对比:
当lane width为2时:
当lane width为4时,
Line Rate
在0.5(Gb / s)到6.6(Gb / s)的有效范围内输入以吉比特/秒为单位的线速率值。
线速率这个参数值是未编码的比特率,通过串行链路以该比特率传输数据。 该核的总数据速率为:
(0.8 x 线速率)x Aurora 8B / 10B通道数。
线速率受所选设备的速度等级和封装的限制(也即不同的设备以及封装等具有不同的限速率)。
GT REFCLK (MHz)
从下拉列表中选择收发器的参考时钟频率。 参考时钟频率取决于所选的线路速率。 为了获得最佳结果,请选择可以实际应用于目标设备的参考时钟输入的最高速率。
默认值为:125.000 MHz
INIT clk (MHz)
字面意思是初始化时钟,也没啥好解释的,Aurora协议中需要初始化的东西很多吧,默认时钟50M,给就完事了。
DRP clk (MHz)
DRP的英文应该是dynamic reconfiguration port,意思是动态可重配置端口,那么drp clk到底是个什么呢?在IP核中用来干嘛的?
你听说过在线配置属性吗?(例如:GTX可以工作在不同线速率,用户可能需要通过更改内部属性来实现,这就需要DRP时钟了。)也许做过GTX/GTH的朋友,有意无意都听说过,那这个drp clk就是用于此的。(也许你不需要用,但是如果例子程序需要给的话,给相应的时钟就好了。)
默认时钟也为50M。
Dataflow Mode
字面意思是:数据流模式,如下定制页面:
可以选择为全双工,以及只收单工,只发单工三种模式。
不必多说,如果你需要有收有发,自然全双工模式。
Interface
用户端接口,可以选择的协议格式有framing以及streaming,博文:Aurora IP core 的理论学习记录就介绍过。
streaming接口格式比framing格式要简洁的多。
选择用于核的数据路径接口的类型。 选择Framing使用AXI4-Stream接口,该接口允许封装任何长度的数据帧。 选择流传输则使用简单的AXI4-Stream接口通过Aurora 8B / 10B通道流传输数据。
Flow control
选择所需的选项以将流量控制添加到核。
用户流控制(UFC)允许应用程序通过Aurora 8B / 10B通道发送简短的高优先级消息。
本机流控制(NFC)允许全双工接收器调节发送给它们的数据的速率。
立即模式允许将空闲代码插入数据帧内,
而完成模式仅将空闲代码插入完整数据帧之间。
当然这是针对数据路径接口格式为framing时的流控制,如果选择streaming格式,则此选项不需要。
Back Channel
仅仅对应于单工模式,字面意思是后通道,至于干啥用的,我还真不知道。
用实践来说话吧,或者提出你的见解?
可选的值为;
GT selection
GT selection需要配置的有两个东西,一个是lanes,也就是通道数量,使用几个通道,就像去一个目的地,有很多条路,你需要选择你的车队分别做哪几条路线。
事实上,在FPGA中,GT Bank是有限的,不同类型的FPGA以及不同的封装等都有不同数量的MGT Bank,而一个MGT BANK上有4个通道叫channels,在这里叫lanes,四个channels加上一个共有的QPLL,组成一个Quad。
以前也讲过这东西:
Aurora IP core 的理论学习记录
GTX/GTH 物理层结构分析
如下:
这里就是配置这些的。
最后是GT Refclk1和Gt Refclk2,选择参考时钟,例如上图GTXQ0,是不是就是选择GTX中的QPLL了呢?
我想应该是的,这样的话,时钟质量是最好的。(当然还需要斟酌)。
我想定制过程大概就这样结束了,后面紧接着要进行仿真,通过仿真去更清楚的认识Aurora传输数据的过程。
先使用简单的streaming用户接口格式,在使用framing用户接口数据格式,这是很有必要的,因为实战中我发现还是很多都自用framing。
写在最后
在定制完成IP核后,就可以生成IP核了。
等综合完成之后,
通过右击定制的IP核可以选择声称该例子程序,这是我们程序设计的起点。下一篇博客见!
同行邀请
不仅是一个群,同时也是交个朋友。
参考资料
Aurora 8b/10b IP 数据手册
FPGA设计心得(3)Aurora IP core 的理论学习记录
GTX/GTH物理层结构分析
FPGA设计心得(4)Aurora IP core 的定制详情记录相关推荐
- FPGA设计心得(6)Aurora IP核例子简析与仿真(framing版)
文章目录 背景 定制framing接口的IP核 生成示例工程并分析 GEN模块分析 CHECK模块分析 示例工程仿真 总体仿真 发送模块仿真 接收模块仿真 参考资料 交个朋友 写在最后 工程分享 背景 ...
- FPGA设计心得(5)Aurora 例子工程分析与仿真实例分析(streaming版)
文章目录 背景 例子工程预览 例子程序用户模块逻辑分析 收(CHECK) 发(GEN) 例子程序仿真文件分析 写在最后 工程分享 参考资料 交个朋友 背景 熬夜写完了上两篇博客: Aurora IP ...
- FPGA零基础学习:IP CORE 之 PLL设计
FPGA零基础学习:IP CORE 之 PLL设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...
- FPGA零基础学习:IP CORE 之 FIFO设计
FPGA零基础学习:IP CORE 之 FIFO设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子 ...
- FPGA零基础学习:IP CORE 之 RAM设计
FPGA零基础学习:IP CORE 之 RAM设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子. ...
- FPGA设计心得(3)Aurora IP core 的理论学习记录
文章目录 Aurora IP核介绍 整体介绍 大小端 Framing or Streaming User Interface framing 接口介绍 framing 结构 几个frame的例子 st ...
- FPGA设计心得(13)aurora的线速率及其用户时钟之间的关系?
文章目录 长话短说 aurora的用户时钟频率是多少? aurora的用户时钟的来源? 总结 长话短说 由于工作很忙,所以一直没有时间来胡乱写写,需要注意的是文章内容不涉及任何秘密,纯粹来源自公开的数 ...
- FPGA设计心得(11)关于FIFO IP核使用的一点注意事项
文章目录 前言 位宽转换 分布式ram资源的FIFO不能变换位宽 Block RAM资源可以变化位宽 Builtin FIFO资源不能变化位宽 FIFO 安全电路 FIFO消耗资源 输出延迟 Read ...
- FPGA设计心得(9)基于DDS IP核的任意波形发生器设计
博文目录 写在前面 正文 设计要求 IP核配置 定制输出数据位宽 定制相位位宽(或频率分辨率) 输出频率 输出正余弦选择以及数据格式 其他设置 电路设计 行为仿真 参考资料 交个朋友 写在前面 数据手 ...
最新文章
- 代替国足踢决赛?马宁当选卡日大战第四官员
- python简单程序代码-简单python代码
- js事件之event.preventDefault()与event.stopPropagation()用法区别
- Reference, List, and Completion of javascript
- 前端做后台管理系统有前途吗_关于后台管理系统前端项目的思考
- 最大公约数(Greatest Common Divisor)
- python计算思维的概念_用Python学计算思维turtle详解
- matlab2c使用c++实现matlab函数系列教程-rand函数
- windows 安装 mysql5.7.17
- 【C#语言学习】学习一门语言
- TimeLine下载地址
- double类型的数值转为小数点2位
- 二级计算机excel以宏保存,excel宏保存 设置宏保存位置的操作方法
- 软考中级 真题 2018年下半年 系统集成项目管理工程师 基础知识 上午试卷
- 观察 | 经济学诺奖的启示:金融科技的核心任务是什么?
- ui-bootstrap-tpls 中文 现在还不全的啊~,组件太多了,有空就更新
- python实现视频压缩
- 强制关闭无法关闭的进程的方法
- 仓储管理之计价方法——个别计价法
- 如何组装深度学习的计算机
热门文章
- VS2010数据库项目不能正常工作解决方案
- [ZZ]好的测试应该具备哪些特质?
- php 去除中英文空格,php去除字符串首尾中英文空格程序-PHP源码
- 单片机怎么跳出循环_自学单片机第二十七篇:矩阵按键的硬件测试
- a b c d java_java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中...
- float gpu 加速_tensorflow - GPU 加速
- findwindowex子窗口类型有哪几种_光学玻璃有哪几种类别?一文告诉你
- oracle exp导出分区表,【实验】【PARTITION】exp导出分区表数据
- ESP32 One-Wire驱动功能
- 智能车竞赛技术报告 | 单车拉力组-大连海事大学-同舟拾队