Bài giảng Nhập môn mạch số - Chương 5: Mạch tổ hợp - Mạch tính toán số học - Hồ Ngọc Diễm

Tổng quan

Chương này sẽ học về:

- Một số mạch logic tổ hợp thông dụng

- Thiết kế các mạch logic tổ hợp phức tạp sử dụng

các mạch logic tổ hợp thông dụng

pdf 38 trang yennguyen 2320
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn mạch số - Chương 5: Mạch tổ hợp - Mạch tính toán số học - Hồ Ngọc Diễm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn mạch số - Chương 5: Mạch tổ hợp - Mạch tính toán số học - Hồ Ngọc Diễm

Bài giảng Nhập môn mạch số - Chương 5: Mạch tổ hợp - Mạch tính toán số học - Hồ Ngọc Diễm
1Chương 5 – phần 1
NHẬP MÔN MẠCH SỐ
Mạch tổ hợp:
Mạch tính toán số học
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2Tổng quan
Chương này sẽ học về:
- Một số mạch logic tổ hợp thông dụng
- Thiết kế các mạch logic tổ hợp phức tạp sử dụng 
các mạch logic tổ hợp thông dụng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
3Phân biệt mạch tổ hợp và tuần tự
Mạch tổ hợp
: : : :inputs outputs
Mạch tổ hợp
: :inputs outputs: :
M
e
m
o
ry
MẠCH TỔ HỢP
- Ngõ ra sẽ thay đổi 
lập tức khi ngõ 
vào thay đổi
MẠCH TUẦN TỰ
- Ngõ ra sẽ thay đổi 
phụ thuộc vào 
ngõ vào và trạng 
thái trước đó.
- Mạch có tính chất 
nhớ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
4Nội dung
1. Mạch cộng (Carry Ripple (CR) Adder)
2. Mạch cộng nhìn trước số nhớ - (Carry Look-Ahead (CLA) 
Adder)
3. Mạch cộng/ mạch trừ
4. Đơn vị tính toán luận lý (Arithmetic Logic Unit)
5. Mạch giải mã (Decoder)/ Mạch mã hoá (Encoder)
6. Mạch dồn kênh (Multiplexer)/ Mạch chia kênh (Demultiplexer)
7. Mạch tạo Parity/ Mạch kiểm tra Parity
8. Mạch so sánh (Comparator)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5Nội dung
1. Mạch cộng (Carry Ripple (CR) Adder)
2. Mạch cộng nhìn trước số nhớ - (Carry Look-Ahead (CLA) 
Adder)
3. Mạch cộng/ mạch trừ
4. Đơn vị tính toán luận lý (Arithmetic Logic Unit)
5. Mạch giải mã (Decoder)/ Mạch mã hoá (Encoder)
6. Mạch dồn kênh (Multiplexer)/ Mạch chia kênh (Demultiplexer)
7. Mạch tạo Parity/ Mạch kiểm tra Parity
8. Mạch so sánh (Comparator)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
61. Mạch cộng Carry Ripple (CR)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
7• Cộng 2 số 1 bit có 4 trường hợp
Mạch cộng 1 bit có tổng và số
nhớ như thế này được gọi là
mạch cộng bán phần (HA)
Mạch cộng bán phần (Half Adder)
Sơ đồ mạch
x
y
TổngSố nhớ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
8Mạch cộng nhị phân song song
• Cộng những số có 2 hoặc nhiều bit
– Cộng từng cặp bit bình thường
– Nhưng ở vị trí cặp bit i, có thể có carry-in từ bit i-1 
(Sẽ cộng vào vị trí kế tiếp)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9Thiết kế một bộ cộng toàn phần (Full Adder)
Bộ cộng toàn phần (FA)
– 3 ngõ vào (2 ngõ vào cho 2 số 1-bit cần tính tổng, 
và 1 ngõ vào cho số nhớ đầu vào (carry-in))
– 2 ngõ ra (1 ngõ ra cho tổng và 1 cho số nhớ đầu
ra (carry-out))
CuuDuongThanCong.com https://fb.com/tailieudientucntt
10
Thiết kế một bộ cộng toàn phần (Full Adder)
Bảng sự thật
Ký hiệu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
11
Thiết kế một bộ cộng toàn phần (Full Adder)
i i i iS x y c  
1i i i i i i ic x y x c y c 
1i OUTc c i INc c 
Bảng sự thật
CuuDuongThanCong.com https://fb.com/tailieudientucntt
12
Thiết kế một bộ cộng toàn phần (Full Adder)
Sơ đồ mạch
Ký hiệu
Ký hiệu khác
i i i iS x y c  
1i i i i i i ic x y x c y c 
1i OUTc c 
i INc c 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
13
Thiết kế một bộ cộng toàn phần (Full Adder)
i i i iS x y c   1 ( )i i i i i ic x y c x y 
• Sử dụng lại HA
Sơ đồ mạch FA sử dụng lại HA
Sơ đồ mạch HA
x
y
Sơ đồ mạch
CuuDuongThanCong.com https://fb.com/tailieudientucntt
14
Mạch cộng Carry Ripple (CR)
• Sơ đồ biểu diễn mạch cộng 4 bit song song sử
dụng full adder
CuuDuongThanCong.com https://fb.com/tailieudientucntt
15
Mạch cộng Carry Ripple 
• Mạch FA bắt đầu với việc cộng các cặp bit từ LSB 
đến MSB
– Nếu carry xuất hiện ở vị trí bit i, nó được cộng thêm
vào phép cộng ở vị trí bit thứ i+1
• Việc kết hợp như vậy thường được gọi là mạch
cộng Carry-Ripple
– vì carry được “ripple” từ FA này sang các FA kế tiếp
– Tốc độ phép cộng bị giới hạn bởi quá trình truyền số
nhớ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
16
Mạch cộng Carry Ripple 
• Mỗi FA có một khoảng trễ (delay), giả sử là Δt
• Độ trễ phụ thuộc vào số lượng bit 
– Carry-out ở FA đầu tiên C1 có được sau Δt
– Carry-out ở FA đầu tiên C2 có được sau 2Δt
=> Cn được tính toán sau nΔt
Mô hình carry look ahead (CLA) thường được sử dụng để cải thiện tốc độ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
17
2. Mạch cộng nhìn trước số nhớ
Carry Look-Ahead (CLA) Adder 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
18
Hiệu năng
• Tốc độ của mạch bị giới hạn bởi độ trễ lớn nhất dọc
theo đường nối trong mạch
– Độ trễ lớn nhất được gọi là critical-path-delay 
– Đường nối gây ra độ trễ đó gọi là critical path
CuuDuongThanCong.com https://fb.com/tailieudientucntt
19
Carry Look-Ahead Adder (CLA) 
• Cải thiện tốc độ mạch cộng bằng cách
– Tại mỗi tầng (stage), ta sẽ xác định nhanh giá trị
carry-in ở tầng cộng trước đó sẽ có giá trị 0 hay 1
 giảm critical-path-delay
CuuDuongThanCong.com https://fb.com/tailieudientucntt
20
• Hàm xác định carry-out ở lần cộng thứ i
ci+1= xiyi + xici + yici = xiyi + (xi + yi)ci
• Đặt gi = xiyi và pi = xi + yi => ci+1= gi + pici
 gi = 1 khi cả xi và yi đều bằng 1, không quan tâm ci
 g được gọi là hàm generate, vì carry-out luôn
được generate ra khi g=1
 pi = 1 khi xi = 1 hoặc yi = 1; carry-out = ci
 p được gọi là hàm propagate, vì carry-in = 1 
được propagate (truyền) ở tầng cộng thứ i
Carry Look-Ahead Adder (CLA)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
21
• Xác định carry-out của mạch cộng n bit
cn =gn-1 + pn-1cn-1
Mà cn-1=gn-2 + pn-2cn-2
cn=gn-1 + pn-1(gn-2 + pn-2cn-2)
• Tiếp tục khai triển đến lần cộng đầu tiên
cn=gn-1+pn-1gn-2+pn-1pn-2gn-3++pn-1pn-2.p1g0+pn-1pn-2.p1p0c0
Carry Look-Ahead Adder (CLA)
cn=gn-1 + pn-1gn-2 + pn-1pn-2cn-2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
22
Carry Look-Ahead Adder (CLA)
Số nhớ đầu vào c0
được truyền qua 
tất cả các lần cộng
Số nhớ sinh ra ở lần cộng
thứ 1 và được truyền qua 
các lần cộng còn lại
Số nhớ sinh ra ở lần cộng
thứ n-3 và được truyền qua 
các lần cộng còn lại
Số nhớ sinh ra ở lần cộng
thứ n-2 và được truyền qua 
các lần cộng còn lại
Số nhớ sinh ra ở 
lần cộng cuối cùng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
23
• Ví dụ: Trường hợp cộng 4 bit
C1 = G0 + P0.C0
C2 = G1 + P1.G0 + P1.P0.C0
C3 = G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.C0
C4 = G3 + P3.G2 + P3.P2.G1 + P3P2.P1.G0 + P3P2.P1.P0.C0
Carry Look-Ahead Adder (CLA)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
24
Mạch cộng Carry Ripple - critical path
Tổng quát, độ trễ 2n+1 cổng đối 
với mạch cộng Carry Ripple n-bit
Độ trễ 3 cổng đối với C1
Độ trễ 5 cổng đối với C2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
25
Mạch cộng CLA - critical path
C1 = G0 + P0.C0
C2 = G1 + P1.G0 + P1.P0.C0
Độ trễ 3 cổng đối với C1
Độ trễ 3 cổng đối với C2
Độ trễ 3 cổng đối với Cn
Độ trễ tổng cộng cho mạch cộng
CLA n-bit là độ trễ 4 cổng
- gi, pi: độ trễ 1 cổng
- Ci: độ trễ 2 cổng
- Độ trễ 1 cộng còn lại là do tính
tổng s 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
26
Mạch cộng CLA 
Cấu trúc của một tầng của mạch cộng CLA
CuuDuongThanCong.com https://fb.com/tailieudientucntt
27
Giới hạn của mạch cộng CLA
• Biểu thức tính carry trong mạch cộng CLA
cn=gn-1+pn-1gn-2+pn-1pn-2gn-3++pn-1pn-2.p1g0+pn-1pn-2.p1p0c0
CLA là giải pháp tốc độ cao (2 level AND-OR)
• Vấn đề Fan-in có thể hạn chế tốc độ của mạch 
cộng CLA
• Độ phức tạp tăng lên nhanh chóng khi n lớn
CuuDuongThanCong.com https://fb.com/tailieudientucntt
28
3 Adder/ Subtractor
CuuDuongThanCong.com https://fb.com/tailieudientucntt
29
Mạch cộng/ trừ
• X,Y là 2 số không dấu n-bit
Phép trừ: D = X - Y 
= X + (-Y) 
= X+ (Bù 2 của Y)
= X+ (Bù 1 của Y) + 1
= X+ Y’+ 1 
Phép cộng: S = X + Y
CuuDuongThanCong.com https://fb.com/tailieudientucntt
30
Mạch trừ
• Mạch cộng Carry Ripple có thể được dùng để xây
dựng mạch trừ Carry Ripple bằng cách đảo Y và đặt
số nhớ đầu tiên là 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
31
Tràn (Arithmetic Overflow)
• Overflow là khi kết quả của phép toán vượt
quá số bit biểu diễn phần giá trị
– n bit biểu diễn được số từ -2n-1 đến +2n-1-1 
– Overflow luôn luôn cho ra 1 kết quả sai
=> Mạch để xác định có overflow hay không
CuuDuongThanCong.com https://fb.com/tailieudientucntt
32
Ví dụ về arithmetic overflow
• Với số 4 bit, 3 bit giá trị và 1 bit dấu
• Overflow không xuất hiện khi cộng 2 số trái dấu
O
O
CuuDuongThanCong.com https://fb.com/tailieudientucntt
33
Arithmetic overflow
• Overflow có thể phát hiện được (từ ví dụ ở slide 
trước)
• Mạch cộng/ trừ có thể bổ sung mạch kiểm tra overflow 
với 1 cổng XOR
• Với n bit
Overflow = cn-1 cn
CuuDuongThanCong.com https://fb.com/tailieudientucntt
34
Ví dụ
• Thiết kế một mạch cộng/ trừ với 2 ngõ điều khiển
ADD và SUB
– ADD = 1: mạch cộng 2 số trong 2 thanh ghi A và B
– SUB = 1: mạch thực hiện phép trừ số B-A
Chú ý: 
Trong một lúc chỉ một trong hai ngõ ADD, SUB bằng 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
35
Ví dụ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
36
4 Arithmetic Logic Unit (ALU)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
37
ALU
• ALUs có thể thực thi nhiều toán tử và hàm logic 
khác nhau
– Các toán tử và hàm được xác định bởi một mã ngõ vào
Inputs
S2 S1 S0 Function
0 0 0 F = 0000
0 0 1 F = B – A – 1 + Cin
0 1 0 F = A – B – 1 + Cin
0 1 1 F = A + B + Cin
1 0 0 F = A B
1 0 1 F = A + B
1 1 0 F = A * B
1 1 1 F = 1111
CuuDuongThanCong.com https://fb.com/tailieudientucntt
38
Any question?
CuuDuongThanCong.com https://fb.com/tailieudientucntt

File đính kèm:

  • pdfbai_giang_nhap_mon_mach_so_chuong_5_mach_to_hop_mach_tinh_to.pdf