數位邏輯設計與實習
主講者:杜勇進
教材
數位邏輯設計,劉倫偉、高立圖書公司
數位邏輯設計、江眧皚譯、滄海圖書公司
數位邏輯設計、林銘波、全華圖書公司
Verilog FPGA晶片設計、林灶生、全華圖 書公司
課程大綱
Ch01數字系統與數碼系統
Ch02基本邏輯閘與布林代數
Ch03布林函數化簡
Ch04組合邏輯電路設計
Ch05序向邏輯電路
Ch06暫存器與計數器設計
Ch07 Verilog語法
Ch08實驗室實習
數位化
類比:大自然環境
連續變化。如:壓力、濕度、溫度、電壓、
電流
數位:電腦世界。不連續變化
數位化Î類比量轉成數位量
問題:如何表示?
本章重點:人類的資料在電腦中如何表示
123? -543? John ABC 台灣 ?
R(Radix,Base)進制
R>1
R=2進制:0,1
R=8進制:0,1,2,…6,7
R=10進制:0,1,2,……8,9
R=16進制: 0,1,2,……,9,A,B,C,D,E,F
R=...
b(R)進制
N a b a b ab a b a b a b a b ab
q q
q q
p p
i i p q
= + + + + + + + +
=
− −
− −
− −
− −
− −
−
∑
− 11
2 2
1 1
0 0
1 1
2 2 1
L L
各種進制的比較
十進制 二進制 八進制 十六進制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A (或 a)
11 1011 13 B (或 b)
12 1100 14 C (或 c)
13 1101 15 D (或 d)
14 1110 16 E (或 e)
15 1111 17 F (或 f)
16 10000 20 10
B(R)進制轉成10進制
2Î10進制
8Î10進制
16Î10進制
2->10進制(手算)
1101.01 (2) =? (10)
Ans:13.25
2->10進制
展開成2的冪次方11010101101 1 2 1 2 1 2 1 2 1 2 1 2 1 2 32 16 4 1 025 0125 003125
5340625
2
5 4 2 0 2 3 5
10
.
. . .
.
= × + × + × + × + × + × + ×
= + + + + + +
=
− − −
6->10進制(手算)
ex: 543 (6) =? (10)
Ans: 207 (10)
8->10進制
展開成8的冪次方
16->10進制(手算)
ex: AB.C (16) =? (10)
Ans:171.75 (10)
16->10進制
展開成16的冪次方
10進制轉成B(R) 進制
10->2進制
10->8進制
10->16進制
方法:整數連除R,小數連乘R
10->2進制(手算)
100.125(10)Î?(2)
Ans:1100100.001 (2)
10->2進制
整數連除2,小數連乘2
109.78125109 2 54 54 2 27 27 2 13 13 2 6
6 2 3 3 2 1 1 2 0
÷ =
÷ =
÷ =
÷ =
÷ =
÷ =
÷ =
LL LL LL LL LL LL LL
1 0 1 1 0 1
1 MSB
LSB 078125 2 156250
056250 2 11250 01250 2 0250
0250 2 0500 0500 2 1000
. .
. .
. .
. .
. .
× =
× =
× =
× =
× =
= +
= +
= +
= +
= +
1 056250 1 01250
0 0250 0 0500 1 0000
. . . . .
整數
10->8進制(手算)
ex: 245.5 (10) = ? (8)
Ans:365.4 (8)
10->8進制
整數連除8,小數連乘8
250.38250 8 31 31 8 3
3 8 0
÷ =
÷ =
÷ =
LL ↓
LL LL 2 7 3
餘數
038 8 304 004 8 032 032 8 256 056 8 4 48
. .
. .
. .
. .
× =
× =
× =
× =
= +
= +
= +
= +
3 004 0 032 2 056 4 048
. . . .
整數
10->16進制(手算)
ex: 167.0625 (10) =? (16)
Ans: A7.1
10->16進制
整數連除16,小數連 乘16
167.45167 16 10 10 16 0
÷ =
÷ =
LL LL
7
10 MSD LSD 整數部分 餘數
045 16 72 02 16 32 02 16 32
. .
. .
. .
× =
× =
× =
= +
= +
= + 7 02 3 02 3 02
. . . 小數部分 整數
167
10=A 7
16045 .
10= 073 .
1610->2進制(8421)
0 (10) =0000 (2)
1 (10) =0001 (2)
2 (10) =0010 (2)
3 (10) =0011 (2)
4 (10) =0100 (2)
5 (10) =0101 (2)
6 (10) =0110 (2)
7 (10) =0111 (2)
8 (10) =1000 (2)
9 (10) =1001 (2)10,2,8,16進制
十進制 二進制 八進制 十六進制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A (或 a)
11 1011 13 B (或 b)
12 1100 14 C (或 c)
13 1101 15 D (或 d)
14 1110 16 E (或 e)
15 1111 17 F (或 f)
16 10000 20 10
2,8,16進制互換
2Î8進制
小數點為準,每3 bit化成1數字 8Î2進制
每1數字轉成3 bits 2Î16進制
小數點為準,每4 bit化成1數字 16Î2進制
每1數字轉成4 bits2->8進制
110010101.0110 = 110 010 101.011 000 = 6 2 5.3
8->2進制
4 7 2
8= 1 0 0 1 1 1 0 1 0
25 43 1 . 8 = 101100011 001 . 2
2->16進制
{ { { { { { 0101 1101 10011011 0100 1110
5 D 9 . B 4 E
↓ ↓ ↓ ↓ ↓ ↓
.
16->2進制
} } } } } } 3 7 C . B 8 6
0111 1000 0110
0011 1100 1011
↓ ↓ ↓ ↓ ↓ ↓
.
8->16進制
方法:8->2->16進制
35 (8) =? (16)
Ans: 1D
16->8進制
方法:16->2->8進制
AB (16) =? (8)
Ans:253 (8)
R進制四則運算
四則運算:+ - × ÷
+ - ×:逢R進位
÷ 先化成10進制,再將結果化成R進制
R進制加法
101.1 (2) +011.1 (2)
AB (16) +CD (16)
123 (8) +456 (8)
Ans:1001.0 (2) 178 (16) 601 (8)
R進制減法
110 (2) -011 (2)
3FB (16) -1AE (16)
724 (8) -156 (8)
Ans:011 (2) 24D (16) 546 (8)
R進制乘法
101 (2) *011 (2)
2A5 (16) *34 (16)
45 (8) *23 (8)
Ans:1111 (2) 8984 (16) 1277 (8)
補數
R進制有兩種補數
R's補數
(R-1)'s補數R's補數
以R為底的任一正數N,整數部份長度n,小 數部份長度m,
其R's補數ÎRn-N if N≠0
543 (10) Î 457 (10)
123 (8) Î 655 (8)
1AF (16)Î E41 (16)
(R-1)'s補數
以R為底的任一正數N,整數部份長度n,小 數部份長度m,
其(R-1)'s補數ÎRn-R-m-N
543 (10) Î 456 (10)
123 (8) Î 654 (8)
1AF (16)Î E40 (16)
2補數與1補數
N=1011 (2)
2補數Î0101 (2)
1補數Î0100 (2) N=10000 (2)
2補數Î10000 (2)
1補數Î01111 (2)負數表示
符號大小表示法(sign magnitude)
1's補數表示法(1's complement)
2's補數表示法(2's complement)
符號大小表示法
最左邊位元當符號用:0:表示正數;1表示 負數
其餘位元表示大小
Ex n=8 bit (長度) 9 Î 0 000 1001 -9 Î 1 000 1001
n=3 bit (長度) 3 Î 0 11
-3 Î 1 11
1's補數表示法
若是負數則取1's補數
Ex n=8 bit (長度) 9 Î 0 000 1001 -9 Î 1 111 0110
n=3 bit (長度) 3 Î 0 11
-3 Î 1 00
2's補數表示法
若是負數則取2's補數
Ex n=8 bit (長度) 9 Î 0 000 1001 -9 Î 1 111 0111
n=3 bit (長度) 3 Î 0 11
-3 Î 1 01
N=4 bit 各種表示
十進制 帶號大小 1補數 2補數 十進制 帶號大小 1補數 2補數
+7 0111 0111 0111 -0 1000 1111 0000
+6 0110 0110 0110 -1 1001 1110 1111
+5 0101 0101 0101 -2 1010 1101 1110
+4 0100 0100 0100 -3 1011 1100 1101
+3 0011 0011 0011 -4 1100 1011 1100
+2 0010 0010 0010 -5 1101 1010 1011
+1 0001 0001 0001 -6 1110 1001 1010
+0 0000 0000 0000 -7 1111 1000 1001
-8 (不可能) (不可能) 1000
各種表示法的範圍
符號大小表示法(sign magnitude) - (2n-1 – 1 ) ~ (2n-1 – 1 )
1's補數表示法(1's complement) - (2n-1 – 1 ) ~ (2n-1 – 1 )
2's補數表示法(2's complement) - (2n-1 ) ~ (2n-1 - 1 )
N=4
符號大小表示法:-7 ~ 7 1's補數表示法: -7 ~ 7 2's補數表示法 : -8 ~ 7
各種表示法的範圍
N=8
符號大小表示法:-127 ~ 127 1's補數表示法: -127 ~ 127 2's補數表示法 : -128 ~ 127
N=16
符號大小表示法:-32767 ~ 32767
1's補數表示法: -32767 ~ 32767 2's補數表示法 : -32768 ~ 32767
2's補數表示法優點
可表示範圍較大(多1個)
零只有一種表示法
運算處理流程較簡單(減法只需加一次)
用加補數代替減法—1's
取1's補數相加
看結果
有進位:再加1
無進位:即為答案1's 範例1
45-33 (n=8 bit) 45=00101101
(2)33=00100001
(2)45-33=00101101 – 00100001 00101101
+ 11011110 (-33的1's補數表示)
=========
100001011
+ 1=========
00001100Î 12
1's 範例2
33-45 (n=8 bit)
45=00101101 (2) 33=00100001 (2)
33 - 45= 00100001 – 00101101 00100001
+ 11010010 (-45的1's補數表示)
=========
11110011 Î -12
1's 範例3
2-1 (以4bits表示)
0010 - 0001
1's 範例4
1-2 (以4bits表示)
0001 - 0010
用加補數代替減法—2's
取2's補數相加
看結果
有進位:捨棄,即為答案
無進位:即為答案2's 範例1
45-33 (n=8 bit)
45=00101101 (2) 33=00100001 (2)
45-33=00101101 – 00100001 00101101
+ 11011111 (-33的2's補數表示)
=========
100001100 Î 12
2's 範例2
33-45 (n=8 bit)
45=00101101 (2) 33=00100001 (2)
33 - 45= 00100001 – 00101101 00100001
+ 11010011 (-45的2's補數表示)
=========
11110100 Î -12
2's範例3
2-1 (以4bits表示)
0010 - 0001
2's範例4
1-2 (以4bits表示)
0001 - 0010
2's補數特別數
n=4(長度)
-1
-8
n=8 (長度)
-1
-128
溢位
溢位(overflow):超出所能表示範圍
ex: (0100)2 + (0100)2 =?
溢位判斷
方法:
有進入sign bit之進位,而沒有從sign bit出來 的進位
沒有進入sign bit之進位,而有從sign bit出來 的進位溢位判斷1
(0100)2 + (0101)2
溢位判斷2
(1000)2 + (1110)2
數碼系統
加權碼:每一bit有權重
BCD碼、84-2-1碼、2421碼、二五碼
非加權碼:每一bit沒有權重
超三碼(excess-3)、葛雷碼(Gray)、五取 二碼(2 out of 5)
加權碼
w w w w
4 3 2 1十進制數字 8 4 2 1 8 4 -2 -1 2 4 2 1 6 4 2 -3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 2 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 3 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 4 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 5 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 6 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 0 7 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 8 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 9 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
非加權碼
十進制數字 加三碼 循環碼 十進制數字 加三碼 循環碼
0 0011 0000 8 1011 1100 1 0100 0001 9 1100 1101 2 0101 0011 10 0100 0011 1111 3 0110 0010 11 0100 0100 1110 4 0111 0110 12 0100 0101 1010 5 1000 0111 13 0100 0110 1011 6 1001 0101 14 0100 0111 1001 7 1010 0100 15 0100 1000 1000
BCD碼
BCD(Binary Code Decimal)
0~9用4個bit表示
(28)
10Î (?)
BCD (123.4)
10Î(?)
BCD (10010100.1000)
BCDÎ(?)
10 (00111001)
BCDÎ(?)
10超三碼
38 (10) = (?)x'3
11001000.0101 (x'3) = (?)10
葛雷碼(Gray)
互斥或(Exclusive OR)
不一樣為1
一樣為0
0♁0=0
0♁1=1
1♁0=1
1♁1=0
二進制與葛雷碼互換
b 5 b 4 b 3 b 2 b 1 b 0 二進碼
g 5 g 4 g 3 g 2 g 1 g 0
格雷碼 (a)
所以對應的格雷碼為111011。
1 0 1 1 0 1
1 1 1 0 1 1
b 5 b 4 b 3 b 2 b 1 b 0 二進碼
g 5 g 4 g 3 g 2 g 1 g 0
格雷碼 (b)
所以對應的格雷碼為111110。
1 0 1 0 1 1
1 1 1 1 1 0
二進制Î葛雷碼(Gray)
方法:由右至左,兩兩互斥(不一樣為1,一 樣為0)
01010110 (2) Î? (gray)
葛雷碼(Gray) Î二進制
方法:由左至右,兩兩互斥
011111101 (gray)Î? (2)
ASCII
ASCII(American Standard Code for Information Interchange)
每一字(符號)用7 bits表示
0~31沒有字,通訊控制碼
‘A’ Î100 0001 (2)Î0x41Î65 (10)
‘a’ Î110 0001 (2)Î0x61Î97 (10)
‘0’Î011 0000(2)Î0x30Î48(10)
ASCII表
錯誤偵測Î同位元
奇同位:訊息與同位元"1"的總合為奇數
偶同位:訊息與同位元"1"的總合為偶數
ex: 採奇同位
1001□Î1
ex: 採偶同位
1001□Î0