(一)同步与异步的相关概念
一.同步时钟与异步时钟
1.同步时钟
当两个时钟的相位关系是固定关系,则可以称这两个时钟为同步时钟(synchronous clock),经过一个PLL产生相位不同,但是相位固定的两个时钟,他们依旧是同步时钟。
2.异步时钟
而如果是两个晶振产生的时钟,因为两个晶振在上电时相位差是随机的,而且不同晶振时钟漂移抖动也不一样,所以相位是不固定的。当无法判断两个时钟间的相位时,则可以称这两个时钟为异步时钟(asynchronous clocks)。
二.同步/异步电路
1.同步电路
同步时序逻辑特点:各触发器时钟端全部连接在一起,并接在系统的时钟端,只有当时钟脉冲到来时,电路的状态才改变,改变后的状态会一直保持到下一个时钟脉冲的到来。
a) 电路核心逻辑是用各种触发器实现;
b) 电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
c) 同步时序电路可以很好的避免毛刺;
d) 利于器件移植;
e) 利于静态时序分析(STA)、验证设计时序性能。
2.异步电路
异步时序逻辑特点: 电路没有统一的时钟,电路中除了可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件。电路状态的改变是由外部输入的变化直接引起的。
a) 电路核心逻辑是用组合电路实现;
b) 异步时序电路的最大缺点是容易产生毛刺;
c) 不利于器件移植;
d) 不利于静态时序分析(STA)、验证设计时序性能。
三. 同步复位和异步复位
1.同步复位
同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保持系统复位。
1.1. 同步复位代码:
//同步复位
module top
(input clk,input rst_n,input a,output reg b);always@(posedge clk)
beginif(!rst_n)b <= 1'b0;elseb <= a;
endendmodule
1.2. 同步复位特点
同步复位优点: 一般能够保证电路百分百同步。确保复位只发生在有效沿,可以作为过滤掉毛刺的手段。
同步复位的缺点: 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏斜、组合逻辑路径延时、复位延时等因素。(由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。)
同步复位虽然解决了当时钟的有效沿来临的时候 rst_n 的边沿也正好来临所出现的冒险与竞争。 但是从综合的电路上可以看出,多了一个组合逻辑 MUX。
2. 异步复位
只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候闲的不够稳定,要想设计一个好的复位最好使用异步复位同步释放。(后续进行细化【参考】)
2.1. 异步复位代码:
module top
(input clk,input rst_n,input a,output reg b);always@(posedge clk or negedge rst_n)
beginif(!rst_n)b <= 1'b0;elseb <= a;
endendmodule
2.2. 异步复位的特点
异步复位优点:异步复位信号识别方便,而且可以很方便的使用全局复位。由于大多数的厂商目标库内的触发器都有异步复位端口(CLR)(在这个端口一般接低电平有效的复位信号rst_n,即使设计中是高电平复位,实际综合后也会把异步复位信号反向后接到CLR端)可以节约逻辑资源。
异步复位缺点:
a、最大的问题在于它属于异步逻辑,问题出现在复位释放时,而不是有效时,如果复位释放接近时钟有效沿,则触发器的输出可能进入亚稳态(此时 clk 检测到的 rst_n 的状态就会是一个亚稳态,即是0是1是不确定的),从而导致复位失败。
b、可能因为噪声或者毛刺造成虚假复位信号(比如以前的游戏机玩到一半突然复位)(注意:时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题)。
c、静态定时分析比较困难。
d、对于 DFT (Design For Test可测性设计)设计,如果复位信号不是直接来自于 I/O 引脚,在 DFT 扫描和测试时,复位信号必须被禁止,因此需要额外的同步电路。
3. 异步复位同步释放
使用异步复位同步释放就可以很好的平衡上述复位方式的优缺点。所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步,为了消除亚稳态的产生,利用两个同一时钟沿触发的层叠寄存器,将异步信号同步化。
3.1.代码实现
//异步复位、同步释放
module top
(input clk,input rst_n,input a,output reg b);
reg rst_n_r;
reg rst_n_rr;always@(posedge clk or negedge rst_n)
beginif(!rst_n){rst_n_rr,rst_n_r} <= 2'b00;else{rst_n_rr,rst_n_r} <= {rst_n_r,rst_n};
endalways@(posedge clk or negedge rst_n_rr)
beginif(!rst_n_rr)b <= 1'b0;elseb <= a;
endendmodule
3.2.电路视图
那它在电路上怎么体现的呢,在笔试中可能会让画出来,一定要掌握
这里推荐一个帖子:
同步复位和异步复位二者各自的优缺点
关于同步与异步的内容先记录到这里,后续进行补充
(一)同步与异步的相关概念相关推荐
- 同步和异步的区别和联系以及一般在什么情况下使用它们
对于同步和异步而言,是所有程序员都应该的掌握的基本内容.由于同步和异步设计的知识面比较多,这里我仅仅进行一下简单的讲解. 其根本目的在于理解同步和异步的含义以及应用.至于更详细的信息可以上网查阅相关资 ...
- JS中同步与异步的理解
你应该知道,javascript语言是一门"单线程"的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条 ...
- [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?
[react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新? 由React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state . ...
- 数据重现之11.5.2:RAID5同步与异步的判断
11.5.2 同步与异步的判断 以一个左循环的阵列为例,如图11.27所示,图中的d0.d1.d2-为阵列中的数据块(注意,这只是阵列中数据块的编号,并不代表数据的先后顺序).下面我们就来看一看通过 ...
- Linux---阻塞与非阻塞、同步与异步的区别
阻塞 为了完成某个功能,发起调用,如果当前不具备完成的条件,则会一直等待. 非阻塞 为了完成某个功能,发起调用,如果当前不具备完成功能的条件,则立即报错返回. 阻塞与非阻塞的区别 一个调用发起时,不具 ...
- 计算机的同步操作与异步操作的概念,运城计算机同步与异步的概念和应用方法...
同步与异步是程序员在开发软件的时候会经常用到的一个编程方法,而金我们就通过案例分析来了解一下,同步与异步的概念和应用方法. 1.同步 一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后, ...
- 同步和异步的区别是什么?
同步和异步的区别是什么? 场景题:12345以什么顺序打印出来?定时器的应用 知识点: 单线程和异步 应用场景 Callback hell(回调地狱) 和 Promise(解决回调地狱的问题) 单线程 ...
- 简述同步和异步的区别
简述同步和异步的区别 同步: 同步的思想是:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉 ...
- 线程中的同步和异步的区别
线程中的同步和异步的区别 一.同步 所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作.是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率不 ...
最新文章
- Emoji表情符号录入MySQL数据库报错的解决方案
- 系统分析的几个好工具
- python import出错_python import的一些问题
- request.getParameter(xxxx)获取不到值的一个原因
- Linux系统中df与du命令查看分区大小
- iphone label初始化碰到的问题
- ActiveMQ专题2: 持久化
- php 常用函数 180,php 部分常用函数
- c++11 多线程编程(三)------ 竞争和互斥锁
- 《MATLAB图像处理375例》——1.3 MATLAB概述
- 文本分类-TextCNN
- MessageDigest 类的用法
- 计算机核心期刊论文模板,中文核心期刊(论文)模板.doc
- 系统安全的三个方面(CIA)
- 不靠体育赛事,咪咕视频还有多大发展空间?
- 企企通:企业供应商风险管理,如何用采购管理软件赋能?
- Web学习(二)CSS
- 后缀是lnk是什么文件_后缀为.lnk的文件怎么打开?
- 流量都去哪了? --- 详谈流量劫持是如何产生的?
- pgsql将为NULL或空字符串的字段替换为指定默认值,格式化时间戳,用指定分隔符截取字符串等操作