时序,就是按照时间的先后顺序, 而且这个时间与顺序必须是可控的,可人为干涉、临时调整的。组合电路里信号传输也要时间, 但这叫传输延时, 信号输出的时间只取决于输入时间,电路定型后即不可变更.
触发器具有锁存能力, 同时也能在需要的时候扇出锁存的内容, 是时序电路的核心部件. 至于为什么是边沿触发, 这是由半导体器件特性决定的, 你把数电的触发器原型温习一遍,解剖到与非门级就能明白了.
为什么要用时序电路,时序电路虽然有很多应用场合, 但主要还是为了同步. 同步可以在多个输入都到达并稳定后再产生唯一输出, 防止毛刺、竞争导致的功能紊乱。
如果采用电平触发,如:
always@(*)begin
sum1 = a+b ;
sum2 = sum1+b;
end
那么对于敏感列表中的任何变量发生任何变化,sum1、sum2的值均会被刷新,被重新赋值,相当于连续赋值assign语句,即反映出了一种不断刷新的过程。
我们知道,组合逻辑就是电路输出仅与电路输入有关,也就是任何输入变量发生任何变化,电路输出的值就会被刷新,被重新赋值,也就体现了这种不断刷新的过程。即——电平触发就是描述组合逻辑。
这个时候,如果我们采用边沿触发,如;
always@(posedge clk)begin
sum1 <= a+b ;
sum2 <= sum1+b;
end
那么即使输入变量发生了改变,也只有在下一个时钟上升沿到来之时sum1、sum2的值才会发生改变,就好像有个存储电路把a、b、sum1当前的值(当前状态)给存起来了,等到时钟边沿到来才会产生输出。这里所说的存储电路,就是边沿触发过程块所带给我们的触发器(或一些并不期望生成的锁存器)
我们也知道,时序逻辑电路输出不仅与电路输入有关,还与电路当前状态有关,而电路当前状态就就是由触发器或锁存器给存储起来的。所以我们说:描述时序逻辑要采用边沿触发方式
根本原因是为了功能仿真与时序仿真结果一致。
用电平触发方式的那就叫组合逻辑了