异步复位、同步释放——系统完美稳定

上一篇我们聊了状态机和组合逻辑的冒险竞争,组合逻辑易产生毛刺从而造成系统不稳定,所以在FPGA设计中尽量采用时序逻辑赋值,那么时序逻辑就一定时稳定的吗?我们今天就来聊聊时序逻辑的冒险竞争!

首先我们来聊聊时序逻辑中最基础的部分D触发器的同步异步,同步复位即复位信号随系统时钟的边沿触发起作用,异步复位即复位信号不随系统时钟的边沿触发起作用,置数同理,rst_n表示低电平复位,我们都知道D触发器是一个具有异步复位异步置数的器件,那么怎么样Verilog来具体描述这个器件呢,接下来我们就来看一下,这里以Vivado 2017.3为例。

D触发器的几种表示形式

同步复位

异步复位

异步复位,同步置数。

异步复位,异步置数

      同步异步无非就是一个是否受系统时钟边沿触发,如果想要异步就直接加一个敏感信号就好了。不过一般工程中的书写形式就是异步复位,不过这种设计方法也有弊端,原因就是时序逻辑的冒险与竞争的问题。

异步复位、同步释放

如下图可以看到异步复位的结构图,D触发器是复位优先级高于clk优先级,所以采用通异步复位的方法,但是异步复位D触发器存在竞争与冒险,比如当clk的上升沿和rst_n的下降沿同时来临的时候这时候系统应该听谁的,同样当clk的上升沿和rst_n的上升沿同时来临的时候容易使寄存器出现亚稳态。

      亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。这时系统是处于极不稳定的状态,这也是我们需要考虑的。

有人说既然异步复位会出现冒险竞争那我们使用同步复位不就行了,我们来看看同步复位的逻辑结构图,同步复位虽然解决了当clk的边沿来临的时候rst_n的边沿也正好来临所出现的冒险与竞争,但是从综合的电路上可以看出,多了一个组合逻辑,选择器(MUX),可想而知如果所有的寄存器复位都是这样,那会多浪费多少资源。那么这样就没有办法再解决了吗?答案是有的,一位前辈曾经说过,从正确到完美的道路是十分艰辛的,我们为了追求完美,引入异步复位、同步释放机制,既解决了同步复位浪费资源问题,有解决了异步复位带来的亚稳态。

这是复位信号同步化代码,系统时钟不变化,还是采用异步复位的方法,但是当复位信号操作时会进入一个同步寄存器,使得复位信号同步化,这样既避免了异步复位的冒险与竞争,又避免了同步复位耗费太多资源。只需要将复位信号同步化编写成独立模块,然后顶层例化就好了。系统时钟信号不变化。

上电延时  

开发板接通电源后会有一小段不稳定的状态,在比较大的工程中,逻辑资源利用的比较多的情况下,如果加上电源后直接进行复位操作,同样会使寄存器不稳定,所以,类似于按键消抖的方法,我们也给板子加电源后延时50ms,当系统稳定后在进行复位操作,再看bingo的书时,他是将这两个个分成两个模块然后实例化到一起,但为了提高代码的可移植性,我将异步复位同步释放和上电延时50ms写在一个模块。具体实现如下。

对于较小的工程,进行这些操作与否也就无可厚非,如果对于一个项目,需要要求必须尽善尽美,FPGA的优势便是数字信号处理,速度快,我们在保持速度的前提下,还需要使其准确率也提高,尽量占用少量的资源。这样异步复位,同步释放的机制就体现出来了。

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Linux HugePage 特性

    HugePage,就是指的大页内存管理方式。与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效。本文描述了什么是Hu...

724
来自专栏大闲人柴毛毛

01计算机基本组成

CPU的种类 cpu的内部集成了一些指令集,所有软件的运行都需要cpu中的这些指令集来完成。根据指令集的不同,cpu被分为两类:含有精简指令集的cpu和含有复杂...

26211
来自专栏Java技术

面试必备:什么是一致性Hash算法?

最近有小伙伴跑过来问什么是Hash一致性算法,说面试的时候被问到了,因为不了解,所以就没有回答上,问我有没有相应的学习资料推荐,当时上班,没时间回复,晚上回去了...

751
来自专栏weixuqin 的专栏

计算机组成原理学习笔记(一)

2905
来自专栏刘君君

Rest Notes-基于网络应用的架构风格

1072
来自专栏blackheart的专栏

[解读REST] 4.基于网络应用的架构风格

衔接上文[解读REST] 3.基于网络应用的架构,上文介绍了一组自洽的术语来描述和解释软件架构;如何利用架构属性评估一个架构风格;以及对于基于网络的应用架构来说...

1785
来自专栏用户画像

北理(2014年)813计算机专业基础

1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。

711
来自专栏linux驱动个人学习

内存的分类

一:SDRAM SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指 Memory工作需...

2934
来自专栏开源FPGA

异步复位、同步释放机制——系统完美稳定

  白驹过隙,寒假已经余额不足,回头想想,也就是看了两本书,做了几个并不大的工程,看着QQ群里面一些大神们聊天,时不时有的没的还插几句,一句话没人理也是正常事情...

19510
来自专栏土豆专栏

计算机网络基础知识整理--数据通信基础

小编最近在复习计算机网络基础,整理出来一些我认为比较重要的知识。希望能帮到大家哈,后续会更新~

81615

扫码关注云+社区