Giáo trình Kỹ thuật số - Chương 6: Mạch làm toán

_________________________________________________________________Chương 6  
Mạch làm toán VI - 1  
ꢀ CHƯƠNG 6: MẠCH LÀM TOÁN  
– SỐ BÙ  
– PHÉP TRỪ SỐ NHỊ PHÂN DÙNG SỐ BÙ 1  
– PHÉP TRỪ SỐ NHỊ PHÂN DÙNG SỐ BÙ 2  
– PHÉP TOÁN VỚI SỐ CÓ DẤU  
– MẠCH CỘNG  
˜ Bán phần  
˜ Toàn phần  
˜ Cộng hai số nhiều bít  
– MẠCH TRỪ  
˜ Bán phần  
˜ Toàn phần  
˜ Trừ hai số nhiều bit  
˜ Cộng & trừ hai số nhiều bit trong một mạch  
– MẠCH NHÂN  
˜ Mạch nhân cơ bản  
˜ Mạch nhân nối tiếp - song song đơn giản  
– MẠCH CHIA  
˜ Mạch chia phục hồi số bị chia  
˜ Mạch chia không phục hồi số bị chia  
___________________________________________________________________________  
____  
6.1 Số bù  
Cho số dương N, n bit, các số bù của N được định nghĩa:  
Số bù 2: (N)2 = 2n - N (số 2n gồm bit 1 và n bit 0 theo sau)  
Số bù 1: (N)1 = (N)2 -1 = 2n - N - 1  
Thí dụ 1: N = 1010  
Số bù 2 của N là  
(N)2 = là 10000 - 1010 = 0110  
Và số bù 1 của N là (N)1 = 0110 - 1 = 0101  
Thí dụ 2: N = 110010101100 ⇒ (N)2 = 001101010100 và (N)1 = 001101010011  
Nhận xét:  
- Để có số bù 2 của một số, bắt đầu từ bit LSB (tận cùng bên phải) đi ngược về bên  
trái, các bit sẽ giữ nguyên cho đến lúc gặp bit 1 đầu tiên, sau đó đảo tất cả các bit còn lại.  
- Để có số bù 1 của một số, ta đảo tất cả các bit của số đó.  
Từ các nhận xét trên ta có thể thực hiện một mạch tạo số bù 1 và 2 sau đây:  
(H 6.1)  
- Khi C=1, B là số bù 1 của b (B1 và b1 là bit LSB)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 2  
- Khi C=0, B là số bù 2 của b.  
Thật vậy, các biểu thức logic của B theo b và C là:  
B1 = b1 ⊕ C  
B2 = b2 ⊕ (C + b1)  
B3 = b3 ⊕ (C + b1 + b2 )  
- Khi C=1 , các ngã ra cổng OR luôn bằng 1, các cổng EX - OR luôn có một ngã vào  
bằng 1 nên ngã ra là đảo của ngã vào còn lại, ta được:  
B1 = b1 ⊕ 1 = b1  
B2 = b2 ⊕ (1+ b1) = b2 ⊕ 1 = b2  
B3 = b3 ⊕ (1+ b1 + b2 ) = b3 ⊕ 1 = b3  
- Khi C=0  
B1 = b1 ⊕ 0 = b1  
B2 = b2 ⊕ (0+ b1) = b2 ⊕ b1  
= b2 nếu b1=0 và b2 nếu b1 = 1  
B3 = b3 ⊕ (0 + b1 + b2 ) = b3 ⊕ (b1 + b2 )  
= b3 nếu b1 và b2 đều =0  
= b3 nếu (b1 và/hoặc b2 = 1)  
Như vậy tất cả các bit sau bit 1 thứ nhất tính từ bit LSB đều bị đảo và B chính là số bù  
2 của b  
Chúng ta cũng có thể thiết kế mạch tạo số bù hai bằng cách dùng FF RS, có ngã vào  
R, S tác động mức cao, kết hợp với các cổng logic như (H 6.2). Mạch này dùng khá tiện lợi  
khi cần thực hiện bài toán cộng và trừ nhiều bit kiểu nối tiếp.  
(H 6.2)  
Bắt đầu, Preset mạch để ngã ra Q = 1, cổng G3 đóng, G2 mở, cho số B đi qua mà  
không bị đảo cho đến khi có bit 1 đầu tiên đến, cổng G1 mở cho xung đồng hồ đi qua, FF RS  
được reset, Q = 0, Q = 1, G2 đóng, G3 mở, số B đi qua cổng G2 và bị đảo. Ở ngã ra được số  
bù 2 của B.  
6.2 Phép trừ số nhị phân dùng số bù 1:  
Cho hai số dương A và B có n bit (nếu số bit khác nhau, ta thêm số 0 vào , mà không  
làm thay đổi trị, để cả hai có cùng số bit)  
a/ - A≤B  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 3  
Kết quả A-B là số 0 hoặc âm, phép tính được thực hiện như sau:  
Tính A - B:  
A - B = A-B+2n-1-2n+1  
= A+(2n -B -1 ) - 2n+1  
= A+(B )1 - 2n+1  
= - {2n - [A+(B )1] -1}  
= - [A+(B )1]1  
Vậy A-B có được bằng cách cộng số bù 1 của B vào A rồi lấy bù 1 của tổng và thêm  
dấu trừ . Như vậy để thực hiện phép tính trừ ta chỉ cần dùng phép cộng và phép đảo  
Thí dụ 3 : Tính 1001 - 11010 dùng số bù 1  
Ta có  
A = 01001 (thêm số 0 vào để có 5 bit như số B  
B = 11010 ⇒ (B)1 = 00101  
A-B = - [A+(B )1]1 = - (01001+00101) =- (01110)1  
= - (10001)  
Trong hệ thập phân, đây là bài toán 910 - 2610 = -1710  
Để thấy dấu trừ được nhận ra như thế nào, ta viết lại phép toán:  
Không có số tràn (hay số tràn =0) là dấu hiệu của kết quả âm (hoặc =0) và ta phải lấy  
bù 1, thêm dấu trừ để đọc kết quả cuối cùng: (01110)1 = - 10001  
Thí dụ 4: Tính 10110 - 10110  
A = 10110 và B = 10110 ⇒ (B)1 = 01001  
Trong phép cộng đầu tiên không có số tràn, kết quả xem như số âm (hoặc =0) lấy bù 1  
của kết quả ta được A-B =00000.  
b/ - A >B  
Kết quả A-B là số dương, phép tính được thực hiện theo qui tắc sau:  
Cộng A với (B)1 rồi thêm 1 và không quan tâm tới số nhớ cuối cùng  
Thí dụ 5: Tính 110101 - 100110 dùng số bù 1  
A = 110101 và B = 100110 ⇒ (B)1 = 011001  
Bỏ qua số nhớ cuối cùng, ta được kết quả A-B =001111.  
Trong hệ thập phân đó là bài toán 5310 - 3810 = 1510.  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 4  
Trong phép tính có số tràn chứng tỏ kết quả là số dương. Số 1 cộng thêm vào xem như  
lấy từ số nhớ đem qua.  
Tóm lại, để thực hiện bài toán trừ, A-B, ta cộng A với bù 1 của B. Dựa vào sự có mặt  
hay không của số tràn mà có biện pháp xử lý kết quả:  
- Nếu số tràn =0, kết quả là số âm (hoặc =0) , ta phải lấy bù 1 của kết quả và thêm dấu  
- để đọc.  
- Nếu số tràn =1, ta cộng thêm 1 vào để có kết quả cuối cùng (bỏ qua bit tràn) là một  
số dương.  
6.3 phép trừ số nhị phân dùng số bù 2:  
Phép toán dùng số bù 1 có một bất tiện là ta phải thêm bài toán cộng 1 vào, để tránh  
việc này ta dùng phép toán với số bù 2  
Cho hai số dương A và B có n bit  
a/ - A<B  
Tính A-B:  
A-B = A-B+2n-2n  
= A+(2n - B ) - 2n  
= A+(B )2 - 2n  
= - {2n - [A+(B )2] }  
= - [A+(B )2]2  
Vậy A-B có được bằng cách cộng số bù 2 của B vào A rồi lấy bù 2 của tổng và thêm  
dấu trừ. Như vậy ta đã chuyển phép tính trừ thành phép cộng  
Thí dụ 6: Tính 1001 - 11010 dùng số bù 2  
Ta có A = 01001 (thêm số 0 vào để có 5 bit như số B)  
B = 11010 ⇒ (N2)2 = 00110  
A-B = - [A+(B )2]2 = - (01001+00110) =- (01111)2  
= - (10001)  
Ta được lại kết quả trên  
Để thấy dấu trừ được nhận ra như thế nào, ta viết lại phép toán:  
Không có số tràn là dấu hiệu của kết quả âm và ta phải lấy bù 2, thêm dấu trừ để đọc  
kết quả cuối cùng: (01111)2 = - 10001  
b/ - A ≥B  
Kết quả A-B là 0 hoặc số dương, phép tính được thực hiện theo qui tắc sau:  
Cộng A với (B)2 và không quan tâm tới số nhớ ở vị trí 2n  
Thí dụ 7 : Tính 110101 - 100110 dùng số bù 2  
A = 110101 và B = 100110 ⇒ (B)2 = 011010  
Có số tràn, kết quả là số dương. Bỏ qua số tràn và đọc ngay kết quả mà không phải  
biến đổi: 001111 = 1510  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 5  
Thí dụ 8 : Tính 10110 - 10110  
A = 10110 và B = 10110 ⇒ (B)2 = 01010  
Bỏ qua số tràn ta được A-B =00000.  
6.4 Phép toán với số có dấu  
Cho tới giờ chúng ta thực hiện các phép toán với số không dấu và đôi khi xuất hiện  
dấu trừ trong kết quả. Trong máy tính, điều này có thể khắc phục được bằng cách dùng số có  
dấu.  
Với qui ước số dương có bit dấu là 0 và số âm có dấu là 1  
Thí dụ 9: +1010 = 01010 +1510 = 01111 +2310 = 010111  
-1010 = 10110 - 1510 = 10001 - 2310 = 101001  
Có thể thấy rằng số âm của một số là số bù 2 của nó kể cả bit dấu.  
Với cách biểu diễn số có dấu, phép toán trừ trở thành phép toán cộng:  
A-B = A+(-B )  
Thí dụ 10: Tính A-B =01110 - 01001; B = 01001 = +910 ⇒ - 910 = 10111  
Bit dấu =0 chỉ kết quả dương, bỏ bit tràn C’2.  
Vậy A-B = 00101 [(+1410 )-(+910)] = +510  
Nếu A hoặc B đều dương hoặc âm , kết quả có thể cần thêm một bit do tràn số. Trong  
trường hợp này bit tràn đầu tiên thuộc kết quả và C’2 là bit dấu  
Thí dụ 11: Tính A+B với A = 01110 (+1410) và B = 01001 (+910)  
Kết quả là 010111 = +2310 với C’2 = 0 là bit dấu  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 6  
Thí dụ 12: Tính A-B với A =10010 (-1410) và B =01001 (+910)  
Một lần nữa C’2 chỉ bit dấu. Kết quả là 101001 = -2310 (010111 = 2310)  
Từ các kết quả trên, ta rút ra qui tắc sau đây:  
Nếu C1 = C2 thì C’2 là bit tràn, bỏ đi và nếu C1≠ C2 thì C’2 là bit dấu.  
Thí dụ 13: Tính A-B với A =011101 (+2910) và B =0110 (+610)  
B = 000110 = +610 ⇒ - 610 = 111010  
Ghi chú: - Trong tất cả trường hợp, ta luôn luôn thực hiện phép cộng do đó có thể bỏ  
qua phép trừ  
- Khi cộng hai số hạng cùng dấu thì có thể xảy ra hiện tượng tràn, lúc đó bit  
dấu dời về bên trái một bit. Trong các trường hợp khác thì dấu của kết quả ở cùng vị trí với  
dấu của các số hạng  
- Ngoài ra kết quả còn được xử lý tùy vào kết quả so sánh sự khác nhau của  
hai số nhớ C1 và C2 (nhờ một cổng EX-OR).  
6.5 Mạch cộng nhị phân:  
6.5.1 Mạch cộng bán phần (Half adder, HA):  
Là mạch cộng hai số 1 bit  
Bảng sự thật kết quả  
Mạch  
(H 6.3)  
Ký hiệu  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 7  
6.5.2 Mạch cộng toàn phần (Full adder,FA) :  
Là mạch cộng hai bit ở cùng vị trí trong hai số nhị phân nhiều bit, nói cách khác, đây  
là mạch cộng hai bit , giả sử thứ n, và bit nhớ có được từ phép cộng hai bit thứ n-1 của hai số  
nhị phân đó. Ta có bảng sự thật  
Cn-1  
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
An  
0
1
0
1
0
1
0
1
Sn  
0
1
1
0
1
0
0
1
Cn  
0
0
0
1
0
1
1
1
Dùng bảng Karnaugh ta xác định được Sn và Cn như sau:  
Sn = C n − 1 ⊕ (A ⊕ B n )  
n
C n = A B n + C n − 1 (A ⊕ B n )  
n
n
(H 6.4)  
Có thể thấy một mạch cộng toàn phần gồm hai mạch cộng bán phần và một cổng OR  
6.6 Cộng hai số nhị phân nhiều bit:  
6.6.1 Cộng nối tiếp  
Trong cách cộng nối tiếp, người ta dùng các ghi dịch để chuyển các bit vào một mạch  
cộng toàn phần duy nhất, số nhớ từ ngã ra Cn được làm trễ một bit nhờ FF D và đưa vào ngã  
vào Cn-1. Như vậy tốc độ của phép cộng tùy thuộc vào tần số xung CK và số bit phải thực hiện.  
(H 6.5)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 8  
6.6.2 Cộng song song  
Trong cách cộng song song, các bit được đưa đồng thời vào các mạch cộng toàn phần  
và số nhớ của kết quả ở bit thấp được đưa lên bit cao hơn (H 6.6).  
(H 6.6)  
Chính vì phải chờ số nhớ mà tốc độ cộng còn hạn chế. Muốn nâng tốc độ cộng lên,  
người ta thực hiện phép cộng song song định trước số nhớ.  
6.6.3 Mạch cộng song song định trước số nhớ  
Để tăng tốc độ của mạch cộng song song, người ta tạo trước các số nhớ để đưa đồng  
thời vào mạch cộng  
Từ biểu thức xác định số nhớ  
C =AnB +C (A ⊕B )  
n
n
n−1  
n
n
Đặt Pn = AnBn  
và Gn = An ⊕ Bn  
Ta xác định được C1, C2, C3 .... như sau:  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 9  
(H 6.7)  
Nhận thấy thời gian tính số nhớ giống nhau ở các tầng và bằng t1+t2 . t1 là thời gian  
truyền đồng thời qua các cổng AND và t2 là thời gian truyền qua cổng OR.  
Sơ đồ khối mạch cộng song song định trước số nhớ:  
(H 6.8)  
Trên thị trường hiện có IC 7483 (tương đương 4008 của CMOS) là IC cộng 4 bit theo  
kiểu định trước số nhớ.  
6.6.4 Cộng hai số BCD  
Trên thị trường có các IC cộng số nhị phân, trong lúc trên thực tế nhiều khi chúng ta  
cần cộng các số BCD để cho kết quả là số BCD.  
Chúng ta tìm cách dùng IC 7483 (4008) để cộng hai số BCD  
Hai số BCD có trị từ 010 đến 910 khi cộng lại cho kết quả từ 010 đến 1810. Để đọc được  
kết quả dạng BCD ta phải hiệu chỉnh kết quả có được từ mạch cộng nhị phân.  
Dưới đây là kết quả tương đương giữa 3 loại mã: thập phân, nhị phân và BCD  
Phân  
B
C
BCD đọc  
Nhị  
D
S’=C’4  
TP  
0
1
2
3
4
5
6
7
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
S’1 S =C4  
S4  
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
S3  
S2  
S1 theo NP  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
8
8
9
9
10  
11  
12  
13  
14  
15  
16  
17  
16  
17  
18  
19  
20  
21  
22  
23  
0
0
0
0
0
0
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 10  
18  
1
0
0
1
0
1
1
0
0
0
24  
Nhận thấy:  
- Khi kết quả <10 mã nhị phân và BCD hoàn toàn giống nhau  
- Khi kết quả ≥10 để có được mã BCD ta phải cộng thêm 6 cho mã nhị phân  
Để giải quyết vấn đề hiệu chỉnh này trước tiên ta sẽ thực hiện một mạch phát hiện kết  
quả trung gian của mạch cộng hai số nhị phân 4 bit. Mạch này nhận vào kết quả trung gian  
của phép cộng 2 số nhị phân 4 bit và cho ở ngã ra Y = 1 khi kết quả này ≥10, ngược lại, Y=0.  
Bảng sự thật  
TP  
C’4  
S’2  
Y
0-1  
2-3  
4-5  
6-7  
8-9  
10-11  
12-13  
14-15  
16-17  
18  
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
1
1
1
1
1
Ta không dùng ngã vào S’1 vì từng cặp trị có C’4 S’4 S’3 S’2 giống nhau thì S’1 = 0 và  
Dùng bảng Karnaugh xác định được Y  
S’1 = 1  
Y = C’4 + S’4 (S’3 + S’2)  
Và mạch cộng hai số BCD được thực hiện theo sơ đồ (H 6.9)  
(H 6.9)  
Vận hành:  
- IC thứ nhất cho kết quả trung gian của phép cộng hai số nhị phân.  
- IC thứ hai dùng hiệu chỉnh để có kết quả là số BCD:  
- Khi kết quả < 10, IC 2 nhận ở ngã vào B số 0000 (do Y=0) nên kết quả không thay  
đổi.  
- Khi kết quả trung gian ≥ 10, IC 2 nhận ở ngã vào B số 01102 = 610 (do Y=1) và kết  
quả được hiệu chỉnh như đã nói trên.  
6.6.5 Mạch cộng lưu số nhớ  
Nhắc lại, một mạch cộng toàn phần (FA) nhận 3-bit ở ngã vào và cho 2 ngã ra :  
- Một là tổng của các bit có cùng trọng số với các bit ở ngã vào  
- Một là số nhớ có trọng số gấp đôi trọng số của các bit ở ngã vào  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 11  
Để cộng một chuỗi số, nhiều mạch cộng toàn phần sẽ được sử dụng, số nhớ được lưu  
lại để đưa vào mạch cộng bit cao hơn.  
Thí dụ 14 : Với 3 số 3-bit X (X3X2X1), Y(Y3Y2Y1), Z (Z3Z2Z1) mạch cộng có dạng  
(H 6.10)  
Ngưòi ta dùng mạch cộng loại này để thực hiện bài toán nhân.  
Để có kết quả nhanh hơn, có thể dùng mạch (H 6.11)  
(H 6.11)  
6.7 Mạch trừ nhị phân:  
6.7.1 Mạch trừ bán phần  
Là mạch trừ hai số 1 bit (H 6.12)  
(H 6.12)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 12  
6.7.2 Mạch trừ có số nhớ (mạch trừ toàn phần)  
Là mạch trừ 2 bit có quan tâm tới số nhớ mang từ bit trước  
Rn-1  
Bn  
Dn  
Rn  
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
0
0
1
1
0
1
Bảng sự thật  
Dùng bảng Karnaugh xác định được các hàm Dn và Rn  
Dn = Rn−1 ⊕ (A n ⊕ Bn )  
Rn = A nBn + Rn−1(A n ⊕ Bn )  
Và mạch (H 6.13)  
(H 6.13)  
Nhận thấy cấu tạo mạch trừ giống như mạch cộng, chỉ khác ở mạch tạo số nhớ  
6.7.3 Trừ số nhiều bit  
Ta có mạch trừ số nhiều bit bằng cách mắc song song các mạch trừ 1 bit (H 6.14)  
(H 6.14)  
6.7.4 Cộng và trừ số nhiều bit trong một mạch  
Nhắc lại để thực hiện phép toán trừ, người ta cộng với số bù 1 và cộng thêm 1 (hoặc  
cộng với số bù 2), như vậy để thực hiện phép trừ A - B ta tính A + (B)1 + 1 . Mạch (H 6.6)  
đưọc sửa đổi để có thực hiện phép cộng và trừ tùy vào ngã điều khiển C (H 6.15)  
- Khi C=0, ta có mạch cộng  
- Khi C =1, ta có mạch trừ  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 13  
(H 6.15)  
Ta cũng có thể thực hiện mạch cộng trừ theo kiểu mắc nối tiếp (H 6.16)  
(H 6.16)  
Nếu hai số A, B là số 8 bit, có dấu, kết quả được xử lý bởi mạch dò số tràn, thiết kế  
dựa vào biểu thức: OV = C7 ⊕ C8 . Khi OV =1 nghĩa là có số tràn (tức C7≠C8), thì số tràn C8  
sẽ là bit dấu, S8 là một bit của kết quả và khi OV = 0 (tức C7=C8), thì S8 là bit dấu.  
6.8 Mạch nhân  
Lấy thí dụ bài toán nhân 2 số 4 bit  
Y4  
X4  
Y3  
X3  
Y2  
X2  
Y1  
X1  
Số bị nhân  
Số nhân  
P14 P13 P12 P11 Tích từng phần  
P24 P23 P22 P21  
P34 P33 P32 P31  
P44 P43 P42 P41  
S7 S6 S5 S4  
S8  
S3  
S2  
S1  
Kết quả  
6.8.1. Mạch nhân cơ bản  
Việc thực hiện bài toán nhân có thể xem như gồm hai bước:  
- Tính các tích từng phần: thực hiện bởi các cổng AND  
- Tính tổng của các tích từng phần: Áp dụng bài toán tổng chuỗi số (H 6.17)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 14  
(H 6.17)  
Dùng IC cộng 4 bit (7483 hoặc 4008) mạch nhân hai số 4 bit có dạng (H 6.18)  
(H 6.18)  
6.8.2. Mạch nhân nối tiếp - song song đơn giản (H 6.19)  
(H 6.19)  
Trong mạch này, một trong hai số được đưa nối tiếp vào mạch (trong trường hợp này  
là số bị nhân) và số còn lại đưa song song vào mạch.  
- Số nhân (b4b3b2b1) đưa song song vào mạch qua các cổng AND đồng thời kiểm soát  
các cổng này: ứng với bit 1 số bị nhân qua mạch để tới mạch cộng (cổng 2 và 4); ứng với bit 0  
ngã ra cổng AND bằng không (cổng 1 và 3)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 15  
- Số bị nhân đưa nối tiếp vào mạch theo thứ tự từ bit LSB. Các FF D có tác dụng dịch  
kết quả của phép nhân (là các tích từng phần) trước khi đưa vào mạch cộng để cộng các tích  
từng phần này.  
Thí dụ 15 : Xem bài toán nhân 10x14. Số nhân là 1010 (1010) và số bị nhân là 1110  
(1410). Quá trình nhân giải thích như sau:  
P8 P7 P6 P5 P4 P3 P2 P1  
A
B
C
D
0
0
0
0
1
0
0
0
1
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
Output  
100011002 = 14010  
Có thể thấy rằng ngã ra A luôn luôn bằng 0 vì bit LSB của số nhân = 0. Ngã ra B có  
giá trị của số bị nhân được làm trễ 1 bit (1 xung đồng hồ). Ngã ra C được làm trễ 2 bit và luôn  
bằng 0 (Giống như A). Ngã ra D giống như B nhưng trễ 3 bit. Điều này có thể so sánh với bài  
toán trên giấy  
Số bị nhân  
Số nhân  
1
1
0
1
0
0
1
1
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
A
B
C
D
Tích  
1
0
1
0
0
1
0
1
0
1
Muốn không sử dụng mạch cộng số nhiều bit, người ta dùng mạch (H 6.20)  
(H 6.20)  
Mạch (H 6.20) cần (n-1) mạch cộng và mạch trễ (FF D) cho số nhân n bit. Các cổng  
AND cho phép các bit của số bị nhân đi qua khi số nhân là 1, số bị nhân (với số bit bất kỳ)  
được cho vào mạch nối tiếp với bit LSB vào đầu tiên.  
Ngã ra cổng 4 sau 4 xung Clock là 1110. Ngã ra cổng 3 luôn luôn bằng 0.  
Mạch cộng A cộng số ngã ra 3 và ngã ra 4 bị trễ 1 bit:  
0
1
1
0
1
1
0
0
0
0
0
0
1
1
Tương tự mạch cộng B cộng số bị nhân với kết quả ở A được làm trễ 1 bit  
1
1
0
1
0
1
1
0
1
0
0
0
1
0
1
0
1
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 16  
và mạch cộng C  
0
1
1
0
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
Lưu ý là ở mạch (H 6.20) kết quả cho ở ngã ra mạch cộng C với bit LSB ra đầu tiên,  
tuy nhiên mạch này chưa quan tâm tới số nhớ.  
Mạch (H 6.21) cho kết quả với số nhớ .  
(H 6.21)  
Và (H 6.22) là một mạch thực tế dùng ghi dịch 4 bit có ngã vào/ra song song, một  
mạch cộng 4 bit và một chip 4 cổng AND 2 ngã vào để thực hiện bài toán nhân.  
(H 6.22)  
6.9 Mạch chia  
Nguyên tắc của phép chia số nhị phân là thực hiện phép so sánh một phần của số bị  
chia (số bit đầu tiên bằng với số bit của số chia) với số chia, nếu số bị chia lớn hơn số chia thì  
thương số =1, thực hiện phép trừ, ngược lại thì thương số =0, sau đó dịch trái phần còn lại của  
số bị chia một bit (hoặc dịch phải số chia 1 bit) rồi tiếp tục thực hiện bài toán so sánh giống  
như trên. Công việc được lặp lại cho đến khi chấm dứt.  
Sơ đồ (H 6.23) tóm tắt giải thuật thực hiện bài toán chia  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 17  
Dịch  
Yes  
No  
Số chia < Số bị  
chia ?  
Thương số =0,  
Không trừ  
Thương số = 1,  
Trừ số bị chia  
cho số chia  
Chia xong ?  
Yes  
No  
Kết thúc  
(H 6.23)  
6.9.1 Phép chia có phục hồi số bị chia  
Thay vì phải thực hiện việc so sánh, người ta làm phép tính trừ một phần số bị chia  
cho số chia, nếu kết quả dương, thương số là 1, nếu kết quả âm, thương số là 0, trong trường  
hợp này phải phục hồi lại số bị chia bằng cách cộng số bị chia cho số chia trước khi dịch số bị  
chia sang trái 1 bit (hoặc số chia sang phải) để tiếp tục lặp lại bài toán cho đến khi kết thúc.  
(H 6.24) là sơ đồ giải thuật thực hiện phép chia có phục hồi số bị chia.  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 18  
Dịch  
số bị chia - số chia  
Yes  
Kết quả  
dương ?  
No  
Thương sô = 1  
Thương sô = 0  
số bị chia + số chia  
Yes  
No  
Chia xong?  
Kết thúc  
(H 6.24)  
Để thực hiện phép chia theo sơ đồ trên, ngoài các thanh ghi để chứa các số bị chia, số  
chia , số thương người ta phải dùng thanh ghi chứa số bị chia được phục hồi.  
6.9.2 Phép chia không phục hồi số bị chia  
Hệ thống sẽ đơn giản hơn nếu chúng ta dùng phép chia không cần phục hồi số bị chia  
theo nguyên tắc như dưới đây.  
Quan sát giản đồ (H 6.24) ta thấy có 2 trường hợp:  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 19  
♦ Số chia lớn hơn số bị chia (nhánh bên phải)  
Lưu ý là dịch số chia về bên phải 1 bit tương đương với chia số đó cho 2  
Nhánh bên phải của sơ đồ trên gồm 2 bài toán:  
- Cộng số bị chia với số chia.  
- Trừ số bị chia cho 1/2 số chia (trừ bị chia cho số chia đã dịch phải)  
Hai bước này có thể gom lại thành một bước duy nhất như sau:  
- Cộng số bị chia với số chia đã dịch phải.  
♦ Số chia nhỏ hơn số bị chia (nhánh bên trái)  
Sau khi lấy kết quả =1, lệnh kế tiếp thực hiện là trừ số chia đã dịch phải.  
Từ các kết quả nhận xét trên có thể thay sơ đồ (H 6.24) bởi sơ đồ giải thuật thực hiện  
phép chia không cần phục hồi số bị chia (H 6.25)  
số bị chia - số chia  
No  
Ye s  
Kết quả  
dương ?  
Thương sô = 1  
Dịch  
Thương sô = 0  
Dịch  
số bị chia + số chia  
số bị chia - số chia  
Chia xong?  
No  
Kết thúc  
(H 6.25)  
Dựa vào sơ đồ (H 6.25), các bước thực hiện bài toán chia như sau:  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
_________________________________________________________________Chương 6  
Mạch làm toán VI - 20  
- Số chia (SC) lớn hơn số bị chia (SBC) (SBC - SC < 0), thương số là 0, dịch phải số  
chia 1 bit (thực tế ta mang thêm 1 bit của số bị chia xuống), thực hiện bài toán cộng số chia và  
số bị chia  
- Số chia nhỏ hơn số bị chia (SBC - SC > 0), thương số là 1, dịch phải số chia 1 bit,  
thực hiện bài toán trừ (cộng số bù 2) số bị chia cho số chia  
Để đơn giản, giả sử số chia và bị chia đều dương (MSB = 0), số bị chia gồm 6 bit và  
số chia gồm 4 bit.  
Thí dụ 1: Thực hiện bài toán chia 2110 = 0101012 cho 710 = 01112.  
Số bù 2 của 0111 là (0111)2 = 1001  
Ghi chú:  
(1) Số 1 trên mũi tên chỉ rằng kết quả phép toán trừ là số âm, bước kế tiếp là dời và  
cộng số chia  
(2) Số 0 trên mủi tên chỉ rằng kết quả phép toán trừ là số dương, bước kế tiếp là dời và  
trừ số chia (cộng số bù 2)  
Thương số có được từ các số tràn mà trên phép tính ta ghi trong vòng tròn.  
Kết quả: thương là 011(=3) và số dư là 0000(=0)  
Bài toán trên cho kết quả với 3 bước cộng/trừ. Tuy nhiên nếu ta chia 21 cho 1 thì cần  
tới 6 bước cộng trừ để có thương số 6 bit. Một cách tổng quát số bước của bài toán bằng với  
số bít của số bị chia.  
Ta có thể làm lại bài toán với 6 bước cộng/trừ ((thêm 3 bit 0 cho số bị chia)  
_______________________________________________________________  
Nguyễn Trung Lập  
KỸ THUẬT SỐ  
Tải về để xem bản đầy đủ
pdf 23 trang Mãnh Khiết 12/01/2024 17680 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật số - Chương 6: Mạch làm toán", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_ky_thuat_so_chuong_6_mach_lam_toan.pdf