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

    关注

    1655

    文章

    22283

    浏览量

    630192
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129915
  • 复位
    +关注

    关注

    0

    文章

    179

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    揭秘RESET复位键:引脚设计如何支撑硬件系统的重启通路

    RESET复位键在电子设备中承担着重启通路的核心角色,当系统因软件故障、硬件冲突或电源波动陷入异常时,它能通过硬件层面的强制复位,使设备快速脱离故障状态。这一功能的实现基于引脚功能与硬件设计的深度
    的头像 发表于 11-28 15:18 30次阅读
    揭秘RESET<b class='flag-5'>复位</b>键:引脚设计如何支撑硬件系统的重启通路

    GraniStudio:轴复位例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入轴复位例程,点击导入按钮。 打开轴复位运动例程所在路径,选中轴复位运动.gsp文件,点击打开,完成导入。 2.
    的头像 发表于 08-22 16:05 477次阅读
    GraniStudio:轴<b class='flag-5'>复位</b>例程

    GraniStudio零代码平台轴复位算子支持多少个轴同时复位,有哪些回零模式?

    GraniStudio平台在轴复位的功能上未对同时复位的轴数进行硬性限制,理论上支持任意数量轴同步复位,需要考虑的是在做多轴同步复位时要评估机械安全风险,建议提前确认机械在多轴同时
    的头像 发表于 07-07 18:02 483次阅读
    GraniStudio零代码平台轴<b class='flag-5'>复位</b>算子支持多少个轴同时<b class='flag-5'>复位</b>,有哪些回零模式?

    复位电路的核心功能和主要类型

    复位电路(Reset Circuit) 是数字系统中的关键功能模块,用于确保设备在上电、电压波动或异常状态下可靠复位至初始状态。其设计直接影响系统的稳定性和抗干扰能力。
    的头像 发表于 06-30 14:24 904次阅读
    <b class='flag-5'>复位</b>电路的核心功能和主要类型

    正激变换器的两种复位方式

    图(a)所示的是RCD复位正激变换器,即在变压器上并联了一个由二极管D,电容C,电阻R组成的环节,在开关S关断时由激磁电感和漏感的感应电势使二极管D导通,由电容C上的电压对变压器复位。图(b
    的头像 发表于 05-19 10:59 2.2w次阅读
    正激变换器的两种<b class='flag-5'>复位</b>方式

    LM3724系列 低功率电压监控和复位IC,带手动复位功能数据手册

    LM3722/LM3723/LM3724 微处理器监控电路可监控电源 在微处理器和数字系统中。它们在上电期间为微处理器提供复位, 掉电、掉电条件和手动复位。 LM3722/LM3723
    的头像 发表于 04-12 11:11 785次阅读
    LM3724系列 低功率电压监控和<b class='flag-5'>复位</b>IC,带手动<b class='flag-5'>复位</b>功能数据手册

    TPS3840-Q1 具有手动复位和可编程复位时间延迟的汽车高输入电压监控器数据手册

    当 VDD 上的电压降至负电压阈值 (V 以下) 时,复位输出信号被置位 ~它-~ ) 或当手动复位被拉至低逻辑 (V ~MR_L~ ).当 V 时 reset 信号被清除~DD 系列~上升到 V
    的头像 发表于 04-10 11:20 636次阅读
    TPS3840-Q1 具有手动<b class='flag-5'>复位</b>和可编程<b class='flag-5'>复位</b>时间延迟的汽车高输入电压监控器数据手册

    TPS3870-Q1 具有延时和手动复位功能的汽车级高精度过压复位 IC数据手册

    TPS3870-Q1 器件是一款集成过压 (OV) 监控器或复位 IC,采用业界最小的 6 引脚 DSE 封装。这款高精度电压监控器非常适合在低电压电源轨上工作且具有窄裕量电源容差的系统。低阈值迟滞
    的头像 发表于 04-10 11:09 523次阅读
    TPS3870-Q1 具有延时和手动<b class='flag-5'>复位</b>功能的汽车级高精度过压<b class='flag-5'>复位</b> IC数据手册

    TLV840系列 具有可调复位时间延迟和手动复位功能的低压监控器数据手册

    TLV840 系列电压监控器或复位 IC 可在高电压水平下工作,同时在整个 VDD 和温度范围内保持极低的静态电流。TLV840 提供低功耗、高精度和低传播延迟 (t p_HL = 30 μs
    的头像 发表于 04-10 10:17 681次阅读
    TLV840系列 具有可调<b class='flag-5'>复位</b>时间延迟和手动<b class='flag-5'>复位</b>功能的低压监控器数据手册

    复位电路的作用、控制方式和类型

    复位电路也是数字逻辑设计中常用的电路,不管是 FPGA 还是 ASIC 设计,都会涉及到复位,一般 FPGA或者 ASIC 的复位需要我们自
    的头像 发表于 03-12 13:54 3534次阅读
    <b class='flag-5'>复位</b>电路的作用、控制方式和类型

    浅谈直流有刷电机驱动及调速技术

    ,图1 为 H 桥电机驱动 电路示意图 : 图1 H桥电机驱动电路示意图 点击下方附件查看全文*附件:20250307_浅谈直流有刷电机驱动及调速技术.docx
    发表于 03-07 15:24

    做APPSFPGA的vhdl源码,fpga如何修改pgen送数据到数据总线然后复位

    有人在做 APPSFPGA的 vhdl 源码吗,我刚开始接触 fpga 如何修改 pgen 送数据 到数据总线 然后 复位 ,有大佬可以指点一下吗
    发表于 02-21 06:01

    AN-686: 实现I²C复位

    电子发烧友网站提供《AN-686: 实现I²C复位.pdf》资料免费下载
    发表于 01-15 16:26 0次下载
    AN-686: 实现I²C<b class='flag-5'>复位</b>

    EE-64:设置复位时的模式引脚

    电子发烧友网站提供《EE-64:设置复位时的模式引脚.pdf》资料免费下载
    发表于 01-14 15:14 0次下载
    EE-64:设置<b class='flag-5'>复位</b>时的模式引脚

    使用DAC38RF84过程中出现复位脚异常现象,怎么解决?

    (理论值为1.8V);在用FPGA控制IO向该复位脚输入1.8V高电平时,用万用表测量复位脚电压,电压值为1.0V(理论值为1.8V)。因复位脚一直处于
    发表于 12-16 08:41