关于同步和异步
关于同步电路和异步电路的设计是一个很大的话题,这里我只是简单提一些概念,以后根据具体情况还会再来介绍一些详细的东西。
同步,synchronous,即所有的行为都是与时钟是相关的,或者是直接相关,或者是考其他的逻辑或者分频之类的逻辑联系起来,总之同步电路说到底就是在时钟上升沿或者下降沿的产生的行为;而异步asynchronous,则是与相应的时钟没有直接的关联的一种逻辑,也就是说他不用刻意的去等待时钟的边沿,所以一般来说异步电路设计速度上会更快一些。
同步的reset或者set一般都是在触发器的前面补充一些与逻辑,与逻辑的一端与reset相连接,reset为0是则会将输入值直接变为0,当时钟触发沿到达的时候就会发生相应的改变;而异步reset或者是set则是直接在触发器的内部更改逻辑,与时钟没有关系,只要reset或者set,值就会马上改变,也因此被称为异步设计。
看上去异步电路要简单方便快速,那么为甚么很多时候我们看到的设计都是同步的呢?其实两者都是有着各自的优缺点的,相对来说,同步电路设计要简单一点,相应的时序电路分析工具等都比较成熟,做起来更简单,更适合自动化设计;而异步电路主要是相对来说要快一点,时序分析要复杂很多。
另外要特别注意的一点是,不论是在同步电路设计或者是在异步电路设计的时候都要注意reset或者set信号的单纯,如果掺杂了其他的组合逻辑,就难免会产生毛刺,导致相应的set或者reset的时候出现问题,这在电路设计的时候是特别需要关注的地方;另外就是同步reset和异步reset有一定的要求,一般同步reset是要求必须有效两T以上的时间,才能不会出现问题,而异步的reset则采用了一个特殊的电路结构来实现异步reset开启,同步reset释放;其实不论是异步或者是同步,不论是reset或者是set,都是需要在释放的时候特别注意,否则就会出现问题:试想,假如你重启一台手机,结果按完之后,有的电路打开了,有的电路还没有开启,整个芯片逻辑错误,很容易就烧毁了,所以在电路设计的时候需要特别的注意。
最后祝大家国庆快乐,身体健康。