GTX/GTH QPLL CPLL学习之Aurora
目录
1 基础知识
2 Aurora 使用过程中报错
1 基础知识
Xilinx的7系列FPGA随着集成度的提高,其高速串行收发器不再独占一个单独的参考时钟,而是以Quad来对串行高速收发器进行分组,四个串行高速收发器和一个COMMOM(QPLL)组成一个Quad,每一个串行高速收发器称为一个Channel。
QPLL和CPLL的区别,在于两者支持的线速率不同,对于CPLL来说,支持的线速率位1.6GHz到3.3GHZ之间,而对于QPLL来说,GTX支持的线速率分两档,Lower Baud支持5.93GHz~8.0GHz,Upper Baud支持9.8GHz~12.5GHz,对于GTH则不分档位,支持的线速率为8.0GHz~13.1GHz。
Xilinx的7系列FPGA根据不同的器件类型,集成了GTP、GTX、GTH以及GTZ四种串行高速收发器,四种收发器主要区别是支持的线速率不同,下图可以说明在7系列里面器件类型和支持的收发器类型以及最大的收发器数量。
以XC7K325T为例,GTX在FPGA内部如下图所示:
对于每一个串行高速收发器,其包含了发送部分和接收部分,内部结构如下图
发送端和接收端功能独立,均由PMA(Physical Media Attachment,物理媒介适配层)和PCS(Physical Coding Sublayer,物理编码子层)两个子层组成。其中PMA子层包含高速串并转换(Serdes)、预/后加重、接收均衡、时钟发生器及时钟恢复等电路。PCS子层包含8B/10B编解码、缓冲区、通道绑定和时钟修正等电路。
GTX发送端处理流程:首先用户逻辑数据经过8B/10B编码后,进入一个发送缓存区,该缓冲区主要是PMA子层和PCS子层两个时钟域的时钟隔离,解决两者时钟速率匹配和相位差异的问题,最后经过高速Serdes进行并串转换,有必要的话,可以进行预加重、后加重。值得一提的是,如果在PCB设计时不慎将TXP和TXN差分引脚交叉连接,则可以通过极性控制来弥补这个设计错误。接收端和发送端过程相反,相似点较多,这里就不赘述了,需要注意的是RX接收端的弹性缓冲区,其具有时钟纠正和通道绑定功能。
如果用户需要使用其他Quad的参考时钟源来作为当前Quad的参考时钟,在满足下面三个条件的情况下可以使用:
1、只能使用当前Quad上方的Quad的参考时钟;
2、只能使用当前Quad下方的Quad的参考时钟;
3、一个Quad的参考时钟源不能驱动超过3个Quad的收发器(只能驱动当前Quad和上下方相邻两个Quad);
参考网址:
https://cloud.tencent.com/developer/article/1528849
2 Aurora 使用过程中报错
从这个错误里,提示我们两点:
A)
在配置IP核第二页的时候,其实就是每个通路分配引脚的过程。这里选择通路的时候,要和引脚分配严格对应。否则,生成bit文件可能不会报错(在只使用一个bank接口的时候,LAN就选错了,但是也顺利生成了bit文件)。对应方式如下:
GTHQ8 对应bank 118这个quad,上图对应的就是bank118 的MGTX1。
B)
QPLL时钟驱动该QUAD以外的GTX模块报错。虽然错中提示中让添加时序约束,把错误降为warning。但是,也说明了不建议用,同时也尝试过,不能正常生成bit文件。
差分时钟可以最多驱动12个GTX正常工作,但是在驱动时要注意GTX_COMMOM模块,即一个GTX_COMMON最多可以驱动同一个QUAD上的4个GTX_CHANNEL,如果说要驱动超过四个或者其他QUAD上的GTX,必须要生成新的GTX_COMMON模块,来保证其他QUAD上的GTX可以正常工作。
这是检查了一下工程发现了问题,主核的Aurora IP核中包含了GTX_COMMON模块,但是从核GTX_COMMON模块在IP核的外面被注释掉了,因为在之前的设计中,两个IP核的四个GTX在同一个BANK中,所以在从核的顶层将GTX_COMMOM模块删掉了,所以该模块产生的信号(gt_qpllclk_quad1_in_i和gt_qpllrefclk_quad1_in_i)采用了主核产生后外接到从核的工作模式。
发现问题后,将从核的GTX_COMMON模块添加到从核的顶层,并且将gt_qpllclk_quad1_in_i和gt_qpllrefclk_quad1_in_i这两个信号从外接改成了从核的GTX_COMMON模块产生后再接到IP核的方式,问题解决。
参考网址:https://blog.csdn.net/weiweiliulu/article/details/107513829
根据2 修改代码
修改Xilinx自带IP核源码的方法:
https://blog.csdn.net/weiweiliulu/article/details/107490705
代码结构如下:
Aurora_8b10b 是最顶层,看有个链接,有人说顶层更改一些IO端口以后,更改IP核报错,为了躲避这个风险,就没有更改最顶层的IO端口。所以在Aurora_8b10b_8_core这个文件里删除端口上的公共时钟。
调用 _core 的时候common的信号没用到。这些信号在 _core里面自己生成。
Aurora_8b10b 中更改: 定义下面5个公共端口为 wire 型,同时初始化为0(没有初始化为0 编译最终结果会报严重警告,端口未连接).
Aurora_8b10b_8_core 中修改:
端口上删除 公共模块中 的5个信号,代码中定义为wire型。把代码中原本需要外部输入的信号变换成用gt_common输出。gt_common的输入有复位 和initclk
core 代码的 aurora_8b10b_8_GT_WRAPPER 中添加这一部分,具体不会的抄第一个核的代码
添加gt_common模块。IP核源码中不会添加.V 文件,所以,gt_common直接在改模块中添加,不做成独立的.V
GTX/GTH QPLL CPLL学习之Aurora相关推荐
- zynq中mgtx应用_Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念
本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致文章过于冗长.所以单独写一篇基本概念的介绍,基于Xilinx 7系列的GTX ...
- 高速串行总线系列(3)GTX/GTH 物理层结构分析
文章目录 前言 Transceiver总览 MGT BANK QUAD GTX CHANNEL TRANSMITTER FPGA TX Interface TX 8B/10B Encoder TX G ...
- Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念
本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致文章过于冗长.所以单独写一篇基本概念的介绍,基于Xilinx 7系列的GTX ...
- FPGA高速收发器GTX/GTH关于外部参考时钟MGTREFCLK的设计
FPGA高速收发器GTX/GTH关于外部参考时钟MGTREFCLK的设计 0 背景 最近在调试多片FPGA基于GTX高速收发器的芯片间接口通信,FPGA型号为Kintex7-325T.硬件板卡是直接 ...
- FPGA芯片的GTX/GTH/GTY/GTP/GTZ/GTM高速信号有什么区别?
GTX/GTH/GTY/GTP/GTZ/GTM有什么区别? 首先需要明确的一点是,他们都是高速收发器,传输速率不同,速率大小为: GTP < GPX < GTH < GTZ < ...
- (41)FPGA面试技能提升篇(FC接口、GTX/GTH介绍)
1.1 FPGA面试技能提升篇41(FC接口.GTX/GTH介绍) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇41(FC接口.GTX/GTH介 ...
- GTX/GTH/GTY/GTP/GTZ/GTM有什么区别?
GTX/GTH/GTY/GTP/GTZ/GTM有什么区别? 首先需要明确的一点是,他们都是高速收发器,只是传输速率同,速率大小为: GTP < GPX < GTH < GTZ < ...
- SerDes,GTP , GTX , GTH理解
SerDes:是串行/解串器,也可以叫串行收发器 GT(包括GTX.GTH和GTP):是Xilinx在高速SerDes的基础上,增加了其他模块,如8b/10b编解码等(具体可以看Xilinx相关文档, ...
- GTX/GTH的使用心得
(想直接看GTX介绍的可略过以下文字)= = ! 记得前几个月最开始接手PCI-E传输图像的节点时,内心还是比较反对的,因为之前买了一本PCI-Express 体系结构导读(强烈推荐),对PCI-e有 ...
最新文章
- bat、sh等批处理文件(脚本文件)
- 可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug
- 大话数据结构18:最小生成树算法
- mysql取得列类型_Mysql列类型
- nssl1446-小智的旅行【dp】
- Ubuntu14.04 LTS(64bit)彻底解决matplotlib中文乱码问题
- python自学行吗-有编程基础Python自学行吗?
- 【CCCC】L3-005 垃圾箱分布 (30分),Dijkstra跑n遍 = 多源最短路,emm
- 网站点击数字翻页html代码,html5数字翻页时钟代码
- 进制转换方法总结——摘自百度
- 北大青鸟python教程_北大青鸟python课程六大优势
- 自定义微信小程序TabBar
- Redis异地多活原理简介
- 集合之比较接口器+Map家族的HashMap+LinkedHashMap+Hashtable+ConcurrentHashMap
- NODE安装和使用说明,报错处理方法
- 【图形学】计算机图形学-练习题7
- 快速收集资料的一种方法
- 华语乐坛到底姓什么?------酷狗篇
- 2019年全网最全的新手SEO教程
- 慕课网 (IT技能学习平台)
热门文章
- 森林消防智慧预警:火灾监测 Web GIS 可视化平台
- 今天收到了WinZip发来的免费License
- 编写Android app更新模块遇到的问题分析与总结
- CentOS 7视频音频解码器问题
- ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not foun Python GDAL
- 图文详解MOS管的米勒效应
- 紫光输入法导致系统故障
- 协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)
- 飘零网络验证-商业版3和金盾版1.5-研究中
- 从零开始制作U盘启动工具