1.同步逻辑,异步逻辑,同步电路,异步电路
同步逻辑是时钟之间有固定的因果关系,异步逻辑是各时钟之间没有固定的因果关系。
同步电路:所有操作都是在严格的时钟控制下完成的。这些时序电路共享同一个时钟clk,而所有的状态变化都是在时钟的上升沿(或下降沿)完成的。
异步电路:电路没有统一的时钟,异步电路主要是组合逻辑电路,用于产生地址译码器、FIFO或RAM的读写控制信号脉冲,其逻辑输出与任何时钟信号都没有关系,译码输出产生的毛刺通常是可以监控的。通常输入信号只在电路处于稳定状态时才发生变化。也就是说一个时刻允许一个输入发生变化,以避免输入信号之间造成的竞争冒险。电路的稳定需要有可靠的建立时间和持时间。
2.线与
如图,两个漏极分别直接接到SCL线或SDA线的方法就是线与。所谓线与,指的是它们任意一开关只要对地导通,这根线就一定是低电平平。线与可以简化电路。因为如果按照我们平时的数字逻辑,要将2个低电平信号送到图中的SCL线或SDA线上时,是要经过一个2输入或门才能做到的,而现在却可以直接接上就“搞定”了。
线与逻辑,即两个输出端(包括两个以上)直接互连就可以实现“AND”的逻辑功能。而一般TTL门输出端并不能直接并接使用,否则这些门的输出管之间由于低阻抗形成很大的短路电流(灌电流),而烧坏器件。在硬件上,可用OC门或三态门(ST门)来实现。用OC门实现线与,应同时在输出端口应加一个上拉电阻。
平
3.亚稳态
原因:在同步系统中,如果触发器的setup time / hold time不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值。这段之间成为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。
危害:逻辑误判,亚稳态的传播
亚稳态的解决办法:1.降低时钟频率。其原因在于,提供较长的resolution time可减小亚稳态传递到下一级的机会,提高系统的MTBF。 2.引入同步机制,防止亚稳态传播。 3.关键是器件使用比较好的工艺和时钟周期的裕量要。
4.竞争-冒险
将门电路两个输入信号同时向相反的逻辑电平跳变的现象称为竞争。
由于竞争而在电路输出端可能产生尖峰脉冲的现象就称为竞争-冒险。
竞争-冒险的判断:1.如果逻辑函数可以简化为Y=A+A'或Y=A*A',则可判定存在竞争冒险。 2.卡诺图法,不是很懂
解决办法:1.接入滤波电容。 2.引入选通脉冲。 3.修改逻辑设计,增加冗余项。
5.常用逻辑电平
TTL CMOS LVTTL LVCMOS LVDS RS232 RS485 RS422 ECL PECL LVPECL
TTL电平:Voh > 2.4 Vol < 0.4 Vih >2.0 Vil < 0.8 TTL电平一般过冲都会比较严重,可能在始端串22欧或33欧电阻
CMOS电平:Voh = Vcc Vol = GND Vih > 0.7Vcc Vil < 0.2Vcc
LVTTL:对于5V电源的TTL电平,因为2.4V与5V之间还有很大空闲,对改善噪声容限并没什么好处,又会白白增大系统功耗,还会影响速度。所以后来就把一部分“砍”掉了,也就是LVTTL。 3.3V的LVTTL:Vih >2.0 Vil < 0.8 2.5V的LVTTL:Vih >1.7 Vil < 0.7
LVCMOS:对应 LVTTL,出现了LVCMOS,可以与对应电平的LVTTL直接相互驱动。 3.3V LVCMOS 2.5V LVCMOS
6.同步复位与异步复位
无论同步还是异步复位,在对触发器时序进行分析的时候,都要考虑复位端与时钟的相位关系。一般都推荐使用“异步复位,同步释放”的方式。
同步复位,复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。
always @ (posedge clk) begin
if (!Rst_n)
...
end
异步复位,无论时钟沿是否到来,只要复位信号有效,就对系统进行复位,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿。在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
always @ (posedge clk or negedge Rst_n) begin
if (!Rst_n)
...
end
7.Mealy状态机和Moore型状态机
状态机一般分为三种类型:
Moore型状态机:下一状态只由当前状态决定,即次态=f(现状,输入),输出=f(现状);
Mealy型状态机:下一状态不但与当前状态有关,还与当前输入值有关,即次态=f(现状,输入),输出=f(现状,输入);
混合型状态机。
Moore型与Mealy型两种状态机的不同点在于,Moore型状态机的输出信号是直接由状态寄存器译码得到,而Mealy型状态机则是以现时的输入信号结合即将变成次态的现态,编码成输出信号。
8.多时域设计中处理信号跨时域
跨时域的信号要经过同步器同步,防止亚稳态传播。
例如:时钟域1中的一个信号,要送到时钟域2,那么在这个信号送到时钟域2之前,要先经过时钟域2的同步器同步后,才能进入时钟域2。这个同步器就是两级d触发器,其时钟为时钟域2的时钟。
这样做是怕时钟域1中的这个信号,可能不满足时钟域2中触发器的建立保持时间,而产生亚稳态,因为它们之间没有必然关系,是异步的。
这样做只能防止亚稳态传播,但不能保证采进来的数据的正确性。所以通常只同步很少位数的信号。比如控制信号,或地址。当同步的是地址时,一般该地址应采用格雷码,因为格雷码每次只变一位,相当于每次只有一个同步器在起作用,这样可以降低出错概率,像异步FIFO的设计中,比较读写地址的大小时,就是用这种方法。
如果两个时钟域之间传送大量的数据,可以用异步FIFO来解决问题 。