7 Series GTP IP核使用总结 IP核配置篇
FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级。本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做些简单的总结,以备后续回顾重用。本文是我在读ug482 pg168 官方文档和一些网络资源后的一些个人见解,希望对有需要的朋友有所帮助。我们来逐页分析下IP核配置先导中内容:
1 GT Selection:

我用的是Atrix-7系列FPGA芯片,只能使用速率较低的GTP 收发器,所以类型无法选择。GTP收发器在我这个芯片中最高线速率可达6.6Gbps,具体最大数值会根据器件速度等级和封装有所不同,读者可自行查阅Data Sheet。很多Xilinx IP核都有Shared Logic,我理解是一些重用的部分,当多个地方需要用到这些资源时,将其放置在example design中可以节约硬件资源。
2 Line Rate,RefClk Selection

这一页比较重要。高速收发器支持多种标准协议,可以选择一个标准协议,这样后续的选项均已配置好了,然后根据自己的需求改动。此处选择Aurora 8b10b single lane 4byte。收发器发送和接收通道相互独立,可以选择不同的线速率和编码格式,此处均选择一个常见的较低速率3.125Gbps用于功能验证,参考时钟为125M。注意参考时钟为收发器输入时钟,频率必须与开发板上为GTP提供时钟的晶振一致。官方文档中关于外部参考时钟使用示意图如下:

GTP有两个参考时钟输入端口,经差分-单端转换后通过两个PLL产生收发器发送和接收时钟。若TX和RX线速率一致使用同一个PLL产生时钟,否则需要使用两个不同的PLL。开发板中差分晶振连接GTPREFCLK0,且收发速率相同,故PLL Selection TX和RX均选择PLL0,TX Clock Source选择REFCLK0。这里我使用到两个收发器,根据开发板原理图和数据手册选择GTP_X0Y4和GTP_X0Y5.最后使能收发器内部的PRBS生成器和检测器,便于测试了链路性能。
3 Encoding and Clocking

GTP收发器内部处理带宽只有2byte,而GTX等速率更高的收发器是4byte,此处外部数据接口位宽选择32bit确保后期收发器使用部分的经验也适用于GTX等收发器。编码方式采样8B/10B编码,这是个比较重要的概念。这一编码方式最主要的目的是“直流平衡”,即根据特定的编码表实现数据传输过程中比特“0”和比特“1”的数量基本一致,且减少连0和连1的情况。编码后的数据流具有较多的跳变,有助于接收端时钟数据恢复(CDR)。DRP/System Clock Frequency是动态重配置或系统工作时钟,通过DPR可以让设计者根据所选线速率和定义的协议实时调整收发器参数,本人没有用到,新手就不要碰了。系统时钟选择100MHz,可通过外部PLL IP核产生。
第二个重要的部分就是Synchronization and Clocking。查看ug482相关部分:

发现PCS部分有两个时钟域:XCLK和TXUSRCLK。根据文档说明要保证数据正确传输,必须使用TX Buffer或者TX Phase Alignment。缺省情况下使用TX Buffer较为稳定且简单,但相比后者延迟较高。简单应用中使用Buffer即可,因此本例中TX Buffer和RX Buffer均选中。
TXUSERCLK的时钟源只能是由参考时钟驱动的TXOUTCLK,而RXUSERCLK的时钟源选择根据具体情况而定:

总之就是,当使用同一个晶振作为发送器和接收器参考时钟源时,TXOUTCLK可以驱动RXUSRCLK;当使用不同晶振时,若使能clock correction才可以用TXOUTCLK驱动RXUSRCLK,否则要使用RXOUTCLK驱动。这里保持默认均使用TXOUTCLK驱动TXUSRCLK和RXUSRCLK。
4 Comma Alignment and Equalization

这里要引入comma码的概念。8B/10B编码表中有12个控制字符,以大写字母K开头,用于一些控制功能。K码中的comma码用于接收端时钟校准和数据对齐,K28.5(对应用户数据为16'hbc)最为常见。因为数据在链路中以穿行方式传输,所以接收端必须对其进行串并转换。在这一过程中,由于无法直接找到串行数据流中的每个数据的最高位或最低位比特,即使已知并行数据位宽也不能顺利转换成与发送端一致的并行数据。看下user guide中示意图你就明白了:

下边的RX Equalization是收发器自带的接收均衡器,用来补偿由于物理信道中的高频衰减引起的信号损伤。均保持默认。
5 PCIE,SATA,PRBS

这一页的功能就比较高级了,说实话我不会。有需要用到PCIE的朋友可以关注下,这个虽然比较复杂,但找工作还是很有优势的,很多招聘要求中都有写!此处只把最下边的PRBS相关端口选择上,便于测试用途。
6 CB and CC Sequence

Xilinx收发器IP核支持通道绑定,将多个收发器通道“绑定”成一个速率跟高的传输通道,利用FIFO消除其间的延时不确定性。Clock correction是最后一个重要的点。先来看看RX通道的结构和弹性缓存概念。

接收通道中同样有两个时钟域:从CDR恢复出的XCLK和接收通道工作时钟RXUSRCLK。RX通道使用RX Elastic Buffer来桥接两时钟域,但由于两者细微的差异会使缓存变空或溢出。为此引入时钟矫正,在发送端周期性发送一些特殊字符,接收端在弹性缓存快满时删除这些字符,快空时复制这些字符从而保证缓存内数据维持动态平衡的状态。

本例只使用一个数据通道,此页保持默认配置,不做修改。
7 Summary

只想说一句:终于结束了!这是我见过最麻烦的IP核,没有之一!看下总结页,USRCLK的时钟频率是USRCLK2的2倍,这是因为收发器内部通道数据位宽仅是外部接口位宽的二分之一,因此频率必须增大一倍才能保证数据来得及处理。可以点OK了。本文对GTP IP核的配置做了简单分析和总结,仅适用于新手。本人也在学习中,有不妥之处请在评论中指教。
7 Series GTP IP核使用总结 IP核配置篇的更多相关文章
- 【TCP/IP 合约】 TCP/IP 基金会
总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后開始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...
- 【TCP/IP 协议】 TCP/IP 基础
总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...
- 获得本机IP,并且将ip放在CIpAdress里
char szHostName[MAX_PATH + 1]; gethostname(szHostName, MAX_PATH); //得到计算机名 hostent *p = gethostbynam ...
- 根据Request获取客户端IP 内网IP及外网IP
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...
- Windows Azure Virtual Machine (28) 使用Azure实例级别IP,Instance-Level Public IP Address (PIP)
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 熟悉Azure平台的读者都知道,我们在使用Azure Virtual ...
- TCP/IP 协议难点之一—— IP分片
1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...
- 用淘宝ip地址库查ip
这是一个通过调用淘宝ip地址库实现ip地址查询的功能类 using System; using System.Collections.Generic; using System.Linq; using ...
- 解析私有IP地址和公网IP地址
局域网私有IP地址上外网的原理 IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上.一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行 ...
- Python之通过IP地址库获取IP地理信息
利用第三方的IP地址库,各个公司可以根据自己的业务情况打造自己的IP地址采集分析系统.例如游戏公司可以采集玩家地区信息,进行有针对性的运营策略,还可能帮助分析玩家网络故障分布等等. #!/usr/bi ...
- Cisco IOS IP Service Level Agreementv (IP SLA)
Responder and Control Protocol 1.Responder内嵌在思科目标路由器中的一个组件,用来对IP SLA请求包做应答,通过对应达包添加时间戳属性,以提高测量计算的准确性 ...
随机推荐
- kafka 集群搭建
环境:ubuntu14.04 版本:jdk1.8,zookeeper 3.4.10,kafka 2.11 搭建步骤: 1. 搭建zookeeper集群 参考链接:zookeeper集群搭建 2. 下载 ...
- 撸起袖子加油干 golang入坑系列
还是提醒一下,里面有段子,不都是技术. 冲着技术来的,慢走不送.没有版权,但可以给我发邮件(ztao8607@gmail.com) 在我的发小朋友中,终于最后一位打光棍的要结婚了. 说实话,真心不容易 ...
- URL, URI, URN三者区别
URL和URN都是URI的子集 URL和URN都是URI,但是URI不一定是URL或者URN URI,URL,URN关系图 关于URL: URL是URI的一种,不仅标识了Web 资源,还指定了操作或者 ...
- UnityShader-菲涅尔反射(Fresnel Reflection)
菲涅耳公式(或菲涅耳方程),由奥古斯丁·让·菲涅耳导出.用来描述光在不同折射率的介质之间的行为.由公式推导出的光的反射称之为"菲涅尔反射".菲涅尔公式是光学中的重要公式,用它能解释 ...
- codeforces #447 894A QAQ 894B Ralph And His Magic Field 894C Marco and GCD Sequence
A.QAQ 题目大意:从给定的字符串中找出QAQ的个数,三个字母的位置可以不连续 思路:暴力求解,先找到A的位置,往前扫,往后扫寻找Q的个数q1,q2,然 后相乘得到q1*q2,这就是这个A能够找到的 ...
- 前端测试框架Jest系列教程 -- Global Functions(全局函数)
写在前面: Jest中定义了很多全局性的Function供我们使用,我们不必再去引用别的包来去实现类似的功能,下面将列举Jest中实现的全局函数. Jest Global Functions afte ...
- 小白的Python之路 day1
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...
- 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...
- Effective Java 第三版——2. 当构造方法参数过多时使用builder模式
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 新书《Linux就是这个范儿》预售
预售地址 当当 内容简单介绍 本书内容源自淘宝技术大学的培训实战.由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和相同来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同 ...