×

FPGA中IOB寄存器的使用心得

消耗积分:0 | 格式:rar | 大小:0.01 MB | 2020-12-28

分享资料个

  IOB寄存器跟通信有关的设计中多会用到,今天查了相关资料,总结如下:

  首先了解一下fpga的芯片内部结构:

  一个fpga主要是由可编程输入输出单元(图中的IOB模块),可编程逻辑单元(CLB模块),块RAM(图中的BRAM,也属于内嵌硬件),数字时钟管理(DCM,也属于内嵌硬件),还有一些内嵌的专用的硬件模块(DSP),IOB寄存器就在图中的IOB模块中。

  IOB 的内部结构如下:

  IOB单元简称IO单元,是芯片与外部器件的接口部分,用于完成不同电气特性下对输入输出信号的的驱动和匹配要求。目IO口的频率越来越高,一些高端的fpga通过DDR技术可使数据率达到Gb/s.

  

  在 这里多提一点:李老师提到,IOB多用在高速数据采样的时候,对一些很难采的信号要通过连接IOB寄存器(在UCF文件中约束)。在赛灵思系列FPGA 的IOB 中分别有输入和输出寄存器。如果将设计中的第一级寄存器或最后一级寄存器用IOB 内部寄存器实现,那么就可以缩短IO 引脚到寄存器之间的路径(理解这句话是关键,我的理解是:若输入输出不连IOB寄存器,则代码修改后(但逻辑功能相同)每次的布局布线后,输入输出信号会 被连在不同的内部寄存器上,这样输入信号进入第一级寄存器的布线延迟就会每次都不同,这样有可能在高速信号采集的时候不能正确采样,因为布线延迟会导致建 立或保持时间不满足;如果在UCF文件中使用IOB寄存器,则不管代码如何修改,输入信号进入fpga内部都是被第一级的IOB寄存器采样,更能满足采样 条件),这通常可以缩短大约1~2ns 的传输时延。

  但是在使用UCF文件约束IOB寄存器时,首先,有一些限制。对于输入寄存器在从管脚到寄存器间不能有组合逻辑存在。对于输出寄存器,在寄存器和管脚之间也不能有组合逻辑存在(也就是信号在输入输出之前在代码设计中都要干干净净打一拍)。对 于三态输出,在IOB中的所有的寄存器必须使用同一个时钟信号和复位信号,而且IOB三态寄存器必须低电平有效才能放到IOB中(三态缓冲器低电平有效, 所以在寄存器和三态缓冲器之间不需要一个反相器)。必须使软件能够选用IOB寄存器,可以设置全局实现选项:为输入、输出或输入输出选择IOB寄存器。缺 省值为关 off。

  你也可在综合工具或在用户约束文件UCF中设定,使得能够使用IOB寄存器。句法为: INST IOB = TRUE;

  下边是一网友的的例子:我想大家都应该知道IOB packing的概念吧,就是把寄存器放置到IOB内,这样寄存器数据可以直接从PAD输出,和FPGA内部SLICE实现相比,减少了布线延迟,提高了性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !