6 时序逻辑电路
比较重量级的一章,我一开始学得也不是很明白。个人认为这是数字电路的精髓所在。那就顺着自己的思路,尝试对这一章感觉比较重要的一些点进行梳理吧。
时序逻辑电路的描述方法¶
输出函数表达式¶
一般用 $ Z $ 来表示电路的输出,如果有多个,那就 $ Z_ 1,Z_ 2,…,Z_ m $ 。对于 Mealy 型电路,$ Z $ 是输入 $ x $ 和各个触发器现态 $ y $ 的函数;对于 Moore 型电路 $ Z $ 是且仅是现态 $ y $ 的函数。这是 Mealy 型与 Moore 型电路的区别所在,所以我们可以从输出函数表达式或者逻辑电路图直接看出电路的类型。
但是大多数时候,我们需要从时序图中看出电路类型。如果存在这样一个时刻,各现态 $ y $ 都没发生改变,但是输出 $ Z $ 变了,那么这肯定是 $ x $ 变化导致的,可以判断电路是Mealy型的。否则一般就是Moore型。
有些时候电路
激励函数表达式¶
简单来说,就是要求我们用输入 $ x $ 和触发器的现态 $ y $ 来表示各个触发器的输入 $ Y $。顺便一说,这一章的触发器都是
触发器的输入 $ Y $ 肯定不止一个的,至少它们都有时钟端 CP。这一章常用 D 触发器(输入还含有 D)、T 触发器(输入还含有 T)和 JK 触发器(输入还含有 J 和 K)。
次态函数表达式¶
用本触发器的现态 $ y_ i $ 和激励函数 $ Y_ i $ 来表示次态 $ y_ i^{n+1} $。注意这个 $ Y_ i $ 要用 $ x $ 和 $ y $ 来表示,也就是最终写成的 $ y_ i^{n+1}=f(x,y,y_ i) $ 的形式。
状态表和状态图¶
这两个图表题目中可能经常要用到。还有一个比较常用的叫做“次态真值表”,它的表头往往是这样的:
输入 | 现态 | 激励函数 | 次态 | 输出 |
---|
其中我们需要枚举各种可能的“输入”与“现态”的组合,然后分别计算出相应的“激励函数”“次态”与“输出”。可以认为次态真值表是从激励函数表达式和输出函数表达式过渡到状态表(图)的媒介。
对于同步时序逻辑电路,如果是 Mealy 型的,则直接按照上面的表头写次态真值表;如果是 Moore 型的,省略输入一栏即可。
异步时序逻辑电路,输入一栏应是时钟信号 CP(在多输入情况下,也有表示为 $ x_ 1,x_ 2… $ 的,总之就是所有的输入放在这一栏)。由于我们在设计异步时序逻辑电路的时候,一般只考虑时钟 $ C_ i $ 的输入脉冲为正脉冲的情况,并且
关于正脉冲与负脉冲时钟的次态真值表
如果一个异步时序逻辑电路含有三个下降沿 JK 触发器,它们的激励函数与输出函数表达式是这样的:
$$C_ 1=CP\qquad J_ 1=\overline{y_ 3}\qquad K_ 1=1$$
$$C_ 2=y_ 1\qquad J_ 2=K_ 2=1$$
$$C_ 3=CP\qquad J_ 3=y_ 2y_ 1\qquad K_ 3=1$$
$$Z=y_ 3$$
那么只有当 CP 是正脉冲的时候,JK触发器的时钟端才有可能是正脉冲,从而让触发器在脉冲后沿翻转。此时 CP 在输入栏就应该填写1(代表正脉冲)。
需要指出的是,触发器 $2$ 的时钟 $ C_ 2 $ 虽然不含CP,但它也是会翻转的。当触发器 $1$ 接收到时钟信号,使得其输出 $ y_ 1 $ 从1变成0时,此时 $ C_ 2 $ 也是下降沿,触发器 $2$ 随后也会翻转。
次态真值表如下:
输入 $ CP $ |
现态 $ y_ 3y_ 2y_ 1 $ |
激励函数 $ C_ 3J_ 3K_ 3C_ 2J_ 2K_ 2C_ 1J_ 1K_ 1 $ |
次态 $ y_ 3^{n+1}y_ 2^{n+1}y_ 1^{n+1} $ |
输出 $ Z $ |
---|---|---|---|---|
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
$ 1 $ | $ …… $ | $ …… $ | $ …… $ | $ …… $ |
次态真值表如下:
输入 $ CP $ |
现态 $ y_ 3y_ 2y_ 1 $ |
激励函数 $ C_ 3T_ 3C_ 2T_ 2C_ 1T_ 1 $ |
次态 $ y_ 3^{n+1}y_ 2^{n+1}y_ 1^{n+1} $ |
---|---|---|---|
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
$ 0 $ | $ …… $ | $ …… $ | $ …… $ |
为什么一般只考虑时钟端 $ C_ i $ 收到的脉冲为正脉冲
结合了以下教材,给出我自己的一些理解。因为次态真值表“输入”一栏的“0”除了表示“负脉冲”以外,还可以表示“无脉冲”。无脉冲的含义出现于存在多个输入 $ x_ 1…x_ n $ 的时候,因为异步时序电路要求一次最多有一个输入脉冲,所以每一行都是某个输入 $ x_ i $ 有脉冲、其余输入 $ x_ j(j\neq i) $ 无脉冲的情况。为了避免这个歧义,我们不采用0的“负脉冲”的含义,所以也就一般不考虑负脉冲的输入。对于a中第2个例子,我们一般的处理方法是在时钟端增加一个反相器,使得时钟端的激励表达式变为:
$$C_ 1=CP+y_ 3\qquad C_ 3=CP+\overline{y_ 2y_ 1+y_ 3}$$
从而转化为正脉冲的情况(由于 $ C_ 2 $ 的表达式不含时钟,触发器2也可以不加反相器)。
当然,如果实在要设计负脉冲,也可以这样:次态真值表的输入中,“0”表示无脉冲,“ $ \uparrow $ ”表示负脉冲(因为负脉冲后沿是上升沿),“ $ \downarrow $ ”表示正脉冲(因为正脉冲后沿是下降沿)。
为什么触发器要在脉冲后沿翻转
聊一下我本人的看法。这也是在期末复习的时候得到的启发。对于这个问题,书本上没有过多地解释,只是含糊地概括为不在脉冲后沿翻转“会导致触发器状态出现意外的改变”,我认为还是为了避免多次翻转。
考虑一个这样的脉冲异步时序电路,它由 $3$ 个下降沿翻转的 JK 触发器构成,没有专门的输出,有一个输入 CP,其次态方程为
$$C_ 1=CP\qquad J_ 1=1\qquad K_ 1=\overline{y_ 3}$$$$C_ 2=y_ 1\qquad J_ 2=K_ 2=1$$$$C_ 3=CP\cdot y_ 3+y_ 2\qquad J_ 3=K_ 3=1$$
如果假设 CP 是正脉冲,那么所有触发器都会在脉冲的后沿触发,可以按照常规方法列写次态真值表。
下面我们仍然假设 CP 是正脉冲,但是把所有的触发器改成上升沿反转的触发器,也就是所有触发器在脉冲的前沿触发。考虑在 $ y_ 3=1,y_ 2=y_ 1=0 $ 时,给予一个正脉冲 CP。首先,触发器1和触发器3同时接收到上升沿信号,同时翻转:
$$y_ 1^{n+1}=1,y_ 3^{n+1}=0$$
与此同时,$ C_ 3 $ 也立刻变成 0,即上升沿后立刻迎来下降沿。但是由于 $ y_ 1=0\rightarrow y_ 1^{n+1}=1 $ 给 $ C_ 2 $ 带来了上升沿,触发器 $2$ 随即也要翻转一次,$ y_ 2^{n+1}=1 $。这样又给 $ C_ 3 $ 带来了上升沿,触发器 $3$ 发生第二次翻转。这是比较麻烦的,因为触发器发生两次翻转无法在次态真值表中很好地记录,在实际电路中更是会产生干扰输出。
但是,在这个例子中,我们令触发器在脉冲后沿翻转,就不会有上述情况的发生。所以我们设计触发器在脉冲后沿翻转。
中规模时序逻辑电路¶
和中规模组合逻辑电路一样,中规模时序逻辑电路也是利用已经集成好的一些芯片进行电路的设计。触发器之类的时序电路已经包装在芯片里面了,大多数情况只需利用芯片和一些逻辑门(组合逻辑器件)就可以完成电路的设计。分析也是一样的道理。
集成同步计数器74193(Mealy型)¶
a.置数部分: $ D,C,B,A,\overline{LD},CLR $。
在 $ CLR $ 端输入高电平(1)时清零,$ Q _ D,Q _ C,Q _ B,Q _ A=0000 $。如果 $ CLR $ 输入低电平,此时在 $ \overline{LD} $ 端输入低电平(0)的时候,可以将 $ D,C,B,A $ 依次赋值给 $ Q _ D,Q _ C,Q _ B,Q _ A $。
b.计数脉冲: $ CP_ U,CP_ D $。
分别是加法脉冲(Up)和减法脉冲(Down),不过都是
c.进位(Carry)、借位(Borrow)输出: $ \overline{Q} _ {CC},\overline{Q} _ {CB} $。
称为即将进位、即将借位输出更合适。对于 $ \overline{Q} _ {CC} $ 而言,在 $ Q _ DQ _ CQ _ BQ _ A=1111 $ 且 $ CP_ U $ 负脉冲开始时产生进位信号 $ \overline{Q} _ {CC} $,在 $ CP _ U $ 负脉冲结束时,内部触发器翻转,$ Q _ DQ _ CQ _ BQ _ A=0000 $,与此同时进位信号 $ \overline{Q} _ {CC} $ 消失。对于退位信号 $ \overline{Q} _ {CB} $,也是一样的道理。
集成异步计数器74290¶
其内部构造是一个模 $2$ 计数器和一个模 $5$ 计数器,两者之间没有直接联系。其异步置 $9$($ R _ {9A}=R _ {9B}=1 $)的优先级比异步置 $0$($ R _ {0A}=R _ {0B}=1 $)要高,计数脉冲均为
移位寄存器74194¶
低电平有效的清零输入 $ \overline{CLR} $ 具有最高优先级。寄存器的其它功能都工作在时钟 $ CP $ 的
$ S_ 1S_ 0 $ | 工作方式 | 工作原理 |
---|---|---|
$ 00 $ | 数据保持 | $ Q _ A^{n+1}Q _ B^{n+1}Q _ C^{n+1}Q _ D^{n+1}=Q _ AQ _ BQ _ CQ _ D $ |
$ 01 $ | 右移 | $ Q _ A^{n+1}Q _ B^{n+1}Q _ C^{n+1}Q _ D^{n+1}=D _ RQ _ AQ _ BQ _ C $ |
$ 10 $ | 左移 | $ Q _ A^{n+1}Q _ B^{n+1}Q _ C^{n+1}Q _ D^{n+1}=Q _ BQ _ CQ _ DD _ L $ |
$ 11 $ | 并行输入 | $ Q _ A^{n+1}Q _ B^{n+1}Q _ C^{n+1}Q _ D^{n+1}=ABCD $ |
一般认为寄存器74194最高位为 A,而不是 D。
$ \boxed{\mathbb{The\ End}.} $