| |
同步电路与异步电路的区别
同步电路与异步电路的主要区别在于电路的触发是否与时钟同步,从行为上讲,就是所有电路是否在同一时钟沿的触发下处理数据。
(一)异步电路
·电路的核心逻辑用组合电路实现
·电路的主要信号、输出信号不依赖于任何一个时钟信号
·异步时序电路的最大缺点就是容易产生毛刺
·不利于器件移植,异步时序的正确性完全依赖于每一个逻辑元件大的和布线延迟
·不利于静态时序分析(STA)、设计验证时序性能
(二)同步电路
·电路的核心部分是各种各样的触发器
·电路的主要信号、输出信号都是某个时钟沿触发器产生的
·同步时序电路可以很好的避免毛刺
·利于器件移植和静态时序分析、验证设计时序性能
当然异步电路也有其优势,如:无时钟歪斜等时钟的稳定性问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性。而同步时序电路由于严格按照时钟沿触发的方式工作,因此对时钟的稳定性要求较高,易产生时钟偏斜、抖动等问题。
来看一个简单的同步复位的D触发器,Verilog代码如下:
module d_ff (
endmodule
综合后的RTL图表如下:
Altera的MAXII系列的CPLD中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,
同步复位的优点:
1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;
2). 有利于静态时序分析工具的分析;
3). 有利于基于周期的仿真工具的仿真。
同步复位缺点:
1). 占用更多的逻辑资源;
2). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;
3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。
来看一个简单的异步复位的D触发器,Verilog代码如下:
module prac (
endmodule
综合后的RTL图表如下:
异步复位的优点:
1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock skew最小(注意不是到各个寄存器的延迟最小);
2). 复位信号不依赖于时钟。
同步复位缺点:
1). 复位信号容易受到外界的干扰;
2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。
这种复位方式在文献中还有一种称谓:Synchronized Asynchronous Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized Asynchronous Reset这种称谓(当然也可能是个人的习惯)。
来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:
module prac (