版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010161493/article/details/77658599

 

目录(?)[+]

 

之前用serdes一直都是跑的比较低速的应用,3.125Gbps,按照官方文档一步一步来都没出过什么问题,这次想验证一下K7系列GTX最高线速8Gbps,看看xilinx的FPGA是不是如官方文档所说。

GTX速度到底可以跑到多少

关于器件速度的问题首先找到 ds182->Kintex-7 FPGAs Data Sheet:DC and AC Switching Characteristics,可以自己对应的器件去找,不过这个在设计电路板器件选型的时候就应该考虑到,除非是买的开发部学习用。这里面包括所有的FPGA各个器件能跑到的最高频率和器件延时,建立时间,保持时间等,对高速设计有很大的参考价值。 
找到GTX Transceiver Switching Characteristics 

可以看到,虽然K7系列GTX最高可以跑到12.5Gbps,但这跟速度等级和封装都有关系,是在-3的速度等级,FF封装下才有的最高速度12.5Gbps。而现在手头的芯片型号是K7480TFFG901-1,所以最高支持8.0Gbps。其实这在配置IP核的时候就会发现了,线速范围是(0.5-8.0)。所以IP核都是严格和工程的器件相关联的,这点Vivado越做越好了。

一步一步配置IP核

下面一步步配置IP核,可以作为初学者参考。(第一次用的话,会被生成的一大堆文件和巨多的IO口吓到的。)包括怎么查找手册和原理图,走一遍流程,发现其实xilinx的IP核都是一个套路。

1

首先在IP核搜索GT,选择7 Series FPGAs TransceiversWizard, 

没得选的,取个名字。顺便提一下,下面的shared logic选项,最好选include shared logic in example design。在有些特殊资源需要共享时,曾经遇到过这里的问题。当然不是GTX模块,是以太网的RGMII的模块,其中的IDELAY要用到IODELAY_CTRL,一个IOB就一个,同一个IOB其它地方要用到的时候必须选下面一个选项。所以最好都选下面一个,没毛病。

2

接下来就比较重要了 
 
首先是协议,最简单的strat from cratch,就是没有协议。然后是线速,可以看到范围是(0.5-8.0)。参考时钟,这个可以根据需要选个合适的。软件都根据你的线速把参考时钟的可选项计算好了。接收端同样设置,当然可以不一样的。这是全双工,收发链路没有什么关系,也可以关掉其中一个Tx off 或Rx off。然后是PLL选择,到底选哪个呢?我们回到刚开始提到的ds182,同样一个表格下部分 
 
其实线速决定了没得选,已经变成灰色了。 
然后是比较重要的,选择用哪个收发器,这当然不是拍脑袋决定的,跟设计有关,可以查找原理图。 
 
比如说这样的,然后去查手册UG476-> 7 Series FPGAsGTX/GTH Transceivers 找到 Placement Information by Package如下 
 
这样就知道用的是X0Y8,输入时钟在上面的原理图可以找到,是同一组的clk0。 
最后,把vivado lab tools勾上,这样才可以生产example工程可以参考。

3

继续 
 
之前一直用的是8b10b,这次尝试一下64b66b,后者本来就是高带宽下的一个编码协议,效率更高。为什么要用8b10b,64b66b包括后面的扰码一句话概括就是增加频率分量有利于CDR(时钟数据恢复)和减少直流,两个是不同的原因。具体的可以百度。最下面的可选端口为了简单,全部去掉。

4

 
由于没有选择8b10b,这一页也没什么可选的,依然把下面的可选端口全部去掉。

5

 
好了,pcie留着下次研究,太复杂了。可选端口其实有的挺有用的,增加了可控性,比如说环回控制,LOOPBACK。顺便说一下内部环回有四种, 
1.“000”:正常模式不环回 
2.“001”:近端PCS环回 
3.“010”:近端PMA环回 
4.“100”:远端PMA环回 
5.“110”:远端PCS环回)

6

接下来是通道绑定和时钟校正 
 
通道绑定的作用是把多个物理通道对齐,绑定成一个的逻辑通道。其实就是用FIFO消除通道间的延时不确定性。由于只有一个通道,没有绑定可言。

6

最后看一下确定对不对,注意收发时钟是250M。可以算一下,8000M/32=250M。 

到这里完成一大半了。

利用IP核生成example工程

接下来生成example工程 
 
把刚刚配置的IP右键,如图选择。 
生成好后稍微改一下约束文件XDC,把DRC时钟的输入时钟约束一下。其他的不用管。

## LOC constrain for DRP_CLK_P/N
set_property LOC G27 [get_ports DRP_CLK_IN_P]
set_property LOC F27 [get_ports DRP_CLK_IN_N]
set_property IOSTANDARD LVDS_25 [get_ports DRP_CLK_IN_P]
set_property IOSTANDARD LVDS_25 [get_ports DRP_CLK_IN_N]
  • 1
  • 2
  • 3
  • 4
  • 5

可以发现直接在这儿可以改具体使用的哪个收发器。注意:在这里改的效果和上面第2步里面设置的效果一样。

set_property LOC GTXE2_CHANNEL_X0Y4 [get_cells gtx_8g_support_i/gtx_8g_init_i/inst/gtx_8g_i/gt0_gtx_8g_i/gtxe2_i]
  • 1

要改的话,当然同时GTX的时钟也得改

set_property LOC AD5 [get_ports  Q1_CLK0_GTREFCLK_PAD_N_IN ]
set_property LOC AD6 [get_ports Q1_CLK0_GTREFCLK_PAD_P_IN ]
  • 1
  • 2

再修改一个地方,原来的ILA核抓的是解扰码前的数据,替换成解扰码后的数据可以更清楚的看到接收到的数据。

上板调试验证

好了,生成bit下进去,可以用连接线接上连个serdes的一收一发换回,或者设置内部环回,或者在两片FPGA上做实验。 

可以看到error_count一直是0,说明收发正确,很稳定。 
收到的数据依次是00000fb,3020100,7060504…依次递增,打开发送文件如下,和发送的一样。

00000000000000fb0100
00000000030201000000
00000000070605040000
000000000b0a09080000
  • 1
  • 2
  • 3
  • 4

实验成功证明了GTX可以跑到最高8.0Gbps。 
生成的example工程可以好好研究学习一下,里面有加扰码和解扰码的过程,自己修改一下把解扰码后的数据抓出来对比一下,可以很清楚的看到收到了什么数据。包括校验模块是怎么校验的,还是值得一学的。

xilinx IP核配置,一步一步验证Xilinx Serdes GTX最高8.0Gbps的更多相关文章

  1. (转)modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)

    原地址modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)   1.打开D:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\compxlibgui.e ...

  2. modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)

    1.打开D:\Xilinx\14.7\ISE_DS\ISE\bin\nt64\compxlibgui.exe,nt64表示系统是64位,如果是32位,换成nt,然后按照界面所示一步一步执行, 2.修改 ...

  3. 7 Series GTP IP核使用总结 IP核配置篇

    FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级.本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做些简单的总结,以备后续回顾重用.本文是 ...

  4. Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料

    C:\Xilinx\14.7\ISE_DS\ISE\coregen\ip\xilinx\dsp\com\xilinx\ip Xilinx IP核的根目录地址,有datasheet 和仿真相关的资料

  5. 用嵌入式块RAM IP核配置一个双口RAM

    本次设计源码地址:http://download.csdn.net/detail/noticeable/9914173 实验现象:通过串口将数据发送到FPGA 中,通过quartus II 提供的in ...

  6. 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇

    https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...

  7. Xilinx IP核使用(一)--FIFO

    今天在将SRIO的数据存入FIFO后,然后把FIFO中的数据不断送入FFT进行运算时,对于几个控制信号总产生问题.所以单独对FIFO进行了仿真.原来感觉FIFO的几个参数端口一目了然啊,还需要什么深入 ...

  8. 浅析Xilinx 三速以太网MAC IP核

    之前在使用Altera的三速以太网MAC IP的基础上,完成了UDP协议数据传输.此次为了将设计移植到xilinx FPGA上,需要用到xilinx的三速以太网MAC IP核,当然也可以自己用HDL编 ...

  9. 从Xilinx FFT IP核到OFDM

    笔者在校的科研任务,需要用FPGA搭建OFDM通信系统,而OFDM的核心即是IFFT和FFT运算,因此本文通过Xilinx FFT IP核的使用总结给大家开个头,详细内容可查看官方文档PG109.关于 ...

随机推荐

  1. V-rep学习笔记:Reflexxes Motion Library 1

    V-REP中集成了在线运动轨迹生成库Reflexxes Motion Library Type IV,目前Reflexxes公司已经被谷歌收购.(The Reflexxes Motion Librar ...

  2. 使用VTK与Python实现机械臂三维模型可视化

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  3. python模块之imghdr(识别不同格式的图片文件)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之imghdr(识别不同格式的图片文件) import imghdr '''>> ...

  4. 搭建ssm框架项目基本原理和主要的配置文件小结

    原文地址:https://blog.csdn.net/baidu_32739019/article/details/73928040 1.springmvc是spring框架的一个模块,springm ...

  5. 【转】IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段

    背景知识 IP地址 IP地址被用来当做Internet上的电脑的身份编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就 ...

  6. Ubuntu 10.04里安装强大抓图工具Shutter

    Shutter 原名叫GScrot,是一款Linux下很强大的抓图工具,支持截取全屏幕,窗口,自选区域以及网页的图像,并且截取后的图像还可以简单编辑,Shutter还支持插件功能,矩齿,边缘化,碎纸, ...

  7. MATLAB 在同一个m文件中写多个独立的功能函数

    MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数. 鉴于MATLAB的函数文件的函数名与文件名要一样,就需要有一个统一的接口来涵盖这些功能函数. 例 ...

  8. java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作

    官方api教程:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started ...

  9. Google Chrome 浏览器插件开发学习

    2014/11/16 Google Chrome 浏览器插件开发学习 因笔记存有文件,不便发表在cnblogs上,请到evernote里找笔记 "Google Chrome 浏览器插件开发学 ...

  10. ant执行jar包中的main方法

    <project name= "myproject" basedir= "." default="main">    <p ...