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

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

3天内不再提示

详细讲解同步后的复位是同步复位还是异步复位?

Hx 来源:FPGA探索者 作者:FPGA探索者 2021-04-27 18:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Xilinx 复位准则:Xilinx FPGA复位策略

(1)尽量少使用复位,特别是少用全局复位,能不用复位就不用,一定要用复位的使用局部复位;

(2)如果必须要复位,在同步和异步复位上,则尽量使用同步复位,一定要用异步复位的地方,采用“异步复位、同步释放”;

(3)复位电平选择高电平复位;

(这里说明,由于 Altera 和 Xilinx 器件内部结构的不同,Altera 的 FPGA 推荐低电平复位)

一、异步复位同步释放

针对异步复位、同步释放,一直没搞明白在使用同步化以后的复位信号时,到底是使用同步复位还是异步复位?

比如针对输入的异步复位信号rst,使用本地时钟clk将其同步化以后得到一个新的复位信号sys_rst,当使用sys_rst时,是将sys_rst作为同步复位信号还是异步复位信号?

always @(posedge clk or posedge rst) begin if(rst)begin rst_r0 《 = 1‘b1; rst_r1 《 = 1’b1; end else begin rst_r0 《 = 1‘b0; rst_r1 《 = rst_r0; end end assign sys_rst = rst_r1;

如下图所示,选方式1还是方式2?

100062600-124726-1.png

针对此问题查找了很多资料,网络上多是将sys_rst继续按照方式1异步复位使用,Xilinx复位白皮书wp272中提到的异步复位同步释放 如图所示:

100062600-124727-2.png

对于输入的异步复位Asynchronous Reset,首先使用了4个触发器来做同步(一般用2个即可,4个出现亚稳态的概率更小),触发器类型为FDP(异步置位),同步化以后的复位信号去使用时综合出的触发器类型为FDR(同步复位),即在Xilinx中是将sys_rst按照方式2同步复位使用。

使用FDP异步置位的原因是因为Xilinx推荐高电平复位,当异步复位信号到来时,输出复位电平“1”,即异步置位FDP,当复位消失后,D触发器在每个时钟边沿输出前一级触发器的值,一定周期后,最后一级的FDP稳定输出“0”。

使用Xilinx A7系列FPGA实现异步复位、同步释放代码,确定同步化后的复位使用情况。

二、Xilinx复位程序对比

1. 将同步化后的复位当作异步复位信号

/******FPGA探索者******/ always @(posedge clk or posedge rst_async) begin if(rst_async == 1’b1) begin rst_sync_reg1 《= 1‘b1; rst_sync_reg2 《= 1’b1; rst_sync_reg3 《= 1‘b1; rst_sync_reg4 《= 1’b1; end else begin rst_sync_reg1 《= 1‘b0; rst_sync_reg2 《= rst_sync_reg1; rst_sync_reg3 《= rst_sync_reg2; rst_sync_reg4 《= rst_sync_reg3; end end wire sys_rst; assign sys_rst = rst_sync_reg4; always @(posedge clk) begin if(sys_rst == 1’b1) begin data_out_rst_async 《= 1‘b0; end else begin data_out_rst_async 《= a & b & c & d; end end

综合并布局布线后的原理图如图所示,显然,综合后对sys_rst复位,将其作为异步复位综合出FDCE同步使能异步复位(这里不考虑使能),和白皮书WP272给出的参考电路显然不一致。

100062600-124730-3.png

100062600-124732-4.png

2. 将同步化后的复位当作同步复位信号

/******FPGA探索者******/ always @(posedge clk or posedge rst_async) begin if(rst_async == 1’b1) begin rst_sync_reg1 《 = 1‘b1; rst_sync_reg2 《 = 1’b1; rst_sync_reg3 《 = 1‘b1; rst_sync_reg4 《 = 1’b1; end else begin rst_sync_reg1 《 = 1‘b0; rst_sync_reg2 《 = rst_sync_reg1; rst_sync_reg3 《 = rst_sync_reg2; rst_sync_reg4 《 = rst_sync_reg3; end end wire sys_rst; assign sys_rst = rst_sync_reg4; always @(posedge clk) begin if(sys_rst == 1’b1) begin data_out_rst_async 《 = 1‘b0; end else begin data_out_rst_async 《 = a & b & c & d; end end

综合并布局布线后的原理图如图所示,显然,综合后对sys_rst复位,将其作为同步复位综合出FDRE同步使能异步复位(这里不考虑使能),和白皮书WP272给出的参考电路一致。

100062600-124734-5.png

异步复位相比较同步复位,在Xilinx的FPGA中资源是一致的,异步复位的优势在于复位信号一来就能检测到,不需要保持至少一个时钟周期才能在时钟边沿检测到,通过仿真来验证上述电路是否能实现异步复位一来就能检测到。

三、仿真结果

设置时钟50MHz,时钟周期20ns,给一个持续时间3ns的异步复位信号,且持续时间均不出现在时钟上升沿检测期间,可以看到:

(1)rst_async异步复位一旦给出,用于同步的4个寄存器rst_sync_reg1~4立刻输出高电平“1”,在下一个时钟上升沿检测到同步复位并将输出data_out_rst_async复位;

(2)异步复位信号释放后,经过同步的sys_rst经过一定周期后在时钟边沿同步释放;

100062600-124735-6.png

按照同样的复位,将sys_rst看作异步复位,仿真结果如下,相比于上图,区别在于异步复位信号rst_async一旦产生,输出立刻复位,且同样是同步释放,好像这种处理才更符合异步复位、同步释放。。。。。。

100062600-124737-7.png

那么为什么Xilinx白皮书还是将sys_rst按照同步复位去做的呢?难道写错了?

综合考虑可能有这样的因素:

(1)当作同步复位的差别只在于复位时间会稍晚一些,要在时钟的下一个边沿检测到,但是还是能够识别到输入的rst_async异步复位信号,所以从复位角度来说,都能够后实现复位效果;

(2)根据Xilinx复位准则,我们知道同步复位相比异步复位有很多好处,具体参见:Xilinx FPGA 复位策略白皮书,既然两者对后级复位没有功能上的差别,那么优先选择同步复位;

经过异步复位同步释放处理后,相比于纯粹的异步复位,降低了异步复位信号释放导致亚稳态的可能性;相比同步复位,能够识别到同步复位中检测不到的复位信号(如上图所示的rst_async在同步复位是检测不到的);综合两者的优势,异步复位同步释放。

四、Altera复位

Altera还是把这个同步后的复位当作异步复位来用的,且推荐低电平复位。

从上面的分析来看,这里当作异步复位还是同步复位对于复位结果本身没有太大的影响,区别在于Xilinx是推荐同步复位来节省资源(比如DSP48E或BRAM,异步复位比同步复位耗资源),而Altera的FPGA中带异步复位的触发器,想要同步复位需要消耗更多的资源。

100062600-124738-8.png

编辑:lyn

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

    关注

    1656

    文章

    22291

    浏览量

    630401
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129969
  • 同步复位
    +关注

    关注

    0

    文章

    27

    浏览量

    10956
  • 异步复位
    +关注

    关注

    0

    文章

    47

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用于稳定电源设计的复位IC应用实例

    现代电子设备正面临电压波动、浪涌电压以及输入电源不稳定等问题。如果缺乏适当的电压监测与复位保护功能,系统可能会出现误动作、异常复位,甚至导致硬件损坏。
    的头像 发表于 12-08 09:41 350次阅读
    用于稳定电源设计的<b class='flag-5'>复位</b>IC应用实例

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

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

    CPU的几种复位方式适合哪些场景?

    1、上电复位 适用场景:系统首次上电或电源以外断电重新上电时; 2、看门狗复位 适用场景:虚脱程序运行异常,如陷入死循环或长时间无响应时; 3、软件复位 适用场景:软件程序需重启
    发表于 11-27 07:56

    单片机如何选择复位方式?

    时钟,使系统进入正常工作状态。 这种复位方式简单直接,适用于大多数单片机系统。其特点是复位过程与电源上电过程同步,无需额外的复位电路。 然而,由于电源上电曲线可能受到外部因素的影响,因
    发表于 11-26 08:09

    GraniStudio:轴复位例程

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

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

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

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

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

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

    LM3722/LM3723/LM3724 微处理器监控电路可监控电源 在微处理器和数字系统中。它们在上电期间为微处理器提供复位, 掉电、掉电条件和手动复位。 LM3722/LM3723
    的头像 发表于 04-12 11:11 794次阅读
    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 650次阅读
    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 530次阅读
    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 687次阅读
    TLV840系列 具有可调<b class='flag-5'>复位</b>时间延迟和手动<b class='flag-5'>复位</b>功能的低压监控器数据手册

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

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

    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>时的模式引脚

    ADS52J90 JESD有时钟复位、CGS、ILAS几个同步环节,怎么确定位于哪个环节?

    JESD有时钟复位、CGS、ILAS几个同步环节,怎么确定位于哪个环节? 用示波器采样JESD线上的数据,感觉没有信号输出
    发表于 12-27 07:17