基于Virtext6平台的GTX IP核基本设置说明
本工程基于以下条件使用:
- 板卡:DBF板v3.0
 - 芯片型号:Virtex6 315T
 - ISE版本:14.7
 - IP核版本: v6_gtxwizard : 1.12
 
一、IP核配置进行流程
第一页配置:线速率和编码
- TX、RX的 
Line Rate、Data Path Width、Reference Clock根据项目的实际情况进行选择 Reference Clock:表示 外界时钟输入给GTX模块的参考时钟

- 注:
- 红色框代表必须按照截图设置。
 - 绿色框代表根据项目需求进行设置。
 - 黄色框代表,可自由选择项。
 
 
第二页配置:参考时钟位置选择
- 此处必须参考原理图选择REFCLK。 

 
第三页配置:同步和对齐
- RXUSRCLK Source 一般选择 
RERECCLK,但是在位宽32bit,且使用GTX格式较多的情况下,建议选择TXOUTCLK因为这样可以节省出大量的BUFG资源。 - RX Comma Alignment部分,Xilinx 在V6系列处理的不好,设置作用不是很明显,还是有翻转情况出现。 

 
第四页配置:预加重,终端、均衡
- Enable DFE : 当外部信号传输质量比较差(>100ppm)时,建议选上。
 - Rx Equalization:此处保持默认即可,当实际工程中,发现误码较高时,可以在程序中动态修改此值。
 - Post Emphasis:当对方接受误码较高时,可适当修改此值进行调试。 

 
第五页配置:失同步状态机
- 保持默认不变 

 
第六页配置:通道绑定
- 此功能没有用过,保持默认不变 

 
第七页配置:时钟校准
- Use Clock Correction :在同源时钟下可以不选择
 - Sequence : 00011100,配置向导中使用了此值即K28.0,实验室所有的项目也是按照此值配置的。但是个人认为按照我们平时习惯用法,此值应该配置成10111100,K28.5。经简单测试没有发现问题,但未在任何大型项目上验证过。
 
工程使用说明
基本使用方法
当IP核生成以后将如下文件添加到工程:
- ip/[gtx核名].v
 - ip/[gtx核名]_gtx.v
 - ip/[gtx核名]/example_design/所有文件
 
在[gtx核名]_top 文件中将
GTX0_RXENMCOMMAALIGN_IN,GTX0_RXENPCOMMAALIGN_IN括号内的值改为1(如下图),这里用到了多少了gtx模块就要按照序号该几处。
此时工程已基本可以仿真与简单测试,在modlesim中切换到如下目录,并输入
simulate_mti.do即可开始仿真。..\imp\ip\fiber\simulation\functional
gtx重点信号线说明
在整个GTX工程中只需关注top层如下信号线即可。
TOP层输入输出端口
Qx_CLK0_MGTREFCLK_PAD_N_IN:x视实际位置而定,表示GTX参考时钟GTXTXRESET_IN\GTXRXRESET_IN:由用户控制的TX/RX全局复位RXN_IN:GTX接收引脚TXP_OUT:GTX发送引脚
重要控制信号线说明
gtx0_loopback_i:gtx自环控制。- 3’b000:非自环模式;
 - 3’b001,近端PCS自环;
 - 3’b010,近端PMA自环,一般仿真或单板测试时选择此模式。
 
gtx0_rxnotintable_i:接收错误指示信号线:当接收到无法通过8b/10b解码的数据时此信号线拉高,可以简单的理解为接收到误码的标志。
重要数据时钟信号线说明
- 接收
gtx0_rxusrclk2_i:当IP核配置第三页的 RXUSRCLK Source 选择RXRECCLK时,每个gtx模块单独对应一个此类型时钟。gtx0_rxdata_i: 用户接收到的数据gtx0_rxcharisk_i: 用户接收到的K码,用于指示gtx0_rxdata_i数据类型。- 当
gtx0_rxcharisk_i某位为1时,表示gtx0_rxdata_i对应的某个8位为K码。 
- 当
 
 - 发送 
gtx0_txusrclk2_i:用户发送时钟,所有的gtx发送模块均用此时钟;当IP核配置第三页的 RXUSRCLK Source 选择TXOUTCLK时,所有的gtx接收模块也是用此时钟。gtx0_txcharisk_i:用户待发送的K码gtx0_txdata_i:用户待发送的数据
 
- 接收
 
实际开发工程的使用
- 在实际开发中还需对工程做如下的修改,才更方便使用。
 
删除例程测试部分
- 起点:从注释
Frame Generators处开始 - 终点:一直到代码
begin:no_chipscope,以上全部删除。 - 其他:后面的vio,ila核内容一并删除,以及一些其他导致报错的多余代码。
 
修改UCF文件
为了保证在以后大工程中使用gtx核时路径不出问题,需对gtx的两个ucf文件做如下修改。
xxx_attributes.ucf:在所有约束前加入*/
xxx_top.ucf:和上面类似,在User Clokc Constraints 和 mgt wrapper constraints 约束的前面加入*/
- 转载:http://blog.csdn.net/lutianfeiml/article/details/51242160
 
基于Virtext6平台的GTX IP核基本设置说明的更多相关文章
- 转:基于 xilinx vivado 的PCIE ip核设置与例程代码详解
		
连接:https://blog.csdn.net/u014586651/article/details/103826967#comments
 - xilinx IP核配置,一步一步验证Xilinx Serdes GTX最高8.0Gbps
		
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010161493/article/details/77658599 目录(?)[+] 之前 ...
 - Vivado设计二:zynq的PS访问PL中的自带IP核(基于zybo)
		
1.建立工程 首先和Vivado设计一中一样,先建立工程(这部分就忽略了) 2.create block design 同样,Add IP 同样,也添加配置文件,这些都和设计一是一样的,没什么区别. ...
 - 基于MIG IP核的DDR3控制器(一)
		
最近学习了DDR3控制器的使用,也用着DDR完成了一些简单工作,想着以后一段可能只用封装过后的IP核,可能会忘记DDR3控制器的一些内容,想着把这个DDR控制器的编写过程记录下来,便于我自己以后查看吧 ...
 - 基于AXI4总线卷积FPGA加速IP核的尝试
		
本文先总结不同AXI IP核的实现的方法,性能的对比,性能差异的分析,可能改进的方面.使用的硬件平台是Zedboard. 不同的AXI总线卷积加速模块的概况 这次实现并逐渐优化了三个版本的卷积加速模块 ...
 - 转载 基于NicheStack协议栈的TCP/IP实现
		
一.摘要 Altera软件NIOS II高版本(7.2版本以上,本例程中使用的是9.0版本)中实现TCP/IP所用的协议栈为NicheStack,常用的例程有2个,web_server和simple_ ...
 - 调用altera IP核的仿真流程—上
		
调用altera IP核的仿真流程—上 在学习本节内容之后,请详细阅读<基于modelsim-SE的简单仿真流程>,因为本节是基于<基于modelsim-SE的简单仿真流程>的 ...
 - 基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序
		
1.字节顺序 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端.大端两种字节顺序.小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处:大端字节序是高字节数据存 ...
 - 基于Android 平台简易即时通讯的研究与设计[转]
		
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
 
随机推荐
- Compare, sort, and delete duplicate lines in Notepad ++
			
Compare, sort, and delete duplicate lines in Notepad ++ Organize Lines: Since version 6.5.2 the app ...
 - luogu P1186 玛丽卡
			
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
 - 【基数排序】bzoj1901 Zju2112 Dynamic Rankings
			
论NOIP级别的n²算法…… 跟分块比起来,理论上十万的数据只慢4.5倍左右的样子…… #include<cstdio> #include<algorithm> using n ...
 - python3 中 and 和 or 运算规律
			
一.包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Python中,None.任何数值类型中的0.空字符串“”.空元组().空列 ...
 - 数据挖掘经典算法——K-means算法
			
算法描述 K-means算法是一种被广泛使用的基于划分的聚类算法,目的是将n个对象会分成k个簇.算法的具体描述如下: 随机选取k个对象作为簇中心: Do 计算所有对象到这k个簇中心的距离,将距离最近的 ...
 - CentOS release 6.6 (Final)如何安装firefox和chromium
			
一.firefox的安装: 1. 安装remi源 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8 ...
 - javascript快速入门12--函数式与面向对象
			
函数 函数是一组可以随时随地运行的语句. 函数是 ECMAScript 的核心. 创建函数 function fnOne() {//具有名称的函数,函数名必须符合变量名命名规范 //可以没有符何语句 ...
 - HTTP—缓存
			
1. ETag HTTP 1.1中引入了ETag来解决缓存的问题.ETag全称是Entity Tag,由服务端生成,服务端可以决定它的生成规则.如果根据文件内容生成散列值.那么条件请求将不会受到时间戳 ...
 - Python使用matplotlib绘制三维曲线
			
本文主要演示如何使用matplotlib绘制三维图形 代码如下: # -*- coding: UTF-8 -*- import matplotlib as mpl from mpl_toolkits. ...
 - 键值对操作 上(Spark自学五)
			
键值对RDD是Spark中许多操作所需要的常见数据类型. “分区”是用来让我们控制键值对RDD在各节点上分布情况的高级特性.使用可控的分区方式把常在一起被访问的数据放在同一个节点上,可以大大减少应用的 ...