4 数字电路设计(时序电路)¶
时序电路由存储单元与组合电路组成,其中组合电路的输入除了外部信号,还有来自存储单元的信号,同理输出除了向外部输出信号,还有向储存单元输入信号。
4.1 存储单元与分析¶
按照存储单元更新时间分类
- 同步时序电路:提供一个时钟信号,根据固定时间点更新。(更可控)
- 异步时序电路:根据输出更新
震荡问题:例如\(Y_n=\overline S\overline{Y_{n-1}}+SB\) 当S=0时,Y的值会在0/1之间震荡,这种是设计时序电路中常见的问题。
4.1.1常见存储单元¶
锁存器(Latches)¶
- \(\overline S\)-\(\overline R\) Latches(为0时有效,置位信号为0)
震荡:均为0的情形是不被允许的,这种情况下\(Q\)与\(\overline Q\)均为1,当他们同时变为1时,会产生震荡(理论上会一直震荡,同时为1/0,实际上由于器件的延时时间不同,造成会有某一个先达到1,这样就停止了震荡)。
亚稳态(metastable):当S与R均0时,两个与非门等价为两个非门。除了两个有效存储信号的状态,还有一个状态是稳态的。这个稳态会受到扰动影响。
这两种情形都是有害的,要尽可能去避免。第一种情况通过操作可以避免,第二种情况就是在输入时给足够的时间让电路完成信号的变化达到稳定状态。
- \(S\)-\(R\) Latches(为1时有效,置位信号为1)
均为1的情况时不被允许的,其他同上
S=1,R=1 是不被允许的,因为如果同时置零的化,就会变成一个不稳定的状态,看 \(Q\) 和 \(\overline{Q}\) 谁先到1,状态就为什么
- Clocked S-R Latch(同步电路)
只有当C为高电位时,S和R才能被输入。同理S和R不能同时置位1。故引入下列电路
- D Latch(最广泛)
这样就规避了中间态的情况,D的输入就反应在最后Q的输出上。
触发器(Flip-Flops)¶
锁存器的定时问题(以二进制计数器为例)
在一次时钟信号内,可能会产生多次"空翻"。希望每一次时钟信号,变化仅仅只有一次。
解决方案是切断电路输出与输入的联系。
- 主从触发器(Master-slave flip-flops)
S和R先输入到Master中,产生稳定的信号,然后反转时,通过Slave来输出。
但是,在采样阶段的毛刺信号会影响信号的输出(1s catching),可通过将双通道改单通道或者减少采样时间来解决。
- D master-slave flip-flop(仅输入D,与D latches的改进类似)
由于这个仅在边缘处采样(在C变为低电频时),被称为Negative-Edge-Triggered D Flip-Flop。若在C加上一个非门,则构成了Positive-Edge-Triggered D Flip-Flop。
- J-K flip-flop
允许J=K=1的S-R flip-flop,当J-K均为1时,信号反向。
- T flip-flop
只有一个输入T,其中T=0时,状态不改变,T=1时,状态反向。
Basic Flip-Flop Descriptors
分析中使用特征表与特征方程,设计时使用激励表与激励方程
Flip-Flop Timing Parameters
-
Setup time (\(t_s\))(信号建立时间):为了防止亚稳态的产生
-
Hold time (\(t_{h}\))
- propagation delay (\(t_{pd}\))
(a)情况下,Setup time需要覆盖整个采样阶段
(b)情况下,Setup time只需要在边沿的前一部分即可
由于电路的特性,\(t_{pd}\)比\(t_h\)要大。
4.1.2 时序电路分析¶
状态分析¶
三个方程:输入方程、输出方程、下一状态方程
状态表包括输入、前一状态的输入,输出、下一状态的输出
状态图(State Diagrams):
-
Mealy Models
输出由输入以及原本状态决定,输出标注在弧上
-
Moore Models
输出仅仅只由状态决定,输出标在状态上。
等价状态:对于任何输入,两个状态输出相同,称这两个状态等价。
时间分析¶
- \(t_p\) clock period
- \(t_{pd,FF}\) flip-flop propagation delay
- \(t_{pd,COMB}\) combinational logic delay
- \(t_s\) flip-flop setup time
- \(t_{slack}\) extra time in the clock period
关系:\(t_p\geq t_{slack}+(t_{pd,FF}+t_{pd,COMB}+t_s)\)
例子
\(t_{pd,NOT}=0.5ns\) \(t_{pd,FF}=2.0ns\)
\(t_{pd,XOR}=2.0ns\) \(t_s=1.0ns\)
\(t_{pd_AND}=1.0ns\) \(t_h=0.25ns\)
- Find the longest path delay from external input passing through gates only to output
\(t_{pd,XOR}+t_{pd,XOR}=2.0ns+2.0ns=4.0ns\)
- Find the longest path delay in the circuit from external input to positive clock edge
\(t_{pd,XOR}+t_{pd,NOT}+t_s=2.0ns+0.5ns+1.0ns=3.5ns\)
- Find the longest path from positive clock edge to output
\(t_{pd,FF}+t_{pd_AND}+t_{pd,XOR}+t_{pd,XOR}=2.0ns+1.0ns+2.0ns+2.0ns=7.0ns\)
- Find the longest path from positive clock edge to the positive clock edge
\(t_{pd,FF}+t_{pd_AND}+t_{pd,XOR}+t_{pd,NOT}+t_s=2.0ns+1.0ns+2.0ns+0.5ns+1.0ns=6.5ns\)
- Determine the maximum frequency of the circuit in MHz
\(f_{max}=1/6.5\times 10^{-9}\approx 154MHz\)
4.2 时序电路设计¶
与时序电路分析相反,先得到状态图,然后得到状态表,最后得到三个方程(输入方程、输出方程、激励方程)。
下列以Recognize 1011为例,设计相关时序电路
- 设计状态:
- 画出状态图,并完成状态表
- 状态表的简化
首先,等价状态要满足输出要完全一样。
其次,针对下一状态,等价状态有三种情形:
(1)下一状态相同
(2)下一状态交错的
(3)下一状态循环
4.状态的赋值并求解输入方程输出方程(以D flip-flop为例)
不同的赋值方法对应的门输入代价是不同的。
(1)Counting Order Assignment
(2)Grey Code Assignment
(3)One-Hot Assignment