1 浅谈FPGA的复位设计问题-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

浅谈FPGA的复位设计问题

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-19 19:10 次阅读

1、为什么要设计复位?

首先回想一下,在平常的设计中我们是不是经常采用同步复位或者异步复位的写法,这一写法似乎都已经形成了肌肉记忆----每次我们写always块的时候总是会对所有的寄存器写一个复位赋初值的语句。

这样设计的目的是什么?似乎是为了给寄存器一个初值,避免仿真不定态或初始化操作错误。又似乎是为了在调试时能方便地使用按键进行复位(最常用的全局复位)。这么一看复位似乎是蛮重要的。

2、复位是否有必要?

似乎在平常的设计中,多数会使用异步复位的方式,异步复位由于是异步信号,所以不可避免地引入了亚稳态的可能,这一可能性随着时钟频率的提高而增加。好像在平常的设计与使用中,异步复位电路也不会引发什么问题。这是因为随着器件工艺的提升,现在器件的上升时间在0.0x 纳秒级,而一般设计的时钟周期可能在100~200M。只要复位的释放不是刚好在这0.0x 纳秒内就不会引发亚问题问题,显然这个概率极小(比例--0.0x:10),基本可以说是99.99不会有问题。但是著名的墨菲定律高速我们:再小概率的事情都会发生。所以不管怎样这种事情我们都应该要想办法避免。

再来看我们使用复位的主要目的:为了给寄存器一个初始值,从而避免仿真或使用错误。然而实际上,Xilinx的FPGA的内部资源(触发器和RAM)等都会在上电后默认赋初值,一般是0,或者可以在定义寄存器时手动赋值,如:

reg [1:0] test = 2'b01; //定义时即赋初值

这么看的话仅仅为了赋初值而存在的赋值就没有意义的。数据链路上有初值就够了,因为后来的数据总会冲走之前的数据,数据仍然能稳步传递。但是控制链路就一定需要被复位后一定要恢复到初始状态,不然会“乱跑‘从而导致代码运行异常。其中最经典的例子就是状态机了,显然,如果状态机的状态模块没有复位的话,那么可能在出现异常后永远无法恢复到正常状态了。

最后,复位所使用的资源远超你的想象:

3、应该怎样设计复位?

说了这么多,那到底要怎么设计复位?

同步or异步?

在一文中探讨过同步复位与异步复位的特点。

同步复位:

有利于仿真

由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺,没有亚稳态问题

可以使所设计的系统成为 100%的同步时序电路,有利于时序分析

复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑延时因素

大多数的FPGA的DFF都只有异步复位端口,采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样会耗费逻辑资源

异步复位

大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源

设计相对简单,异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR

复位信号容易受到毛刺的影响且容易存在亚稳态问题

建议使用同步复位的方式,若一定要使用异步复位的话,则建议使用异步复位、同步释放的方法。

高or低?

选择高还是低,需要根据具体的电平标准、器件结构来选择,并不是一概而论低电平有效的好或者高电平有效的好。简单经验:Altera的用低电平复位,Xilinx的用高电平复位。

总结

复位信号能不用就不要用,需要特定初值的可以在定义寄存器时赋值

如果一定需要则使用异步复位、同步释放的方法,并将复位信号局部化,避免高扇出。

审核编辑:汤梓红

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

    关注

    1629

    文章

    21729

    浏览量

    602977
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121298
  • 复位
    +关注

    关注

    0

    文章

    171

    浏览量

    24211
收藏 人收藏

    评论

    相关推荐

    FPGA复位的8种技巧

    FPGA 设计中,复位起到的是同步信号的作用,能够将所有的存储元件设置成已知状态。在数字电路设计中,设计人员一般把全局复位作为一个外部引脚来实现,在加电的时候初始化设计。全局复位
    的头像 发表于 11-16 10:18 310次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>复位</b>的8种技巧

    复位电路的设计问题

    前言 最近看advanced fpga 以及fpga设计实战演练中有讲到复位电路的设计,才知道复位电路有这么多的门道,而不是简单的外界信号输入系统
    的头像 发表于 11-15 11:13 153次阅读
    <b class='flag-5'>复位</b>电路的设计问题

    复位电路介绍 复位电路的原理及作用

    复位电路(Reset Circuit)是现代电子设备中常见的一种关键电路,它用于确保在正确的时间和条件下将系统恢复到初始状态。复位电路的设计和应用对于保障电子系统的稳定性和可靠性至关重要。 一、复位
    的头像 发表于 10-18 16:44 1588次阅读

    STM32复位电路用复位芯片和阻容复位电路区别

    STM32是一款广泛使用的微控制器,其复位电路设计对于系统的稳定性和可靠性至关重要。本文将详细介绍STM32复位电路中使用复位芯片和阻容复位电路的区别,以及各自的优缺点和应用场景。 引
    的头像 发表于 08-06 10:26 1398次阅读

    FPGA同步复位和异步复位

    FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的复位操作是设计过程中不可或缺的一环,它负责将电路恢复到初始状态,以确保系统的正确启动和稳定运行。在FPGA设计中,
    的头像 发表于 07-17 11:12 1506次阅读

    FPGA设计添加复位功能的注意事项

    本文将回顾使用重置输入对给定功能进行编码的一些基本注意事项。设计者可能会忽视使用复位输入的后果,但不正确的复位策略很容易造成严重处罚。复位功能会对 FPGA 设计的速度、面积和功耗产生
    发表于 05-03 09:49 200次阅读
    向<b class='flag-5'>FPGA</b>设计添加<b class='flag-5'>复位</b>功能的注意事项

    MCU复位RAM会保持吗,如何实现复位时变量数据保持

    在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢?
    的头像 发表于 03-01 09:32 2473次阅读
    MCU<b class='flag-5'>复位</b>RAM会保持吗,如何实现<b class='flag-5'>复位</b>时变量数据保持

    ABB变频器怎么复位 | 复位时可能会出现哪些问题?

    ABB变频器是一种应用广泛的工业自动化设备,广泛应用于电机控制、电力传输、风机控制和制造等领域。然而,在使用ABB变频器的过程中,有时候我们可能需要对设备进行复位,以达到重新设置和调整的目的。那么
    的头像 发表于 02-21 10:50 7756次阅读
    ABB变频器怎么<b class='flag-5'>复位</b> | <b class='flag-5'>复位</b>时可能会出现哪些问题?

    如何排查GD32 MCU复位是由哪个复位源导致的?

    上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位
    的头像 发表于 02-03 09:46 1727次阅读
    如何排查GD32 MCU<b class='flag-5'>复位</b>是由哪个<b class='flag-5'>复位</b>源导致的?

    GD32 MCU电源复位和系统复位有什么区别

    GD32 MCU的复位分为电源复位和系统复位,电源复位又称为冷复位,相较于系统复位,上电
    的头像 发表于 02-02 09:37 1494次阅读
    GD32 MCU电源<b class='flag-5'>复位</b>和系统<b class='flag-5'>复位</b>有什么区别

    异步复位异步释放会有什么问题?FPGA异步复位为什么要同步释放呢?

    一般来说,复位信号有效后会保持比较长一段时间,确保 register 被复位完成。但是复位信号释放时,因为其和时钟是异步的关系,我们不知道它会在什么时刻被释放。
    的头像 发表于 01-24 09:32 1717次阅读
    异步<b class='flag-5'>复位</b>异步释放会有什么问题?<b class='flag-5'>FPGA</b>异步<b class='flag-5'>复位</b>为什么要同步释放呢?

    同步复位和异步复位到底孰优孰劣呢?

    同步复位和异步复位到底孰优孰劣呢? 同步复位和异步复位是两种不同的复位方式,它们各自有优势和劣势,下面将详细介绍这两种
    的头像 发表于 01-16 16:25 1743次阅读

    复位电路的复位条件和复位过程

    电源监测芯片复位电路:这是最常见的复位电路类型,使用专用的电源监测芯片来监测电源电压,并在电压低于或高于预设阈值时触发复位信号。
    的头像 发表于 01-16 16:04 1230次阅读

    stm32复位电容容值

    STM32是意法半导体(STMicroelectronics)推出的一系列32位微控制器,具有低功耗、高性能和丰富的外设功能。在STM32微控制器中,复位电容是电路中的一个重要组成部分,用于保持系
    的头像 发表于 01-05 17:39 1751次阅读

    ht7044a复位原理

    HT7044A 是一种复位电路芯片,常用于电子设备中实现对系统的复位功能。复位是一项重要的功能,用于将整个系统恢复到初始状态,以确保系统在启动和运行时的可靠性和稳定性。在本文中,我们将详细介绍
    的头像 发表于 01-04 11:24 1630次阅读