Chương 3 - ĐẠI SỐ BOOLE VÀ CỔNG LOGIC.
3.1 Đại số Boole
3.1.1 Đònh nghóa.
3.1.2 Các phép toán cơ bản.
3.1.3 Các công thức đònh lí.
3.2 Các dạng hàm Boole
3.2.1 Bảng chân lí (bảng sự thật)
3.2.2 Biểu thức hàm số
3.2.3 Bìa Karnaugh
3.2.4 Sơ đồ mạch logic
3.3 Các dạng chuẩn của hàm Boole
3.3.1 Dạng chuẩn 1 (tổng các Minterm - tích chuẩn)
3.3.2 Dạng chuẩn 2 (tích các Maxterm – tổng chuẩn)
3.4 Các cổng logic
3.4.1 Mạch điện cổng
3.4.2 Các cổng logic thông thường
3.4.3 Các cổng logic đặc biệt
3.5 Đơn giản hóa hàm Boole bằng phương pháp bìa Karnaugh
3.6 Đưa hàm Boole về dạng toàn NAND và toàn NOR
3.6.1 Toàn NAND
3.6.2 Toàn NOR
3.1 - Đại số Boole.
3.1.1 - Đònh nghóa.
Đại số Boole.
• Mô tả quan hệ đầu ra với đầu vào của mạch logic dưới dạng phương trình đại số (biểu diễn hoạt
động của mạch điện dưới dạng biểu thức hàm số Boole).
• Công cụ toán học phân tích và thiết kế và ứng dụng các hệ thống KTS.
• Công cụ mô tả và phân tích mạch logic cơ bản - cồng logic, và các mạch tổ hợp cổng logic.
Phép tính toán số học arithmetic.
Trong kỹ thuật số, những con số chủ yếu được biểu diễn như số nguyên integers.
mọi vi mạch số đều chỉ có thể làm việc với số nguyên.
các vi mạch microprocessor được trang bò phần cứng chuyên dụng để làm việc với những con số có dấu
phảy trôi floating point hay những con số có bậc số mũ.
người lập trình phải viết những thủ tục routines làm công cụ cho những tính toán với chữ số có dấu phẩy
trôi, từ những lệnh hoàn toàn dựa trên cơ sở bản chất số nguyên.
Các tác vụ dấu phẩy trôi đòi hỏi đặc biệt nhiều thời gian và không gian lưu trữ hơn so với những tác vụ
với số nguyên.
Một số nguyên được biểu diễn bởi giá trò số nhò phân có thể diễn dòch bằng một vài cách thông dụng.
Ví dụ: một byte 8-bit, có thể coi như một số nguyên không dấu trong phạm vi [0,255], hay một số nguyên
có dấu trong phạm vi [-128, 127]. Các đại lượng 16-bit cũng có thể coi là số có dấu hay không có dấu như
vậy.
Cách biểu diễn không dấu, mà trong đó hiển nhiên mỗi bit của một byte tương ứng với cấp số của 2ø.
∑
=
=
n
i
i
i
aZ
0
2
.
Ví dụ:
B
)00001011(
=
D
)222(
013
++
=
D
)11(
(số thập phân).
Các số âm được biểu diễn dưới dạng số bù 2.
Giả thiết muốn tạo một byte chưá số bù 2, VD: -5.
Trước tiên, lấy biểu diễn 8-bit của 5, đó là 00000101, rồi bù 1 nó, được 11111010.
(Tác vụ bù 1 thay thế mọi bit ‘0’ thành ‘1’, và mỗi bit ‘1’ thành ‘0’ để có được 11111010).
Tiếp theo, tạo số bù 2 bằng cách cộng số bù 1 với 1, tức là:
11111010 + 00000001 = 11111011
Vậy, số âm -5 được biểu diễn dưới dạng nhò phân số bù 2 là:
DD
)11111011()5( =−
Cách biểu diễn này có thuộc tính số học đúng như sau: nếu ta cộng số -5 với số +5 thì chắc rằng sẽ được
0:
11111011 + 00000101 = 00000000.
(Tác vụ này đặt bit số mang carry bit, bit C, vào thanh ghi mã điều kiện).
Giá trò lưu trong ô nhớ là một chuỗi ký số ‘0’ và ‘1’. (Liệu số 11111011 có được diễn dòch là -5 hay +251,
là việc người lập trình phải xem xét).
Những lệnh khác được dùng để chọn cách diễn dòch này hay cách khác. Cũng còn cần phải dùng những
lệnh khác tùy theo ta muốn thao tác các đại lượng 8-bit hay 16-bit nữa.
Khi cung cấp số liệu cho chương trình, số cho ở hệ nào phải được kèm đuôi của hệ đó như đã nêu (trừ hệ
mười thì không cần, vì là trường hợp ngầm đònh của assembler).
Riêng đối với số hệ mười sáu, nếu số đó bắt đầu bằng các chữ (ký tự : a … f hoặc A … F) thì phải thêm 0
vào trước, để chương trình dòch có thể hiểu được đó là một số ở hệ mười sáu chứ không phải là một tên
hoặc một nhãn.
Ví dụ các số viết đúng:
0011B ; số hệ hai.
1201 ; số hệ mười.
0ABBAH ; số hệ mười sáu, không nhầm
; với tên của ban nhạc nổi tiếng ABBA.
1EF1H ; số hệ mười sáu.
Nếu dữ liệu là ký tự hoặc chuỗi ký tự thì chúng phải được đóng trong cặp dấu trích dẫn đơn ‘x’ hoặc kép
“x“, thí dụ như ‘A’ hay “abcd”. Chương trình dòch sẽ dòch ký tự ra mã ASCII tương ứng của nó,.
vì vậy khi cung cấp dữ liệu kiểu ký tự cho chương trình, có thể dùng bản thân ký tự (được đóng trong dấu
trích dẫn) hoặc mã ASCII của nó.
Ví dụ, ta có thể sử dụng dữ liệu ký số là “0” hoặc mã ASCII tương ứng là 30H,
ta có thể dùng ký hiệu ‘$’ hoặc 24H hoặc 36 …
Biến và hằng.
Biến trong chương trình hợp ngữ có vai trò như nó có ở ngôn ngữ bậc cao. Một biến phải được đònh kiểu
dữ liệu là kiểu byte hay kiểu từ word, và sẽ được chương trình dòch gán cho một đòa chỉ nhất đònh trong bộ
nhớ. Để đònh nghóa các kiểu dữ liệu khác nhau, thường dùng các lệnh giả sau:
DB (define byte) : đònh nghóa biến kiểu byte,
DW (define word) : đònh nghóa biến kiểu từ,
DD (define double word) : đònh nghóa biến kiểu từ kép.
Hằng có tên. Các hằng trong chương trình hợp ngữ thường được gán tên để làm cho chương trình dễ đọc
hơn. Hằng có thể là kiểu số hay kiểu ký tự, việc gán tên cho hằng được thực hiện nhờ lệnh giả EQU
equate như sau:
CR EQU 0Dh ; CR là trở về đầu dòng carriage return.
LF EQU 0Ah ; LF là thêm dòng mới line feed.
Trong ví dụ trên, lệnh giả EQU gán giá trò số 13 (mã ASCII của ký tự <CR> trở về đầu dòng) cho tên CR
và 10 (mã ASCII của ký tự <LF> thêm dòng mới) cho tên LF.
Hằng cũng có thể là một chuỗi ký tự. Trong ví dụ dưới đây, sau khi đã gán một chuỗi ký tự cho một tên:
CHAO EQU ‘Hello!’
ta có thể sử dụng hằng này để đònh nghóa một biến mảng khác:
MSG DB CHAO,’$’
Vì lệnh giả EQU không dành chỗ của bộ nhớ cho tên của hằng, nên có thể đặt nó khá tự do, tại những
chỗ thích hợp bên trong chương trình. Tuy nhiên, trong thực tế người ta thường đặt các đònh nghóa này
trong đoạn dữ liệu.
Hằng và biến Boole.
Biến số Boole là:
• đại lượng mà tại các thời điểm khác nhau chỉ có thể có một trong hai giá trò là '0' hoặc '1'.
• được sử dụng để biểu diễn mức logic tương ứng trạng thái của giá trò điện thế hiện hữu trên đường
dây hay tại các đầu cuối vào/ra của mạch (tương ứng trạng thái '0' hay '1', VD: '0'=(0
÷
0,8)V;
'1'=(2
÷
5)V-).
Biến Boole được ký hiệu bằng chữ biểu thò các giá trò logic. VD: biến A là đầu vào (hay đầu ra) của một
mạch số.
Các phép toán số học (cơ bản) của đại số Boole.
Ba phép toán logic cơ bản trong đại số Boole là:
• Phép OR (HOẶC).
• Phép AND (VÀ).
• Phép NOT (PHỦ ĐỊNH).
Bảng chân trò (bảng chân lí - bảng sự thật) Truth Table. Là:
• phương tiện mô tả quan hệ phụ thuộc đầu ra theo các mức logic hiện hữu tại đầu vào của mạch
logic.
• bảng liệt kê mọi tổ hợp khả dó các mức logic hiện hữu tại các đầu vào A và B tương ứng với mức y
ở đầu ra, chỉ rõ kết quả hiện diện ở đầu ra ứng với bất kỳ tập hợp điều kiện trạng thái nào ở đầu
vào.
• số tổ hợp đầu vào bằng
N
2
đối với mạch có N đầu vào.
3.1.2 - Các phép toán số học (cơ bản) đối với hệ nhò phân.
Phép cộng.
Phép cộng và phép trừ các số hệ hai được thực hiện giống như làm với số hệ mười.
Bảng 3.1 cho quy tắc phép cộng.
Bảng 3.1 – Quy tắc phép cộng số hệ hai.
y = A + B
A B y
C
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
C : nhớ (carry)
Ví dụ: Cộng hệ mười: Cộng hệ hai:
11 C : Nhớ 1111 1110
099 Số hạng thứ nhất 0110 0011
095 Số hạng thứ hai 0101 1111
194 Tổng 1100 0010
Các bộ cộng trong khối tính toán số học ALU của máy tính sẽ thực hiện các phép cộng theo cách nêu
trên.
Phép trừ và số bù hai.
Phép trừ.
Phép trừ các số hệ hai thực hiện giống như làm với số hệ mười.
Bảng 2.2 cho quy tắc phép trừ trong hệ hai.
Bảng 3.2 – Quy tắc phép trừ số hệ hai.
y = A - B
A B y
B
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
B : mượn (borrow)
Ví dụ: Trừ hệ mười: Trừ hệ hai:
1 B : Mượn 0110 0000
109 Số bò trừ 0110 1101
49 Số trừ 0011 0001
060 Hiệu 0011 1100
Số bù hai.
Có thể thực hiện phép trừ bằng phép cộng: cộng số bò trừ với số đối của số trừ. Số đối của số trừ tức là
gía trò số trừ với dấu âm (số âm).
Vấn đề là phải biểu diễn số âm một cách thích hợp. Có nhiều cách mã hoá để biểu diễn số âm trong hệ
hai, nhưng cách hay dùng nhất là mã hoá kiểu số bù hai.
Bảng 3.3 chỉ rõ cách tạo số hệ hai có dấu và số bù hai trong tương quan với số hệ hai.
Bảng 3.3 – Biểu diễn số hệ hai, số có dấu và số bù hai.
Số 8-bit
hệ hai
Số hệ mười
tương đương
Số hệ mười theo
mã hệ hai có dấu
Số hệ mười
theo mã bù hai
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
…
0111 1101
0111 1110
0111 1111
1000 0000
1000 0001
1000 0010
1000 0011
1000 0100
1000 0101
…
1111 0000
1111 0001
1111 0010
1111 0011
1111 0100
1111 0101
1111 0110
1111 0111
1111 1000
1111 1001
1111 1010
1111 1011
1111 1100
1111 1101
1111 1110
1111 1111
0
1
2
3
4
5
6
…
125
126
127
128
129
130
131
132
133
…
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
…
+125
+126
+127
- 0
- 1
- 2
- 3
- 4
- 5
…
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
- 125
- 126
- 127
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
…
+125
+126
+127
-128
-127
-126
-125
-124
-123
…
- 16
- 15
- 14
- 13
- 12
- 11
- 10
- 9
- 8
- 7
- 6
- 5
- 4
- 3
- 2
- 1
Nhận xét:
1) Nếu dùng 8 bits thì có 256 tổ hợp có giá trò từ 0 đến 255 (tương ứng 00 …FF hệ hex), tức là chỉ
biểu diễn được số dương.
2) Nếu muốn biểu diễn số âm (có dấu âm), tức là số có dấu và độ lớn sign and magnitude thì phải
mất một bit dành cho dấu (trong bảng, để dễ phân biệt, bit b7 được in nghiêng đậm) và 7 bits còn
lại cho giá trò số. Bằng cách này, với 8 bits sẽ có khả năng biểu diễn cả số dương và số âm trong
khoảng -127 … -0, +0 … +127 (chú ý: hai giá trò 0 biểu diễn không giống nhau !).
3) Số bù hai được tạo ra theo cách gần giống như kiểu số có dấu và độ lớn, nhưng nó dùng cả 8 bits
để biểu diễn giá trò của số được mã hoá. Mã bù hai dành 1 bit có khả năng biểu diễn các số âm và
dương trong khoảng -128 … 0 … +127. Một số dương có mã bù hai giống như mã hệ hai thông
thường.
4) Một số biểu diễn theo hệ hai sẽ có các giá trò khác nhau nếu hiểu đó là mã để biểu diễn số theo
kiểu hệ hai có dấu hoặc kiểu số bù hai. Nói cách khác, một cụm các số ‘0’ và ‘1’ sẽ được cảm
nhận khác nhau khi nó biểu diễn giá trò số theo các mã khác nhau. Cho dù có được biểu diễn bằng
số hệ hai có dấu hay số bù hai thì các số âm đều có bit b7=1, còn các số dương có bit b7=0.
Cách tính số bù hai: Về mặt toán học thì số bù hai của một số chính là số đối của nó. Như vậy, một số
dương sẽ có số bù hai là một số âm cùng giá trò tuyệt đối và ngược lại.
Quy tắc: Muốn tìm số bù hai (còn gọi là bù số học) của một số A, ta thực hiện các bước sau:
1) Biểu diễn số A theo mã hệ hai của nó.
2) Tìm số bù một (bù logic) của số đó (bằng cách đảo bit).
3) Cộng 1 vào số bù một ở trên để nhận được số bù hai của số A.
Ghi chú: Khi có một số âm được biểu diễn theo mã bù hai nếu muốn tính giá trò tuyệt đối của nó ta cũng
áp dụng quy tắc này (các bước 2,3).
Ví dụ: Tìm số bù hai của số 13.
13 = 0000 1101 B (mã hệ hai của 13)
Số bù một của 13: 1111 0010 B (đảo bit của số trên)
Cộng thêm 1 vào: 1
Số bù hai của 13: 1111 0011 B (tức là -13)
Ứng dụng số bù hai trong phép trừ:
Ví dụ: 15 – 13 = ?
Có thể viết phép trừ trên như sau: 15 – 13 = 15 + (-13). Như vậy có thể dùng số (-13) như ở trên.
15 … 0000 1111
(-13) … 1111 0011
Tổng … 0000 0010 (nhớ 1)
Nếu không để ý đến số nhớ thì có kết quả là 2.
Ví dụ: 12 – 13 = ?
12 … 0000 1100
(-13) … 1111 0011
Tổng … 1111 1111 (tức là -1)
Đây là một số âm (bit b7=1) với giá trò tuyệt đối là 1 (tra bảng 3.3).
Mặt khác, cũng có thể tìm được giá trò tuyệt đối của kết quả bằng cách tìm số bù hai của nó:
Mã bù hai của kết quả: … 1111 1111
Số bù một của kết quả: … 0000 0000
Cộng 1 để tìm giá trò tuyệt đối: … 0000 0001
Phép nhân.
Bảng 3.4 cho quy tắc phép nhân các số hệ hai.
Bảng 3.4 – Phép nhân hệ hai.
y = A . B
a b y
0 0 0
0 1 0
1 0 0
1 1 1
Ví dụ:
Độ dài cực đại của kết quả trong trường hợp này là 8 bits. Nếu các toán hạng dài 8 (hoặc 16) bits thì độ
dài cực đại của kết quả là 16 (hoặc 32) bits. Mỗi lần nhân một bit khác 0 của số nhân với số bò nhân ta
thu được chính số bò nhân, tức là nếu dòch trái nó một số lần tương ứng với vò trí của bit khác 0 đó trong số
nhân ta sẽ tạo ra một thành phần của tổng tích lũy. Tổng của các thành phần như trên là kết quả của phép
nhân.
Như vậy, có thể thực hiện phép nhân theo thuật toán cộng và dòch (trên cơ sở các bộ cộng và dòch) như
sau:
1) Thành phần đầu tiên của tổng tích lũy thu được là tích của số LSB trong số nhân với số bò nhân.
Nếu LSB = 0 thì thành phần này cũng bằng 0, còn nếu LSB = 1 thì thành phần này bằng chính số bò
nhân.
2) Mỗi thành phần thứ i tiếp theo của tổng tích lũy cũng được tính bằng cách tương tự, nhưng phải
dòch trái i bits (có thể bỏ qua thành phần bằng 0).
3) Tổng của các tổng thành phần là tích cần tìm.
Minh họa thuật toán này bằng cách rút gọn ví dụ trên:
Phép chia.
Phép chia là phép tính ngược của phép nhân, suy ra là có thể thực hiện bằng các phép trừ và dòch liên
tiếp cho tới khi không thể trừ được nữa (do không còn gì để trừ hoặc số bò trừ nhỏ hơn số chia).
Thông thường, ta thực hiện phép chia bằng tay.
Vấn đề là khi thực hiện phép chia bằng tay (như ví dụ sau đây) cần phải dự đoán và kiểm tra để tìm đúng
kết quả – công việc này rất khó khăn đối với các mạch điện tử trong khối tính toán số học (vốn là các
phần tử thực hiện phép cộng và dòch trong máy tính).
Khắc phục vấn đề: Giải thuật sẽ là:
1) Đổi số chia ra số bù hai của nó (để bước sau làm tính trừ bằng phép cộng).
2) Lấy số bò chia trừ đi số chia. Nếu kết quả này có bit dấu bằng 0 (có nghóa là phần này của số bò
chia chia được cho số chia) thì bit tương ứng của thương bằng 1. Nếu kết quả có bit dấu bằng 1 (có
nghóa là phần này của số bò chia không chia được cho số chia) thì bit tương ứng của thương bằng 0 và
buộc phải khôi phục lại giá trò ban đầu của số bò chia bằng cách cộng kết quả này với số chia ở mã hệ
hai.
3) Dòch trái kết quả thu được ở trên và làm lại bước 2 cho đến khi nhận được kết quả cuối cùng là 0
(chia hết) hoặc nhỏ hơn số chia (chia còn dư).
Ví dụ chia bằng tay: 35/5=?
Ví dụ thực hiện phép chia với giải thuật nêu trên trong hệ hai: 36/5 = 7 dư 1.
Các bước tính toán theo thuật toán phép chia nêu trên sẽ là:
1). Đổi số chia
( ) ( )
BD
01015 =
ra số bù hai của nó là
( )
B
1011
.
2). Lấy số bò chia trừ đi số chia. Số bò chia
BD
)100100()36( =
và số bù hai của nó là
B
)1011100(
.
Bảng 3.5 - VD phép chia nhò phân.
Toán hạng Thương Tên toán hạng, thao tác
0 100100
1 011 000
1 111100
0
Số bò chia (36
D
)
Số chia ở mã bù hai để cộng
Tổng, kết quả 1 (KQ1 bit thương = 0)
1 111100
0 101 000
0 100100
KQ1 có bit dấu =1
→
khôi phục lại số bò chia
Số chia ở mã hệ hai để cộng với KQ1
Số bò chia được khôi phục
1 00100 0
1 011 000
0 100000
1
Số bò chia dòch trái 1 lần
Số chia ở mã bù hai để cộng
Tổng, kết quả 2 (KQ2 bit thương = 1)
1 00000 0
1 011 000
0 011000
0 11000 0
1 011 000
0 001 000
1
1
KQ2 có bit dấu =0
→
dòch trái lần hai
Số chia ở mã bù hai để cộng
Tổng, kết quả 3 (KQ3 bit thương = 1)
KQ3 có bit dấu =0
→
dòch trái lần 3
Số chia ở mã bù hai để cộng
Tổng, kết quả 4 (KQ4 bit thương = 1)
↑
Bit dấu
0111
Kết quả phép chia (KQ1,KQ2,KQ3,KQ4); dư 1
3.2 - Các dạng hàm Boole.
Các phép toán số học (cơ bản) của đại số Boole.
Ba phép toán logic cơ bản trong đại số Boole là:
• Phép OR (HOẶC).
• Phép AND (VÀ).
• Phép NOT (KHÔNG).
Bảng chân trò (bảng chân lí - bảng sự thật) Truth Table. Là:
• phương tiện mô tả quan hệ phụ thuộc đầu ra theo các mức logic hiện hữu tại đầu vào của mạch
logic.
• bảng liệt kê mọi tổ hợp khả dó các mức logic hiện hữu tại các đầu vào A và B tương ứng với mức x
ở đầu ra, chỉ rõ kết quả hiện diện ở đầu ra ứng với bất kỳ tập hợp điều kiện trạng thái nào ở đầu
vào.
• số tổ hợp đầu vào bằng
N
2
đối với mạch có N đầu vào.
Hàm OR (OR Operation): HOẶC.
Biểu thức Boole phép toán OR:
BAy ⊕=
Khi đầu vào bất kỳ có giá trò '1' thì đầu ra có KQ = '1'.
Chỉ khi tất cả các đầu vào đều '0' thì đầu ra mới có KQ= '0'.
Biểu thức được đọc là: "y bằng A HOẶC B ".
Hình 3.1. Bảng chân trò đònh nghóa phép HOẶC OR và cổng OR.
Cổng HOẶC (OR Gate).
Là mạch số thực hiện phép toán logic OR, có hai đầu vào trở lên và một đầu ra ứng với tổ hợp OR các
đầu vào.
Đầu ra sẽ là '1' khi có đầu vào bất kỳ có giá trò là '1'.
Đầu ra sẽ là '0' chỉ khi tất cả các đầu vào đều là '0'.
Lưu ý: Dạng sóng tín hiệu đầu ra mạch cổng OR xuất hiện xung tạp nhiễu glich tại thời điểm các đầu vào
nằm trong khoảng mức logic không xác đònh (do độ dốc xung tín hiệu đầu vào và thời gian chuyển đổi
trạng thái mạch logic số).
Hàm AND (AND Operation): VÀ.
Biểu thức Boole phép toán OR:
BAy ⊗=
Khi đầu vào bất kỳ có giá trò '1' thì đầu ra có KQ = '0'.
Chỉ khi tất cả các đầu vào đều '1' thì đầu ra mới có KQ= '1'.
Biểu thức được đọc là: "y bằng A VÀ B ".
Hình 3.2. Bảng chân trò đònh nghóa phép VÀ AND và cổng AND.
Cổng VÀ (AND Gate).
Là mạch số thực hiện phép toán logic AND, có hai đầu vào trở lên và một đầu ra ứng với tích AND của
các đầu vào logic.
Đầu ra sẽ là '1' chỉ khi tất cả các đầu vào đều là '1'.
Đầu ra sẽ là '0' khi có đầu vào bất kỳ có giá trò là '0'.
Lưu ý: Cổng AND có thể dùng như một mạch cấm inhibit circuit khi một đầu vào được coi như tín hiệu
điều khiển (có mức logic quyết đònh liệu có cho tín hiệu đầu vào kia tới đầu ra không).
Hàm NOT (NOT Operation): KHÔNG.
Hàm NOT là hàm một biến. Phép toán NOT là phép đảo inverse hay phép bù complement.
Biểu thức Boole phép toán NOT:
Ay =
Khi đầu vào có giá trò '1' thì đầu ra có KQ = '0'.
Khi đầu vào có giá trò '0' thì đầu ra có KQ= '1'.
Biểu thức được đọc là: "y bằng NOT A" hay "y bằng đảo của A" (đảo=inverse), hoặc "y bằng bù của A"
(bù=complement).
Hình 3.3. Bảng chân trò đònh nghóa phép KHÔNG NOT và ký hiệu sơ đồ của bộ đảo INVERTER.
Bộ đảo (Inverter).
Là mạch số thực hiện phép toán logic NOT, chỉ có một đầu vào và mức logic của đầu ra luôn ngược với
mức logic đầu vào.
Là mạch đảo (bù) tín hiệu đầu vào, biểu thức đầu ra luôn bằng biểu thức đầu vào có dấu gạch ngang trên
đầu. Phối hợp mạch đảo tạo nên các cổng phủ đònh NOR và NAND.
Cổng HOẶC PHỦ-ĐỊNH (NOR Gate).
Là mạch số thực hiện cổng logic phủ đònh NOR, vận hành như cổng OR kết hợp bộ đảo INVERTER.
Hình 3.4. Bảng chân trò, ký hiệu cổng NOR và mạch tương đương.
Đầu ra xuống mức thấp (sẽ là '0') khi có đầu vào bất kỳ ở mức cao (có giá trò là '1').
Đầu ra lên mức cao (sẽ là '1') chỉ khi tất cả các đầu vào đều ở mức thấp (là '0').
Cổng VÀ PHỦ-ĐỊNH (NAND Gate).
Là mạch số thực hiện cổng logic phủ đònh NAND, vận hành như cổng AND kết hợp bộ đảo INVERTER.
Hình 3.5. Bảng chân trò, ký hiệu cổng NAND và mạch tương đương.
Đầu ra xuống mức thấp (sẽ là '0') chỉ khi tất cả các đầu vào đều ở mức cao (có giá trò là '1').
Đầu ra lên mức cao (sẽ là '1') khi có đầu vào bất kỳ ở mức thấp (là '0').
Mạch cổng LOẠITRỪ-OR (EX-OR Gate).
Là mạch số tạo tín hiệu ra ở mức cao mỗi khi hai đầu vào ở mức logic đối nghòch nhau.
Biểu thức:
BABABAy ⊕=+=
o Chỉ có hai đầu vào, một đầu ra.
o Đầu ra tích cực ở mức cao chỉ khi hai đầu vào ở các mức tích cực khác nhau (có duy nhất một đầu
vào ở mức cao).
Các chip quad EX-OR:
74LS86 Quad EX-OR (họ TTL);
74C86 Quad EX-OR (họ CMOS);
74HC86 Quad EX-OR (họ CMOS tốc độ cao);
Hình 3.6. Mạch cổng EX-OR.
Mạch cổng LOẠITRỪ-NOR (EX-NOR Gate).
Là mạch số tạo tín hiệu ra ở mức cao mỗi khi hai đầu vào ở cùng mức logic.
Biểu thức:
BABABAy ⊕=+=
Chỉ có hai đầu vào, một đầu ra.
Đầu ra tích cực ở mức cao chỉ khi hai đầu vào ở cùng mức logic.
Các chip quad EX-NOR:
74LS266 Quad EX-OR (họ TTL);
74C266 Quad EX-OR (họ CMOS);
74HC266 Quad EX-OR (họ CMOS tốc độ cao);
Hình 3.7. Mạch cổngt EX-NOR.
Cổng NAND, tính đa dụng trong sơ đồ mạch logic số .
Khả năng cổng NAND thực hiện hàm Boole bất kỳ.
Hình 3.8. Dùng cổng NAND thực hiện các hàm Boole.
Tương tự cho mạch dùng toàn NOR:
Hình 3.9. Dùng cổng NOR thực hiện các hàm Boole.
Ký hiệu sơ đồ của mạch logic số.
Ký hiệu chuẩn và ký hiệu thay thế.
Hình 3.10. Ký hiệu chuẩn và ký hiệu thay thế mạch logic số.
Mức logic tích cực của mạch logic số.
o Đường vào/ra của mạch logic không bò đảo là đường có trạng thái tích cực ở mức cao active-HIGH.
Ký hiệu biểu thức là không có dấu gạch ngang trên đầu, ký hiệu sơ đồ là không có vòng tròn nhỏ.
o Đường vào/ra của mạch logic bò đảo là đường có trạng thái tích cực ở mức thấp active-LOW. Ký
hiệu biểu thức là có dấu gạch ngang trên đầu, ký hiệu sơ đồ là có vòng tròn nhỏ.
o Ký hiệu đường tín hiệu lưỡng ổn (có hai trạng thái tích cực, VD:
WRRD /
: tín hiệu tích cực ở mức
cao thì thực hiện đọc RD, còn khi ở mức thấp thì thực hiện ghi WR).
Hình 3.11. Ý nghóa ký hiệu logic số NAND và NOR.
Hình 3.12. Ký hiệu mạch logic NAND với mức logic tích cực và bảng chân trò.
Lưu ý: Nên chọn ký hiệu cổng sao cho đầu ra đảo (có vòng tròn) nối với đầu vào đảo (có vòng tròn) và
ngược lại: đầu ra không đảo nối với đầu vào không đảo.
Ký hiệu mạch logic theo chuẩn IEEE/ANSI:
Hình 3.13. Ký hiệu chuẩn cho logic số và vi mạch IC.
Đại số logic.
Quy tắc tính toán biểu thức Boole. Thứ tự ưu tiên trong đại số logic:
1) Phép đảo biến đơn (nếu có). Phép tính biểu thức có gạch trên đầu rồi đảo kết quả .
2) Phép tính trong ngoặc (nếu có).
3) Phép toán AND (nhân logic).
4) Phép toán OR (cộng logic).
Đònh lý Boole.
Các đònh lý đơn biến (biến 'x'):
ĐL1:
00. =x
.
Nếu một biến 'x' bất kỳ được AND với '0' kết quả phải là '0'.
ĐL2:
xx =1.
.
Nếu một biến 'x' bất kỳ được AND với '1' kết quả phải là chính nó 'x' .
ĐL3:
xxx =.
.
Nếu một biến 'x' bất kỳ được AND với chính nó 'x' kết quả là chính nó 'x'.
ĐL4:
0.
=
xx
.
Nếu một biến 'x' bất kỳ được AND với số đảo của chính nó '
x
' thì kết quả phải là '0'.
ĐL5:
xx =+ 0
.
Nếu một biến 'x' bất kỳ được OR với '0' kết quả là chính nó 'x'.
ĐL6:
11
=+
x
.
Nếu một biến 'x' bất kỳ được OR với '1' thì kết quả là '1'.
ĐL7:
xxx =+
.
Nếu một biến 'x' bất kỳ được OR với chính nó 'x' thì kết quả là chính nó 'x'.
ĐL8:
1=+ xx
.
Nếu một biến 'x' bất kỳ được OR với số đảo của chính nó '
x
' thì kết quả phải là '1'.
Các đònh lý đa biến (các biến 'x', 'y', 'z', )
ĐL9: Luật giao hoán:
xyyx
+=+
.
Trong phép OR trật tự các biến không quan trọng, kết quả là như nhau.
ĐL10: Luật giao hoán:
xyyx =
.
Trong phép AND trật tự các biến không quan trọng, kết quả là như nhau.
ĐL11: Luật kết hợp:
zyxzyxzyx ++=++=++ )()(
.
Trong phép OR có thể nhóm các biến với nhau, kết quả là như nhau.
ĐL12: Luật kết hợp:
xyzzyxzyx == ).().(
.
Trong phép AND có thể nhóm các biến với nhau, kết quả là như nhau.
ĐL13: Luật phân phối:
xzxyzyx +=+ )(
.
xzxywzwyzyxw +++=++ )).((
.
Trong các biểu thức OR và AND có thể khai triển các biểu thức bằng cách nhân các số hạng với nhau hay
đặt thừa số chung như luật phân phối bình thường.
ĐL14:
xxyx =+
.
ĐL15:
yxyxx +=+
.
Các đònh lý DeMorgan :
ĐL16:
yxyx .)( =+
.
Khi đảo tổng OR của hai biến, kết quả tương đương phép AND các biến đảo.
ĐL17:
yxyx +=).(
.
Khi đảo tích AND của hai biến, kết quả tương đương phép OR các biến đảo.
Ý nghóa các đònh lý DeMorgan :
o Tiện lợi trong việc rút gọn các biểu thức có tích hay tổng của các biến đảo.
o Có thể ngắt dấu đảo lớn tại bất kỳ điểm nào trên biểu thức và thay ký hiệu toán tử tại điểm đó
bằng ký hiệu ngược lại, lặp lại mãi cho tới khi rút gọn đến một biểu thức chỉ còn biến đơn đảo.
Giải tích mạch tổ hợp. Hai phương pháp giải tích mạch tổ hợp:
o PP đại số Boole.
o PP đồ bản Karnaugh-map.
Phương pháp giải tích mạch tổ hợp theo đại số Boole.
Hai dạng thức rút gọn biểu thức đại số Boole:
Tổng các tích (sum-of-products).
Tích các tổng (product-of-sums).
Dạng tổng-các-tích:
chứa hai (trở lên) số hạng AND được OR với nhau.
mỗi số hạng AND chứa một (hay nhiều) biến độc lập dưới dạng bình thường (không bù) hay dạng
đảo (bù 1).
trong các số hạng AND của biểu thức tổng-các-tích, dấu đảo không kéo dài hơn một biến.
VD:
CBAABC +
;
DDCCBAAB +++
;
LHGKEFDCBA ++++
;
Dạng tích-các-tổng:
chứa hai (trở lên) số hạng OR được AND với nhau.
mỗi số hạng OR chứa một (hay nhiều) biến độc lập dưới dạng bình thường (không bù) hay dạng
đảo (bù 1).
trong các số hạng OR của biểu thức tích-các-tổng, dấu đảo không kéo dài hơn một biến.
VD:
)).(( CACBA +++
;
FDCBA ))(( ++
;
))()()(( EDACBDBCA +++++
;
Rút gọn biểu thức toán logic bằng cách áp dụng các đònh lý Boole:
B1. Biến đổi biểu thức ban đầu thành dạng tồng-các-tích bằng cách áp dụng đònh lý DeMorgan và nhân
các số hạng nhiều lần.
B2. Rút thừa số chung trong các tích (nếu có thể) nhằm loại bỏ bớt số hạng.
PP chung. Dựa vào kinh nghiệm mò mẫm "thử và sai".
&&&
BÀI TẬP.
1.1 – Thế nào gọi là bit, nible, byte, word, double word?
1.2 – Chuyển đổi số theo hệ đếm:
(xxxx)
D
(xxxx)
B
(xxxx xxxx)
BCD
(xxxx)
H
12
144
254
1101
1001 0001
1111 1101
0001 0100
0001 0100 0110
0010 0101 0101
C
93
ABC
FFFF
12,13
144,45
254,75
1.3 – Thực hiện các phép tính số học hệ hai sau:
a). Phép cộng: 52+34=?
b). Phép trừ: 52-34=?
34-52=? (và tìm trò tuyệt đối của kết quả)
c). Phép nhân: 52x3=?
52x(-3)=?
d). Phép chia 52/3=?
1.4 – Bảng mã ASCII: Cho mã ASCII như dưới đây, chuyển đổi thành ký tự, ký số hay ký hiệu:
42H 61H 60H 6EH 20H 50H 68H 69H 2CH 6DH 20H 28H 43H 4FH 2CH 20H 62H 61H
4FH 20H 6EH 68H 69H 65H 5EH 75H 20H 70H 68H 69H 2CH 6DH 3FH 29H 2EH
1.5 – Chuyển đổi hai số (ở dạng mã ASCII) 35H 37H sang dạng số BCD chuẩn của 57.
%%%