# 期中复习

## 第二章 逻辑代数

### 逻辑代数的基本运算与公式

1. 分配律
   1. $A \cdot (B+C)=A \cdot B + A \cdot C$
   2. $A + ( B \cdot C )=(A + B) \cdot (A+C)$
2. 吸收律
   1. $A + !A \cdot B=A+B$
   2. $A \cdot (!A+B)= A \cdot B$
   3. $A + A \cdot B = A$
   4. $A \cdot ( A + B ) = A$
3. 反演律
$!(A \cdot B ) = !A + !B$
4. 德·摩根定律
$!(A + B ) = !A \cdot !B$
5. 包含律
   1. AB + !AC+ BC = AB + !AC
   2. ( A + B )( !A + C )( B + C ) = ( A + B )( !A + C )

### 公式法化简逻辑函数

1. 与或表达式化简：乘积个数最少，乘积项中的变量最少。
2. 或与表达式化简：或项个数最少，或项中变量数最少。  
   1. 化简方法：或与表达式转化为与或表达式
   2. 获得对偶式的规则：
      1. 将函数F中所有的“与”符号换为“或”符号；所有的“或”符号换为“与”符号；
      2. “0”换为“1”，“1”换为“0”；
3. 其他形式逻辑函数化简：转换为与或表达式，再化简

### 图解法(卡诺图)化简逻辑函数

1. 最大项最小项以及用他们表示函数。
2. 循环码：相邻两个编码之间只有一位数不同，而且首尾两个编码之间也只有一位数不同，这种编码叫循环码。

## 第三章 组合逻辑电路

### 引言

1. 组合逻辑的概念：组合逻辑函数的输出状态取决于所有输入的状态“逻辑组合”。如与非、与或逻辑等。
2. 组合逻辑电路：实现组合逻辑函数的电路称为组合逻辑电路。
3. 组合逻辑电路的特点：电路的输出只是和输入的当前状态有关，和过去的状态无关。
4. 集成电路的分类
   1. 按功能分：线性电路，数字电路。
   2. 按半导体制造工艺：双极型，MOS。目前最常用的工艺：CMOS（互补金属氧化物半导体）
   3. 按封装（外形）分：双列直插、表面封装、BGA。
   4. 按规模分：小、中、大、超大规模集成电路。
5. 集成电路是相对“分立原件”而言的，是所有以半导体工艺将电路集成到一块芯片的器件总称。

### 门电路

1. 与非门电路的外部特性
   1. 开关特性：当输入变化时（高或低），从从输入变化至输出变化（高或低）的时间  
   $TP_D$：传输延迟。$TP_D = ( TP_{HL} + TP_{LH}) / 2$  
   2. 转移特性：门电路中输出电压随输入电压的变化特性。( $V_{IN}-V_{OUT}$ 关系曲线)  
   在曲线上，$V_{OUT}$ 急剧下降时的 $V_{IN}$ 称：阈值电压 $V_T$，或称门槛电压。
   3. 直流参数  
   “0”输入电流 $I_{IL}$ <= 1.6mA  
   “1”输出电流 $I_{OH}$ <= 0.4mA ＝ 400uA  
   “1”输出电压 $V_{OH}$ >= 3V (10个负载)  
   “1”输入电流 $I_{IH}$ <= 40uA  
   “0”输出电流 $I_{OL}$ <= 16 mA  
   “0”输出电压 $V_{OL}$ <= 0.35V (10个负载)
   4. 与非门电路的级联  
   负载大于与非门承受能力时，低电平变高，高电平变低。与非门处于非正常工作方式，将会导致整个逻辑电路不能工作。  
   所以，在实际设计逻辑电路过程中，一定要考虑带负载能力。
2. 三态门  
   1. “线与”问题：多个输出直接连接在一起。
   线与”的定义
      1. 驱动电路A、B、C……的输出直接连线总线。
      2. 当某一驱动器向总线发送数据D时，其余驱动器OFF，输出均为“1”。
      3. 总线状态为各驱动器输出状态之“与”，即D·1·1·…… = D，把这种与连接称为“线与”
   2. 普通与非门不能直接实现“线与”功能。电流过大会损坏其中一个与非门。
   3. 三态门电路的特点：三态门电路即保留了Totem输出结构，又可以“线与”的特点，完成“线与”逻辑的速度较快。
   4. 三态电路的功能表 <table>
                        <tr><th>A</th><th>B</th><th>G</th><th>F</th><th>状态</th></tr>
                        <tr><td>X</td><td>X</td><td>0</td><td>Z</td><td>高阻态</td></tr>
                        <tr><td>0</td><td>0</td><td>1</td><td>1</td><td>正常态</td></tr>
                        <tr><td>1</td><td>0</td><td>1</td><td>1</td><td>正常态</td></tr>
                        <tr><td>0</td><td>1</td><td>1</td><td>1</td><td>正常态</td></tr>
                        <tr><td>1</td><td>1</td><td>1</td><td>0</td><td>正常态</td></tr>
                    </table>
   5. 三态总线的状态转换：  
   原来是D1向BUS传送，现在要改为D2向BUS传送，如何实现这种转换？  
   应使门1先由正常态转为高阻态，然后门2由高阻态转为正常态。  
   6. 普通门与三态门外部特性比较  <table>
                        <tr><th>直流参数</th><th>状态</th><th>$I_{IL}$</th><th>$I_{IH}$</th><th>$I_{OL}$</th><th>$I_{OH}$</th><th>$V_H$</th><th>$V_L$</th></tr>
                        <tr><td>普通门</td><td></td><td>1.6mA</td><td>40uA</td><td>16mA</td><td>0.4mA</td><td>3.6V</td><td>0.3V</td></tr>
                        <tr><td>三态门</td><td>正常态</td><td>1.6mA</td><td>40uA</td><td>64mA</td><td>6.5mA</td><td>3.6V</td><td>0.3V</td></tr>
                        <tr><td>三态门</td><td>Z态</td><td>40uA</td><td>40uA</td><td>40uA</td><td>40uA</td><td>5V, 1.5V, 0V</td></tr>
                    </table>

### 常用的中规模组合逻辑电路

#### 译码器

1. 译码器的功能分类
   1. 变量译码器：用来表示输入变量状态的全部组合 N 位输入，$2^N$ 输出。
   2. 码制译码器：如8421码变换为循环码等
   3. 显示译码器：控制数码管显示
2. 2-4 译码器  <table>
                <tr><th>输入</th><th>输出</th></tr>
                <tr><td>A B</td><td>$Y_0$ $Y_1$ $Y_2$ $Y_3$</td></tr>
                <tr><td>0 0</td><td>0  1  1  1</td></tr>
                <tr><td>1 0</td><td>1  0  1  1</td></tr>
                <tr><td>0 1</td><td>1  1  0  1</td></tr>
                <tr><td>1 1</td><td>1  1  1  0</td></tr>
              </table>
3. 带使能端 !E 的 2-4 译码器  
   1. 译码器使能端E的作用：使得集成电路更加灵活、可靠。灵活：用于扩展。可靠：用于选通。
   2. 门电路的传输延迟造成会竞争、冒险。若无使能端，延迟产生尖峰和零重叠问题。
   $t_{overloap} = 一级门延迟$  
   设 $t_{skew}$ 为信号AB到来的时间差，$t_{spike} = t_{skew} + 一级门延迟$
   3. 增加 !E 信号，强制在零重叠和尖峰信号期间，译码器的输出为无效，就能消除尖峰和重叠。抑制尖峰和零重叠的正信号应提前（或同时）于译码器的变量输入变化前到来，正信号撤除
   应滞后于变量输入的变化(至少滞后1级门的延迟)。
4. 有多个使能端的译码器件
   1. 74LS139 功能：双 2-4 译码器
   2. 74LS138 功能：3-8 译码器（3个使能端）
   3. 74LS154 功能：4-16 译码器（2个使能端）

#### 编码器

1. 编码器原理
   1. 功能：将译码器反过来，对应输入的每一个状态，输出一个编码。
   2. 常用编码器
      1. 4-2编码，将输入的4个状态编成2位二进制数码：
      2. 8-3编码，将输入的8个状态编成3位二进制数码；
      3. BCD编码，将10个输入编成BCD码。
2. 采用优先编码器：当两条或两条以上线为“0”时，优先按输入编号大的编码，称优先编码器。
以 8-3 优先编码器为例  
功能表  
![8-3 优先编码器功能表](./pic/复习28.png)  
$A_2$, $A_1$, $A_0$ 用反码编码，Gs为编码有效指示，$!E_i$ 为使能输入, $E_0$为扩展输出  
$$\\!A_0 = !!E_i \cdot ( !7 + 76 \cdot !5 + 7654 \cdot !3 + 765432 \cdot !1 ) = !!E_i \cdot ( !7 + 6 \cdot !5 + 64 \cdot !3 + 642 \cdot !1 )$$  
$$\\!A_1 = !!E_i \cdot ( !7 + 7 \cdot !6 + 7654 \cdot !3 + 76543 \cdot !2 ) = !!E_i \cdot ( !7 + !6 + 54 \cdot !3 + 54 \cdot !2 )$$  
$$\\!A_2 = !!E_i \cdot ( !7 + 7 \cdot !6 + 76 \cdot !5 + 765 \cdot !4 ) = !!E_i \cdot ( !7 + !6 + !5 + !4 )$$  
$$\\E_0 = !E_i + !(76543210) \\Gs = !( E_o \cdot !!E_i)$$

#### 数据选择器

在选择控制的信号作用下，能从多个输入数据中选择一个或多个作为输出。

1. 4选1数据选择器 <table>
                    <tr><th>$S_1$</th><th>$S_0$</th><th>Y</th></tr>
                    <tr><td>0</td><td>0</td><td>$D_0$</td></tr>
                    <tr><td>0</td><td>1</td><td>$D_1$</td></tr>
                    <tr><td>1</td><td>0</td><td>$D_2$</td></tr>
                    <tr><td>1</td><td>1</td><td>$D_3$</td></tr>
                </table>
2. 选择器扩展：用双4选1选择器(无使能端)扩展成16选1选择器（两级选择结构）  
有使能端的双4选1数据选择器  
![有使能端的双4选1数据选择器](./pic/复习29.png)  
3. 译码器与数据选择器实现逻辑函数

#### 数据比较器

数据比较器功能表
| $A_3$ $B_3$ | $A_2$ $B_2$ | $A_1$ $B_1$ | $A_0$ $B_0$   | A > B  A < B  A = B  |
| ---- | ---- | ---- | ---- | ---- |
| $A_3$ > $B_3$ | X    | X    | X    | 1  0  0 |
| $A_3$ < $B_3$ | X    | X    | X    | 0  1  0 |
| $A_3$ = $B_3$ | $A_2$ > $B_2$ | X    | X    | 1  0  0 |
| $A_3$ = $B_3$ | $A_2$ < $B_2$ | X    | X    | 0  1  0 |
| $A_3$ = $B_3$ | $A_2$ = $B_2$ | $A_1$ > $B_1$ | X    | 1  0  0 |
| $A_3$ > $B_3$ | $A_2$ = $B_2$ | $A_1$ < $B_1$ | X    | 0  1  0 |
| $A_3$ > $B_3$ | $A_2$ = $B_2$ | $A_1$ = $B_1$ | $A_0$ > $B_0$ | 1  0  0 |
| $A_3$ > $B_3$ | $A_2$ = $B_2$ | $A_1$ = $B_1$ | $A_0$ < $B_0$ | 0  1  0 |
| $A_3$ > $B_3$ | $A_2$ = $B_2$ | $A_1$ = $B_1$ | $A_0$ = $B_0$ | 0  0  1 |

#### 运算器（算数逻辑单元 ALU）

1. 一位加法器
   1. 半加器：不考虑低位进位输入和向高位的进位输出，两数码$X_n$、$Y_n$ 相加，称半加。
   2. 全加器： 将$X_n$、$Y_n$及低位进位$C_{n-1}$相加，并将进位输出$C_n$，称全加。
2. 一位全加器：  
$$F_n = C_n \oplus ( X_n \oplus Y_n )$$  
$$C_n = X_n \cdot Y_n + ( X_n + Y_n ) \cdot C_{n -1}$$  
3. 四位串行进位加法器  
存在的问题：由于前一个加法完成并提供进位后，下一个加法器才能开始运算。延迟大，速度低。  
位数越多，加法完成的时间越长。
4. 快速加法器  
进位输入是由专门的“进位门”综合所有低位的加数、被加数及最低位进入输入后提供的。  
由于进位不是由前一级加法器提供的，称为快速加法器或并行加法器。
   1. $C_1$、$C_2$、$C_3$、$C_4$形成的条件：  
   $G_i = X_i \cdot Y_i$ 称为产生进位函数  
   $P_i = X_i + Y_i$ 称为传递进位函数  
   2. $C_i$ 延迟级数与位数无关都是2级；$F_i$ 都是3级。  
   $$\\C_1 = G_1+ P_1 \cdot C_0 \\= !( !P_1 + !G_1 \cdot !C_0)$$  
   $$\\C_2 = G_2+ P_2 \cdot G_1 + P_2 \cdot P_1 \cdot C_0 \\= !( !P_2 + !G2 \cdot !P_1 + !G_2 \cdot !G_1 \cdot !C_0 )$$  
   $$\\C_3 = G_3 + P_3 \cdot G_2 + P_3 \cdot P_2 \cdot G_1 + P_3 \cdot P_2 \cdot P_1 \cdot C_0 \\= !( !P_3 + !G3 \cdot !P_2 + !G_3 \cdot !G_2 \cdot !P_1 + !G_3 \cdot !G_2 \cdot !G_1 \cdot !C_0)$$  
   $$C_4 = G_4 + P_4 \cdot G_3 + P_4 \cdot P_3 \cdot G_2 + P_4 \cdot P_3 \cdot P_2 \cdot G_1 + P_4 \cdot P_3 \cdot P_2 \cdot P_1 \cdot C_0\\=!( !P_4 + !G4 \cdot !P_3 + !G_4 \cdot !G_3 \cdot !P_2 + !G_4 \cdot !G_3 \cdot !G_2 \cdot !P_1 + !G_4 \cdot !G_3 \cdot !G_2 \cdot !G_1 \cdot !C_0 )$$  
   3. 快速加法器的电路图  
    ![快速加法器](./pic/复习1.png)
5. 16位加法器  
用4位并行进位的思想可以展开到8位,16位,32位等，但用中规模器件是不能实现的，因为进位产生逻辑的与或表达式项数与加法器位数成正比，“组合爆炸”。  
一种可行的方式是”片内并行，片间串行”。
   1. 16位串行加法器：用4片4位快速加法器组成16位串行加法器。  
   ![16位串行加法器](./pic/复习2.png)  
   此时,片内虽然是并行,但片间进位仍是串行逐片传递。  
   $F_1 ～ F_4$需要3级，$C_4$需要2级  
   $F_5 ～ F_8$需要5级，$C_8$需要4级  
   $F_9 ～ F_{12}$需要7级，$C_{12}$需要6级  
   $F_{13} ～ F_{16}$需要9级，$C_{16}$需要8级
   2. 16位快速加法器：用类似四位快速加法器中$C_1、C_2、C_3、C_4$形成的原理，去形成片间快速进位 $C_4、C_8、C_{12}、C_{16}$  
   ![16位快速加法器公式](./pic/复习3.png)  
   16位快速加法器的结构图  
   ![16位快速加法器的结构图](./pic/复习4.png)  
   4位快速加法器的输出提供 $P_m、G_m$ 需2级延迟。  
   产生$C_4, C_8, C_{12}, C_{16}$需3级延迟。$F_1 ～ F_4$要3级， $F_5 ～F_{16}$要6级。
6. 四位算数逻辑运算单元
    1. 算术运算逻辑单元(ALU)  
    ALU是CPU的核心,不仅完成算术（加法、减法等）运算,而且完成逻辑运算。  
    ALU是多种功能集成在一起的器件,因此要有功能控制端。  
    2. 四位算术逻辑运算单元  
    4位ALU的核心是4位并行加法器,通过控制加法器的一些逻辑门或改变进位逻辑门能够获得多种功能。  
    ![4位并行加法器](./pic/复习5.png)
    3. 运算能力的获得方法  
       1. 封锁4位加法器中的逻辑功能获得多种运算能力。简单、运算种类较少。  
       简单、运算种类较少。  
       在控制信号 $C_{INH}、E_{INH}$ 的作用下，可以完成4位数的加、比较和逻辑乘（与）运算。  
       $C_{in}$ 是低位进位（相当于$C_0$）  
       2. 改变加法器中的 $G_i$ 和 $P_i$ 来获得多种运算能力。运算种类较多、但运算单元结构较复杂。  
       运算种类较多、但运算单元结构较复杂。  
       图4－59给出了这类集成化4位运算单元（简称功能发生器）的逻辑图。  
       它能执行16种算术运算和16种逻辑运算。  
    4. 4位ALU功能表(SN74181)  
    M是状态控制端，M＝”H”，执行逻辑运算，反之，执行算法运算。  
    ![4位ALU功能表](./pic/复习6.png)

#### 奇偶校验器

1. 奇偶检测”是检测数据中包涵奇数个“1”，还是偶数个“1”。  
2. 奇偶校验：发送产生奇偶校验码，接收方奇偶校验。
3. 采用奇偶校验方法，去检查数据传输和记录中是否有错  

奇偶校验器电路  
![奇偶校验器电路](./pic/复习7.png)  

九位奇偶检验电路  
![九位奇偶检验电路](./pic/复习8.png)  

### 组合逻辑电路中的竞争与冒险问题

在逻辑电路中常常有这种现象，某个信号经不同路径后又重新到达同一门电路的输入，由于不同路径上的传输延迟不相同，到达汇合点的时间就会有先有后。前后参差的信号加在同一门电路的输入端上，在门的输出端可能会产生一个短暂的但不是所期望的错误输出。把信号经不同路径到达会合点有先有后成为 `竞争`，产生错误输出的现象称为 `险象`

1. 形成险象的条件：$X + !X$（或型，与非型电路） 或 $X \cdot !X$（与型，或非型电路
2. 消除现象的一个办法是在逻辑表达式中增加冗余项。
3. 消除现象的另一个办法是避开险象（外部）

## 第四章 同步时序电路

1. 时序逻辑电路某一时刻的稳定输出不仅取决于当时的输入，还取决于过去的输入(历史状态)。
   1. 记忆元件是时序逻辑电路的基本元件。
   2. 计算机中的实现记忆存储功能的元件有多种：磁存储、光存储、半导体存储（电存储）。
   3. 时序逻辑电路中的记忆元件一定要是可以修改的，也可以控制的。这种元件称为“触发器”。
2. 组合逻辑电路如何增加记忆功能：增加反馈功能  
3. RS基本触发器
可以任意修改，输出有正负两种状态。当 Input 撤除时，触发器保持状态（记忆功能）。  

RS基本触发器结构图  
![RS基本触发器结构图](./pic/复习10.png)  
RS基本触发器功能表  
| R | S | Q | !Q |
| ---- | ---- | ---- | ---- |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 1 | $Q_0$ | $!Q_0$ |
| 0 | 0 | 1 | 1 |

### 触发器

能存储1位二进制数的记忆元件。  

1. 触发器的分类
   1. 按时钟控制方式分类：电位触发方式；边沿触发方式，主-从触发方式。
   2. 按功能来分类：D触发器，R-S触发器，J-K触发器，T触发器。
2. 触发器的功能特点
   1. 有两个稳定的互补输出Q,Q非。
   2. 当Input 来到时，触发器接收数据；当Input 撤除时，触发器保持状态（记忆功能）。
   3. 交叉耦合使得触发器可以保持状态。
   4. 有稳定的状态，能够接收外来数据，改变状态，能保持状态。
3. R-S基本触发器的不足：当R-S端从“00”变化到“11”时，触发器的下一个状态不能确定，因此不能直接使用。如要使用，则输入设计必须要避免这种情况发生。
4. 解决状态不定的办法：对触发器的输入加以控制。保持触发器稳定状态不被破坏。
5. 电位触发器：在R-S基本触发器的基础上，对输入加以控制。在控制端有效的情况下，无论输入如何变化，触发器都能够处于保持状态。  
E=0时，保持触发器稳定状态不被破坏。  
问题：在E=1且R-S=“11”时, 同样存在不定状态。  
电位触发器功能表  <table>
                    <tr><th>E</th><th>R</th><th>S</th><th>Q</th><th>!Q</th></tr>
                    <tr><td>1</td><td>X</td><td>X</td><td>$Q_0$</td><td>$!Q_0$</td></tr>
                    <tr><td>0</td><td>1</td><td>1</td><td>$Q_0$</td><td>$!Q_0$</td></tr>
                    <tr><td>0</td><td>0</td><td>1</td><td>1</td><td>0</td></tr>
                    <tr><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td></tr>
                    <tr><td>0</td><td>0</td><td>0</td><td>1</td><td>1</td></tr>
               </table>
6. 电位型D触发器  
电位型D触发器结构图  
![电位型D触发器结构图](./pic/复习11.png)  
电位型D触发器功能表  <table>
                    <tr><th>E</th><th>D</th><th>Q</th><th>!Q</th></tr>
                    <tr><td>1</td><td>D</td><td>D</td><td>!D</td></tr>
                    <tr><td>0</td><td>X</td><td>$Q_0$</td><td>!$Q_0$</td></tr>
                  </table>
存在的问题：抗干扰能力较差  
解决办法：希望接收使能（时钟）脉冲某一跳变来到时，输出才变化为输入的值。

#### 边沿型D触发器

原理：接收时钟脉冲CP某一跳变来到时，输出才变化为输入的值。  
特点：CP正跳变时，才接受输入数据。CP＝1及CP＝0期间，输入数据变化不会影响触发器状态。  

正沿D触发器结构  
![正沿D触发器结构](./pic/复习12.png)  
正沿触发器激励函数
| CP   | D | Q | !Q |
| ---- | ---- | ---- | ---- |
| $\uparrow$ | D | D | !D |

1. CP = 0 期间，正边沿D触发器状态保持。
2. CP 从 0 跳变为 1 后，触发器的输出端为输入的数据 D。
3. CP ＝ 1 时，输出的状态不受 D 变化的影响，正边沿触发器状态保持。
4. CP 从 1 跳变为 0 后，正边沿 D 触发器状态保持。

正沿D触发器的开关特性：数据建立时间$t_{su}$(set up)，数据保持时间$t_h$(hold)，传输延迟参数 $t_{pd}$。  
![正沿D触发器的开关特性](./pic/复习13.png)

1. $t_{su}$  
$t_{su} >= t_{pd5} + t_{pd6}$ （二级门延迟）  
$t_{su}$ 必须在时钟的低电平期间。  
2. $t_{h}$  
$t_{h} >= MAX(t_{pd3} + t_{pd4})$ （一级门延迟）  
$t_{h}$ 必须在时钟的高电平期间。  
3. $t_{pd}$  
$t_{pd cp -> Q }$ 必须在时钟的高电平期间。

触发器工作最短时钟负周期 $T_{cp-min} = t_{su}$  
触发器工作最短时钟正周期 $T_{cp+min} = max(t_{h}, t_{pd cp -> Q })$

多个触发器组成的电路最高时钟频率  
![多个触发器组成的电路](./pic/复习14.png)  
系统工作最快时钟频率：$f_{cpmax} = 1 / (t_{su} + max(t_h, t_{pdcp->Q} + t_{pdg}))$

### 同步时序电路的分析与设计方法

#### 同步时序电路的特点

1. 各触发器使用同一个CP；
2. 只有约定时钟到来，电路状态才能改变
3. 一个脉冲只能改变一次状态

#### 分析工具

状态表、状态图。

#### 同步时序电路的基本概念  

1. 功能表：描述电路输入输出关系
2. 现态$Q_n$ ：约定时钟跳变到来之前电路的状态
3. 次态$Q_{n+1}$ ：约定时钟跳变到来之后电路的状态
4. 状态表与状态图：反映输入与状态转换的关系
5. 状态方程：状态转换的表达式
6. 激励表：从现态转变到次态，对触发器输入端的要求

#### 同步时序电路的分析步骤

1. 根据电路图列出触发器激励函数表达式和电路输出函数；（分析由于触发器输入的变化而引起次态的变化以及输出的变化，所以必须要明确触发器的输入变化）
2. 根据电路输入和触发器激励函数建立次态表达式和状态表；（分析触发器状态的变化规律）
3. 画出状态图和时序图；（能够更直观分析状态的变化规律）
4. 分析输出序列和输入序列的关系，说明时序电路的逻辑功能；

#### 同步时序电路的设计  

1. 根据要求的逻辑功能，设计能够完成该逻辑功能的逻辑电路  
2. 同步时序电路设计过程是同步时序电路分析的逆过程  
3. 设计过程：文字描述 $\rightarrow$ 状态图 $\rightarrow$ 逻辑图

#### 同步时序电路的设计步骤

1. 确定输入变量和输出变量
2. 作原始状态表：根据给定的电路设计条件构成原始状态表。
3. 状态化简：原始状态表通常不是最小化状态表，它一般包含多余的状态，因此要对原始状态表进行化简。
4. 状态分配：给简化后的状态用一个二进制数来编码。  
编码方案的不同可能会影响到所设计电路的经济性
5. 求出激励函数和输出函数：根据选用的触发器激励表和电路的状态表，综合出电路中各个触发器的激励函数和电路的输出函数。
6. 画逻辑图

### 计数器

计数器的功能：对CP脉冲计数，一个脉冲变化一次状态  
计数器的种类

1. 同步计数器，异步计数器
2. 加法计数器(加1,加2等), 减法计数器(减1,减2等), 可逆计数器等
3. 二进制计数器(模为2n),十进制计数器,任意进制计数器等
4. 环形计数器,扭环计数器等特殊电路结构的计数器

计数器是应用最多的一类标准器件  

#### 同步二进制计数器设计

$$D_0 = !Q_0$$  
$$D_1 = !(!!Q_0 \oplus !Q_1)$$  
$$D_2 = !(!( !Q_0 + !Q_1)\oplus !Q_2)$$  
$$D_2 = !(!(!Q_0 + !Q_1 + !Q_2)\oplus !Q_3)$$  

从波形上分析，若CP脉冲的频率为$f_0$ ，则$Q_3, Q_2, Q_1, Q_0$的输出分别为$f_0$的1/2, 1/4, 1/8和1/16, 这就是计数器的分频功能，也叫“分频器”。$Q_0$是二分频，$Q_1$是四分频等。

#### 十进制计数器设计

#### 可逆计数器设计

#### 集成化的4位二进制计数器设计

基本功能：

1. 异步/同步清零：初始化
2. 同步置数：开始计数的初值
3. 计数：正常工作
4. 保持：计数到某个特定的计数值保持
5. 扩展性：相同的计数器级连更多位数的计数器
6. 进位传递：扩展时进位传递到高位片

用负边沿D触发器构成的4位二进制计数器功能表
| $!R_D$ | CLR | L | T | P | CP | 功能 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 0    | X    | X    | X    | X    | X    | 异步清零 |
| 1    | 0    | X    | X    | X    | $\downarrow$ | 同步清零 |
| 1    | 1    | 0    | X    | X    | $\downarrow$ | LOAD（并行数据输入） |
| 1    | 1    | 1    | 1    | 1    | $\downarrow$ | COUNT（计数） |
| 1    | 1    | 1    | 0    | X    | X    | FF HOLD, RC = 0 |
| 1    | 1    | 1    | 1    | 0    | X    | HOLD（保持） |

##### 集成化的计数器各功能的实现

集成化的4位二进制计数器的逻辑符号图  
![集成化的4位二进制计数器的逻辑符号图](./pic/复习15.png)

1. 异步清零：用触发器提供的异步清零 / 在输出用组合逻辑（如：$!R_d$, Q ）采用该方法时要慎重
2. 同步清零：当CLR＝0时，在下一个时钟跳变时输出都为0。意味着在时钟跳变到来前，所有触发器的激励要为 0，因此需要将 CLR 与到 D 的每一项上。
3. Load(并行数据输入)：  
当L＝0时，触发器接收已准备好的数据A~D，当 L = 1时，触发器执行计数（原激励不变）。  
从本质上看，用L对激励做数据选择（二选一），使用$( L \cdot A ～ D + !L \cdot D_i )$ 实现。
4. 多片计数器扩展
   1. 设置进位标志：RC（计数器输出）
   2. 允许（禁止）端：  
      1. T (Trickle) 串行控制：当T＝0 时，触发器保持。当 T＝1 时，允许计数。
      2. P (Parallel) 并行控制：要想大家同时进位，计数器需要再增加一个控制端P，配合T一齐使用，只有当P=“1”且T＝”1”时，本片才进位。
      最低位片的RC和P相连，当最低位片有进位且本片的上一个RC也为1时，本片进位。
      3. 操作方式：当 T ＝ 0 或 P = 0 时，计数器保持；当 T ＝ 1 且 P ＝ 1 时，计数器计数。

##### 设计计数器时要注意的问题：自启动

### 寄存器

寄存器的作用  

1. 在计算机中用于存储指令、数据、运算结果
2. 寄存器的数量多少，是计算机结构的重要区别之一
3. 外存、内存、缓存、寄存四类中，寄存器速度最快，但容量最小

#### 基本寄存器

4D触发器构成的寄存器（ CP 和 R 输入多两级非门减少对外负载）  

具有保持（Hold）功能的4D寄存器（增加控制端!E ）  

具有置数、保持和选择功能的4D寄存器（增加选择端 ）  

有输入输出使能的寄存器（增加使能端!OE，!OE为1为高阻态 ）
功能表
| $!R_D$ | !E | CK | D | !OE | Q |
| ---- | ---- | ---- | ---- | ---- | ---- |
| 0    | X    | X          | X    | 0    | 0 |
| 1    | 1    | $\uparrow$ | X    | 0    | $Q_n$ |
| 1    | 0    | $\uparrow$ | D    | 0    | D |
| X    | X    | X          | X    | 1    | Z |

应用举例：用有输入输出使能的4D寄存器组成双向总线寄存器  
![双向总线寄存器](./pic/复习16.png)  

#### 移位寄存器

设计移位寄存器的要求：每来一个时钟脉冲（移位命令），寄存器中的数据就顺序左（右）移动一位，所以必须采用边沿触发器或主从触发器。  

1. 串入/并出的移位寄存器  
![串入/并出的移位寄存器](./pic/复习17.png)  
应用：串行变并行(如果要并行变串行，应该有并行输入功能)
要求每个触发器的输出传输延迟大于下一个触发器的数据保持时间
2. 并入/并出的双向Shift Reg
功能表：  <table>
            <tr><th>$!R_D$</th><th>$S_0$</th><th>$S_1$</th><th>$CK$</th><th>功能（$Q_{n+1}$）</th></tr>
            <tr><td>0</td><td>X</td><td>X</td><td>X</td><td>置 0</td></tr>
            <tr><td>1</td><td>0</td><td>0</td><td>$\uparrow$</td><td>Hold（$Q_n$）</td>
            <tr><td>1</td><td>1</td><td>0</td><td>$\uparrow$</td><td>Shift Right（$Q_{Ln}$）</td>
            <tr><td>1</td><td>0</td><td>1</td><td>$\uparrow$</td><td>Shift Left（$Q_{Rn}$）</td>
            <tr><td>1</td><td>1</td><td>1</td><td>$\uparrow$</td><td>Load（Store）(D)</td></tr>
        </table>
![并入/并出的双向Shift Reg](./pic/复习18.png)

## 第五章 可编程逻辑电路

“软件固化”, “以存代算”思想的体现  
用软件设计硬件：硬件描述语言(HDL)  
硬件设计的进步：方便、灵活、可修改设计：用户可编程，设计方便，易于实现  

中小规模可编程逻辑器件PLD，是一大类器件的总称，包括：

1. ROM 只读存储器
2. PLA 可编程逻辑阵列
3. PAL 可编程阵列逻辑
4. GAL 通用阵列逻辑

### 只读存储器（ROM）

功能：存放固定信息：程序，常数，指令，......  
优点：信息非“易失”。结构简单，规律性强，容量大  

运行时只读不写  
存储元件可以不用FF，二进制信息可用有无熔丝或二极管标志来表示  
容量可以很大  
输入地址和存储信息一一对应。  
与阵列是译码器，包括全部最小项，信息表完全。  

三种ROM

1. 掩模型ROM (Mask ROM) (工厂编程)，用户提交码点,在工厂编程。
2. 可编程ROM (PROM) (用户一次编程)，出厂保留全部熔丝，用户可编程但不可改写
3. 可改写ROＭ (EPROM) (用户多次编程)，光可改写 (UV EPROM)，电可改写 (E2PROM)

ROM 结构图  
![ROM结构图](./pic/复习19.png)  

1. ROM结构  
存储体可以画为：或阵列  
地址译码：与阵列  
ROM结构图也可以表示为  
![ROM结构图](./pic/复习20.png)
2. 可编程ROM (PROM)的结构：与阵列固定、或阵列可编程
3. ROM字数很大时，译码系统(And Array)很复杂。  
字数很少，一级译码；字数很大，采用多级译码  

### 可编程逻辑阵列（PLA）

为了提高芯片的利用率，与阵列不一定产生所有的最小项，只需产生逻辑函数所需的乘积项即可。  
PLA 与、或阵列均可编程；PAL 与阵列可编程、或阵列固定  
PLA实现组合逻辑

1. PLA实现组合逻辑时，将逻辑表达式写成最简与－或表达式
2. 再用与项(乘积项:product)的“或”操作构成或阵列

PLA的特点：与阵列可编：形成P项（不是最小项）；或阵列可编。  
PLA的读出方式：一组地址可选中多个P项。  
PLA与ROM的区别：ROM的信息表原封不动；PLA作了逻辑压缩，信息表改动很大,但逻辑上等价
PLA的容量表示：(输入数) X (P项数) X (输出数)

### 可编程阵列逻辑（PAL）

PAL：与阵列可编程、或阵列固定  
工艺：简化工艺,降低成本(熔丝工艺,一次编程)  
不同的芯片可实现不同的逻辑，有些PAL只能实现组合逻辑电路，有些只能实现时序逻辑电路。
  
其他结构的PAL  

1. 带反馈的阵列型PAL：可实现组合逻辑，输出由P项控制，增加了灵活性。  
![带反馈的阵列型PAL](./pic/复习21.png)  
2. 具有反馈的寄存器型PAL：具有记忆功能，可实现时序逻辑，但不能实现组合逻辑  
![具有反馈的寄存器型PAL](./pic/复习22.png)  
3. “异或”型PAL：具有记忆功能，可实现加、减、计数器  
![“异或”型PAL](./pic/复习23.png)  

### 小结

ROM、PLA、PAL共同存在的问题：  
不存在只用一种芯片，即可以实现组合逻辑电路，又可以实现时序逻辑电路  

GAL是为解决这一问题而产生的芯片  
GAL:通用阵列逻辑（General Array Logic）  

### 通用阵列逻辑（GAL）

GAL来源：在PAL基础之上发展  
与PAL相似之处：与阵列可编程；或阵列固定
与PAL的差别：增加了输出控制（OLMC结构）；增加了反馈结构；多次可编程；集成度提高。  

GAL逻辑结构

1. GAL的基本逻辑结构：输入，输出，与阵列，输出逻辑宏单元  
以GAL16V8为例，最多输入16个，输出8个。“与阵列”。8个输出逻辑宏单元（OLMC：output logic macro cell）  
16个输入变量，其中右侧8个在OLMC控制下，可以配置为输入或输出。8*8=64行为可编程的与阵列，对应64个P项。不可编程的或阵列在OLMC内部。  
![GAL的基本逻辑结构](./pic/复习24.png)  
2. 输出逻辑宏单元(OLMC)的结构
输出逻辑宏单元(OLMC)需要支持的功能：组合逻辑设计；时序逻辑输出；辅助其他宏单元的逻辑设计。  
输出逻辑宏单元(OLMC)的结构  
![输出逻辑宏单元(OLMC)的结构](./pic/复习25.png)  
输出逻辑宏单元(OLMC)的功能表  
![输出逻辑宏单元(OLMC)的功能表](./pic/复习26.png)  
3. 单个输出逻辑宏单元的结构  
四个输入配置的控制字：AC0，AC1(n)，AC1(m)，XOR(n)  
![四个输入配置的控制字](./pic/复习27.png)  
4. GAL的通用可编程体现在
   1. 片内具有与或阵列，每个宏单元内有一个D触发器  
   2. 通过不同的控制字设置成不同的工作方式（可编程）
   3. 应用灵活（通用）：即可以实现组合逻辑电路（将D触发器旁路），也可以实现时序逻辑电路。

### 大规模可编程逻辑电路

几个常用的缩写

1. 可擦除的可编程逻辑芯片 EPLD
2. 复杂的可编程逻辑芯片 CPLD
3. 现场可编程门阵列 FPGA

可编程芯片的发展趋势  

1. 向高密度、大规模的方向发展
2. 向系统内可重构的方向发展
3. 向低电压、低功耗的方向发展
4. 向高速可预测延时器件的方向发展
5. 向混合可编程技术方向发展

## 复习

设计中的实用化技术

1. 负载问题：1）输入缓冲：减少外部负载；2）内部负载分配；3）输出的扇出最大化
2. 可靠性问题
设计的电路结构规则：如设计电路中有时用“异或”而不用的“与或”
添加冗余电路：消除竞争与冒险
3. 扩展问题：设计所有的集成电路都要考虑扩展，没有可扩展性的设计是没有生命力的。
4. 线与问题：1）总线的接口电路采用三态结构；2）集电极开路的“线与”
5. 自启动问题：所有时序电路都必须解决的问题，否则设计出来的产品是废品。

