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
    +关注

    关注

    1655

    文章

    22282

    浏览量

    630060
  • 寄存器
    +关注

    关注

    31

    文章

    5588

    浏览量

    129035
  • 锁存器
    +关注

    关注

    8

    文章

    952

    浏览量

    43826

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA的设计为什么避免使用

    文章都对有个误解,我们后面会详细说明。 这篇文章,我们包含如下内容: ①、触发
    的头像 发表于 11-16 11:42 9234次阅读
    FPGA的设计<b class='flag-5'>中</b>为什么避免使用<b class='flag-5'>锁</b><b class='flag-5'>存</b><b class='flag-5'>器</b>

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

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

    寄存器和触发的区别

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

    触发寄存器三者的区别

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

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

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

    74LS595-8位输出移位寄存器

    74LS595-8位输出移位寄存器,常用作数码管驱动芯片
    发表于 01-12 17:38 17次下载

    关于time borrowing概念

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

    如何在项目中使用移位寄存器

     第一个时钟周期将其加载到A.然后,的输出具有加载到
    发表于 07-15 10:02 1957次阅读
    如何在项目中使用移位<b class='flag-5'>寄存器</b>

    、触发寄存器的关联与区别及其相应的verilog描述

    1:、触发寄存器的关联与区别 首先应该明确
    的头像 发表于 12-19 12:25 1.4w次阅读

    一文详细区分寄存器和触发

    你有没有遇到过这样奇怪的事:你一直以为自己知道某件事,但当你试着向别人解释它时,你才发现自己的论述存在漏洞和逻辑上的差异?这就是我最近所遇到的情况,当时有人问我和触发
    的头像 发表于 01-30 15:21 3714次阅读

    寄存器的工作原理

    或触发构成的,因为一个或触发
    发表于 02-20 14:02 9815次阅读

    什么是寄存器有何区别

    (Latch)是一种基本的数字电路元件,用于存储二进制数字的状态信息,并能够在需要时通过加电或控制信号的作用保持状态。它通常由几个逻辑门组成,可以实现简单的存储、移位、计数等功能。
    的头像 发表于 04-09 18:45 1.1w次阅读

    具有3态输出的8位寄存器收发数据表

    电子发烧友网站提供《具有3态输出的8位寄存器收发数据表.pdf》资料免费下载
    发表于 05-13 10:38 0次下载
    具有3态输出的8位<b class='flag-5'>锁</b><b class='flag-5'>存</b><b class='flag-5'>寄存器</b>收发数据表

    带输入的8位移位寄存器数据表

    电子发烧友网站提供《带输入的8位移位寄存器数据表.pdf》资料免费下载
    发表于 05-13 11:15 0次下载
    带输入<b class='flag-5'>锁</b><b class='flag-5'>存</b><b class='flag-5'>器</b>的8位移位<b class='flag-5'>寄存器</b>数据表

    、触发寄存器的区别

    在数字电路和计算机系统、触发寄存器都是关键
    的头像 发表于 05-23 15:28 4133次阅读