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的用高电平复位。

总结

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

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

审核编辑:汤梓红

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

    关注

    1631

    文章

    21806

    浏览量

    606688
  • Xilinx
    +关注

    关注

    71

    文章

    2172

    浏览量

    122346
  • 复位
    +关注

    关注

    0

    文章

    174

    浏览量

    24303
收藏 人收藏

    评论

    相关推荐

    FPGA复位的8种技巧

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

    复位电路的设计问题

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

    复位电路的三种方式 复位电路的原理和作用

    复位电路是一种电子电路,用于将微控制器或其他电子设备重置到其初始状态。这种电路通常在设备启动时或在需要清除当前状态以避免错误时使用。 1. 上电复位(Power-On Reset, POR
    的头像 发表于 10-21 10:28 1761次阅读

    复位电路的电容多大的 复位电路设计类型有哪几种

    复位电路是电子系统中的一个关键部分,它确保系统在启动或发生故障时能够正确地初始化。复位电路的设计取决于多种因素,包括系统的复杂性、所需的复位时间、以及是否需要上电复位(Power-On
    的头像 发表于 10-21 10:24 461次阅读

    复位电路静电整改案例分享(一)——交换机复位电路

    ​  复位电路静电整改案例分享(一)——交换机复位电路 一、摘要 复位电路可确保电路在启动时处于可控的状态,避免上电造成的未知问题。复位电路通常由一个
    的头像 发表于 10-19 14:56 473次阅读
    <b class='flag-5'>复位</b>电路静电整改案例分享(一)——交换机<b class='flag-5'>复位</b>电路

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

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

    浅谈国产异构双核RISC-V+FPGA处理器AG32VF407的优势和应用场景

    关于国产异构双核RISC-V+FPGA处理器AG32VF407的具体优势和应用场景浅谈如下: 优势 异构计算能力 : 异构双核设计结合了RISC-V的高效指令集和FPGA的灵活可编程性,能够针对特定
    发表于 08-31 08:32

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

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

    FPGA同步复位和异步复位

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

    示波器测量复位信号的原理和方法

    在电子工程领域,复位信号是确保系统稳定、可靠运行的关键因素之一。复位信号通常用于在系统出现故障或异常时,将系统恢复到初始状态,以便重新开始工作。因此,准确测量和分析复位信号对于电子系统的设计和调试
    的头像 发表于 05-17 17:14 1662次阅读

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

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

    电容在复位电路中的作用(复位电路具体要怎么设计)

    数字电路中寄存器和 RAM 在上电之后默认的状态和数据是不确定的,如果有复位,我们可以把寄存器复位到初始状态,RAM 的数据可以通过复位来触发 RAM 初始化程序逻辑如果进入了错误的状态。
    发表于 03-13 12:16 1750次阅读
    电容在<b class='flag-5'>复位</b>电路中的作用(<b class='flag-5'>复位</b>电路具体要怎么设计)

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

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

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

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

    什么是复位同步电路 reset synchronizer?

    复位同步电路 reset synchronizer 其实只在复位信号 release 的时候派上用场。复位结束后,这个电路其实就没用了。 但这个电路的时钟还在 switch,这个电路还在耗电。
    的头像 发表于 02-19 09:21 1585次阅读
    什么是<b class='flag-5'>复位</b>同步电路 reset synchronizer?