前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA设计心得(12)如何正确使用 in_system_ibert ?

FPGA设计心得(12)如何正确使用 in_system_ibert ?

作者头像
Reborn Lee
发布2020-09-24 15:23:08
5950
发布2020-09-24 15:23:08
举报
  • ?in_system_ibert IP定制要点
    • ?串行收发器的位置
  • ?如何例化in_system_ibert?
  • ?结尾

in_system_ibert IP定制要点

串行收发器的位置

在ISI定制中,需要选择所使用的串行收发器的位置,如下:

在这里插入图片描述

对应的IP端口处也会出现相应的端口,例如上图选择了2个Quad,也就是8个通道的串行收发器,那么对应的drp接口就有8个。

但这个对应关系让人很迷惑,具体的通道和drp端口信号是如何对应的呢?

如果有着严格的对应关系,那么数据手册或者其他形式有必要给出必要的说明,而不是让用户去猜测!人们常常犯着经验主义的错误,认为既然让你选择了Quad和通道,那么就应该对应连接?我在拿不准的时候也听过如此的论调,并信以为然,这花费了我很多的时间去寻找对应关系,并最终一无所获,当你使用了大量的通道,例如几十个,那么这种对应关系的寻找会更加消耗你的时间,特别是当项目中需要被测眼图的transceiver一方,有着混乱的通道使用!不管是什么原因,为了原理图布线方面也好,或者是任性使用,例如:如下定义的rx:

代码语言:javascript
复制
input [31:0] rx;

每4位使用一个Quad,也就是4个通道,对应关系如下:rx[0] 对应通道x1y39 rx[1] 对应通道x1y38 rx[2] 对应通道x1y37 rx[3] 对应通道x1y36

rx[4] 对应通道x1y35 rx[5] 对应通道x1y34 rx[6] 对应通道x1y33 rx[7] 对应通道x1y32

看起来已经有点意思了,这种还是倒过来约束的,还行,能接受。如果是下面这种对应关系:rx[0] 对应通道x1y36 rx[1] 对应通道x1y37 rx[2] 对应通道x1y38 rx[3] 对应通道x1y39

rx[4] 对应通道x1y32 rx[5] 对应通道x1y33 rx[6] 对应通道x1y34 rx[7] 对应通道x1y35

这就必须谴责了。如果有几十个通道,你说怎么玩吧,如果in_system_ibert又需要严格的通道对应关系,那么信号的连接将变得十分不直观,让接盘开发者面临青筋暴裂的危险。

还是去看数据手册吧,那么一个不起眼的IP核,拿不准的时候也需要阅读数据手册!如果有现场支持工程师,这种问题也不要问了,因为他很可能自家的数据手册都没有阅读,就按照惯性思维告诉你,如果不需要严格通道对应,人家IP核让你选择干嘛,然后你深信不疑,胡乱猜测,呃呃呃,gt1对应x1y39,或者gt1对应x1y0,白白浪费时间,项目做到最后,还对自己隐隐怀疑。或者最后结果没有问题,还以为,自己的运气是好的,选择是对的,并输出文档,告诉队友,就得这样干,我试过!!!

来看数据手册:The ISI core has no transceiver location constraints, nor are any attributes updated for selected transceivers. The selected transceiver information is only used to create an ISI template and group/display the selected transceiver in the Serial IO analyzer after downloading the bit file.

翻译一下:

ISI内核没有收发器位置约束,也没有为所选收发器更新任何属性。所选的收发器信息仅用于创建ISI模板,并在下载bit文件后在串行IO分析器中分组/显示所选的收发器。

很明显了,没有位置约束,所选择的收发器信息仅仅用于创建例化模板。告诉你有多少个gt,你接进去就完事了。

总结:最接近真理的地方在数据手册上,我们(除了制定者,设计者)外都是阅读者,各色各样的阅读者容易忽略部分信息,或者根据惯性思维来判断,因此,带着问题去数据手册寻找答案。

如何例化in_system_ibert?

由于这个IP没有提供例子程序,所以要正确无误地使用这个IP,还有一定的疑惑点?这个时候谁也别问,因为你可能问的人也只是听说过,或者见过,真正手把手体验过,实践过的人,也许很难精确遇到。如果你问了,他们会告诉你,把drp接口连接上去就好了,然后你看看你自己的应用场景,已经定制好的aurora,或者jesd,srio等等,我了个去,怎么没有drp端口,如何和in-system-ibert的drp接口连接? 当你找不到drp接口的时候,他们也许又会告诉你,在ip核内部有,引出来?你若怀疑,甚至还怪你资历不够的意思?

我来告诉你,IP核是不要轻易改动的,或者说不要改动,如果你找不到drp接口,可以尝试看看数据手册,或者试试去掉某些选项,或者添加某些选项,但我建议还是看看收据手册,数据手册会有那个接口的描述,你会得到答案。

这里就已经可能解决很多疑惑了,但是还不够,没有个示例来参考,又没有例子工程,我会不放心我连接的对不对,或者说对这个IP核使用的对不对,因为我一旦例化进去,并生成bit流,工程大了会消耗大量的时间,怎么办呢?

为了提高成功率还是要找到一个这个ip核使用的例子程序来研究研究,这里建议可以使用transceiver IP,内部有例化in-system-ibert的选项,你勾选之后随便生成一个例子程序,就可以看到这个ip核到底怎么使用的,照葫芦画瓢,是最直接的方式。

例如:

生成例子程序:

加粗样式

对着程序看看如何无误地使用in-system-ibert,并且如何配合VIO IP核来使用,都可以清晰地看到解决办法!

这些都是需要自己去发现的,而不是去问xxx。

结尾

这里只是告诉自己,也告诉迷茫的你方法,而没有提供一个具体的实例,自己去探索吧,数据手册,求知欲,才是王道。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA LAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • in_system_ibert IP定制要点
    • 串行收发器的位置
    • 如何例化in_system_ibert?
    • 结尾
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档