vivado下QSFP模块调试遇到的一些坑和调试简单记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
xilinx QSFP模块ip调试
- 前言
- 一、ip配置注意事项
- 二、避坑指南
- 三、调试,调试请参考文档,文档已经很详尽了,我只在文档之外啰嗦几句
- 总结
- 后记
前言
提示:这里可以添加本文要记录的大概内容:
xilinx fpga 提供了光通讯模块ip,例如qsfp,这个模块通讯速率可以达到40G/50Gbps,而且集成和使用相对比较简单,很多公司利用xilinx的qsfp来做高速通讯。
下面仅就使用过程中的一些坑及技巧记录一下,给各位高手做个参考。
一、ip配置注意事项
- 基本的配置比较简单,但是如果可能的话,尽量不要使用256bit的axis协议。一些FAE也和我反馈说256bit的比较难调试。
- axis协议:qsfp的axis协议有自己的特殊性,要仔细阅读文档,与网上的axis协议稍有差异。
- config端口:axi4-lite协议和普通配置口可选,我选的是axi4-lite协议,注意这里要仔细读一下rtl,aw/ar channel和w/r channel是相关的。这句话可能难以理解,看下rtl便知。
- fast sim:example的仿真一定要加上fast SIM选项,否则时间太久了。当然,正常使用的时候,等待的时间一定要足够。
- pipline 的输入,312.5M的时钟对fpga来说需求还是不小的,选pipline后对布线的压力会小很多,虽然不知道内部采用了多少级的pipline,如果不是很在乎面积的话,还是勾选上吧。
- dclk,有消息说两个光模块的dclk频率要一致才好,实测下来选多少MHz对通讯结果没啥影响。
- gt_ref_clk,曾经想通过pll来做这个时钟,后来发现用片内pll的话会报错。这个时钟要求200ppm精度(实际上开发板也是pll出来的,片外pll)
二、避坑指南
- reset后的时间要留够再传输数据,qsfp会用很长的时间来做initial和training,如果reset的时间不够,会导致很多误码的问题。我这里因为代码是自己写的,对initial的时间要求不太严格,就没有拉太多的stat信息,
- 仔细阅读example和debug指南,文档还是给了不少的信息可以参考的,我在受误码率困扰的时候仔细参考了xilinx的文档,还是有用的。
- 虚拟io和ila要好好使用。cdc要特别注意。
- 版本:不同版本的qsfp接口还是有很大差别的,要注意,比如dclk有要求50~250的,也有要求10 ~ 250的,要注意当前使用的版本。不同版本的vivado配置的ip也有差异,
三、调试,调试请参考文档,文档已经很详尽了,我只在文档之外啰嗦几句
- 光模块对温度敏感,如果你的误码率突变,可以考虑温度的影响
- 有时tx,rx单向好用,这个时候可以考虑是不是光模块的金手指受损或者腐蚀了。
- 参考时钟一定要准,不然会有很多意想不到的错误。
- 调试的时候光模块可以交换一下看看会不会有问题。
- qsfp其实是个以太网协议,但是做了简化,axis相当于一个dma接口。
- 如果误码率较高,要注意ila的使用。
- 如果误码率较高,要注意系统内的干扰。
- 如果误码率较高,要注意系统间的干扰,光电隔离还是比较彻底的。
- 最好有信得过的参考端来帮助调试,比如光口的网卡。我这次调试是一个support很不好的设备,吃了很多亏。
- 10.使用者要对tcp/ip协议有点了解会帮助分析。(或者说不容易受误导)
- 有眼图测试工具和ip,可以搜一下,我本来想使用的,后来发现问题搞定了就没用,仅记录下。
总结
qsfp这个ip还是比较容易使用的,但是个人认为文档对于初次使用的人员来说还不是很友好,上面罗里吧嗦的记录了一些我遇到的坑,希望能给后面使用的人一点点参考。
后记
有朋友遇到了QSFP数据误码的问题,一起撸了一遍
- 没有什么明显的问题,reset都做了sync,cdc也都是对的。
- 重新撸了下reset流程,发现时间不太对,这里说一下,文档里的reset时间是没有描述的,给他找了example,发现里面有个cvt_us函数,描述了每一个流程持续的时间。比较坑的一点,是文档中对这个时间没有任何详细解释。
- axis_wclk , axis_rclk的信号,要想被ila观测到,要注意cdc的问题,换句话说,如果没有仔细做cdc,ila观测到的数据,使用的时候要自己甄别一下,能间接放映问题的。
- **_user里的信号要处理好,理论上user的信号要和valid一起生效,虽然试过了不一起变化也问题不大(主要是ena),但是最好一起选通。
- 感觉128bit的比256bit的稳定,也可能是研究的不够,时间问题,调通128比较容易。
vivado下QSFP模块调试遇到的一些坑和调试简单记录相关推荐
- 在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答
1. 什么是SSI芯片? SSI是Stacked Silicon Interconnect的缩写.SSI芯片其实就是我们通常所说的多die芯片.其基本结构如下图所示.可以看到SSI芯片的基本单元是SL ...
- IDEA2022版教程下(快键键总结、Debug断点调试总结、22版本idea创建各种工程、关联数据库、常用插件)
8.快捷键的使用 8.1 常用快捷键 1 通用型(复制,黏贴,剪贴-) 说明 快捷键 复制代码-copy ctrl + c 粘贴-paste ctrl + v 剪切-cut ctrl + x 撤销-u ...
- Vivado下的集成逻辑分析仪ILA 入门
刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它. 我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 700 ...
- Vivado下集成逻辑分析仪ILA入门续
在 Vivado下集成逻辑分析仪ILA入门 一文中带着读者走了一遍集成逻辑分析仪ILA的使用过程.当时通过Set up Debug 添加需要监控的点,间接添加了ILA, 本文介绍另外一种方法,直接添加 ...
- Vivado 下 IP核 之ROM 读写
目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...
- vivado如何评估_在Vivado下进行功耗估计和优化
资源.速度和功耗是FPGA设计中的三大关键因素.随着工艺水平的发展和系统性能的提升,低功耗成为一些产品的目标之一.功耗也随之受到越来越多的系统工程师和FPGA工程师的关注.Xilinx新一代开发工具V ...
- ubuntu更新python的指令_ubuntu下python模块的库更新(转载)
ubuntu下python模块的库更新 亲测有用,非常好 ubuntu中python模块的库下载一般用pip安装.然而有时候pip的下载源在国外,就导致下载速度非常慢.这里提供一个方法: 首先命令行进 ...
- erlang下lists模块sort(排序)方法源码解析(二)
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...
- python threading类重写_python下threading模块使用的注意点
python下threading模块使用的注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用thre ...
最新文章
- 机器翻译之Facebook的CNN与Google的Attention
- 也议MySQL中隐式转换
- bootstrap-翻页-对齐链接
- sort函数的应用习题(二)
- redis 获取所有key_Redis笔记
- jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2
- Linux系统:软链接与硬链接的原理分析
- 1.3编程基础之算术表达式与顺序执行 15 苹果和虫子
- 2.3 快速搭建你的第一个系统,并进行迭代
- Without a pattern, these choices will make you very difficult.
- java armeabi_armeabi和armeabi-v7a 解释
- 金格插件WebOffice2015使用体会
- 社团管理系统软件测试,软件测试大作业-社团管理系统.doc
- matlab double 取值,matlab定积分计算结果为表达式,我只想得到数值。用double(ans)也没用,不知道还有没有其他方法!...
- Java游戏实验报告_java俄罗斯方块游戏实验报告.doc
- 电脑开机黑屏有鼠标怎么办
- 阿里云云计算ACP学习(七)---弹性伸缩服务AS
- POJ 1061	青蛙的约会
- Android键盘的显示和隐藏
- OpenGL渲染管线之简单示例(五)