1.同步异步逻辑
同步逻辑:与时钟之间有固定的关系的逻辑。
特点:当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入有无变化,状态表中的每个状态都是稳定的。(某些时钟触发的触发器)
异步逻辑:与时钟之间没有固定的关系的逻辑。
特点:电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。(复位按键)
2.同步异步电路
和上面的同步异步逻辑类似,同步异步电路主要看有没有统一的时钟。
同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。
异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。
3.时序设计
我们在拿到一块芯片的时候,总要翻看它的datasheet来获得芯片的各个功能所对应的驱动时序,除了芯片,像各种通信的普通接口,都有自己相应的时序。
说白了,时序设计的实质就是满足每一个触发器的建立/保持时间的要求,从而保证设计的功能。
4.建立时间和保持时间
建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。
保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。
5.触发器为什么要满足两个时间
首先,数据在电路中的传输是有延时的,所以触发器内部的数据的形成(稳定改变)是需要一定的时间的。
其次,如果触发器不满足建立时间和保持时间,就会进入亚稳态,输出不稳定。
6.亚稳态
亚稳态:是指触发器无法在某个规定的时间段内到达一个可以确认的稳定状态。
对于单比特的输入信号,可以使用两级触发器来防止亚稳态传播:
①假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态
②在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间(T1)后稳定下来
③而且稳定的数据如果满足第二级触发器的建立时间(Tset),在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。
④总结一下,就是说,第一级触发器即使进入了亚稳态,但是有充足的时间(在第二次时钟沿来临前)恢复到稳态,所以当进入第二级触发器时,已经满足第二级触发器的建立时间,所以没有第二级后没有亚稳态出现。
⑤具体的满足公式: T1 + Tset <= T(时钟周期)
7.最快时钟频率
我们都知道电路处理或者传送数据是需要一定时间的,因此就会有快慢之分。
①时钟输出延迟Tco = clock_delay + reg_delay ,时钟延迟和寄存器输出延迟之和
②上面是时序逻辑的延迟,同样的,组合逻辑中照样存在延时,称为Tdelay。
③因为输入的数据需要异步处理,上述的过程中以及经过一个一级的触发器,所以数据如果要稳定打入第二级触发器,还要满足第二级触发器的建立时间。
④也就是说,整个过程的时钟延迟时间必须大于Tco + Tdelay + Tset = Tmin。而这个F = 1/Tmin 就是我们所说的最快时钟频率。
8.流水线
为了提高芯片的处理速度,我们总要不断追求最快时钟频率,而Tco和Tset是由器件本身的工艺决定的,所以作为开发者的我们只能从组合逻辑的延时时间Tdelay去下功夫。
①我们可以将规模较大的组合逻辑分成较小的N个组合逻辑,避免在两个触发器之间产生较大的延时。
②意思就是说,本来受限于一个时钟的单条线路,我拆成几条线路,并通过同步时钟来提供速度。
③这就是所谓的流水线设计,可以加快速度,提高吞吐量,但是同时硬件的面积也会提升,这也就是我们常说的FPGA可以用面积博取速度。