利用FPGA调试光纤接口接口:

由于与项目需要,前段时间调试了光纤接口,记录一些设计经验。

设计中采用FPGA控制光纤模块完成光纤数据的收发,FPGA采用Xilinx公司的Spartan6 LX45T,由于其内部自带的2个GTP收发器,能作为多种高速通信协议(千兆以太网、PCI-E,SATA等)的桥梁,且Xilinx提供了免费的IP核,设计比较方便。

首先,建立ISE工程,添加GTP核,(该过程可参考Xilinx提供的文档:LogiCORE IP Spartan-6 FPGA GTP Transceiver Wizard v1.11User Guide)

选择Spartan6 GTP收发器1.11版本,接下来进行GTP核的设置,

Spartan6 LX45T系列FPGA内部有2个GTP核,每个核又具有两个独立的通道,因此可根据自己的需要选择,

接下来配置GTP速率以及数据协议,很多高速传输中都采用的是aurora-8b10b协议(https://en.wikipedia.org/wiki/8b/10b_encoding),速率以及参考时钟都可以根据需要设置(本项目光纤最高速率1.25Gbps),

接下来是协议的一些配置选项,各个选项的含义可以参考RocketIO™ Transceiver User Guide 和 Spartan-6 FPGA GTP Transceivers,里面有这些选项的详细说明,

这里选择数据传输中的逗号对齐,比较重要,主要是用于数据告诉传输中的数据对齐,后面几页的配置默认就可以。

最后工程生成以后可以直接打开GTP核工程,编译后便可进行modelsim仿真,仿真结果一般都不会出现问题。

最后,可根据自己的需要修改源代码,其中,比较关键的地方需要注意:

1、  TXCHARISK参数,该参数用于指明当前数据是否为对齐字符(K28.5,即0xBC),当发送对齐字符时,必须TXCHARISK=1,当然0xBC也可以作为实际数据,只要TXCHARISK=0,就不会认为该数据为对齐字符;

2、  数据宽度问题,在设置GTP速率及协议的时候,注意数据宽度的选择,若选择16bits或者32bits,则数据在接收端可能会发生错位现象,(发送0x0102,接收到为0x0201),仿真时不会出现问题,因为在Frame_check中进行了判断,若发生错位,会得到纠正,但选择8bits则不会出现该问题,省去了后续的纠错任务;

3、  约束文件问题,打开GTP核工程后,可以看到有两个约束文件,一个是GTP属性,一个是顶层约束,

INST mgt1_0t1r_i/tile0_mgt1_0t1r_i/gtpa1_dual_i CLKINDC_B_0

NET "tile0_txusrclk0_i" TNM_NET = "tile0_txusrclk0_i";

TIMESPEC "TS_tile0_txusrclk0_i" = PERIOD "tile0_txusrclk0_i" 8.0;

若设计者希望建立自己的顶层文件,并在顶层文件中例化GTP核,则需要在约束语句上加上顶层例化名称:

INST gtp_top_i/mgt1_0t1r_i/tile0_mgt1_0t1r_i/gtpa1_dual_i CLKINDC_B_0

NET " gtp_top_i/tile0_txusrclk0_i" TNM_NET = "tile0_txusrclk0_i";

TIMESPEC "TS_tile0_txusrclk0_i" = PERIOD "tile0_txusrclk0_i" 8.0;

其中,具体设计细节可参考上面提到的3个参考文档。在硬件实现上,主要需要配置GTP的差分时钟,光纤的RX、TX和GTP的RX、TX连接。

FPGA调试光纤模块的更多相关文章

  1. FPGA调试技巧

    FPGA调试技巧 八月,一直在debug, 编译,查信号,几乎没机会,也没心思停留下来看点东西,静心思考,做点笔记.今天,在硬盘上翻到了保存已久,但一直没想起来读的一本手册.这是我初入职场,决定从硬件 ...

  2. FPGA调试技巧(Quartus 15.1 Standard平台)

    1.在SignalTap II Logic Analyzer(stp)观测信号,需要将待观察寄存器.网络节点的综合器属性设为synthesis noprune和synthesis keep,防止综合器 ...

  3. Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)

    需求说明:Lattice系统FPGA入门 内容       :Lattice与Altera.Xilinx对比 来自       :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...

  4. FPGA之SPI SD卡读操作

    这几天在FPGA调试与SD通信,读SD卡里的图片,之前接触32时没有去研究过SD卡,不太熟悉操作流程,在网上找了很多资料,也看了几个32开发板的资料,但大多数都讲得不是特别清楚,只能瞎操作了一番,在别 ...

  5. Vivado抓取信号

    作者:桂. 时间:2018-05-03  21:16:03 链接:www.cnblogs.com/xingshansi/p/8987608.html 前言 FPGA调试需要抓取特定信号,一个直观的思路 ...

  6. Chipscope使用

    作者:桂. 时间:2017-08-07  06:47:31 链接:http://www.cnblogs.com/xingshansi/p/7297482.html 前言 Chipscope在FPGA调 ...

  7. Lattice FPGA 板子 调试笔记

    最近在调试LATTICE  FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17E ...

  8. fpga该驱动器调试dev_dbg 无输出

    近期需要调试fpga驾驶,整个是非常蛋疼.dev_dbg 我想用这个作为没有成功调试输出,它已被彻底打垮! 反射... 现在基于以下设置是不相关的打印,和网上说的有些出入,问题还得研究下. 驱动程序调 ...

  9. FPGA DDR3调试

    FPGA DDR3调试 Spartan6 FPGA芯片中集成了MCB硬核,它可以支持到DDR3.在Xilinx的开发工具Xilinx ISE中提供了MIG IP核,设计者可以用它来直接生成 DDR3 ...

随机推荐

  1. SVN版本控制图标经常延时显示或未显示问题解决方法

    项目中,使用svn经常遇到,文件或文件夹图标延时显示或未显示的问题,终于找到办法解决 客户端:TortoiseSVN

  2. 发布系统Git使用指南 - the Git Way to Use Git

    发布系统Git使用指南 --the Git Way to Use Git 背景 ​ 有文章曾归纳,Git是一套内容寻址文件系统,意思是,Git的核心是存储键值对^[1]^.显然,这样的形式不利于普通人 ...

  3. Arrays.asList () 不可添加或删除元素的原因

    Java中奖数组转换为List<T>容器有一个很方便的方法 Arrays.asList(T ... a),我通过此方法给容器进行了赋值操作,接着对其进行 添加元素,却发现会抛出一个(jav ...

  4. 容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)

    背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can' ...

  5. WebApi系列~HttpClient的性能隐患

    回到目录 最近在进行开发过程中,基于都是接口开发,A站接口访问B接口接口来请求数据,而在这个过程中我们使用的是HttpClient这个框架,当然也是微软自己的框架,性能当前没有问题,但如果你直接使用官 ...

  6. python抓取zabbix图形,并发送邮件

    最近十九大非常烦,作为政府网站维护人员,简直是夜不能寐.各种局子看着你,内保局,公安部,360,天融信,华胜天成,中央工委,政治委员会... 360人员很傻X,作为安全公司,竟然不能抓到XX网站流量, ...

  7. 前端工程化grunt

    1.grunt是什么? grunt是基于nodejs的前端构建工具.grunt用于解决前端开发的工程问题. 2.安装nodejs Grunt和所有grunt插件都是基于nodejs来运行的. 安装了n ...

  8. uva242,Stamps and Envelope Size

    这题紫薯上翻译错了 应该是:如果有多个并列,输出邮票种类最少的那个,如果还有并列,输出最大面值最小的那个 坑了我一个下午 dp[p][q]==1表示可以用不超过q张组成面额p 结合记忆化,p从1开始枚 ...

  9. php环境搭建工具推荐

    楼楼最近由于一系列原因,使用了几款php环境搭建工具,安装配置方便,所以在这里推荐一下.第一款是XAMPP(网址http://www.xampps.com/),软件包原来的名字是 LAMPP,但是为了 ...

  10. Visual Studio中让一个JS文件智能提示另一个JS文件中的成员

    当一个Web页面引用了两个JS文件(假如分别叫common.js和JScript1.js),如果JScript1.js中需要调用大量的common.js中的方法,这时候在JScript1.js中智能提 ...