判断题
看脸。
化简题
前置知识
根据电路图写出真值
电路名称 | 逻辑表示 | 图片 |
---|---|---|
与门 | F = AB | |
或门 | F = A + B + C | |
非门 | F = A̅ | |
与非门 | ||
或非门 | ||
异或门 | ||
同或门 |
循环码
循环码的特点有两个:
- 任何相邻的两个码组中,仅有一位代码不同
- 一组循环码除去最高位之后是对称的
循环码的构成演示如下:
简单来说就是低位进行对称,新增的最高位前半全是0,后半全是1,即可构成循环码。
衍生到四位就是:
公式化简
布尔代数定律
基本定律 | ||||
---|---|---|---|---|
结合律 | ||||
交换律 | ||||
分配率 | ||||
摩根 | ||||
吸收律 | ||||
重点记住这里的吸收律。
布尔代数基本规则
- 代入规则
任何一个含有变量A的等式,如果将所有出现A的位置都代入同一个逻辑函数,则恒等式成立。
例如等式:
B(A+C)=BA+BC
现将所有出现A的地方都代入函数A+D,则有
B[(A+D)+C]=B(A+D)+BC=BA+BD+BC
- 反演规则
反演规则是用于求解一个逻辑函数F的非函数的
步骤如下:
① 将F表达式中的与**·**
换成或**+**
,或**+**
换成与**·**
② 将原变量换成非变量,非变量换成原变量
③ 将逻辑1换成0,0换成1。
在替换的时候注意需要先与后或,也就是先把与运算转为或运算
例如:
注意:和不等价,前者是AB一起取反,后者是分开取反之后再相乘。
- 对偶规则
某个逻辑恒等式成立的话,其对偶式也成立。
F是一个逻辑表达式,把F中的与·
换成或+
,或+
换成与·
;1
换成0
,0
换成1
,所得的新的逻辑函数式叫F的对偶式,记为F'
。
在替换的时候注意需要先与后或,也就是先把与运算转为或运算
化简技巧
- 并项法
利用 把两个项合并为一项,这样可以消去这个变量A,例如:
- 吸收法
利用,消去多余项B,例如:
- 消去法
利用消去多于项,例如:
- 💡配项法
卡诺图化简
最小项
A, B, C 三个逻辑变量的最小项有23=8个,分别为:A’B’C’, A’B’C, A’BC’, A’BC, AB’C’, AB’C, ABC’, ABC 其中A’表示A的非,其余类推。
二进制编码的十进制表达就是符号表示的下标。
如何写出最小项
卡诺图的结构
注意:拿这里的
00
为例,不是代表A = 0,B = 0,而是在最小项中,最终A与B的结果为0,实际A、B的取值还是1。横纵坐标都是循环码。所以AB从上到下分别是:00 01 11 10,对应的就是二位循环码
卡诺图化简
- 不带有无关项
步骤如下:
- 得到函数的真值表或将函数化为最小项之和的标准形式
- 画出函数的卡诺图
- 合并最小项(即“画圈”)
- 在最小项处标注
1
1
格一个也不能漏,否则表达式与函数不等- 包围圈中的
1
必须是相邻连续的(矩形边界可以互通,也就是同一行最左边格子和最右边格子视为相邻,同理同一列最上边格子和最下边格子视为相邻) - 包围圈中
1
的数量只能是2n
个,n一般等于0,1,2,3,4… - 包围圈越大越好
- 包围圈可以互相重叠
- 在最小项处标注
举个例子:
![SSV}]OXB0GQC}W8`51CMEQ.png
首先画出卡诺图:
![Y3]%KQ8NU]1V``E6IAP4ZK.png
画圈:
这里一共四个包围圈:绿色(2个1) + 紫色(2个1) + 红色(4个1) + 黄色(4个1)
黄色是因为四个边角视为相邻。
最后根据包围圈进行合并,每个包围圈中留下**恒为1**
和**恒为0**
的项。
例如在绿色包围圈中,D
一直都是1,A和C
一直都是0,所以绿色包围圈留下
在黄色包围圈中,B和D
一直都是0,所以黄色包围圈留下
紫色包围圈中,B和D
一直都是1,A
一直都是0,所以紫色包围圈留下
在红色包围圈中,A和C
一直都是1,所以红色包围圈留下
把以上四个包围圈相加可得:
- 带有无关项
与上面唯一的区别是无关项Φ
可以被视作1
用于连接原本不相邻的1
,但是包围圈无需完全包围所有的无关项,仍然只需要包围1
即可,此外的过程同上。
见书上P27页 例题19
分析题
电路分析
给出电路,画出波形
电路图如下:
输入波形如下:
其中波形在上表示**1**
,波形在下表示**0**
,写出各个输出口对应的逻辑表达式即可,根据逻辑表达式和各项输入获取输出口在每一个时间间隔的输出:
例如这里的,在第一个时间间隔中,A = 1,B = 0,X1应该为1,所以最终波形在上,后面的时间同理。
给出电路,写出电路表达式并化简
列写布尔表达式法
从左往右依次把布尔表达式写出可得:
由前面的基本定律等化简可得:
给出波形,分析电路逻辑关系或表达式
书上P59第8题(节省篇幅就不画图了)。
步骤如下:
① 写出所有F为1
的时候,ABCD
所在的状态,如果是1
就表示为X,如果是0
就表示为
比如在第一次F = 1
的时候,此时A=0,B=0,C=0,D=1
,写作
以此类推可得:
② 对F进行化简(优先找到相同项最多的表达式进行合并)
化简答案不唯一。
时序电路分析
前置知识
如下图所示:
为上升沿触发的时钟信号;
为下降沿触发的时钟信号;
- SR触发器
SR触发器的示意图如下:
CLK是一个脉冲信号,其逻辑值会随着时间运算改变。
功能表如下:
输入 | 输出 | 说明 | |||
---|---|---|---|---|---|
S | R | CLK | |||
0 | 0 | × | 保持 | ||
0 | 1 | ↑ | 0 | 1 | 置0 |
1 | 0 | ↑ | 1 | 0 | 置1 |
1 | 1 | ↑ | ? | ? | 不稳定 |
状态方程(也叫特征方程)为:
- D触发器
D触发器的逻辑示意图如下:
这里CP后面的小圆圈代表:对时钟信号的负脉冲有效,也就是对下降沿敏感 上面的SR没有小圆圈,所以对上升沿敏感 小三角表示是将时钟信号转换成窄脉冲,使触发器按边沿方式工作。
其特性表如下:
输入 | 输出 | 说明 | ||
---|---|---|---|---|
D | CLK | |||
1 | ↑ | 1 | 0 | 置位(存1) |
0 | ↑ | 0 | 1 | 复位(存0) |
特征方程为:
- JK触发器
JK触发器逻辑示意图如下:
功能表如下:
输入 | 输出 | 说明 | |||
---|---|---|---|---|---|
J | K | CLK | |||
0 | 0 | ↑ | 保持 | ||
0 | 1 | ↑ | 0 | 1 | 置0 |
1 | 0 | ↑ | 1 | 0 | 置1 |
1 | 1 | ↑ | 交替 |
特征方程为:
JK触发器和D触发器还有强制输入端和.
- PRE的作用就是让触发器强置为
**1**
- CLR的作用就是让触发器强置为
**0**
这两个强制输入信号都是低电平有效,并且不能同时作用,优先级高于JK输入信号。
两个强制输入信号也叫异步输入,一般都处于高电平状态。
- 激励方程和输出方程
激励方程:激励方程也叫作驱动方程,出现在多个触发器(锁存器)组成的时序电路当中,用于表示各个触发器的输入端的输入。
输出方程:也就是整个电路中最终的输出结果。
分析同步时序电路功能
根据时序电路写状态方程和状态图
下图是一个由JK触发器构成的8位计数器:
详细可以参照书上P75页。
① 首先根据电路图写出J``K
两个输入端的激励方程:
② 由JK触发器的特征方程:
写出电路的状态方程:
③ 写出Q的真值表:
初始状态Q全为0,次态代入上述状态方程即可获得。
时钟个数 | PS(现态) | NS(次态) | ||||
---|---|---|---|---|---|---|
Q2 | Q1 | Q0 | Q2 | Q1 | Q0 | |
1 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 | 1 | 0 |
3 | 0 | 1 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 1 | 1 | 0 | 0 |
5 | 1 | 0 | 0 | 1 | 0 | 1 |
6 | 1 | 0 | 1 | 1 | 1 | 0 |
7 | 1 | 1 | 0 | 1 | 1 | 1 |
8 | 1 | 1 | 1 | 0 | 0 | 0 |
9(循环) | 0 | 0 | 0 | 0 | 0 | 1 |
时钟个数1时候的次态就是时钟个数2时候的现态。 这里记住:越在电路后面的触发器表示的二进制位数越高。 所以触发器表示的顺序是2,1,0
④ 这里输出方程比较简单,就是直接把三个输出端Q组合成一个二进制数即可,所以最终输出的状态图为:
建议画成圆形,这里实在不太好画所以画的方形。
应用题
设计电路
组合电路设计
例如:设计一个多数表决电路,以判断A、B、C三人中是否多数赞同
首先根据题意写出真值表:
写出F输出为1的表达式:
所以F的表达式为:
最后根据表达式画出电路图即可。
画电路图的时候先确定所有的输入,这里就是
A B C
,然后从最后倒退门电路,比如这里F最后是由一个四或门组成的。
设计某个功能电路
时序电路的设计
步骤:
- 确定输入输出变量建立原始状态表
- 对原始状态表进行简化
- 状态编码
- 由状态转移表建立最简单的激励函数和输出函数表达式
- 画出逻辑图
时序电路例题
使用与非门和D触发器设计一个同步时序逻辑电路,以检测输入的信号是否为连续的
1 1 0
。
① 首先需要确定有多少输入和输出,这里很明显,只有一个输入信号,输出也只有一个,也就是判断信号是否是连续的110
,一般记录输入为x
,最后的输出为Z
。
② 根据题意建立状态表
信号是一位一位输入的,总共需要三位进行判断,一位一位来:
从面可以看出,只有第二种情况Z
可以输出1
,其余情况都是0
。一般来说这就代表了8种状态,但由于本题是连续形式判断,所以并不是三位三位分隔判断,可以出现以下情况:
前三位并不符合要求,但是2-4位符合。
③ 画出状态图
所以首先设立一个初始状态S1
,代表空值,这种状态下有两种后续情况:x
输入的是0
,这已经不符合110
的判断了,所以直接回滚到S1
状态,如果x
输入是1
,那么进入到下一步进行继续判断,此时设立一个新的状态S2
,同理于上,可以画出如下的状态图:
其中
0/1
表示的是,此时x输入为0
,Z输出为1
。
以上会发现总共有三个状态,如果要用二进制编码表示这三种状态,至少需要2
位,因为22 =4 >3。
这里就需要两个**D**
触发器(题目提供的),输出端口称为y1
和y2
。三个状态我们从小到大分别用y
表示可得: 。
④ 写出状态表
根据上面的状态方程和输入分析,我们知道,如果状态S1
(二进制表示就是y1 = 0,y2 = 0
)为现态:
- x输入为
**1**
的时候,就会进入状态S2
(二进制表示就是y2 = 1,y1 = 0
),此时次态为**S****2**
- x输入为
**0**
的时候,就会进入状态S1
(二进制表示就是y2 = 0,y1 = 0
),此时次态为**S****1**
于是可以以此类推上面三种状态的互相转换,每个状态对应两个输入,也就是有6
种情况:
输入条件C | 现态PS | 次态NS | 激励 | 输出 |
---|---|---|---|---|
x | y**2 y1** | y**2n+1 y1**n+1 | D**2 D1** | Z |
0 | 0 0 | 0 0 | 0 0 | 0 |
1 | 0 0 | 1 0 | 1 0 | 0 |
0 | 1 0 | 0 0 | 0 0 | 0 |
1 | 1 0 | 1 1 | 1 1 | 0 |
0 | 1 1 | 0 0 | 0 0 | 1 |
1 | 1 1 | 1 1 | 1 1 | 0 |
这里的激励是由于D触发器特征方程得来的,D = yn+1
⑤ 写出D的激励函数
这里的做法是画卡诺图:
- 取y**2n+1恒为`1`的情况 | X\y2y**1 | 0 0 | 0 1 | 1 1 | 1 0 | | —- | —- | —- | —- | —- | | 0 | | | | | | 1 | 1 | | 1 | 1 |
对卡诺图化简可得:
这里写成
与
的形式是因为题目只提供了与门和非门。
- 取y**1n+1恒为`1`的情况
| X\y2y**1 | 0 0 | 0 1 | 1 1 | 1 0 |
| —- | —- | —- | —- | —- |
| 0 | | | | |
| 1 |
| | 1 | 1 |
对卡诺图化简可得:
⑥ 写出输出函数,也就是当y2 = 1,y1 = 1
的时候,也就是处于状态S3
的时候,此时x输入为0
,Z输出为1
,那么也就是:
⑦ 最后根据以上的状态转换方程等,画出逻辑图(P96页 图3.54)(这真教不了,家人们自求多福吧)
注意:由于是同步时序电路,所以一定要加上一个
CLK
连接各个触发器
VHDL
VHDL设计
逻辑操作符号 | AND | OR | NOT | NAND | NOR | XOR | XNOR | | —- | —- | —- | —- | —- | —- | —- | | 与操作 | 或操作 | 非操作 | 与非操作 | 或非操作 | 异或 | 同或 |
头文件定义
//定义头文件
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
实体定义
ENTITY [实体名称] IS // 开始实体定义
PORT([输入端口名称];IN bit;[输出端口名称];OUT bit); // 定义实体中的输入输出端口
END ENITITY [实体名称]; // 结束实体定义
实体名称不可以是保留字,详情参见书上P152
结构体
ARCHITECTURE [结构体名称] OF [结构体对应的实体] IS
BEGIN // 开始定义标志
[结构体实际内容]
END ARCHITECTURE [结构体名称]; // 结束定义标志
调用组件(元件) ``` ARCHITECTURE [结构体名称] OF [结构体对应的实体] IS
COMPONENT [元件/组件名称] IS
PORT([输入端口名称];IN bit;[输出端口名称];OUT bit); // 定义y元件中的输入输出端口
END COMPONENT; SIGNAL [信号输入端口描述]
BEGIN G1:[元件/组件名称] PORT MAP([组件输入输出功能描述]); // 其中G1作为标识符号,可任意取
END ARCHITECTURE [结构体名称]; // 结束定义标志 ```
例题参见书上P156页 例8
结构体相关
在VHDL程序中, 结构体能包含若干个流程,用于描述系统内部的结构和行为,与顺序无关,可以并行运行 。