电子技术基础
(数字部分)
2,逻辑代数与硬件描述语言基础
2.1 逻辑代数
2.2 逻辑函数的卡诺图化简法
2.3 硬件描述语言 Verilog HDL基础
(自学)
2.1 逻辑代数逻辑代数 又称布尔代数 。 它是分析和设计现代数字逻辑电路不可缺少的数学工具。逻辑代数有一系列的定律、定理和规则,用于对数学表达式进行处理,以完成对逻辑电路的化简、变换、分析和设计。
逻辑关系指的是事件产生的条件和结果之间的因果关系。在数字电路中往往是将事情的条件作为输入信号,而结果用输出信号表示。条件和结果的两种对立状态分别用逻辑,1” 和,0”表示。
逻辑函数及其相等概念
( 1)逻辑表达式,由逻辑变量和与、或、非 3种运算符连接起来所构成的式子。在逻辑表达式中,等式右边的字母
A,B,C,D等称为 输入逻辑变量,等式左边的字母 Y称为输出逻辑变量,字母上面没有非运算符的叫做 原变量,有非运算符的叫做 反变量 。
( 2) 逻辑函数,如果对应于输入逻辑变量 A,B、
C,… 的每一组确定值,输出逻辑变量 Y就有唯一确定的值,
则称 Y是 A,B,C,… 的逻辑函数 。 记为
),,,(?CBAfY?
注意,与普通代数不同的是,在逻辑代数中,不管是变量还是函数,其取值都只能是 0或 1,并且这里的 0和 1只表示两种不同的状态,没有数量的含义。
( 3) 逻辑函数 相等 的概念:设有两个逻辑函数
),,,( ),,,( 21 CBAgYCBAfY
它们的变量都是 A,B,C,…,如果对应于变量 A,B、
C,… 的任何一组变量取值,Y1和 Y2的值都相同,则称 Y1和 Y2
是相等的,记为 Y1=Y2。
若两个逻辑函数相等,则它们的真值表一定相同 ;反之亦然。因此,要证明两个逻辑函数是否相等,只要分别列出它们的真值表,看看它们的真值表是否相同即可。
A B AB AB A B A + B
0 0
0 1
1 0
1 1
0
0
0
1
1
1
1
0
1 1
1 0
0 1
0 0
1
1
1
0
BAAB
证明等式:
1,基本公式交换律,A + B = B + A A · B = B ·A
结合律,A + B + C = (A + B) + C A · B · C = (A · B) · C
分配律,A + BC = ( A + B )( A + C )A ( B + C ) = AB + AC
A · 1 = A A · 0 = 0A + 0 = A A + 1 = 10,1律:
A · A = 0A + A = 1互补律:
2.1.1 逻辑代数的基本定律和恒等式重叠律,A + A = A A · A = A
反演律,AB = A + BA + B = A · B
A A B A B= ( ) ( )A B A C A BC=
ABAA = A A B A( ) =吸收律其它常用恒等式
AB+ AC+ BC= AB + AC
AB+ AC+ BCD= AB + AC
2,基本公式的证明例 证明 A B A B A B A B,
列出等式、右边的函数值的真值表
(真值表证明法 )
01·1 = 001+1=00 01 1
11·0 = 101+0=00 11 0
10·1 = 100+1=01 00 1
10·0 = 110+0=11 10 0
A+BA+BA BA B ABAB?
2.1.2 逻辑代数的基本规则
1.代入规则,在包含变量 A逻辑等式中,如果用另一个函数式代入式中所有 A的位置,则等式仍然成立。这一规则称为代入规则。
例,B (A + C) = BA+BC,
用 A + D代替 A,得
B [(A +D) +C ] = B(A +D) + BC = BA + BD + BC
代入规则可以扩展所有基本公式或定律的应用范围对于任意一个逻辑表达式 L,若将其中所有的与(? )换成或
( +),或( +)换成与(?);原变量换为反变量,反变量换为原变量;将 1换成 0,0换成 1;则得到的结果就是原函数的反函数。
2,反演规则:
))((1)( DCBADCB)(AL
0 CDBAL例 2.1.1 试求 的非函数解:按照反演规则,得运用反演规则时必须注意两点,
(1)保持原来的运算优先顺序,即如果在原函数表达式中,AB之间先运算,再和其他变量进行运算,那么非函数的表达式中,仍然是 AB之间先运算 。
(2)对于反变量以外的非号应保留不变 。
EDCBAY EDCBAY
EDCBAY ))(( EDCBAY
L AB A C
对于任何逻辑函数式,若将其中的与(? )换成或( +),或( +)
换成与(?);并将 1换成 0,0换成 1;那么,所得的新的函数式就是 L的对偶式,记作 。 L?
( ) ( )L A B A C例,逻辑函数 的对偶式为
3,对偶规则:
当某个逻辑恒等式成立时,则该恒等式两侧的对偶式也相等。
这就是对偶规则。利用对偶规则,可从已知公式中得到更多的运算公式,例如,吸收律对偶规则 的意义在于,如果两个函数相等,则它们的对偶函数也相等 。 利用对偶规则,可以使要证明及要记忆的公式数目减少一半 。 例如:
注意,在运用对偶规则时,必须按照逻辑运算的优先顺序进行,先算括号,接着与运算,然后或运算,最后非运算,否则容易出错。
ACABCBA )( ))(( CABABCA
ABABA ABABA )()(
“或 -与”表达式
“与非 -与非”表达式
“与 -或 -非,表达式
“或非-或非,表达式
“与 -或,表达式
2.1.3 逻辑函数的代数法化简
DCACL
DC A C =?
)DC)(CA(
)C + D()CA(
DCCA
1、逻辑函数的最简与 -或表达式在若干个逻辑关系相同的与 -或表达式中,将其中包含的与项数最少,且每个与项中变量数最少的表达式称为最简与 -或表达式。
对应同或函数唯一的真值表,可以列举出多种不同形式的逻辑表达式和三个逻辑电路,事实上还可以列举许多。
由此可以得出结论,一个特定的逻辑问题,
对应的真值表是唯一的,但实现它的电路多种多样。 这给设计电路带来了方便,当我们手头缺少某种逻辑门的器件时,可以通过函数表达式的变换,避免使用这种器件而改用其他器件。这种情形在实际工作中常会遇到。
相互转换方法
( 1 ) ′ú′′·¨
ò ó? ê?óò ê?
ó? ·? ó? ·? êò ·ò ·? ê?
óò ·? ê?
áááááó〃á
áááááó〃á
áááááó〃á±ááá
ááááááá¤〃ááá
áááááá〃ááá
áááááó〃á±ááá
ááááááá¤〃ááá
2、逻辑函数的化简方法化简的主要方法:
1.公式法(代数法)
2.图解法(卡诺图法)
代数化简法:
运用逻辑代数的基本定律和恒等式进行化简的方法。
1AA并项法,
CBA CBAL BA)CC(BA
1 AA
ABBA
吸收法,A + AB = A
消去法,BABAA
CABAB CAB
配项法,
CA= A B?
BAFEB C DABAL )(
CBAAB )( CBCAABL
A+AB=A+B
CBCAABL CBAACAAB )(
CBACABCA= AB
)()( BCACACABAB
例,化简解:
)( GFA D EBDDBBCCBCAABL
)( GFA D EBDDBBCCBCAABL
)()( GFA D EBDDBBCCBCBA
)( GFA D EBDDBBCCBCBA
BDDBBCCBA
)()( CCBDDBBCDDCBA
CBDBCDDBBCDCBCDBA
)()()( CBDBCBCDDCBDBCDBA
CBDCDBA
例,化简函数
))()()()(( GEAGCECGADBDBY
解,①先求出 Y的对偶函数 Y',并对其进行化简。
GCCEDB
AEGGCCED A GBDBY


② 求 Y' 的对偶函数,便得Y的最简或与表达式。
))()(( GCECDBY
)CC(DBADBA)DD(ABL
DBADBA= A B
)( DDBAAB
BAAB
BAAB
BAAB
CDBADCBAABDDBADABL
)
例 2.1.7 已知逻辑函数表达式为

要求:( 1)最简的与 -或逻辑函数表达式,并画出相应的逻辑图;
( 2)仅用与非门画出最简表达式的逻辑图。
解:
)
)
B
A
L
AB
BA?
&
&
&
&
&
CBACBA
CBACBA
CBACBA
B
L
CBA ≥ 1
≥ 1

1
A
C
CBA
≥ 1
≥ 1
≥ 1
CBACBAL例 2.1.8 试对逻辑函数表达式进行变换,仅用或非门画出该表达式的逻辑图。
解:
CBACBAL
n个变量 X1,X2,…,Xn的最小项是 n个因子的乘积,每个变量都以它的原变量或非变量的形式在乘积项中出现,且仅出现一次。 一般 n个变量的最小项应有 2n个。
BA ACBA、,A(B+C)等则不是最小项。
例如,A,B,C三个逻辑变量的最小项有( 23=) 8个,即
CBA CBA CBA BCA CBA CBA CAB ABC、,、,,,,
1,最小项的意义
2.2,1 最小项的定义及其性质
2、最小项的性质:
3 变量全部最小项的真值表
A B C m
0
m
1
m
2
m
3
m
4
m
5
m
6
m
7
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
① 任意一个最小项,只有一组变量取值使其值为 1。
③ 全部最小项的和必为 1。
ABC ABC
② 任意两个不同的最小项的乘积必为 0。
3,最小项的编号三个变量的所有最小项的真值表
m0 m1 m2 m3 m4 m5 m6 m7
最小项的表示:通常用 mi表示最小项,m表示最小项,下标 i为最小项号。
A B C
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
1 0 0 0 0 0 0 1 0 0 0
0 1 1 0 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
CBA BCA CBACBA CBA CAB ABCCBA
2.2.2 逻辑函数的最小项表达式
(,,) ( ) ( )L A B C A B C C A B B C
为,与或,逻辑表达式;
在,与或,式中的每个乘积项都是最小项。
例 1 将 (,,)L A B C A B A C化成最小项表达式
A B C A B C A B C A B C
= m7+ m6+ m3+ m5
( 7,6 3 5 )m,,
()L A B C A B C A BC A B C A B C
逻辑函数的最小项表达式:
(,,) ( )L A B C A B A B C A B例 2 将化成最小项表达式
a.去掉非号 ( ) ( )L A,B,C A B A B C A B
()A B A B C A B
( ) ( )A B A B C A B
b.去括号 A B C AB C A B
()A B C A B C A B C C
A B C A B C A B C A B C
3 5 7 6 ( 3,5,6,7 )m m m m m
2.2.3 用卡诺图表示逻辑函数
1,卡诺图的引出卡诺图:将 n变量的全部最小项都用小方块表示,
并使具有逻辑相邻的最小项在几何位置上也相邻地排列起来,这样,所得到的图形叫 n变量的卡诺图。
1变量卡诺图:
一个变量的逻辑函数有两个最小项 。
),(,10 DmDmDD
m1m0
DL D
10
DL D
10
DL
2变量卡诺图:
设变量为 C,D,则 2变量逻辑函数的最小项为 22=4项 。
),,,(
,,,
3210 CDmDCmDCmDCm
CDDCDCDC

10
CL
23
D
10
DL,折叠展开,的法则,
1.新增加的方格按展开方向应标以新变量 。
2.新的方格内最小项编号应为 展开 前对 应方 格编 号加
2n-1。
3.新展开的变量作为高位
10
BL
23
C
54 67A
3变量卡诺图:
3变量逻辑函数 L(A,B,C)应有 8个最小项
A
BC
0 1
00
01
10
11
0
1
3
2
4
5
7
6
A
B
C
先横向展开,后纵向展开 先纵向展开

后横向展开
4变量卡诺图:
D
10
CL
23
54 67
B
12 14
98 1011
A
13 15
10146210
11157311
9135101
8124000
10110100ABCD
D
C
A
B
),,,( DCBAL
4变量卡诺图:
D
10
CL
23
54 67
B
12 14
98 1011
A
13 15
D
CL
B
A
DCAB
DCBA
DCBA
DABC
DCBA
DCBA CDBA DCBA
DCAB
CDBA DCBADCBA
DCBA DBCABCDA
ABCD
),,,( DCBAL
2.2.4 逻辑函数的 卡诺 图形化简法
1、卡诺图的构成逻辑函数的图形化简法是将逻辑函数用卡诺图来表示,利用卡诺图来化简逻辑函数。
实质:将逻辑函数真值表中的最小项重新排列成矩阵形式,并且使 矩阵的横方向和纵方向的逻辑变量的取值按照格雷码的顺序排列,这样构成的图形就是卡诺图。
卡诺图的 特点 是任意两个相邻的最小项在图中也是相邻的。
A
B 0 1
0 m 0 m 2
1 m 1 m 3
A B
C 00 01 11 10
0 m 0 m 2 m 6 m 4
1 m 1 m 3 m 7 m 5
2 变量卡诺图 3 变量卡诺图每个 2
变量的最小项有两个最小项与它相邻每个 3
变量的最小项有 3个最小项与它相邻相邻项,是指两个最小项只有一个因子互为反变量,其余因子均相同,又称为逻辑相邻项 。
CDDCDCDC,;,
A B
CD 00 01 11 10
00
m
0
m
4
m
12
m
8
01
m
1
m
5
m
13
m
9
11
m
3
m
7
m
15
m
1 1
10 m
2
m
6 m 14 m 1 0
4 变量卡诺图每个 4变量的最小项有 4个最小项与它相邻最左列的最小项与最右列的相应最小项也是相邻的最上面一行的最小项与最下面一行的相应最小项也是相邻的两个相邻最小项可以合并消去一个变量
BACCBACBACBA )(
DCADCBADCAB
逻辑函数化简的 实质 就是 相邻最小项的合并
2、逻辑函数在卡诺图中的表示
( 1)逻辑函数是以真值表或者以最小项表达式给出,在卡诺图上那些与给定逻辑函数的最小项相对应的方格内填入 1,其余的方格内填入 0。
AB
CD 00 01 11 10
00 0 1 0 0
01 1 0 0 0
11 1 1 1 1
10 0 1 1 0
)15,14,11,7,6,4,3,1(),,,( mDCBAY
m1
m3
m4
m7 m6
m11
m15 m14
( 2)逻辑函数以一般的逻辑表达式给出,先将函数变换为与或表达式(不必变换为最小项之和的形式),然后在卡诺图上与每一个乘积项所包含的那些最小项(该 乘积项就是这些最小项的公因子 )相对应的方格内填入 1,其余的方格内填入 0。
))(( CBDAY
CBDAY
A B
CD 00 01 11 10
00 1 1 0 0
01 0 0 0 0
11 1 0 0 1
10 1 1 0 1
变换为与或表达式
AD的公因子
BC的公因子
3、卡诺图的性质
A B
CD 00 01 11 10
00 0 1 0 0
01 0 0 0 1
11 0 0 0 1
10 0 1 0 0
( 1)任何两个( 21个)标 1的 相邻最小项,可以合并为一项,
并消去一个变量 (消去互为反变量的因子,保留 公因子 )。
A B
C 00 01 11 10
0 1 0 0 1
1 0 1 1 0
CBACBA?
A B CBCA?
DBCADCBA?
CDBADCBA?
CB?
BC?
DBA?
DBA?
A B
CD 00 01 11 10
00 0 1 0 0
01 1 1 1 1
11 0 1 1 0
10 0 1 0 0
( 2)任何 4个( 22个)标 1的相邻最小项,可以合并为一项,
并消去 2个变量。
A B
C 00 01 11 10
0 1 1 1 1
1 0 1 1 0C
CBAABBABA
CBACABCBACBA


)(
BBACCACACAABCCABBCACBA )(
BA
DC
AB
CD 00 01 11 10
00 1 0 0 1
01 0 1 1 0
11 0 1 1 0
10 1 0 0 1
A B
CD 00 01 11 10
00 0 1 1 0
01 1 0 0 1
11 1 0 0 1
10 0 1 1 0
B D
BD
BD BD
AB
CD 00 01 11 10
00 0 0 0 0
01 1 1 1 1
11 1 1 1 1
10 0 0 0 0 A B
CD 00 01 11 10
00 1 0 0 1
01 1 0 0 1
11 1 0 0 1
10 1 0 0 1
( 3)任何 8个( 23个)标 1的相邻最小项,可以合并为一项,并消去 3个变量。


小结,相邻最小项的数目必须为 2i个才能合并为一项,并消去 i个变量。包含的最小项数目越多,即由这些最小项所形成的圈越大,消去的变量也就越多,
从而所得到的逻辑表达式就越简单。
4、卡诺图形法化简的基本步骤
)15,13,12,11,8,7,5,3(),,,( mDCBAY
A B
CD 00 01 11 10
00 0 0 1 1
01 0 1 1 0
11 1 1 1 1
10 0 0 0 0
逻辑表达式或真值表卡诺图
1
1
A B
CD 00 01 11 10
00 0 0 1 1
01 0 1 1 0
11 1 1 1 1
10 0 0 0 0
DCACDBDDCBAY ),,,(
BD
CD
ACD
冗余项
2
画圈,合并最小项
① 圈越大越好,
但每个圈中标1
的方格数目必须为 个。 ② 同一个方格可同时画在几个圈内,但每个圈都要有新的方格,否则它就是多余的。 ③
不能漏掉任何一个标1的方格。
i2
最简与或表达式
2
3
3
将代表每个圈的乘积项相加
A B
CD 00 01 11 10
A B
CD 00 01 11 10
00 1 1 0 1 00 1 1 0 1
01 0 1 1 1 01 0 1 1 1
11 0 0 1 1 11 0 0 1 1
10 0 0 0 0 10 0 0 0 0
两点说明:
① 在有些情况下,最小项的圈法不只一种,得到的各个乘积项组成的与或表达式各不相同,哪个是最简的,要经过比较、检查才能确定。
不是最简
BCD
最简
+ADACD+ BCD +ABC +AD+ABC
A B
CD 00 01 11 10
A B
CD 00 01 11 10
00 1 1 0 0 00 1 1 0 0
01 1 1 1 0 01 1 1 1 0
11 0 0 1 0 11 0 0 1 0
10 1 0 1 0 10 1 0 1 0
② 在有些情况下,不同圈法得到的与或表达式都是最简形式。即 一个函数的最简与或表达式不是唯一的。
AC+ABD+ABC+ABDAC + ABD +ABC +BCD
利用卡诺图表示逻辑函数式时,如果卡诺图中各小方格被 1占去了大部分,
虽然可用包围 1的方法进行化简,但由于要重复利用 1项,往往显得零乱而易出错。这时采用包围 0的方法化简更为简单。即求出非函数,再对求非,其结果相同,下面举例说明。
1
11
01
00
10110100CDAB
B
A
C
D
例,化简下列逻辑函数
)1513,115,30(),,,( mDCBAL
解,(1) 由 L画出卡诺图。
(2) 用包围 1的方法化简,得
DCBL
1 1 1 1
0 1 1 1
1 1 1 1
0 1 1 1
1
11
01
00
10110100CDAB
B
A
C
D
例,化简下列逻辑函数
)1513,115,30(),,,( mDCBAL
解,(1) 由 L画出卡诺图。
DCBL
1 1 1 1
0 1 1 1
1 1 1 1
0 1 1 1
1
11
01
00
10110100CDAB
B
A
C
D
例,化简下列逻辑函数
)1513,115,30(),,,( mDCBAL
解,(1) 由 L画出卡诺图。
1 1 1 1
0 1 1 1
1 1 1 1
0 1 1 1
(3) 用包围 0的方法化简,得
DCBL
DCBL

DCBL?
再求非,得两种方法结果相同。
DCBL
含无关项的逻辑函数及其化简
1、什么叫无关项:
在真值表内对应于变量的某些取值下,函数的值可以是任意的,
或者这些变量的取值根本不会出现,这些变量取值所对应的最小项称为无关项或任意项。
在含有无关项逻辑函数的卡诺图化简中,它的值可以取 0或取 1,
具体取什么值,可以根据使函数尽量得到简化而定。
例,要求设计一个逻辑电路,能够判断一位十进制数是奇数还是偶数,当十进制数为奇数时,电路输出为 1,当十进制数为偶数时,电路输出为 0。
1111
1110
1101
1100
1011
1010
11001
01000
10111
00110
10101
00100
10011
00010
10001
00000
LABC
D
解,
(1)列出真值表
(2)画出卡诺图
0 1 1 0
0 1 1 0
× × × ×
0 1 × ×
L C
D
A
B
(3) 卡诺图化简
D
DL?
变量互相排斥的逻辑函数的化简在一组变量中,如果 只要有一个变量取值为 1,则其它变量的值就一定为 0,具有这种制约关系的变量叫做互相排斥的变量。
变量互相排斥的逻辑函数也是一种含有无关项的逻辑函数。
A B
C 00 01 11 10
0 0 1 × 1
1 1 × × ×
Y
A
B
C
1
1
1
简化真值表
CBAY
总结,逻辑函数的表示方法
1,真值表真值表,是由变量的所有可能取值组合及其对应的函数值所构成的表格。
真值表列写方法,每一个变量均有 0,1两种取值,n个变量共有 2i种不同的取值,将这 2i种不同的取值按顺序(一般按二进制递增规律)排列起来,同时在相应位置上填入函数的值,便可得到逻辑函数的真值表。
A B C Y
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
0
0
1
0
0
1
1例如:当 A=B=1、或则 B=C=1
时,函数 Y=1;否则 Y=0。
2,逻辑表达式逻辑表达式:是由逻辑变量和与、或、非 3种运算符连接起来所构成的式子。
函数的标准与或表达式的列写方法:将函数的真值表中那些使函数值为
1的最小项相加,便得到函数的标准与或表达式。


)7,6,3(m
A B CCABBCAY
3,卡诺图卡诺图:是由表示变量的所有可能取值组合的小方格所构成的图形。
逻辑函数卡诺图的填写方法:
在那些使函数值为 1的变量取值组合所对应的小方格内填入 1,其余的方格内填入 0,便得到该函数的卡诺图。
A B
C 00 01 11 10
0 0 0 1 0
1 0 1 1 0
4,逻辑图逻辑图:是由表示逻辑运算的逻辑符号所构成的图形。
Y=AB+BC
Y
&
≥ 1
&
A
B
B
C
AB
BC
5、波形 图波形图:是由输入变量的所有可能取值组合的高、低电平及其对应的输出函数值的高、
低电平所构成的图形。
Y=AB+BC









































小结
逻辑函数的化简有公式法和图形法等
公式法 是利用逻辑代数的 公式、定理和规则 来对逻辑函数化简,这种方法适用于各种复杂的逻辑函数,但需要熟练地运用公式和定理,且具有一定的运算技巧。
图形法 就是利用函数的卡诺图来对逻辑函数化简,这种方法简单直观,容易掌握,但变量太多时卡诺图太复杂,
图形法已不适用。
在对逻辑函数化简时,充分利用 随意项 可以得到十分简单的结果。
逻辑函数可用 真值表,逻辑表达式,卡诺图,逻辑图 和波形图 5种方式表示,它们各具特点,但本质相通,可以互相转换。
硬件描述语言 HDL(Hardware Description Languag )
类似于高级程序设计语言,它是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,复杂数字逻辑系统所的逻辑功能。 HDL是高层次自动化设计的起点和基础,
2.3 硬件描述语言 Verilog HDL基础
(自学 )
计算机对 HDL的处理,
逻辑综合 是指从 HDL描述的数字逻辑电路模型中导出电路基本元件列表以及元件之间的连接关系(常称为门级网表)的过程。类似对高级程序语言设计进行编译产生目标代码的过程,产生门级元件及其连接关系的数据库,根据这个数据库可以制作出集成电路或印刷电路板 PCB。
逻辑仿真 是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测,仿真器对 HDL描述进行解释,以文本形式或时序波形图形式给出电路的输出。在仿真期间如发现设计中存在错误,就再要对 HDL描述进行及时的修改。
2.3.1 Verilog语言的基本语法规则为对数字电路进行描述(常称为建模),Verilog语言规定了一套完整的语法结构。
1,间隔符,Verilog 的间隔符主要起分隔文本的作用,可以使文本错落有致,便于阅读与修改。
间隔符包括空格符( \b),TAB 键( \t)、换行符( \n)及换页符。
2,注释符,注释只是为了改善程序的可读性,在编译时不起作用。
多行注释符 (用于写多行注释 ),/* --- */;
单行注释符,以 //开始到行尾结束为注释文字。
为了表示数字逻辑电路的逻辑状态,Verilog语言规定了
4种基本的逻辑值。 0 逻辑 0、逻辑假
1 逻辑 1、逻辑真
x或 X 不确定的值(未知状态)
z或 Z 高阻态标识符,给对象(如模块名、电路的输入与输出端口、
变量等)取名所用的字符串。以英文字母或下划线开始如,clk,counter8,_net,bus_A。
关键词,是 Verilog语言本身规定的特殊字符串,用来定义语言的结构。例如,module,endmodule,input、
output,wire,reg,and等都是关键词。 关键词都是小写,关键词不能作为标识符使用 。
4,逻辑值集合
3,标识符和关键词
5,常量及其表示实数型常量十进制记数法 如,0.1,2.0,5.67
科学记数法 如,23_5.1e2,5E- 4
23510.0,0.0005
Verilog允许用参数定义语句定义一个标识符来代表一个常量,称为符号常量。定义的格式为:
parameter 参数名 1=常量表达式 1,参数名 2=常量表达式 2,…… ;
如 parameter BIT=1,BYTE=8,PI=3.14;
6,字符串,字符串是双撇号内的字符序列常量十进制数的形式的表示方法,表示有符号 常量例如,30、- 2
带基数的形式的表示方法,表示 常量格式为,<+ /- ><位宽 >’<基数符号 ><数值 >
整数型例如,3’b101,5’o37,8’he3,8’b1001_0011
2.3.2 变量的数据类型
1线网类型,是指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接,
例,wire L; //将上述电路的输出信号 L声明为网络型变量
wire [7:0] data bus; //声明一个 8-bit宽的网络型总线变量常用的网络类型由关键词 wire定义
wire型变量的定义格式如下:
wire [n-1:0] 变量名 1,变量名 2,…,变量名 n;
变量宽度例,网络型变量 L的值由与门的驱动信号
a和 b所决定,即 L= a&b。 a,b的值发生变化,线网 L的值会立即跟着变化。
&
b
a L
寄存器型变量对应的是具有状态保持作用的电等路元件,如触发器寄存器。寄存器型变量只能在 initial或 always内部被赋值。
2,寄存器型寄存器类型功能说明
reg 常用的寄存器型变量
integer 32位带符号的整数型变量
real 64位带符号的实数型变量,
time 64位无符号的时间变量
4种 寄存器类型的变量例,reg clock; //定义一个 1位寄存器变量
reg [3:0] counter; //定义一个 4位 寄存器变量抽象描述,
不对应具体硬件
2,每个模块先要进行端口的定义,并说明输入 ( input)和输出
( output),然后对模块功能进行描述。
2.3.3 Verilog程序的基本结构
Verilog使用大约 100个预定义的关键词定义该语言的结构
1,VerilogHDL程序由 模块构成。每个模块的内容都是嵌在关键词 module和 endmodule两个语句之间。每个模块实现特定的功能。
3、除了 endmodule语句外,每个语句后必须有分号。
4,可以用 /* --- */和 //….,对 VerilogHDL程序的任何部分做注释。
m od u l e 模块名(端口名 1,端口名 2,端口名 3,…);
端口类型说明 ( i n p u t,o u t o u t,i n o u t ) ;
参数定义 ( 可选 ) ;
数据类型定义 ( w i r e,r e g 等 ) ;
实例化低层模块和基本门级元件;
连续赋值语句( as s i gn ) ;
过程块结构 ( i n i t i al 和 al w ay s )
行为描述语句;
e n d m o d u l e
逻辑功能描述部分,其顺序是任 意的说明部分模块定义的一般语法结构如下:
端口类型说明电路结构描述模块名数据类型说明例 用结构描述方式建立门电路 Verloger模型 &
ou t?
s el
a
1
a1
U2
b
U4 & b1
U3
U1
s el n ot
//Gate-level description of simple circuit
module mux2to1(a,b,sel,out);
input a,b,sel; //定义输入信号
output out; //定义输出信号
wire selnot,a1,b1 ; //定义内部节点信号数据类型
//下面对电路的逻辑功能进行描述
not U1(selnot,sel);
and U2(a1,a,selnot);
and U3(b1,b,sel);
or U4(out,a1,b1);
endmodule
2.3.4 逻辑功能的仿真与测试逻辑电路的设计块完成后,就要测试这个设计块描述的逻辑功能是否正确。为此必须在输入端口加入测试信号,而从其输出端口检测其结果是否正确,这一过程常称为搭建测试平台。根据仿真软件的不同,搭建测试平台的方法也不同。
图 2.3.3 例 2.3.1的仿真输出波形