提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

xilinx QSFP模块ip调试

  • 前言
  • 一、ip配置注意事项
  • 二、避坑指南
  • 三、调试,调试请参考文档,文档已经很详尽了,我只在文档之外啰嗦几句
  • 总结
  • 后记

前言

提示:这里可以添加本文要记录的大概内容:

xilinx fpga 提供了光通讯模块ip,例如qsfp,这个模块通讯速率可以达到40G/50Gbps,而且集成和使用相对比较简单,很多公司利用xilinx的qsfp来做高速通讯。

下面仅就使用过程中的一些坑及技巧记录一下,给各位高手做个参考。


一、ip配置注意事项

  1. 基本的配置比较简单,但是如果可能的话,尽量不要使用256bit的axis协议。一些FAE也和我反馈说256bit的比较难调试。
  2. axis协议:qsfp的axis协议有自己的特殊性,要仔细阅读文档,与网上的axis协议稍有差异。
  3. config端口:axi4-lite协议和普通配置口可选,我选的是axi4-lite协议,注意这里要仔细读一下rtl,aw/ar channel和w/r channel是相关的。这句话可能难以理解,看下rtl便知。
  4. fast sim:example的仿真一定要加上fast SIM选项,否则时间太久了。当然,正常使用的时候,等待的时间一定要足够。
  5. pipline 的输入,312.5M的时钟对fpga来说需求还是不小的,选pipline后对布线的压力会小很多,虽然不知道内部采用了多少级的pipline,如果不是很在乎面积的话,还是勾选上吧。
  6. dclk,有消息说两个光模块的dclk频率要一致才好,实测下来选多少MHz对通讯结果没啥影响。
  7. gt_ref_clk,曾经想通过pll来做这个时钟,后来发现用片内pll的话会报错。这个时钟要求200ppm精度(实际上开发板也是pll出来的,片外pll)

二、避坑指南

  1. reset后的时间要留够再传输数据,qsfp会用很长的时间来做initial和training,如果reset的时间不够,会导致很多误码的问题。我这里因为代码是自己写的,对initial的时间要求不太严格,就没有拉太多的stat信息,
  2. 仔细阅读example和debug指南,文档还是给了不少的信息可以参考的,我在受误码率困扰的时候仔细参考了xilinx的文档,还是有用的。
  3. 虚拟io和ila要好好使用。cdc要特别注意。
  4. 版本:不同版本的qsfp接口还是有很大差别的,要注意,比如dclk有要求50~250的,也有要求10 ~ 250的,要注意当前使用的版本。不同版本的vivado配置的ip也有差异,

三、调试,调试请参考文档,文档已经很详尽了,我只在文档之外啰嗦几句

  1. 光模块对温度敏感,如果你的误码率突变,可以考虑温度的影响
  2. 有时tx,rx单向好用,这个时候可以考虑是不是光模块的金手指受损或者腐蚀了。
  3. 参考时钟一定要准,不然会有很多意想不到的错误。
  4. 调试的时候光模块可以交换一下看看会不会有问题。
  5. qsfp其实是个以太网协议,但是做了简化,axis相当于一个dma接口。
  6. 如果误码率较高,要注意ila的使用。
  7. 如果误码率较高,要注意系统内的干扰。
  8. 如果误码率较高,要注意系统间的干扰,光电隔离还是比较彻底的。
  9. 最好有信得过的参考端来帮助调试,比如光口的网卡。我这次调试是一个support很不好的设备,吃了很多亏。
  10. 10.使用者要对tcp/ip协议有点了解会帮助分析。(或者说不容易受误导)
  11. 有眼图测试工具和ip,可以搜一下,我本来想使用的,后来发现问题搞定了就没用,仅记录下。

总结

qsfp这个ip还是比较容易使用的,但是个人认为文档对于初次使用的人员来说还不是很友好,上面罗里吧嗦的记录了一些我遇到的坑,希望能给后面使用的人一点点参考。

后记

有朋友遇到了QSFP数据误码的问题,一起撸了一遍

  1. 没有什么明显的问题,reset都做了sync,cdc也都是对的。
  2. 重新撸了下reset流程,发现时间不太对,这里说一下,文档里的reset时间是没有描述的,给他找了example,发现里面有个cvt_us函数,描述了每一个流程持续的时间。比较坑的一点,是文档中对这个时间没有任何详细解释。
  3. axis_wclk , axis_rclk的信号,要想被ila观测到,要注意cdc的问题,换句话说,如果没有仔细做cdc,ila观测到的数据,使用的时候要自己甄别一下,能间接放映问题的。
  4. **_user里的信号要处理好,理论上user的信号要和valid一起生效,虽然试过了不一起变化也问题不大(主要是ena),但是最好一起选通。
  5. 感觉128bit的比256bit的稳定,也可能是研究的不够,时间问题,调通128比较容易。

vivado下QSFP模块调试遇到的一些坑和调试简单记录相关推荐

  1. 在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答

    1. 什么是SSI芯片? SSI是Stacked Silicon Interconnect的缩写.SSI芯片其实就是我们通常所说的多die芯片.其基本结构如下图所示.可以看到SSI芯片的基本单元是SL ...

  2. IDEA2022版教程下(快键键总结、Debug断点调试总结、22版本idea创建各种工程、关联数据库、常用插件)

    8.快捷键的使用 8.1 常用快捷键 1 通用型(复制,黏贴,剪贴-) 说明 快捷键 复制代码-copy ctrl + c 粘贴-paste ctrl + v 剪切-cut ctrl + x 撤销-u ...

  3. Vivado下的集成逻辑分析仪ILA 入门

    刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它. 我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 700 ...

  4. Vivado下集成逻辑分析仪ILA入门续

    在 Vivado下集成逻辑分析仪ILA入门 一文中带着读者走了一遍集成逻辑分析仪ILA的使用过程.当时通过Set up Debug 添加需要监控的点,间接添加了ILA, 本文介绍另外一种方法,直接添加 ...

  5. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  6. vivado如何评估_在Vivado下进行功耗估计和优化

    资源.速度和功耗是FPGA设计中的三大关键因素.随着工艺水平的发展和系统性能的提升,低功耗成为一些产品的目标之一.功耗也随之受到越来越多的系统工程师和FPGA工程师的关注.Xilinx新一代开发工具V ...

  7. ubuntu更新python的指令_ubuntu下python模块的库更新(转载)

    ubuntu下python模块的库更新 亲测有用,非常好 ubuntu中python模块的库下载一般用pip安装.然而有时候pip的下载源在国外,就导致下载速度非常慢.这里提供一个方法: 首先命令行进 ...

  8. erlang下lists模块sort(排序)方法源码解析(二)

    上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...

  9. python threading类重写_python下threading模块使用的注意点

    python下threading模块使用的注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用thre ...

最新文章

  1. 机器翻译之Facebook的CNN与Google的Attention
  2. 也议MySQL中隐式转换
  3. bootstrap-翻页-对齐链接
  4. sort函数的应用习题(二)
  5. redis 获取所有key_Redis笔记
  6. jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2
  7. Linux系统:软链接与硬链接的原理分析
  8. 1.3编程基础之算术表达式与顺序执行 15 苹果和虫子
  9. 2.3 快速搭建你的第一个系统,并进行迭代
  10. Without a pattern, these choices will make you very difficult.
  11. java armeabi_armeabi和armeabi-v7a 解释
  12. 金格插件WebOffice2015使用体会
  13. 社团管理系统软件测试,软件测试大作业-社团管理系统.doc
  14. matlab double 取值,matlab定积分计算结果为表达式,我只想得到数值。用double(ans)也没用,不知道还有没有其他方法!...
  15. Java游戏实验报告_java俄罗斯方块游戏实验报告.doc
  16. 电脑开机黑屏有鼠标怎么办
  17. 阿里云云计算ACP学习(七)---弹性伸缩服务AS
  18. POJ 1061 青蛙的约会
  19. Android键盘的显示和隐藏
  20. OpenGL渲染管线之简单示例(五)

热门文章

  1. oppo包名_OPPO开放平台快应用常见FAQ
  2. 雷神台式计算机配置,雷神电脑BIOS设置教程
  3. Webpack详细教程
  4. 单片机c语言常用的语句有几条,单片机C语言常用语句详解
  5. 腾讯云服务器远程连接登陆的方法
  6. 2019-7-12-freenom域名解析问题
  7. 基于IHS变换和小波变换的可见光和红外图像融合(opencv/C++实现)
  8. 分解连续自然数的和_正整数分解为几个连续自然数之和
  9. 服装企业如何通过知识管理提升创新能力?
  10. 这是一篇关于HaaS 506的小Tips