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

网友投稿 898 2022-05-29

文章目录

in_system_ibert IP定制要点

串行收发器的位置

如何例化in_system_ibert?

结尾

in_system_ibert IP定制要点

串行收发器的位置

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

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

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

如果有着严格的对应关系,那么数据手册或者其他形式有必要给出必要的说明,而不是让用户去猜测!

人们常常犯着经验主义的错误,认为既然让你选择了Quad和通道,那么就应该对应连接?

我在拿不准的时候也听过如此的论调,并信以为然,这花费了我很多的时间去寻找对应关系,并最终一无所获,当你使用了大量的通道,例如几十个,那么这种对应关系的寻找会更加消耗你的时间,特别是当项目中需要被测眼图的transceiver一方,有着混乱的通道使用!

不管是什么原因,为了原理图布线方面也好,或者是任性使用,例如:

如下定义的rx:

input [31:0] rx;

1

每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

这就必须谴责了。

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

如果有几十个通道,你说怎么玩吧,如果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。

结尾

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

FPGA

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:与华为云社区一起成长
下一篇:Codeforces Round #264 (Div. 2)
相关文章