Chương 3: HỆ TỔ HP
I. Giới thiệu – Cách thiết kế hệ tổ hợp:
Mạch logic được chia làm 2 loại:
- Hệ tổ hợp (Combinational Circuit)
- Hệ tuần tự (Sequential Circuit).
Hệ tổ hợp là mạch mà các ngõ ra chỉ phụ thuộc vào giá
trị của các ngõ vào. Mọi sự thay đổi của ngõ vào sẽ làm ngõ ra
thay đổi theo.
Ngõ vào
(INPUT)
NguyenTrongLuat
CỔNG
LOGIC
Ngõ ra
(OUTPUT)
1
* Các bước thiết kế:
- Phát biểu bài toán.
- Xác định số biến ngõ vào và số biến ngõ ra.
- Thành lập bảng giá trị chỉ rõ mối quan hệ giữa ngõ vào
và ngõ ra.
Ngõ vào
Xn-1 … X1 X0
0
… 0 0
1
… 1 1
Ngõ ra
Ym-1 … Y1 Y0
- Tìm biểu thức rút gọn của từng ngõ ra phụ thuộc vào
các biến ngõ vào.
- Thực hiện sơ đồ logic.
NguyenTrongLuat
2
Vd: Thiết kế hệ tổ hợp có 3 ngõ vào X, Y, Z; và 2 ngõ ra F, G.
- Ngõ ra F là 1 nếu như 3 ngõ vào có số bit 1 nhiều hơn số bit
0; ngược lại F = 0.
- Ngõ ra G là 1 nếu như giá trị nhị phân của 3 ngõ vào lớn
hơn 1 và nhỏ hơn 6; ngược lại G = 0.
F XY
XY
00
01
11
10
Z
X Y Z
F G
1
0
0 0 0
0 0
1 1 1
0 0 1
0 0
1
0 1 0
0 1
XZ
YZ
0 1 1
1 1
F=XY+YZ+XZ
1 0 0
0 1
G XY
1 0 1
1 1
00 01 11 10
Z
1 1 0
1 0
1
1
0
1 1 1
1 0
XY
NguyenTrongLuat
1
1
1
XY
G=XY+XY= XY
3
F=XY+YZ+XZ
G=XY+XY= XY
X
Y
F
Z
G
NguyenTrongLuat
4
Trường hợp hệ tổ hợp không sử dụng tất cả 2n tổ hợp của ngõ
vào, thì tại các tổ hợp không sử dụng đó ngõ ra có giá trị tùy định.
Vd: Thiết kế hệ tổ
A B C D F2 F1 F0
hợp có ngõ vào biểu
0 0 0
0 0 0 0
diễn cho 1 số mã BCD.
0 0 1
0 0 0 1
Nếu giá trị ngõ vào
1 0 0
0 0 1 0
nhỏ hơn 3 thì ngõ ra có
0 0 0
0 0 1 1
giá trị bằng bình
0 0 1
0 1 0 0
phương giá trị ngõ
0 1 0
0 1 0 1
vào; ngược lại giá trị
0 1 1
0 1 1 0
ngõ ra bằng giá trị ngõ
1 0 0
0 1 1 1
vào trừ đi 3.
1 0 1
1 0 0 0
F2 = A + B C D + B C D
F1 = A D + B C D + B C D
F0 = A D + B D + A B C D
NguyenTrongLuat
1
1
1
1
1
1
1
0
0
0
1
1
1
1
0
1
1
0
0
1
1
1
0
1
0
1
0
1
1
X
X
X
X
X
X
1
X
X
X
X
X
X
0
X
X
X
X
X
X
5
II. Bộ cộng - trừ nhị phân:
1. Bộ cộng (Adder):
a. Bộ cộng bán phần (Half Adder – H.A):
Bộ cộng bán phần là hệ tổ hợp có nhiệm vụ thực hiện
phép cộng số học x + y (x, y là 2 bit nhị phân ngõ vào); hệ
có 2 ngõ ra: bit tổng S (Sum) và bit nhớ C (Carry).
x
S = xy + xy = xy
C= xy
S
H.A
y
C
x
x
0
0
1
1
y
0
1
0
1
NguyenTrongLuat
C
0
0
0
1
S
0
1
1
0
S
y
C
6
b. Bộ cộng toàn phần (Full Adder – F.A):
Bộ cộng toàn phần thực hiện phép cộng số học 3 bit x + y + z
(z biểu diễn cho bit nhớ từ vị trí có trọng số nhỏ hơn gởi tới)
S
xy
x
S
00 01 11 10
z
0
1
1
y F.A
z
1 1
C
x
y
z
C
S
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
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
NguyenTrongLuat
1
S = xyz + xyz +xyz+xyz
C
xy
00 01 11 10
z
0
1
1
1
1
1
C = xy +xz+yz
7
S =
=
=
S =
xyz + xyz +xyz+xyz
z (x y + x y) + z (x y + x y)
z (x y) + z (x y)
z (x y)
C = xy +xz+yz
= xy +xyz+xyz+xyz
= x y (1 + z) + z (x y + x y)
C = x y + z (x y)
x
y
S
C
z
NguyenTrongLuat
8
2. Bộ trừ (Subtractor):
a. Bộ trừ bán phần (Half Subtractor – H.S):
Bộ trừ bán phần có nhiệm vụ thực hiện phép trừ số
học x - y (x, y là 2 bit nhị phân ngõ vào); hệ có 2 ngõ ra: bit
hiệu D (Difference) và bit mượn B (Borrow).
x
D
D = xy + xy = xy
B = xy
H.S
y
B
x
x
0
0
1
1
y
0
1
0
1
NguyenTrongLuat
B
0
1
0
0
D
0
1
1
0
D
y
B
9
b. Bộ trừ toàn phần (Full Subtractor – F.S):
Bộ trừ toàn phần thực hiện phép trừ số học 3 bit x - y - z
(z biểu diễn cho bit mượn từ ví trị có trọng số nhỏ hơn)
D
xy
x
D
00 01 11 10
z
0
1
1
y F.S
z
1 1
B
x
y
z
B
D
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
1
0
0
0
1
0
1
1
0
1
0
0
1
NguyenTrongLuat
1
S = xyz + xyz +xyz+xyz
S = z (x y)
B
xy
00 01 11 10
z
0
1
1 1
1
1
C = xy +xz+yz
C = x y + z (x y)
10
3. Bộ cộng/trừ nhị phân song song:
a. Bộ cộng nhị phaân:
C3
+
C2
C1
M:
M3
M2
M1
M0
N:
N3
N2
N1
N0
S3
S2
S1
S0
C4
M3 N3
M2 N2
M1 N1
M0 N0
x y
x y
x y
x y
C
F.A
z
S
C3
C
F.A
z
C2
S
C
F.A
z
C1
C
F.A
S
S
S1
S0
z
C0
=0
74283
C4
S3
NguyenTrongLuat
S2
11
b. Bộ trừ nhị phân:
- Sử dụng các bộ trừ toàn phần F.S
- Thực hiện bằng phép cộng với bù 2 của số trừ
M – N = M + Bù_2(N) = M + Buø_1(N) + 1
M3 N3
M2 N2
M1 N1
M0 N0
x y
x y
x y
x y
C
C4
F.A
z
C3
C
F.A
z
C2
C
F.A
z
C1
C
F.A
S
S
S
S
S3
S2
S1
S0
NguyenTrongLuat
Kết quả: - C4 = 1 kết quả là số dương
- C4 = 0 kết quả là số âm
z
C0
=1
12
c. Bộ cộng/trừ nhị phân:
Phép toán C0
CỘNG
TRỪ
Ngõ vào điều khiển
Ni
Ni
T = 0: Cộng
T = 1: Trừ
C0 = T
yi = T Ni
M3 N3
M2 N2
M1 N1
M0 N0
x y
x y
x y
x y
C
C4
0
1
yi
F.A
z
C3
C
F.A
z
C2
C
F.A
z
C1
C
F.A
S
S
S
S
S3
S2
S1
S0
NguyenTrongLuat
z
T
C0
13
III. Hệ chuyển mã (Code Conversion):
- Hệ chuyển mã là hệ tổ hợp có nhiệm vụ làm cho 2 hệ thống
tương thích với nhau, mặc dù mỗi hệ thống dùng mã nhị
phân khác nhau.
Mã
nhị phân A
Hệ
chuyển
mã
Mã
nhị phân B
- Hệ chuyển mã có ngõ vào cung cấp các tổ hợp mã nhị phân A
và các ngõ ra tạo ra các tổ hợp mã nhị phân B. Như vậy, ngõ
vào và ngõ ra phải có số lượng từ mã bằng nhau.
NguyenTrongLuat
14
Vd: Thiết kế hệ chuyển mã từ mã BCD thành mã BCD quá 3.
A B C D
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
NguyenTrongLuat
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
W = A + B (C + D)
W X Y Z
0
0
0
0
0
1
1
1
1
1
X
X
X
X
X
X
0
1
1
1
1
0
0
0
0
1
X
X
X
X
X
X
1
0
0
1
1
0
0
1
1
0
X
X
X
X
X
X
1
0
1
0
1
0
1
0
1
0
X
X
X
X
X
X
X = B (C + D)
Y=C D
Z=D
A
W
B
C
X
D
Y
Z
15
IV. Bộ giải mã (DECODER):
1. Giới thiệu:
- Bộ giải mã là hệ chuyển mã có nhiệm vụ chuyển từ mã nhị
phân cơ bản n bit ở ngõ vào thành mã nhị phân 1 trong m ở
ngõ ra.
Mã
nhị phân
X0
Y0
X1
Y1
Xn-1
Ym-1
Mã
1 trong m
m = 2n
- Với giaù trị i của tổ hợp nhị phân ở ngõ vào, thì ngõ ra Yi
sẽ tích cực và các ngõ ra còn lại sẽ không tích cực.
- Có 2 dạng: ngõ ra tích cực cao (mức 1) và ngõ ra tích cực
thấp (mức 0).
NguyenTrongLuat
16
a. Bộ giải mã ngõ ra tích cực cao:
X0 (LSB)
Y0
Y1
Y2
X1
Y3
Y0 = X1 X0 = m0
Y3 Y2 Y1 Y0
0
0
1
1
0
0
0
1
0
1
0
1
0
0
1
0
0
1
0
0
1
0
0
0
Y0
Y1 = X1 X0 = m1
X0
Y2 = X1 X0 = m2
Y3 = X1 X0 = m3
X1 X0
X1
Ngoõ ra: Yi = mi
Y1
Y2
Y3
(i = 0, 1, .., 2n-1)
NguyenTrongLuat
17
b. Bộ giải mã ngõ ra tích cực thấp:
X0 (LSB)
Y0
Y1
Y2
X1
Y3
Y0 = X1 + X0 = M0 = m0
Y1 = X1 + X0 = M1 = m1
Ngoõ ra: Yi = Mi
Y3 Y2 Y1 Y0
0
0
1
1
1
1
1
0
0
1
0
1
1
1
0
1
1
0
1
1
0
1
1
1
Y0
X0
Y2 = X1 + X0 = M2 = m2
Y3 = X1 + X0 = M3 = m3
X1 X0
X1
Y1
Y2
Y3
(i = 0, 1, .., 2n-1)
NguyenTrongLuat
18
c. Bộ giải mã có ngõ vào cho phép:
- Ngoài các ngõ vào dữ liệu, bộ giải mã có thể có 1 hay
nhiều ngõ vào cho phép.
- Khi các ngõ vào cho phép ở trạng thái tích cực thì mạch
giải mã mới được hoạt động. Ngược lại, mạch giải mã sẽ không
hoạt động; khi đó các ngõ ra đều ở trạng thái không tích cực.
X0 (LSB) Y0
Y0
Y1
X1
X0
Y2
EN
Y3
EN X1 X0
Y3 Y2 Y1 Y0
0
1
1
1
1
0
0
0
0
1
X
0
0
1
1
X
0
1
0
1
NguyenTrongLuat
Y1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
X1
Y2
Y3
EN
19
2. IC giải mã:
a. IC 74139: gồm 2 bộ giải mã 2 sang 4 ngõ ra tích cực thấp
2
3
1
14
13
15
1A (LSB)
1Y0
4
1B
1Y1
5
1Y2
6
1G
1Y3
7
2A (LSB)
2Y0
12
2B
2Y1
11
2Y2
10
2Y3
9
2G
NguyenTrongLuat
G
B A
Y3 Y2 Y1 Y0
1
0
0
0
0
X
0
0
1
1
1
1
1
1
0
X
0
1
0
1
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
20
b. IC 74138: bộ giải mã 3 sang 8 ngõ ra tích cực thấp
1
2
3
A (LSB)
B
C
Y0
15
Y1
14
Y2
Y3
6
5
4
G1
G2A
G2B
NguyenTrongLuat
13
12
Y4
11
Y5
10
Y6
9
Y7
7
G1 G2A G2B C B A Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 X
X 1
X X
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
X
X
1
0
0
0
0
0
0
0
0
X
X
X
0
0
0
0
1
1
1
1
X
X
X
0
0
1
1
0
0
1
1
X
X
X
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
21
3. Sử dụng bộ giải mã thực hiện hàm Boole:
Ngõ ra của bộ giải mã là minterm (ngõ ra tích cực cao)
hoặc maxterm (ngõ ra tích cực thấp) của n biến ngõ vào. Do
đó, ta có thể sử dụng bộ giải mã thực hiện hàm Boole theo
dạng chính tắc.
74138
Y0
F1 (x, y, z) = (2, 5, 7)
z
A (LSB)
F2
Y1
= m2 + m5 + m7
y
B
= M2 + M5 + M7
Y2
x
C
= M2 M5 M7
Y3
F2 (x, y, z) = (0, 1, 4)
= M0 M1 M4
NguyenTrongLuat
1
G1
0
G2A
0
G2B
Y4
Y5
F1
Y6
Y7
22
V. Bộ mã hóa (ENCODER):
1. Giới thiệu:
- Encoder là hệ chuyển mã thực hiện hoạt động ngược lại với
decoder. Nghóa là encoder có m ngõ vào theo mã nhị phân 1
trong m và n ngõ ra theo mã nhị phân cơ bản (với m ≤ 2n).
- Với ngõ vào Ii được tích cực thì ngõ ra chính là tổ hợp giá trị
nhị phân i tương ứng.
Z 1 = I3 + I 2
Z 0 = I3 + I 1
I0
I1
(LSB) Z0
I2
Z1
I3
I3
I3 I2 I1 I0
0
0
0
1
0
0
1
0
0
1
0
0
NguyenTrongLuat
1
0
0
0
Z1 Z 0
0
0
1
1
0
1
0
1
I2
I1
Z1
Z0
23
* Bộ mã hóa có ưu tiên (Priority Encoder):
Bộ mã hóa có ưu tiên là mạch mã hóa sao cho nếu có nhiều
hơn 1 ngõ vào cùng tích cực thì ngõ ra sẽ là giá trị nhị phân
của ngõ vào có ưu tiên cao nhất.
Z 1 = I3 + I 2
I0
Z 0 = I3 + I 2 I 1
(LSB) Z0
I1
V = I 3 + I2 + I 1 + I 0
Z
1
I2
V
I3
I3
Z1
I2
I3 I 2 I 1 I 0
Z 1 Z0 V
0
0
0
0
1
X
0
0
1
1
0
0
0
1
X
0
0
1
X
X
0
1
X
X
X
X
0
1
0
1
0
1
1
1
1
Thứ tự ưu tiên: I3 I2 I1 I0
NguyenTrongLuat
I1
Z0
V
I0
24
2. IC mã hóa ưu tiên 8 3 (74148):
5
4
3
2
1
13
12
11
10
EI I7 I6 I5 I4 I3 I2 I1 I0
EI
I7
I6
I5
I4
I3
I2
I1
I0
A2
A1
(LSB)A0
6
GS
EO
14
NguyenTrongLuat
7
9
15
1
0
0
0
0
0
0
0
0
0
X
0
1
1
1
1
1
1
1
1
X
X
0
1
1
1
1
1
1
1
X
X
X
0
1
1
1
1
1
1
X
X
X
X
0
1
1
1
1
1
X
X
X
X
X
0
1
1
1
1
X
X
X
X
X
X
0
1
1
1
X
X
X
X
X
X
X
0
1
1
X
X
X
X
X
X
X
X
0
1
A2 A1 A0 GS EO
1
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
25