0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用锁存器的Time Borrowing技术来替代关键路径中的寄存器

e9Zb_gh_8734352 来源:FPGA技术联盟 作者:FPGA技术爱好者 2022-06-14 16:56 次阅读

ASIC中用到锁存器的地方很多,Time Borrowing是使用锁存器的典型应用之一,在深度流水线的设计中可以极大地提高处理性能。另外锁存器和寄存器相比能够显著的减小面积:寄存器占用的硅片面积是锁存器的两倍,在ASIC设计中一个典型的主从寄存器是由两个锁存器级联来实现的。

图1说明了如何使用锁存器的Time Borrowing技术来替代关键路径中的寄存器。通过重新分配相邻锁存器之间的组合逻辑延迟,从而延长最长路径的时钟周期。

68b0772a-ebbb-11ec-ba43-dac502259ad0.png

对于Xilinx的 FPGA芯片来说,不管是锁存器还是寄存器,都是用相同的硬件资源实现的。这些硬件资源共享相同的数据输入/输出、复位和使能信号,可以配置成边沿触发的寄存器或者电平使能的锁存器。因此在 FPGA芯片中,无论是锁存器还是寄存器都使用相同的硬件资源,使用锁存器并不会带来任何的优势。

寄存器和锁存器关于数据的存储方面存在着根本的差异。锁存器属于电平敏感电路,当门使能信号有效时,输入数据将直接输出;而门使能信号无效时,数据保持到锁存器中。寄存器属于边沿敏感电路,数据只有在时钟的上升沿或者下降沿才会被保存到寄存器中。

虽然锁存器和寄存器使用相同的FPGA硬件资源,但还是要尽量避免使用前者。首先,当锁存器处于导通状态时,输入信号的毛刺会直接传递到后面的逻辑中;另外,对于静态时序分析工具来说、分析寄存器远远比锁存器简单得多。因为对于寄存器而言,只考虑到时钟的上升或者下降沿:对于锁存器而言,不仅需要考虑其上升沿和下降沿,而且还要考虑上、下沿之间的持续时间。对于具有周期性抖动的信号而言,锁存器常常会造成问题。而对于边沿敏感的寄存器,由于只需要关心时钟边沿的达到时间,因此即便是门使能的信号具有周期抖动,也不会造成任何的问题。ASIC设计中锁存器的Time Borrowing电路,对于FPGA结构来讲更是难以回避的挑战。由于某级流水线的延迟和前面所有流水线的延迟相关,这种流水线的高度相关性将使得静态时序分析更加难以处理,并且其困难程度和流水线的级数也不存在任何的线性关系。

正是因为上述原因,基于锁存器的设计需要更加仔细和周密的时序约束。对于基于锁存器流水线的逻辑综合和物理实现,更是要从整个芯片的角度去做分析,才能够正确地约束不同的时序关系。

因此在将ASIC 设计移植到FPGA时,最好就是将电平使能的锁存器转换为边沿触发的寄存器。这需要工程师投人许多的时间去分析和修改,因为不是所有描述锁存器的代码风格都能够通过同样的方式进行转换。

大多数商用综合工具都支持锁存器的设计,代码中的if语句如果缺少相应的case语句,将自动生成锁存器。

68cd24ce-ebbb-11ec-ba43-dac502259ad0.png

当Xilinx的综合工具XST 遇到锁存器之后,会产生以下类似的报告。

68e189f0-ebbb-11ec-ba43-dac502259ad0.png

通过修改成综合工具所支持的代码风格,可以将锁存器转换成寄存器。下面通过一个简单的例子展示了其中的一种代码风格,可以将门使能信号转换成时钟信号。

68f10100-ebbb-11ec-ba43-dac502259ad0.png

当然也有其他一些代码风格,比如时钟可以使用上升沿或者下降沿(Xilinx的FPGA不支持双时钟沿)、同步或者异步的复位置位等。

原文标题:FPGA知识汇集-锁存器的移植

文章出处:【微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

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

    关注

    1600

    文章

    21286

    浏览量

    592906
  • 寄存器
    +关注

    关注

    30

    文章

    5022

    浏览量

    117634
  • 锁存器
    +关注

    关注

    8

    文章

    742

    浏览量

    41018

原文标题:FPGA知识汇集-锁存器的移植

文章出处:【微信号:gh_873435264fd4,微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CY8CMBR3xxx系列的LATCHED_BUTTON_STAT寄存器机制是怎样的?

    请教下CY8CMBR3xxx系列的LATCHED_BUTTON_STAT寄存器机制是怎样的?器件是在什么时候 去清除LATCHD_BUTTON_STAT?谢谢。
    发表于 01-24 07:43

    、触发寄存器和缓冲的区别

    的数据和运算结果,它被广泛的用于各类数字系统和计算机。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由
    发表于 10-09 16:19

    FPGA静态时序分析模型——寄存器寄存器

                (公式3-2)3.1.4 Clock Arrival Time  时钟到达时间(Clock Arrival Time):时钟从latch边沿到达
    发表于 01-11 11:43

    寄存器和触发的区别

    ,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由或触发构成的,因为一个
    发表于 07-03 11:50

    触发寄存器三者的区别

    公共的控制信号控制,而各个数据端口仍然是各处独立地接收数据。这样所构成的能一次传送或存储多位数据的电路就称为“”。寄存器:在实际的数
    发表于 09-11 08:14

    【转】数字电路三剑客:、触发寄存器

    寄存器。 在FPGA设计建议如果不是必须那么应该尽量使用触发而不是。钟控D触发
    发表于 10-27 22:38

    的缺点和优点

    ASIC设计应该说比ff要简单,但是在FPGA的资源,大部分器件没有这个东西,所以需要用一个逻辑门和ff
    发表于 04-23 03:35

    寄存器应用

    存储电路。寄存器的存储电路是由或触发构成的,因为一个
    发表于 06-27 04:20

    【答疑】关于问题的讨论

    。由引可见,实现“保持不变”的关键在于D寄存器。众所周知,组合逻辑代码是没有D寄存器的,那么它又是如何实现保持不变呢?这个就会用到
    发表于 03-02 00:25

    的相关资料分享

    前言在学习了基本原理后,剩下就是对各个外设以及对单片机寄存器的相关学习,如果没有看过之前对
    发表于 12-03 08:05

    74HC595移位寄存器怎么使用

    ,各个厂商的DataSheet也是大同小异。在使用74HC595之前,先从DataSheet了解下这款常用逻辑器件,以东芝(TOSHIBA)的74HC595D为例8位移位寄存器/
    发表于 12-07 07:40

    寄存器的功能是什么

    寄存器寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。一个触发可以存储1位二进制代码,故存放n位二进制代码的寄存器
    发表于 02-24 06:35

    STM32寄存器点亮LED简介

    【8-15】端口配置寄存器 32位IDR 数据寄存器 32位 输入ODR 数据寄存器 32位 输出BSRR 置位/复位寄存器 32位BRR 复位
    发表于 02-28 06:51

    使用STM32的IO端口都由几个寄存器控制呢

    ;1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR;1 个 32 位的寄存器 LCKR。CRH 和 CRL
    发表于 02-28 07:22

    关于锁存器的time borrowing概念

    静态时序分析经常会遇到基于锁存器(latch)的设计从而引入了一个概念称为“Time Borrowing”。这篇文章向大家解释了什么是time borrowing,以及锁存器(latc
    发表于 10-02 07:54 788次阅读