7系列高速收发器总结 GTP IP核使用篇
上一篇7系列收发器博文讲解了GTP IP核的基本配置,本文继续分析如何将它使用起来。生成IP核后打开example design,先看看工程中包含的文件结构。
顶层文件下包含了gtp ip核系统顶层文件、frame_gen以及frame_check三类模块。frame_gen和frame_check用于测试过程中的数据包产生和接收检测(由于我在配置IP核时使能了两个通道,因此工程中有两组frame_gen和frame_check模块),gen模块读发送样式,check模块则将接收到数据与本地存储样式对比,从而判断数据传输是否正确。下面截取一段gen模块内代码:
发现gen模块是通过系统函数$readmem读取gt_rom_init_tx.dat文件来初始化rom,发送数据则直接从rom中读取。虽然$readmem和initial是不可综合语句,但其功能与.mif文件初始化ROM IP核是类似的。check模块与gen模块类似,但有一点比较值得借鉴。
根据上边的注释可以看出,这个IP核在使用32bit用户数据位宽时,会发生错位现象。因此发送数据时所有comma码要放在32bit数据四个字节的同一字节中,最常见的是均放在最低字节,这样接收端可以根据控制字指示信号为1的位置找出错位情况,进而读数据进行重新对齐。比如当rxctrl == 4'b1000,则错误情况和重对齐方式如下:
d0'代表上一个数据的最低字节部分。其他错位情况的重对齐方式同理,现在看下check模块中根据sel信号对接收数据重对齐的逻辑。
可以看出重对齐方式与刚才讲的方法一致。因此当测试完毕后,去除frame_gen和frame_check模块并将gt数据端口开放到顶层后,接收端用户侧也要有类似的逻辑防止数据错位。
再来看下顶层文件中关于原语的使用:
IBUFDS是差分信号输入缓冲器,用来将差分信号变为单端信号。而BUFG是全局缓冲,其输出到达FPGA内部CLB IOB RAM的时钟延迟和抖动是最小的,从而使系统工作稳定。
最后,为保证最基本的通信功能,还需做三件事:
1. 去除gen和check逻辑块,并将用户数据端口开放到工程顶层;
2. 接收端用户侧例化数据重对齐模块保证接收正确;
3. 例化PLL产生100MHz时钟信号作为GTP子系统工作时钟;
7系列高速收发器总结 GTP IP核使用篇的更多相关文章
- 7 Series GTP IP核使用总结 IP核配置篇
FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级.本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做些简单的总结,以备后续回顾重用.本文是 ...
- xilinx IP核配置,一步一步验证Xilinx Serdes GTX最高8.0Gbps
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010161493/article/details/77658599 目录(?)[+] 之前 ...
- Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟篇
xilinx的7系列FPGA根据不同的器件类型,集成了GTP.GTX.GTH以及GTZ四种串行高速收发器,四种收发器主要区别是支持的线速率不同,图一可以说明在7系列里面器件类型和支持的收发器类型以及最 ...
- 从Xilinx FFT IP核到OFDM
笔者在校的科研任务,需要用FPGA搭建OFDM通信系统,而OFDM的核心即是IFFT和FFT运算,因此本文通过Xilinx FFT IP核的使用总结给大家开个头,详细内容可查看官方文档PG109.关于 ...
- 【转载】xilinx 高速收发器Serdes深入研究
此篇文章深入浅出介绍了关于高速串行收发器的几个重要概念和注意事项,为方便知识点复习总结和后续查阅特此转载,原文标题及链接为:xilinx 高速收发器Serdes深入研究 - CSDN博客 http ...
- 如何将自己写的verilog模块封装成IP核
如何将自己写的verilog模块封装成IP核 (2014-11-21 14:53:29) 转载▼ 标签: 财经 分类: 我的东东 =======================第一篇========= ...
- Vivado使用技巧(二):封装自己设计的IP核
由 judyzhong 于 星期五, 09/08/2017 - 14:58 发表 概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原 ...
- Vivado使用技巧:封装自己设计的IP核
概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线.IP核一部分来自于Xilinx ...
- 基于Virtext6平台的GTX IP核基本设置说明
本工程基于以下条件使用: 板卡:DBF板v3.0 芯片型号:Virtex6 315T ISE版本:14.7 IP核版本: v6_gtxwizard : 1.12 一.IP核配置进行流程 第一页配置:线 ...
随机推荐
- spring的基本使用
Spring的基本使用ioc,今天主要给大家说明了解决强耦合的联系,并且,注入的基本使用 Java里面的强耦合并且讲了spring是如何解决强耦合的第一种方式使用工厂模式,用的是反射,第二种方式是sp ...
- 使用nginx 的反向代理 给 kibana加上basic的身份认证
第一步准备工作 准备用户名密码: 更改host文件 第二步,安装nginx ubuntu安装Nginx之后的文件结构大致为:所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/et ...
- 系统 TIME_WAIT累积与端口耗尽的问题
调整内核参数 net.ipv4.tcp_tw_reuse = net.ipv4.tcp_tw_recycle = 这两个参数可以让 tcp 连接回收.再利用. 摘录 『HTTP 权威指南』page ...
- java基础只关键字final
final关键字简述 final关键字是在编写java程序中出现频率和很高的关键字,如果想要更好的编写java程序,那么掌握final关键字的运用是非常必要的.让我们先看一下final关键字可以修饰的 ...
- Neo4j学习笔记(2)——数据索引
和关系数据库一样,Neo4j同样可以创建索引来加快查找速度. 在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行. 在Neo4j中,其索引是通过属性来创建,便于快速查找 ...
- vscode运行前端代码
vscode 可安装静态web服务器 Live Server用于运行前端代码,方便调试.最新的 Live Server已支持php动态页面. 安装方法是,点击左侧第五个图标,打开"扩展&q ...
- Android 根据字符串动态获取资源ID
1.常用方法public int getResId(String name,Context context){ Resources r = context.getResources(); int id ...
- Python基础-*args和**kwargs魔法变量
在学习Python时,总会遇到*args和**kwargs这两个魔法变量,那么它们到底是什么? 首先,并不是必须写成*args和**kwargs.只有变量前面的*(星号)才是必须的,你也可以写成*va ...
- python检测404页面
某些网站为了实现友好的用户交互,提供了一种自定义的错误页面,而不是显示一个大大的404 ,比如CSDN上的404提示页面如下: 这样虽然提高了用户体验,但是在编写对应POC进行检测的时候如果只根据返回 ...
- Java集合干货——ArrayList源码分析
ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...