基本定律 | 或 “+” | 与 “·” | 非 “—” |
---|---|---|---|
0-1律 | A+0=A A+1=1 A+A=A A+ A  ̄ \overline{A} A=1(互补律) | A·0=0 A·1=A A·A=A A· A  ̄ \overline{A} A=0 | A  ̄  ̄ \overline{\overline{A}} A=A |
结合律 | (A+B)+C = A+(B+C) | (AB)C=A(BC)=ABC | |
交换律 | A+B = B+A | AB=BA | |
分配律 | A(B+C) = AB+AC | A+BC = (A+B)(A+C) | |
反演律(摩根定理) |
A
?
B
?
C
?
.
.
.
 ̄
\overline{A·B·C·...}
A?B?C?... =
A
 ̄
\overline{A}
A+
B
 ̄
\overline{B}
B+
C
 ̄
\overline{C}
C+… A ? B  ̄ \overline{A·B} A?B = A  ̄ \overline{A} A+ B  ̄ \overline{B} B |
A
+
B
+
C
+
.
.
.
 ̄
\overline{A+B+C+...}
A+B+C+...? =
A
 ̄
\overline{A}
A·
B
 ̄
\overline{B}
B·
C
 ̄
\overline{C}
C·… A + B  ̄ \overline{A+B} A+B? = A  ̄ \overline{A} A· B  ̄ \overline{B} B | |
吸收律 | A + A · B = A A · (A + B) = A A + A  ̄ \overline{A} A · B = A + B (A + B) · (A + C) = A + BC | ||
常用恒等式 | AB + A  ̄ \overline{A} AC + BC = AB + A  ̄ \overline{A} AC | AB+ A  ̄ \overline{A} AC+BCD = AB + A  ̄ \overline{A} AC |
原等式 L | 代入的函数 | 代入后 |
---|---|---|
B (A+C) = BA +BC | E+F | B( (E+F) +C) = B(E+F)+BC |
A B  ̄ \overline{AB} AB = A  ̄ \overline{A} A + B  ̄ \overline{B} B | L = CD | ( C D ) B  ̄ \overline{(CD)B} (CD)B? = C D  ̄ \overline{CD} CD + B  ̄ \overline{B} B = C  ̄ \overline{C} C+ D  ̄ \overline{D} D+ B  ̄ \overline{B} B |
原函数L | 非函数 L  ̄ \overline{L} L |
---|---|
L = A B  ̄ \overline{AB} AB + CD + 0 | L  ̄ \overline{L} L = (A+B)·( C  ̄ \overline{C} C+ D  ̄ \overline{D} D)· 1 = (A+B)·( C  ̄ \overline{C} C+ D  ̄ \overline{D} D) |
L = A + B C  ̄ + D + E  ̄  ̄  ̄ \overline{B\overline{C} + \overline{D + \overline{E}}} BC+D+E?? | L  ̄ \overline{L} L = A  ̄ \overline{A} A · ( B  ̄ + C ) + D  ̄ ? E  ̄  ̄ \overline{(\overline{B}+C) + \overline{\overline{D} · E}} (B+C)+D?E?) |
原函数L | 对偶式L’ |
---|---|
L = (A+ B  ̄ \overline{B} B )(A+C) | L’ = A B  ̄ \overline{B} B +AC |
吸收律 A+ A  ̄ \overline{A} AB = A+B | A·( A  ̄ \overline{A} A+B) = A·B |
化简逻辑函数,节省逻辑电路的器件。
与-或表达式 | 与非-与非 表达式 | 或 - 与 表达式 | 或非-或非表达式 | 与-或非表达式 |
---|---|---|---|---|
L = AC + C  ̄ \overline{C} CD | L = A C  ̄ ? C  ̄ D  ̄  ̄ \overline{\overline{AC} · \overline{\overline{C}D}} AC?CD | L = (A+ C  ̄ \overline{C} C)(C+D) | L = ( A + C  ̄ )  ̄ + ( C + D )  ̄  ̄ \overline{\overline{ (A+\overline{C}) }+\overline{( C + D )}} (A+C)?+(C+D)?? | L = A  ̄ C + C  ̄ ? D  ̄  ̄ \overline{ \overline{A}C + \overline{C}·\overline{D}} AC+C?D? |
L = AC +
C
 ̄
\overline{C}
CD
=
A
C
+
C
 ̄
D
 ̄
 ̄
\overline{\overline{ AC + \overline{C}D}}
AC+CD??
= 反演律
A
C
 ̄
?
C
 ̄
D
 ̄
 ̄
\overline{\overline{AC} · \overline{\overline{C}D}}
AC?CD
L = AC+
C
 ̄
\overline{C}
CD
= 吸收律 (AC + ACD) + 吸收律(
C
 ̄
\overline{C}
CD +
C
 ̄
\overline{C}
CDA)
= 交换结合律/常用恒等式 AC+
C
 ̄
\overline{C}
CD + AD· (C+
C
 ̄
\overline{C}
C)
= 0-1律 AC+
C
 ̄
\overline{C}
CD + AD· 1
= 0-1律 AC +
C
 ̄
\overline{C}
CD +AD +0
= 0-1律 AC +
C
 ̄
\overline{C}
CD +AD +
C
 ̄
\overline{C}
CC
=结合律 (A+
C
 ̄
\overline{C}
C) ( C + D )
L = AC +
C
 ̄
\overline{C}
CD = (A+
C
 ̄
\overline{C}
C) ( C + D )
=
(
A
+
C
 ̄
)
(
C
+
D
)
 ̄
 ̄
\overline{\overline{ (A+\overline{C}) ( C + D )}}
(A+C)(C+D)??
= 反演律
(
A
+
C
 ̄
)
 ̄
+
(
C
+
D
)
 ̄
 ̄
\overline{\overline{ (A+\overline{C}) }+\overline{( C + D )}}
(A+C)?+(C+D)??
= 反演律
A
 ̄
C
+
C
 ̄
?
D
 ̄
 ̄
\overline{ \overline{A}C + \overline{C}·\overline{D}}
AC+C?D?
代数法。运用逻辑代数的基本定律和恒等式对逻辑函数进行化简
代数法 - 并项法
利用 A+
A
 ̄
\overline{A}
A = 1。
L
1
=
A
B
C
+
A
B
C
 ̄
=
A
B
(
C
+
C
 ̄
)
=
A
B
L_1 = ABC + AB\overline{C} = AB(C+\overline{C}) = AB
L1?=ABC+ABC=AB(C+C)=AB
代数法 - 吸收法
利用A+AB=A。
L =
A
 ̄
\overline{A}
AB +
A
 ̄
\overline{A}
ABCDE+
A
 ̄
\overline{A}
ABCDF =
A
 ̄
\overline{A}
AB
代数法 - 消去法
利用A+
A
 ̄
\overline{A}
AB = A+B。
L = AB +
A
 ̄
\overline{A}
AC +
B
 ̄
\overline{B}
BC
= AB + (
A
 ̄
\overline{A}
A +
B
 ̄
\overline{B}
B)C
= AB +
A
B
 ̄
\overline{AB}
AB C
= AB + C
代数法 - 配项法(要有一定的经验,否则越配越繁)
利用A=A(B+
B
 ̄
\overline{B}
B)
L= AB+
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C + B ·
C
 ̄
\overline{C}
C
= AB +
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C + (A+
A
 ̄
\overline{A}
A·)B ·
C
 ̄
\overline{C}
C
= AB +
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C + AB
C
 ̄
\overline{C}
C +
A
 ̄
\overline{A}
AB
C
 ̄
\overline{C}
C
= (AB+AB
C
 ̄
\overline{C}
C ) + (
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C +
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C B)
= AB +
A
 ̄
\overline{A}
A·
C
 ̄
\overline{C}
C
利用卡诺图法,得到最简的逻辑表达式。
A | B | C | A  ̄ \overline{A} A· B  ̄ \overline{B} B· C  ̄ \overline{C} C | A  ̄ \overline{A} A· B  ̄ \overline{B} B·C | A  ̄ \overline{A} A·B· C  ̄ \overline{C} C | A  ̄ \overline{A} A·BC | A· B  ̄ \overline{B} B· C  ̄ \overline{C} C | A· B  ̄ \overline{B} B·C | AB· C  ̄ \overline{C} C | ABC |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
性质:
(1)输入变量取一组值,在所有的最小项中,只会有一组最小项值为1。
(2)不同的最小项,使它值为1的输入变量的取值 是不同的。
(3)输入变量取一组值,任意两个最小项的乘积为0。
(4)输入变量取一组值,所有最小项之和为1。
最小项的编号:
(1)
m
0
m_0
m0? : (0 = 0b000)
A
 ̄
\overline{A}
A·
B
 ̄
\overline{B}
B·
C
 ̄
\overline{C}
C
(2)
m
1
m_1
m1? : (1 = 0b001)
A
 ̄
\overline{A}
A·
B
 ̄
\overline{B}
B·C
(3)
m
2
m_2
m2? : (2 = 0b010)
A
 ̄
\overline{A}
A·B·
C
 ̄
\overline{C}
C
(4)
m
3
m_3
m3? : (3 = 0b011)
A
 ̄
\overline{A}
A·BC
(5)
m
4
m_4
m4? : (4 = 0b100)A·
B
 ̄
\overline{B}
B·
C
 ̄
\overline{C}
C
(6)
m
5
m_5
m5? : (5 = 0b101)A·
B
 ̄
\overline{B}
B·C
(7)
m
6
m_6
m6? : (6 = 0b110)AB·
C
 ̄
\overline{C}
C
(8)
m
7
m_7
m7? : (7 = 0b111)ABC
最小项表达式:逻辑函数L = 若干个最小项之和
L(A,B,C) = AB +
A
 ̄
\overline{A}
AC 不是最小项表达式
L(A,B,C) = AB +
A
 ̄
\overline{A}
AC = AB(C+
C
 ̄
\overline{C}
C) +
A
 ̄
\overline{A}
A(B+
B
 ̄
\overline{B}
B)C = ABC + AB
C
 ̄
\overline{C}
C +
A
 ̄
\overline{A}
ABC +
A
 ̄
\overline{A}
A·
B
 ̄
\overline{B}
BC
L(A,B,C) = m 7 m_7 m7? + m 6 m_6 m6? + m 3 m_3 m3? + m 1 m_1 m1? = ∑ m ( 1 , 3 , 6 , 7 ) \sum m(1,3,6,7) ∑m(1,3,6,7)
任意一个逻辑函数,经过变换,都能表示成 唯一的最小项表达式。
2
1
2^1
21=2 个最小项(
m
0
m_0
m0?=
D
 ̄
\overline{D}
D和
m
1
m_1
m1?=D)。
“折叠展开” 法则,如下图所示。
2
2
2^2
22=4 个最小项(
m
0
m_0
m0?=
C
 ̄
\overline{C}
C·
D
 ̄
\overline{D}
D和
m
1
m_1
m1?=
C
 ̄
\overline{C}
C·D和
m
2
m_2
m2?= C·
D
 ̄
\overline{D}
D和
m
3
m_3
m3?= C·D)。
“折叠展开” 法则,如下图所示。
卡诺图的特点:循环邻接
(1)各个小方格对应的各变量不同的组合。
(2)一个格子与上下左右相邻的格子只有一个因子的差异
(3)边界最上与最小,边界最左与最右,4个对角格子上下左右满足相邻(斜对角不相邻),一个因子的差异。
举例画卡诺图:
(1)L(A,B,C,D) =
∑
m
(
0
,
1
,
2
,
3
,
4
,
8
,
10
,
11
,
14
,
15
)
\sum m(0,1,2,3,4,8,10,11,14,15)
∑m(0,1,2,3,4,8,10,11,14,15) ,存在的最小项,在对应的卡诺图格子中填1,不存在的最小项,在格子中填0
(2)L(A,B,C,D) = (
A
 ̄
\overline{A}
A+
B
 ̄
\overline{B}
B+
C
 ̄
\overline{C}
C+
D
 ̄
\overline{D}
D) (
A
 ̄
\overline{A}
A+
B
 ̄
\overline{B}
B+C+
D
 ̄
\overline{D}
D) (
A
 ̄
\overline{A}
A+B+
C
 ̄
\overline{C}
C+D) (A+
B
 ̄
\overline{B}
B+
C
 ̄
\overline{C}
C+D) (A+B+C+D)
反演律(摩根定理)
L
 ̄
\overline{L}
L= ABCD + AB·
C
 ̄
\overline{C}
CD + A
B
 ̄
\overline{B}
B·C·
D
 ̄
\overline{D}
D +
A
 ̄
\overline{A}
A·BC·
D
 ̄
\overline{D}
D +
A
 ̄
\overline{A}
A·
B
 ̄
\overline{B}
B·
C
 ̄
\overline{C}
C·
D
 ̄
\overline{D}
D =
∑
m
(
15
,
13
,
10
,
6
,
0
)
\sum m(15,13,10,6,0)
∑m(15,13,10,6,0)
(1)根据“循环邻接”的特性(上下左右)。
(2)两个相邻的方格为1,他们的和将消去一个变量。如:(
m
15
=
1111
m_{15} =1111
m15?=1111)ABCD + (
m
14
=
1110
m_{14} = 1110
m14?=1110)ABC
D
 ̄
\overline{D}
D = ABC
(3)四个相邻的方格为1,他们的和将消去两个变量。如 (
m
2
=
0010
m_{2} =0010
m2?=0010)
A
 ̄
?
B
 ̄
?
C
?
D
 ̄
\overline{A}· \overline{B}· C· \overline{D}
A?B?C?D + (
m
3
=
0011
m_{3} =0011
m3?=0011)
A
 ̄
?
B
 ̄
?
C
?
D
\overline{A}· \overline{B}· C· D
A?B?C?D + (
m
6
=
0110
m_{6} =0110
m6?=0110)
A
 ̄
?
B
?
C
?
D
 ̄
\overline{A}· B· C· \overline{D}
A?B?C?D + (
m
7
=
0111
m_{7} =0111
m7?=0111)
A
 ̄
?
B
?
C
?
D
\overline{A}· B· C· D
A?B?C?D =
A
 ̄
?
C
\overline{A}· C
A?C
(1)将逻辑函数"L" 写成最小项表达式。
(2)填写卡诺图,存在的最小项在表格中填写1,其余方格填0。
(3)合并最小项。相邻的1方格 圈成一组(包围圈,虚线框)。每组包含
2
n
2^n
2n个方格。每个包围圈写成一个新的乘积项。可重复包围。
(4)将所有的包围圈对应的乘积项相加。
L (A,B,C,D) =
∑
m
(
0
,
2
,
5
,
7
,
8
,
10
,
13
,
15
)
\sum m(0,2,5,7,8,10,13,15)
∑m(0,2,5,7,8,10,13,15) = B·D+
B
 ̄
\overline{B}
B·
D
 ̄
\overline{D}
D
例如:真值表
m 0 ? 15 m_{0-15} m0?15? | A | B | C | D | L |
---|---|---|---|---|---|
m 0 m_{0} m0? | 0 | 0 | 0 | 0 | 1 |
m 1 m_{1} m1? | 0 | 0 | 0 | 1 | 0 |
m 2 m_{2} m2? | 0 | 0 | 1 | 0 | 0 |
m 3 m_{3} m3? | 0 | 0 | 1 | 1 | 0 |
m 4 m_{4} m4? | 0 | 1 | 0 | 0 | 1 |
m 5 m_{5} m5? | 0 | 1 | 0 | 1 | 1 |
m 6 m_{6} m6? | 0 | 1 | 1 | 0 | 0 |
m 7 m_{7} m7? | 0 | 1 | 1 | 1 | 0 |
m 8 m_{8} m8? | 1 | 0 | 0 | 0 | 1 |
m 9 m_{9} m9? | 1 | 0 | 0 | 1 | 0 |
m 10 m_{10} m10? | 1 | 0 | 1 | 0 | 1 |
m 11 m_{11} m11? | 1 | 0 | 1 | 1 | 0 |
m 12 m_{12} m12? | 1 | 1 | 0 | 0 | 1 |
m 13 m_{13} m13? | 1 | 1 | 0 | 1 | 0 |
m 14 m_{14} m14? | 1 | 1 | 1 | 0 | 0 |
m 15 m_{15} m15? | 1 | 1 | 1 | 1 | 1 |
卡诺图
逻辑函数
L =
C
 ̄
\overline{C}
C·
D
 ̄
\overline{D}
D + A
B
 ̄
\overline{B}
B·
D
 ̄
\overline{D}
D +
A
 ̄
\overline{A}
AB
C
 ̄
\overline{C}
C + ABCD
(1)在真值表内,对应于变量的某些取值下,函数L的值可以是任意的。或者这些变量的取值根本不会出现。这些变量取值所对应的最小项称为无关项或任意项。
(2)在卡诺图中,无关项的意义是,它的值X可以是0或者1。
对应十进制数 | 变量A | 变量B | 变量C | 变量D | 输出L (奇数1,偶数0) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
2 | 0 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 |
5 | 0 | 1 | 0 | 1 | 1 |
6 | 0 | 1 | 1 | 0 | 0 |
7 | 0 | 1 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 0 |
9 | 1 | 0 | 0 | 1 | 1 |
无关项 | 1 | 0 | 1 | 0 | X |
无关项 | 1 | 0 | 1 | 1 | X |
无关项 | 1 | 1 | 0 | 0 | X |
无关项 | 1 | 1 | 0 | 1 | X |
无关项 | 1 | 1 | 1 | 0 | X |
无关项 | 1 | 1 | 1 | 1 | X |
根据卡诺图,可以得出
L
=
D
L = D
L=D
包围圈 覆盖了 正负A,正负B,正负C,正D。
空格符 \b
Tab键 \t
换行符 \n
/* 注释1 */
//注释2
module
endmodule
input
output
wire
reg
and
等等
值 | 含义 |
---|---|
0 | 逻辑0,逻辑假 |
1 | 逻辑1,逻辑真 |
x 或 X | 不确定的值(未知状态) |
z 或 Z | 高阻态 |
<+/-> <位宽> ' <基数符号> <数值>
(1)<+/-> 正负号,当常量为正整数时,可以省略正号不写。
(2)<位宽> 二进制数的宽度
(3)<基数符号> 后面数值的表示形式。b或者B表示后面的数值是二进制数。d或者D表示后面的数值是十进制数。h或者H表示后面的数值是十六进制数。o或者O表示后面的数值是八进制数。
(4)可以在数字之间增加下划线,增加可读性。
3'b101
5'o37
8'he3
-4'd10
4'b1x0x
8'b1001_0011
0.01
2.0
4.56
23_5.1E2 = 23 510.0
3.6E2 = 360.0
5E-4 = 0.0005
parameter 参数名1 = 常数表达式 , 参数名2 = 常量表达式2 , ... ;
parameter BIT = 1 , BYTE = 8 , PI = 3.14;
parameter DELAY = (BYTE + BIT)/2;
"ab" = 16'h5758
wire a,b; //声明两个线网变量a和b (上图中的a和b), 默认是一位位宽
wrie L; //声明线网变量L ,默认是一位位宽
wire
wand
wor
tri
triand
trior
trireg
等等
线网类型变量被定义后,如果没有驱动元件驱动,则线网类型变量处于默认值,“高阻态”z。
线网trireg变量的默认值是x
线网类型的关键字是wire。默认是一位位宽。
wire[ n-1 : 0 ] 变量名1,变量名2,变量名3, ... ,变量名m ;
wire [7:0] databus;//声明定义一个 8位宽的 变量databus。(总线)
wire[32:1] busA,busB,busC;//3个位宽为32的线网变量(总线)
寄存器类型 | 功能说明 |
---|---|
reg | 用于行为描述中对寄存器型变量的说明(默认位宽为1) |
integer | 32位带符号的整数型变量 |
real | 64位带符号的实数型变量,默认为0 |
time | 64位无符号的时间型变量 |
reg[ n-1 :0 ] 变量名1, 变量名2, 变量名3, ... ,变量名n;
reg clock;//定义1位寄存器变量
reg[3:0] counter;//定义4位寄存器变量
integer counter;//定义一个整型变量
initial
counter = -1;//将-1以补码的形式存储在counter中
real delta;
initial
begin
delta = 4e10;//给delta赋值
delta = 2.13;
end
integer i;//定义一个整型变量i;
initial
i = delta;//i 得到的值是2(只将实数2.13的整数部分赋值给i)
time current_time;//定义一个时间类型的变量
initial
current_time = $time;//保存当前的仿真时间到变量current_time中。
module 模块名(端口名1,端口名2,端口名3,...)
端口类型说明(input,output,inout)
参数定义(可选)
数据类型定义(wire,reg等)
实例化低层模块和基本门级元件;
连续赋值语句(assign);
过程块结构(initial和always)
行为描述语句;
endmodule
//简单电路的门级描述
module mux2tol(a,b,sel,out)
input a,b,sel;//定义输入信号
output out;//定义输出信号
wrie selnot,a1,b1;//定义内部节点信号数据类型
//下面对电路的逻辑功能进行描述
not U1(selnot,sel);
and U2(a1,a,selnot);
and U3(b1,b,sel);
or U4(out,a1,b1); //得到out输出信号
endmodule