【异步电路碎碎念1】 —— 到底什么是异步电路

简介: 【异步电路碎碎念1】 —— 到底什么是异步电路

异步电路是我们在进行IC设计时候必须要跨越的一道坎,必须要掌握的基础知识。个人认为对异步电路的理解以及处理经验是衡量一个IC前端水平的重要指示。不过最可怕的是哪怕你想的再明白理解的再清楚,也还是可能会翻车,简单说异步电路堪称IC芯片出错重灾区。当然正因为如此,一般的IC设计中会把异步处理做单独的模块设计,需要进行异步处理时调用对应功能的module即可。

下文综合了我自己对异步电路的理解和实操,书中所学技巧与经验以及网上其他大牛的总结讲解,我尝试用最易于理解掌握的方式进行表达也算是对自己所学的记录,如有侵权请告知立即删除。

无论我们是去面试、和前端后端交流还是听大佬们聊天,总会听到“跨异步”“异步处理”“异步FIFO”“跨异步打拍”“异步电路”这些词没事就蹦出来,所以第一篇文章我们就来探讨下到底什么是异步电路。

 

有异步就肯定有同步,基本含义上来说异步和同步都是针对时钟而言的。同步时钟sync是指时钟之间相位相对确定,异步时钟async是指时钟之间相位不确定。看到一些地方认为同步时钟sync是指时钟之间频率和相位都相对确定,异步时钟async是指时钟之间频率或相位不确定,也不能说没有道理吧。不过我坚持认为根源是在相位确不确定上,例如33M和100M时钟就一定不可能是同步时钟,因为无论如何做不到相位保持一致;而50M和100M时钟就有可能是同步时钟,因为相位可以保持一致。

下面就是典型的异步电路结构。

因此我们可以得出结论:频率不同不一定同步异步,同源时钟不一定同步异步,归根到底看有没有固定的相位。顺便多说一句,后端的大佬对于异步的理解跟前端偶尔有所出入,尤其是在进行时序收敛时候,典型的场景就是芯片子系统之间即使在同步时钟域,也会按照异步时钟域来进行时序收敛。

还有一种特殊场景,即使一组寄存器都由同一时钟驱动,也可能存在异步问题,那就是异步复位的情景。我们我们知道复位可以区分为同步复位和异步复位(当然一般使用同步复位异步撤离或者同步复位同步撤离,这个就先不讨论了)。

always @(posedge clk or negedge rst_n)

always @(posedge clk)

而对于同步复位,复位信号是不会放在敏感列表中的,因此在综合时会被综合成如图2的形式作为数据输入触发器,那么此时如果复位信号由异步时钟驱动,那么这个电路结构实际也构成了异步场景。

有时钟就可以划分出一块时钟域,一个时钟域是指使用某一同步时钟驱动的逻辑单元(当然一般是指时序逻辑单元,非时钟驱动的器件先往后站啊)集合,这个集合中一般有什么东西呢?最常见的肯定就是我们总写的D触发器啦,当然还有处于同步时钟下的FIFO啊、SDRAM啊、引脚啊都能算进来,总之在某一同步时钟驱动的所有时序单元都算进来就好了。

一个芯片多模块之间可能是同一时钟域(单时钟域)下的,也有可能是在异步时钟域(多时钟域)下的,我盲猜应该是多时钟域占大头吧,毕竟现在的芯片越做越大越做越复杂了。

正是因为多时钟域的存在,才引出了信号的跨时钟域处理问题也就是我们要探究的异步电路种种,这个慢慢写吧。话说那天某孩子忽然问我,“既然跨异步有这么多问题,那为啥不用同一个时钟呢,省了多少事啊”,这个问题当时我是懵了一下。很多场景下跨异步是不可避免的或者说多时钟域是不可避免的,例如例如前后两个模块的吞吐能力不同,串并转换模块,本来信号就属于不同系统但是必须进行交互(例如cpu通过cpu接口读写芯片内部信号),为了功耗考虑尽量降低部时钟域分模块的时钟频率等。

对于多时钟域的信号处理,必然是由发送时钟域(源时钟域)经过同步电路(同步器)到达接收时钟域(目的时钟域),这个过程可以称之为信号跨异步,电路结构称之为异步电路。


相关文章
|
前端开发
【异步电路碎碎念2】 —— 跨异步引发的电路危机
【异步电路碎碎念2】 —— 跨异步引发的电路危机
172 0
【异步电路碎碎念4】 —— 跨异步的处理方法
【异步电路碎碎念4】 —— 跨异步的处理方法
【异步电路碎碎念4】 —— 跨异步的处理方法
【异步电路碎碎念3】 —— 跨异步的处理原则
【异步电路碎碎念3】 —— 跨异步的处理原则
【异步电路碎碎念3】 —— 跨异步的处理原则
|
移动开发
带你读《电子学:系统方法(原书第5版)》之三:电阻和直流电路 
该书首先阐述了电子电路和元器件等相关内容,包括基本电路与元器件、电压和电流的测量、电阻与直流电路、电容与电场、电感与磁场、交流电压与电流、交流电路的功率和频率特性、暂态特性等。然后对电子系统进行了阐述,包括传感器、致动器、放大、控制与反馈、运放、半导体与二极管、场效应晶体管、功率电子、运放的内部电路、噪声与电磁兼容、正反馈、振荡器与稳定性、数字系统、串行逻辑、数字器件、数字设计的实现、数据采集与转换、系统设计等。
【异步电路碎碎念5】 —— 跨异步处理的几个注意事项
【异步电路碎碎念5】 —— 跨异步处理的几个注意事项
103 0
计算机的时钟信号是干什么的?底层原理是什么?
计算机的时钟信号是干什么的?底层原理是什么?
353 0
|
9月前
|
测试技术
STM32异步通讯点灯
通过使用STM32的异步通讯配合上位机自己制作的串口通讯助手实现点灯
85 0
|
移动开发 vr&ar
带你读《电路基础》之二:基本定律
本书内容采用简明易懂的风格,介绍了六步解决问题的方法,并在实践中的问题和实践问题,结合了超过468个新的或改变家庭作业问题。涵盖了全面的线性电路分析的方法,并保留了“设计一个问题”的功能,这有助于学生发展他们的设计技能,有学生发展的问题,以及解决方案。
|
5月前
|
芯片 开发者
单片机中时钟分析与快速读懂时序图的方法
单片机中时钟分析与快速读懂时序图的方法
98 0
|
芯片
模电练习题-多路信号发生器(仿真解答)
模电练习题-多路信号发生器(仿真解答)
473 0
模电练习题-多路信号发生器(仿真解答)