逻辑设计基础
Logic Design
数制
数制是用一组固定符号和统一规则来表示数值的方法,通常包含基数和位权两个基本要素。其中基数是指使用数码的个数,例如:二进制的基数为2
,十进制的基数为10
。位权是指数制某位所表示的数值权重的大小,例如:十进制数123
,1
的位权是100
,2
的位权是10
,3
的位权是1
。二进制数1011
,从左至右1
、0
、1
、1
的位权依次是8
、4
、2
、1
。常用的数制有二、八、十、十六四种进制,书写时可以在相应数值尾部添加字母B、O、D、H或者下标2、8、10、16进行标识,计算机传输和保存数据通常使用的是二进制。
码制
码制是计算机存储、传输数据所使用的编码规则;其中原码、反码、补码是计算机设备保存数值类型数据的编码方式,ASCII 与 Unicode 属于保存字符类型数据的编码格式;而 BCD 编码、格雷码则主要用于设备之间的数据传输以及转换。
BCD 码的优点在于格式转换容易,十进制数值表达精度较高;缺点是增加了电路进行算术运算的复杂度,并且存储效率较低。
数字系统
数字系统设计大致分为三个方面
- 系统设计
- 系统设计是将一个数字系统划分为多个子系统进行设计。
- 逻辑设计
- 逻辑设计是将多个逻辑功能块互联实现特定功能
- 电路设计
数字系统的中许多子系统以开关电路的形式存在,开关电路具有一个或多个输入端,一个或多个输出端,输入输出端都取离散值的电路。开关电路一般使用门电路来描述,使用布尔代数进行分析。开关电路有两种——组合电路和时序电路。
开关电路分类:
- 组合电路
- 组合电路中输出值仅与当前输入值有关
- 组合电路的基本构成是逻辑门,逻辑设计就是将逻辑门相互连接起来以便将电路的输入信号转化为预期的输出信号。
- 时序电路
- 时序电路中输出值不仅与当前输入值有关,也与之前的输入值有关;可以认为时序电路具有记忆功能
- 时序电路的基本存储元件(存储之前的值)是触发器,触发器与逻辑门一起组成时序电路——如计数器和寄存器。
布尔代数
逻辑设计课程中我们使用二值布尔代数来设计开关电路。我们使用布尔变量来表示电路的输入和输出,其中布尔变量代表逻辑电路中的两种不同状态——
普通代数中的交换律和结合律同样可以在布尔代数中使用。
布尔代数中的交换律表明开关的位置(出现次序)不会影响最终结果,结合律表明开关导通的次序不会影响最终结果。
在布尔代数中,分配律有两种形式:
一种是普通的分配律:\(X(Y+Z)=XY+XZ\)
与运算可以分配在或运算上
去和括号内相乘
另一种被称作第二分配律:\(X+(YZ)=(X+Y)(X+Z)\)
或运算可以分配在与运算上
去和括号内相加
很多布尔代数表达式可以使用一个更简单的表达式替换,每个布尔代数表达式
数字电路概念
高阻态
高阻抗状态(High impedance)表示电路中的某个节点具有相对电路中其它点更高的阻抗,电路分析时通常将高阻态作为开路理解。即可以将其视为输出/输入电阻极大,极限状态可以认为是悬空(断路)的状态,高阻态通常使用字母Z表示。
三态门
数字电路中的三态逻辑(Three-state
logic)是指其输出既可以是代表0
和1
的高低电平,也可以是其特有的高阻抗状态(相当于隔断状态,电阻极大,类似于开路)。
具有高电平、低电平、高阻态三种状态的元器件称为三态器件,三态器件都通过一个控制使能端
B
来控制整个三态门电路的通断。当使能端高电平有效时,三态器件可以正常的0
或1
输出,当使能端低电平无效时,三态电路将会输出高阻态。
输入端 A | 使能端 B | 输出端 C |
---|---|---|
0 |
1 |
0 |
1 |
1 |
1 |
X |
0 |
Z |
组合/时序逻辑电路
- 组合逻辑电路(Combinational Logic
Circuit),其任一时刻的稳态输出仅与该时刻输入的变量取值有关,而与该时刻之前输入的变量取值无关。组合电路主要由各种逻辑门(
半加器
、全加器
、半减器
、全减器
、数据选择器
、数据分配器
、编码器
、译码器
)组成,电路中没有记忆元件和反馈线。 - 时序逻辑电路(Sequential Logic
Circuit)任意时刻的稳态输出不仅取决于当前输入,还与前一时刻输入的状态有关,换而言之,时序逻辑电路必须拥有特定的储存元件来保存前一次的输入状态。因此,时序逻辑电路除包含有组合逻辑电路以外,还必须含拥有存储信息能力的电路(
触发器
、寄存器
、计数器
)。
GPIO
通用输入输出(General-purpose
input/output),功能类似于 8051 单片机的 P0 到 P3
口,引脚输出的高低电平可由开发人员读写相应寄存器进行控制。该接口有时也称为总线扩展器,当开发板接口不够用时,可以通过转接板将其扩展为I²C
、SPI
等其它串行接口。