JEI电子驱动与控制Electronics Drives and Control
Part2 电子Electronics(数字电路Digital Circuit)
2.1 逻辑电路(Logic Circuit)
2.1.1 逻辑门Logic Gates
2.1.2 逻辑电平Logic levels
正逻辑Positive logic判断:
H
i
g
h
=
1
(
L
o
g
i
c
1
=
T
r
u
e
)
L
o
w
=
0
(
L
o
g
i
c
0
=
F
a
l
s
e
)
High = 1(Logic 1 = True)\\ Low = 0 (Logic 0 = False)
High=1(Logic1=True)Low=0(Logic0=False)
补充:Circuit implementations(一般考不到)
- | TTL | CMOS |
---|---|---|
构成 | 双极晶体管 | 场效应管 |
工作范围 | <5V | 5-15V |
稳定性 | 抗干扰性弱 | 抗干扰性强 |
功耗 | 大 | 小 |
控制 | 电流控制器件 | 电压控制器件 |
- | High speed (fast switching speed); strong driving ability | High input impedance; Low power consumption |
-
可编程逻辑器件PLD(Programmable Logic Device):
通用集成电路,把一个数字系统集成在一片PLD上
-
现场可编程门阵列FPGA(Field Programmable Gate Arry):
高集成度,称为高密度PLD
2.1.3 CMOS 逻辑门 CMOS Logic gates
(阶段测试考点,期末一般不考)
2.2 组合逻辑电路(Combinational Logic Circuits)
参考:https://zhuanlan.zhihu.com/p/561267438
组合逻辑电路分析的主要步骤如下:
(1) 用逻辑图写表达式:可以从输入到输出逐级推导,写出电路输出端的逻辑表达式。
(2) 化简表达式:在需要时,用分式化简法或者卡诺图化简法将逻辑表达式化为最简式。
(3) 列真值表:将输入信号所有可能的取值组合代入化简后的逻辑表达式中进行计算,列出真值表。
(4) 描述逻辑功能:根据逻辑表达式和真值表,对电路进行分析,最后确定电路的功能。(FEEG2004课程一般要求为绘制逻辑电路图)
A,B 表示布尔变量(0 or 1)
num | fomular | note |
---|---|---|
1 | 1 + A = 1 | 变量和常量的逻辑加 |
2 | 0 + A = A | |
3 | 0 ⋅ \cdot ⋅ A = 0 | 变量和常量的逻辑乘 |
4 | 1 ⋅ \cdot ⋅ A = A | |
5 | A ⋅ \cdot ⋅ A’ = 0 | 变量和反变量的逻辑乘 |
6 | A + A’ =1 | 变量和反变量的逻辑加 |
7 | 1’ = 0 ; 0’ = 1 | 非运算 |
- | - | - |
8 | A ⋅ \cdot ⋅ B = B ⋅ \cdot ⋅ A | 交换律 |
9 | A + B = B + A | |
10 | A ⋅ \cdot ⋅ ( B ⋅ \cdot ⋅ C ) = ( A ⋅ \cdot ⋅ B ) ⋅ \cdot ⋅ C | 结合律 |
11 | A + ( B + C ) = ( A + B ) + C | |
12 | A ⋅ \cdot ⋅ ( B + C ) = A ⋅ \cdot ⋅ B + A ⋅ \cdot ⋅ C | 分配律 |
13 | A + B ⋅ \cdot ⋅ C = ( A + B ) ⋅ \cdot ⋅ ( A + C ) | |
14 | A ⋅ \cdot ⋅ A = A | 重叠律 |
15 | A + A = A | |
16 | A + A ⋅ \cdot ⋅ B = A | 吸收律 |
17 | A + A’ ⋅ \cdot ⋅ B = A + B | |
18 | A ⋅ \cdot ⋅ B + A ⋅ \cdot ⋅ B’ = A | |
19 | A ⋅ \cdot ⋅ ( A + B ) = A | |
20 | ( A ‘)’ = A | 非非律 |
21 | ( A ⋅ \cdot ⋅ B )’ = A’ + B’ | 反演律(德摩根定律DeMorgan’s Theorems) |
22 | ( A + B )’ = A’ ⋅ \cdot ⋅ B’ |
[21],[22]: 德·摩根定理揭示了利用非运算如何将或和非运算进行转化的方法。同时应该注意,不能随意改变非运算的在运算过程中的次序,因为 ( A B ) ′ ≠ A ′ B ′ (AB)' \neq A'B' (AB)′=A′B′, ( A + B ) ′ ≠ A ′ + B ′ (A+B)' \neq A' + B' (A+B)′=A′+B′
逻辑函数(表达式)构建:对逻辑函数进行标准化,将逻辑函数化成类似的形式。
- 最小项
在n变量逻辑函数中,乘积项m中包含所有的n个变量,且这n个变量均以原变量或反变量的形式出现一次,则为该逻辑函数的最小项。
例如由AB两个变量构成的逻辑函数的最小项有4个,由ABC三个变量构成的逻辑函数的最小项有8个。
由真值表到逻辑式的转换我们可以知道,所有的逻辑式都能写成若干最小项的和的形式。
将使最小项为1的变量取值看作二进制数,我们可以将二进制数转换为十进制数来对最小项进行编码。
最小项 | A | B | C | 对应的十进制数 | 编号 |
---|---|---|---|---|---|
A’ ⋅ \cdot ⋅B’ ⋅ \cdot ⋅C’ | 0 | 0 | 0 | 0 | m 0 m_0 m0 |
A’ ⋅ \cdot ⋅B’ ⋅ \cdot ⋅C | 0 | 0 | 1 | 1 | m 1 m_1 m1 |
A’ ⋅ \cdot ⋅B ⋅ \cdot ⋅C’ | 0 | 1 | 0 | 2 | m 2 m_2 m2 |
A’ ⋅ \cdot ⋅B ⋅ \cdot ⋅C | 0 | 1 | 1 | 3 | m 3 m_3 m3 |
A ⋅ \cdot ⋅B’ ⋅ \cdot ⋅C’ | 1 | 0 | 0 | 4 | m 4 m_4 m4 |
A ⋅ \cdot ⋅B’ ⋅ \cdot ⋅C | 1 | 0 | 1 | 5 | m 5 m_5 m5 |
A ⋅ \cdot ⋅B ⋅ \cdot ⋅C’ | 1 | 1 | 0 | 6 | m 6 m_6 m6 |
A ⋅ \cdot ⋅B ⋅ \cdot ⋅C | 1 | 1 | 1 | 7 | m 7 m_7 m7 |
- 最大项
与最小项的定义类似,只不过将乘积改成和,乘积项的和改成和的乘积,对应的二进制数为最大项取零的值。
最大项 | A | B | C | 对应的十进制数 | 编号 |
---|---|---|---|---|---|
A+B+C | 0 | 0 | 0 | 0 | M 0 M_0 M0 |
A+B+C’ | 0 | 0 | 1 | 1 | M 1 M_1 M1 |
A+B’+C | 0 | 1 | 0 | 2 | M 2 M_2 M2 |
A+B’+C’ | 0 | 1 | 1 | 3 | M 3 M_3 M3 |
A’+B+C | 1 | 0 | 0 | 4 | M 4 M_4 M4 |
A’+B+C’ | 1 | 0 | 1 | 5 | M 5 M_5 M5 |
A’+B’+C | 1 | 1 | 0 | 6 | M 6 M_6 M6 |
A’+B’+C’ | 1 | 1 | 1 | 7 | M 7 M_7 M7 |
若两个最小项仅有一个因子不同,如 A B C ABC ABC 和 A B C ′ ABC' ABC′ 仅第三个因子不同,则称这两个最小项具有相邻性。
若逻辑函数中的乘积项中缺少某个因子,可以用公式
A
⋅
B
+
A
′
⋅
C
+
B
⋅
C
=
A
⋅
B
+
A
′
⋅
C
A \cdot B + A' \cdot C + B \cdot C = A \cdot B +A' \cdot C
A⋅B+A′⋅C+B⋅C=A⋅B+A′⋅C 补项(也称为添加冗余项)。
如:
Y
=
A
B
C
+
B
′
C
=
A
B
C
+
(
A
+
A
′
)
B
′
C
=
A
B
C
+
A
B
′
C
+
A
′
B
′
C
Y = ABC + B'C = ABC + (A+A')B'C = ABC + AB'C + A'B'C
Y=ABC+B′C=ABC+(A+A′)B′C=ABC+AB′C+A′B′C
逻辑函数化简:使用公式进行化简即可,逻辑式中包含的乘积项最小,并且相乘的因子不能再减少时,则逻辑式被化简到了最简形式。
卡诺图化简法
为了更方便的找到相邻项、一种特定的列真值表的方法:
A\BC | 00 | 01 | 11 | 10 |
---|---|---|---|---|
0 | m 0 m_0 m0 | m 1 m_1 m1 | m 2 m_2 m2 | m 3 m_3 m3 |
1 | m 4 m_4 m4 | m 5 m_5 m5 | m 6 m_6 m6 | m 7 m_7 m7 |
顺序:00,01,11,10(保证相邻两项只有一个数字不同)
对于五变量的卡诺图,其对称性以及足够复杂,当变量超过五个时,很难在平面上表示出卡诺图的对称性,因此,对于变量个数超过五个时,无法用卡诺图进行化简。
填写真值表,并将相邻项合并
合并过程中注意找到不变的变量
另外只有存在2,4,8,16的矩形时才能合并,合并过程中项可重复使用(原因:
A
+
A
=
A
A+A=A
A+A=A)。
化简后根据逻辑函数绘制逻辑电路图
例:
2.3 时序逻辑电路 Sequential Logic Circuit
2.3.1 微处理器架构与内存Microprocessor Architecture and Memory
2.3.1.1 解码器Decoder
2.3.1.2 微处理器Microprocessor
2.3.1.3 内存 Memory
十进制数据单位
- Bit: 最小二进制数据单元
- Byte:8-bit单元 ( 1 b y t e = 8 b i t ) (1byte=8bit) (1byte=8bit)
- Nibbles:Byte可以被分为两个4-bit 单元,每个4-bit 单元被称为nibbles
- Words:1word = 2bytes
2.3.2 触发器 Flip-Flops
参考:
https://blog.csdn.net/weixin_43014010/article/details/124274854
时序逻辑电路的输出由当前输入the present inputs和上个状态the last states决定
触发器种类:
D-type; J-K type; S-R type
下图为状态转换对照,可以根据输出结果对输入端口状态进行反推,详细内容在2.3.2.2
2.3.2.1 状态转换表 State Transition Table
格雷码二进制编码顺序Gray coded binary sequence
相邻两个状态只有一位二进制码不同
2.3.2.2 RS触发器S-R type Flip-Flops
触发器的拥有记忆功能,即本时态的输出将作为下一时态的一个输入进行运算
这也是时序逻辑的基础
R
——
R
e
s
e
t
,
复位端、清零
R——Reset, 复位端、清零
R——Reset,复位端、清零
S
——
S
e
t
,置位端、置位
S——Set,置位端、置位
S——Set,置位端、置位
输入置位和清零信号,触发器将给出对应的动作
Q
——现在的状态
Q——现在的状态
Q——现在的状态
Q
ˉ
——下一个状态
\bar Q——下一个状态
Qˉ——下一个状态
逻辑表达式:
\text{逻辑表达式:}
逻辑表达式:
Q
=
S
⋅
Q
ˉ
‾
Q = \overline{S\cdot \bar Q}
Q=S⋅Qˉ
Q
ˉ
=
R
⋅
Q
‾
\bar Q = \overline {R \cdot Q}
Qˉ=R⋅Q
R有效,S无效时,
Q
ˉ
\bar Q
Qˉ输出0(复位动作)
R无效,S有效时,
Q
ˉ
\bar Q
Qˉ输出1(置位动作)
R、S均无效时,
Q
ˉ
\bar Q
Qˉ输出为
Q
Q
Q,即与前一时态不变(保持动作)
R、S均有效时,
Q
ˉ
\bar Q
Qˉ的输出不定,为不可知状态。
不可知的状态并不是电路没有输出了,只是无法根据输入来确认输出,也就是说输出可能是这样,也可能是那样,因此我们没有办法来利用这个状态。
https://www.elecfans.com/d/2041114.html(这个讲的很直观)
触发器电路有多种设计,具体输入输出取决于电路结构
(一个例子)
只要输入发生改变,输出就会有相应的变化
想要控制它什么时间工作,什么时间不工作。也就是引入一个控制信号。
控制不同的模块协同工作的脉冲信号就叫做时钟信号CLK。
通过与非门控制,当时钟为高电平,与非门退化成非门。而当时钟为低电平,与非门就不通了,达到了控制的作用。
(用与门其实也可以实现对输入端开关控制,如何选择逻辑门取决于具体设计情况)
2.3.2.3 D触发器 D-type Flip-Flops
因为RS触发器存在一种输入在输出的时候无法确认状态(不可知状态),因此在使用的时候我们需要想办法避免这种输入的发生。
我们在输入的R和S之间加入一个非门,使得RS永远不会相等,这样就变成了一个最简的D寄存器,D寄存器的D代表Data,可以实现数据的输入。
但是这样做会使触发器失去保持动作(R、S均无效时,
Q
ˉ
\bar Q
Qˉ输出为
Q
Q
Q,即与前一时态不变)
于是加入时钟信号CLK,CLK与D组成的电路作为控制R、S触发器输入的前置装置,将不可知状态移除,也保留了保持动作
本质上D触发器是RS触发器的修改版本
2.3.2.4 JK触发器 J-K type Flip-Flops
D触发器是从输入下手,杜绝了同时输入有效的情况。
而JK触发器则是更改了电路结构,通过引入反馈,使得同一时刻只有一个输入有效,而另一个输入无效。
也是对RS触发器的修改(所以说RS触发器是时序逻辑的基础)
看起来很复杂,不看直接用
根据状态转换表进行输入输出对照,J、K端口本质上还是对R、S端口的控制
2.4 数模转换 DAC\ADC
参考:https://zhuanlan.zhihu.com/p/31603935
CPU 识别 模拟量——Analogue-to-digital conversion(ADC)
CPU 控制 模拟量——Digital-to-analogue conversion(DAC)
CPU可以直接处理的是数字量(0/1)
2.4.1 DAC
2.4.1.1 二进制加权电阻型DAC Binary-weighted resistor method
使用一个反比的电阻器网络,其输出将全部输入到同一个求和电阻器。
数字码的每个二进制位将拥有相同的电压值,有效位更大,输出的电流也就更多。
I
0
: the least significant bit (LSB)最低有效位
I
n
(
如
I
3
)
: the most significant bit(MSB)最高有效位
I_0\text{ : the least significant bit (LSB)最低有效位}\\ I_n(如I_3)\text{: the most significant bit(MSB)最高有效位}
I0 : the least significant bit (LSB)最低有效位In(如I3): the most significant bit(MSB)最高有效位
V
o
u
t
=
−
I
f
R
f
=
−
(
I
3
+
I
2
+
I
1
+
I
0
)
R
f
=
−
(
V
2
0
R
D
3
+
V
2
1
R
D
2
+
V
2
2
R
D
1
+
V
2
3
R
D
0
)
R
f
=
−
V
R
f
2
3
R
(
2
3
D
3
+
2
2
D
2
+
2
1
D
1
+
2
0
D
0
)
=
−
V
R
f
2
3
R
(
2
3
D
3
+
2
2
D
2
+
2
1
D
1
+
2
0
D
0
)
\begin{aligned} V_{out} &= -I_fR_f\\ &=-(I_3+I_2+I_1+I_0)R_f\\ &=-(\frac{V}{2^0R}D_3+\frac{V}{2^1R}D_2+\frac{V}{2^2R}D_1+\frac{V}{2^3R}D_0)R_f\\ &=-\frac{VR_f}{2^3R}(2^3D_3+2^2D_2+2^1D_1+2^0D_0)\\ &=-\frac{VR_f}{2^3R}(2^3D_3+2^2D_2+2^1D_1+2^0D_0)\\ \end{aligned}
Vout=−IfRf=−(I3+I2+I1+I0)Rf=−(20RVD3+21RVD2+22RVD1+23RVD0)Rf=−23RVRf(23D3+22D2+21D1+20D0)=−23RVRf(23D3+22D2+21D1+20D0)
advantage | disadvantage |
---|---|
电路简单 | 高阻值差值 (能够相互配合的不同等级的电阻器,二进制加权方法要求容差非常小,而且需要几个不同值的电阻器);温度敏感(poor temperature stability);不适合集成电路 |
补充:串式 DAC
最简单,也是线性最小的架构,有时被称为“Kelvin 分频器”。
这种 DAC有一系列串联的等值电阻器,顶部有基准电压值,串联的前面有高阻抗的电阻器,并且每个节点都有专用于二进制码的开关,在设备读取该代码时关闭。这有助于模拟电压值的使用,而该值取决于二进制输入。
如图所示:代码 010 被选中,即十进制值 2。010 的开关处于关闭状态,使该节点的 DC 电压传输到求和放大器,则输出电压
V
o
u
t
V_{out}
Vout可以表示
2.4.2.2 R-2R 网络DAC R-2R resistor chain method
只使用两个电阻值,只要 2R 是 R 的两倍,这两个值就无关紧要。这使得 R-2R DAC 的可扩展性很大。
无论这种 DAC 是多少位,都只需要两个电阻值。
参考:https://www.bilibili.com/read/cv4873472/
未使用运放
R2R电阻网络DAC是单纯的电阻网络,不需要运放的辅助(但本质上还是串式DAC的变种,运放器不影响结果),一个n位的R2R电阻网络DAC需要n-1个R电阻和n+1个2R电阻
使用运放
- 对每个0V节点,阻值都为R
- 流入电路的电流大小为 i = V r e f / R i=V_{ref}/R i=Vref/R ,在每个节点处减半
i F = S 2 ⋅ i / 2 + S 1 ⋅ i / 4 + S 0 ⋅ i / 8 V o u t = − R F ⋅ i F ( R F = R ) = V r e f ( S 2 / 2 + S 1 / 4 + S 0 / 8 ) \begin{aligned} i_F &= S_2 \cdot i/2 + S_1 \cdot i/4 + S_0 \cdot i/8\\ \\ Vout &= -R_F \cdot i_F \ (R_F = R)\\ &= V_{ref} (S_2/2 + S_1/4 + S_0 /8)\\ \end{aligned} iFVout=S2⋅i/2+S1⋅i/4+S0⋅i/8=−RF⋅iF (RF=R)=Vref(S2/2+S1/4+S0/8)
2.4.2 ADC
2.4.2.1 渐变与比较(ADC原理)Ramp & Compare
分段上升(渐变),直到达到目标模拟量(比较)
- 计数器首先以加号清除
- V A V_A VA 与 V D A V_{DA} VDA 通过比较运放器 op-amp comparator 进行对比,当 V A > V D A V_A > V_{DA} VA>VDA时 输出逻辑1 (+5V指令)到 AND门,AND门输出作为时钟使能信号控制计时器工作
- 当 V A < V D A V_A < V_{DA} VA<VDA时 ,输出 逻辑0(+0V指令)到 AND门(停止输出时钟使能信号),停止计数器工作
- 计数器被“冻结 FROZEN ”,其值对应于表示未知输入电压(VA)的数字代码
缺点:转换时间是可变的 且 取决于输入电压(即每次转换的时长都可能不同)
2.4.2.2 Servo ADC
如果
V
i
n
>
V
D
A
C
V_{in} > V_{DAC}
Vin>VDAC,比较器的输出将是逻辑1 (+5V)和计数向上,反之亦然。
当
V
i
n
≈
V
D
A
C
V_{in} \approx V_{DAC}
Vin≈VDAC 时,计数器将随着每个时钟脉冲交替地向上和向下计数
缺点:如果Vin变化太快,计数器跟不上,伺服ADC就会出现“斜率过载 slope overload ”
(在输入信号变化快的区域,输入信号的变化速度超过反馈回路输出信号的最大变化速度时发生。)
2.4.2.3 逐次逼近寄存器SAR Successive Approximation
对模拟输入进行采样并保存,然后将其转换为数字信号并输出
低功耗 低延时 高精度
- 控制逻辑首先将MSB设置为逻辑1,此时有 V D A C = V m a x / 2 V_{DAC} = V_{max/2} VDAC=Vmax/2。(确定 V i n V_{in} Vin范围)
- 然后将 V D A C V_{DAC} VDAC 设定到 V m a x / 2 V_{max/2} Vmax/2 ,若 V i n > V D A C V_{in} > V_{DAC} Vin>VDAC 则该位设置为1,若 V i n < V D A C V_{in} < V_{DAC} Vin<VDAC 则设为0。
- 从MSB到MSB的每个连续位重复此过程。输出为 V i n V_{in} Vin 的模拟量。
一个直观的例子 :方块 = 45 个单位。第一次尝试将放上 32 个小方块,每个小方块为 1 个单位。该方块比所有小方块还要重,因此保留 32 个小方块。下一步是增加 16 个小方块,即 32 + 16 = 48,结果比方块要重,拿走这 16 个小方块。下一步是增加 8 个小方块,即 32 + 8 = 40,仍需增加小方块。可以再增加 4 个小方块,达到 44 个。之后再增加 2 个小方块,即 46 个单位,但这样会大于 45,因此拿走这 2 个小方块。最后增加 1 个小方块,天平达到平衡。每次增加的小方块的数量都是上一次的一半。这个图示展示了 SAR 中 DAC 提供数值的过程。
参考:https://zhuanlan.zhihu.com/p/31603935?utm_id=0
转换快 converts quickly 且 转换时长固定 fixed conversion time
2.4.2.4 双斜率积分ADC Dual Slope
参考:https://zhuanlan.zhihu.com/p/407355734
转换原理:基于对电压积分并将积分后电压与另一电压比较以控制计数,计数输出即为ADC输出。
积分对象要么是基于参考电压,要么是基于参考电压和输入电压。
主要用于传感器应用和诸如电压表和电流表等设备,在这些设备中,精度比速度更重要。换句话说积分型ADC采样速度比较低,但精度非常高。
积分型ADC有不同的种类,常见的有单、双斜率积分等。增加一个“斜率”,以牺牲转换时间为代价而增加精度。
advantage | disadvantage |
---|---|
分辨率高,位数可做到12位甚至更高 | 转换速度慢(N位ADC,输出可能需要长达2个N的时钟周期来转换单个采样点) |
线性度非常好(本质上,输入端与一个集成的参考电压相比较来决定输出端,所以线性度将取决于比较器的精度) | / |
电路相对简单且生产成本较低 | / |
维基百科似乎有很详细的原理介绍()