FPGA设计心得(13)aurora的线速率及其用户时钟之间的关系?
长话短说
由于工作很忙,所以一直没有时间来胡乱写写,需要注意的是文章内容不涉及任何秘密,纯粹来源自公开的数据手册以及Xilinx工具及其网站,文章内容严谨性以及真实性纯粹本人妄自理解,爱信不信!
周末半夜抽空记录下需要速记的东西,所以就长话短说!
aurora的用户时钟频率是多少?
在定制aurora IP核的时候,我们需要选择各种时钟的频率,包括GT参考时钟,INIT时钟以及DRP时钟,其中GT参考时钟是来自于专用的MGT bank上的专用端口,其他就没有必要。
从GT参考时钟开始,通过一系列的时钟管理单元,例如PLL,MMCM等,可以衍生出一系列的时钟供Transceiver以及aurora协议使用,今天的主角是十分重要的,用户逻辑侧时钟USER_CLK!
它等于多少?
从上面的定制页面可以看出,我们的线速率选择的是3.125Gbps,看起来很高了,其实看单位也就是bit而已!除以8,变成390.625MBps,这时候是字节了,如果传输的数据具有32bit呢?也就是4字节?那么线速率可以转换位97.65625MQBps,其中的QB就是QUAD Bytes(也就是双字,DW),如果使用一个时钟去传输这样的32bit数据,一个时钟传输一个数据,需要一个90多M的时钟就够了!
注意,上面说的是在没有编码的情况下,算出来的时钟,但是高速串口进行数据传输时,都是会编码的,8B/10B编码,那么传输32bit数据,编码后就得40bit了。线速率为3.125Gbps,那么如果一个并行用户时钟传输一个数据,需要一个78.125M的时钟就行了。
为了验证,就上面的定制页面,生成一个例子程序,进行仿真,如下:
对用户时钟进行测量,12.8ns时钟,频率不就是78.125M吗?
验证无误!
下面给出结论,如果采用8B/10B编码,用户时钟为线速率除以编码后的用户数据位宽。
编码前的位宽可以在IP的定制页面选择:
在算上编码,就很容易得出编码后的位宽!
aurora的用户时钟的来源?
为了得到auroa的用户时钟来源?我们就aurora的例子程序扒一扒!
从用户逻辑模块开始,一层一层追溯它的来源:
从user_clk_i,到USER_CLK,再到GT_CLK,再到txoutclk_out,最终追溯到原语GTXE2_CHANNEL中的TXOUTCLK;
当然接收模块的用户时钟来源于RXOUTCLK;
用户时钟也不是一直都有的,需要链路通路才行!
总结
很简单地聊几句,最后,我认为直到USER_CLK和线速率之间的关系是很重要的,有助于我们选择线速率。知晓了用户时钟和位宽,可以验证用户逻辑设计符不符合需求,例如总线转换,这样的速率是快了还是慢了,这对于设计有时候还是必要信息(异步转换需要跨时钟),快了可能不要紧,慢了就得加线速率,有的时候甚至需要多通道!
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/109140876
- 点赞
- 收藏
- 关注作者
评论(0)