Chương 2.<br />
Mức logic số<br />
Đại cương mạch số<br />
Mạch tổ hợp<br />
Mạch tuần tự<br />
Thanh ghi và bộ nhớ<br />
<br />
Thông tin nhị phân biểu diễn = tín hiệu điện cao thấp.<br />
Thao tác trên thông tin nhị phân thực hiện bằng cổng<br />
<br />
2. Cổng luận lý:<br />
mạch số gồm 1 hoặc nhiều ngõ nhập và 1 ngõ xuất.<br />
Các cổng cơ bản (h 1.2 / h 4): ký hiệu, bảng chân trị<br />
<br />
2.1 Mạch số<br />
1. Đại cương<br />
Là mạch điện tử hoạt động ở 2<br />
mức điện áp: cao (1) và thấp (0)<br />
Bóng điện tử / Transistor<br />
Bảng mạch in, Mạch tích hợp,<br />
Chip: DIP / PGA / PQFP<br />
SSI: small (vài chục)<br />
MSI: medium (vài trăm)<br />
LSI: large (vài ngàn)<br />
VLSI: very large<br />
<br />
3. Đại số Bool<br />
Đại số Bool<br />
Nghiên cứu các mệnh đề luận lý (1 trong 2 trị: Đ hoặc S)<br />
Bốn phép tính luận lý cơ bản: Not, And, Or, Xor<br />
Có sự tương ứng giữa mạch số và hàm Bool<br />
Vẽ mạch số ứng với hàm: F = A + B’ C<br />
<br />
Phân tích thiết kế mạch số:<br />
Lập bảng chân trị - Biểu diễn dạng đại số<br />
Tìm mạch đơn giản bằng PP biến đổi đại số Bool<br />
<br />
A<br />
0<br />
0<br />
0<br />
0<br />
1<br />
1<br />
1<br />
1<br />
<br />
B<br />
0<br />
0<br />
1<br />
1<br />
0<br />
0<br />
1<br />
1<br />
<br />
C<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
<br />
Y<br />
0<br />
0<br />
1<br />
1<br />
0<br />
1<br />
0<br />
0<br />
<br />
VD1: Thiết kế mạch số với bảng chân trị.<br />
Từ các trị 1, xây dựng các tích cơ bản<br />
Lập hàm Bool bằng tổng các tích cơ bản<br />
(Vẽ mạch số)<br />
Đơn giản hàm Bool bằng PP đại số<br />
(Vẽ mạch số)<br />
Mở rộng: Thêm trị 1 tại 111<br />
VD2: Đơn giản mạch<br />
Y = A B’ + A B<br />
<br />
4. Bản đồ Karnaugh<br />
Phương pháp bản đồ để đơn giản biểu thức Bool<br />
<br />
Các khái niệm:<br />
Bản đổ Karnaugh - Các ô liền kề (chỉ có 1 biến khác nhau)<br />
<br />
Bước 0: Chuẩn bị bản đồ K với số biến phù hợp<br />
Bước 1: Chuyển các giá trị 1 của bản chân trị vào bản đồ<br />
Bước 2: Xây dựng các nhóm<br />
Kích thước 2k, với k = n, n – 1, n – 2, ... 1 (giảm dần từ n đến 1)<br />
Sao cho không có nhóm con (nằm trọn trong nhóm lớn hơn)<br />
Xét loại nhóm thừa (bỏ đi không ảnh hưởng đến kết quả)<br />
(Liên quan đến khái niệm phủ tối tiểu trong Toán rời rạc)<br />
<br />
Bước 3: Tạo biểu thức (là tổng các tích)<br />
Mỗi nhóm kích thước 2k là một tích với số phần tử (n – k)<br />
Chiếu lên từng cạnh<br />
<br />
1<br />
<br />
2.2 Mạch tổ hợp<br />
1. Đại cương<br />
<br />
Bài tập:<br />
1, 2, 3, 4, 5, 6,<br />
Bản đồ Karnaugh: 7, 8 (tr.21)<br />
<br />
Gồm 1 số cổng luận lý kết nối với nhau,<br />
với 1 tập các ngõ vào (n) các ngõ ra (m)<br />
<br />
Xác định bằng bảng chân trị<br />
(n biến nhập, m biến xuất)<br />
<br />
Mô tả bằng:<br />
Lược đồ logic - Lược đồ khối (h 2.1)<br />
VD: lược đồ logic (a), lược đồ khối (b), bảng chân trị (c)<br />
<br />
2. Mạch cộng:<br />
Cộng 2 ký số nhị phân<br />
a. Mạch nửa cộng (Half Adder)<br />
Gồm 2 ngõ vào (x, y) và 2 ngõ ra (S: sum, C: carry)<br />
(h 2.2) lược đồ logic (a), lược đồ khối (b), bảng chân trị (c)<br />
<br />
b. Mạch toàn cộng (Full Adder)<br />
Cộng thêm bit nhớ<br />
Gồm 3 ngõ vào (x, y, z) và 2 ngõ ra (S và C)<br />
(gồm 2 mạch nửa cộng và 1 cổng OR) (h 2.4)<br />
<br />
3. Mạch giải mã và mã hóa<br />
Đổi thông tin mã hóa nhị phân thành thông thường<br />
1012 =<br />
<br />
510<br />
<br />
a. Mạch giải mã:<br />
Gồm n ngõ vào và m ngõ ra (m ≤ 2n)<br />
(Ngõ cho phép nhập: E – Enable)<br />
Mạch giải mã 3 – 8 (h 2.5)<br />
<br />
Mạch giải mã dùng cổng NAND (h 2.6 / h 5)<br />
<br />
2<br />
<br />
(Ứng dụng của mạch giải mã)<br />
<br />
Mở rộng mạch giải mã (h 2.7)<br />
<br />
Chọn thanh ghi theo tín hiệu mã thanh ghi từ CU<br />
<br />
A2<br />
0<br />
0<br />
0<br />
0<br />
1<br />
1<br />
1<br />
1<br />
<br />
b. Mạch mã hóa:<br />
<br />
Còn gọi là mạch chọn dữ liệu<br />
Chọn thông tin nhị phân từ 1 trong 2n ngõ nhập đưa ra<br />
ngõ xuất. Việc chọn dựa theo n ngõ nhập chọn.<br />
<br />
Thiết kế:<br />
Hãy vẽ mạch giải mã 2 – 4<br />
Ý nghĩa của cổng AND (dẫn thông tín hiệu: x * 1 = x),<br />
mỗi thời điểm chỉ có 1 cổng thông<br />
Đưa ngõ vào chọn cho từng cổng AND<br />
Kết luận: MUX tạo từ mạch giải mã n – 2n, thêm 2n đường<br />
nhập (h 2.8)<br />
<br />
(Ứng dụng: biến tín hiệu<br />
ngắt thành số hiệu thiết<br />
bị phát sinh ngắt)<br />
<br />
số nhị phân 3 bit:<br />
a2 a1 a0 (2) = a2.22 + a1.21 + a0.20 (10)<br />
= a2.22 (10) + (a1.21 + a0.20) = a2.4 + a1 a0 (2)<br />
<br />
0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
<br />
a. Mạch dồn (MUX)<br />
<br />
Tích các tổng (Product of<br />
Sum – POS)<br />
thay vì<br />
Tổng các tích (Sum of<br />
Product – SOP)<br />
<br />
Xét bảng chân trị<br />
<br />
A0 Y<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
<br />
4. Mạch dồn và mạch phân<br />
<br />
Ngược lại với giải mã<br />
(h 7)<br />
Thiết kế bằng phương<br />
pháp phân tích<br />
<br />
Mở rộng mạch giải mã:<br />
Xây dựng mạch giải mã<br />
từ các mạch giải mã<br />
có kích thước nhỏ hơn.<br />
VD: MUX 3 – 8 từ các MUX 2 - 4<br />
Giải thích:<br />
<br />
A1<br />
0<br />
0<br />
1<br />
1<br />
0<br />
0<br />
1<br />
1<br />
<br />
a2<br />
<br />
a1<br />
<br />
a0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
2<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
3<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
4<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
5<br />
<br />
1<br />
<br />
1<br />
<br />
0<br />
<br />
6<br />
<br />
1<br />
<br />
1<br />
<br />
1<br />
<br />
7<br />
<br />
b. Mạch phân (DEMUX)<br />
Nhận 1 ngõ nhập và phân bổ nó đến 1 trong nhiều (2n)<br />
vị trí xác định.<br />
(h 8 mạch dồn 4 – 1 và mạch phân 1 – 4)<br />
********************<br />
<br />
3<br />
<br />
Ứng dụng mạch dồn và mạch phân:<br />
Dẫn thông tin theo 1 đường truyền dữ liệu chung. (h10)<br />
<br />
Bài tập: 1, 2, 3, 6 (tr. 31 và 32)<br />
<br />
Chuyển tín hiệu 102 cho mạch dồn và 002 cho mạch phân<br />
<br />
3<br />
2x4<br />
Decoder<br />
<br />
E<br />
3<br />
E<br />
3<br />
E<br />
3<br />
E<br />
<br />
3x8<br />
8<br />
Decoder<br />
3x8<br />
8<br />
Decoder<br />
3x8<br />
8<br />
Decoder<br />
3x8<br />
8<br />
Decoder<br />
<br />
2.3 Mạch tuần tự<br />
Tổng quát<br />
Các hệ thống số đều cần có thành phần lưu trữ<br />
Ngõ ra có thể phụ thuộc ngõ vào trước đó (mạch có nhớ)<br />
<br />
Tuần tự đồng bộ hóa bằng xung đồng hồ.<br />
<br />
Mạch lật (Flip Flop – FF)<br />
<br />
Mạch lật SR (Set – Reset)<br />
(xem bảng đặc tính)<br />
Mạch lật D (Data)<br />
Thêm cổng đảo giữa S và R<br />
(h 3.1 và 3.2) (thêm h 10)<br />
<br />
S<br />
<br />
R<br />
<br />
Q(t+1)<br />
<br />
0<br />
<br />
0<br />
<br />
Q(t)<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
1<br />
<br />
?<br />
<br />
Mạch tuần tự đơn gián nhất, lưu 1 bit nhị phân<br />
Có 2 ngõ ra: trị bình thường (Q), trị bù (Q’)<br />
Bảng đặc tính: Q(t): tr thái hiện tại, Q(t+1): tr thái kế<br />
Phân loại:<br />
Số ngõ vào<br />
Cách thức các ngõ vào tác động đến ngõ ra.<br />
<br />
Mạch lật lề (h 3.5)<br />
Mạch lật JK (J K)<br />
Gồm 2 mạch lật: chủ và tớ<br />
Q(t+1) = Q’(t) khi J = K = 1<br />
<br />
Mạch lật T (Toggle)<br />
2 ngõ vào J, K kết nối thành T (J = K = T)<br />
<br />
(h 3.3 và 3.4)<br />
<br />
4<br />
<br />
Mạch tuần tự<br />
Kết nối mạch lật với các cổng. Ví dụ: h 3.7<br />
Bảng kích thích (tự xem)<br />
Bảng liệt kê các tổ hợp nhập cần có để tạo ra 1 thay đổi<br />
trạng thái yêu cầu.<br />
Gồm 2 cột Q(t) và Q(t+1) và một cột cho mỗi ngõ vào<br />
Ký hiệu X: điều kiện không cần (hoặc tùy chọn): vì có 2<br />
cách chuyển tiếp<br />
S<br />
<br />
R<br />
<br />
Q(t+1)<br />
<br />
Q(t) Q(t+1)<br />
<br />
S<br />
<br />
R<br />
<br />
0<br />
<br />
0<br />
<br />
Q(t)<br />
<br />
0<br />
<br />
0<br />
<br />
0<br />
<br />
X<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
0<br />
<br />
0<br />
<br />
1<br />
<br />
1<br />
<br />
1<br />
<br />
?<br />
<br />
1<br />
<br />
1<br />
<br />
X<br />
<br />
0<br />
<br />
Phương trình nhập mạch lật:<br />
Biểu thức Bool mô tả mạch tổ hợp tạo ngõ nhập cho<br />
các mạch lật<br />
<br />
Bảng trạng thái mạch lật:<br />
Gồm 4 phần: (bảng 3.2)<br />
trạng thái hiện hành, nhập, trạng thái kế, xuất<br />
<br />
Qui trình thiết kế mạch tuần tự:<br />
Chuyển đặc tả sang lược đồ trạng thái<br />
Chuyển lược đồ trạng thái sang bảng trạng thái<br />
Xây dựng lược đồ luận lý từ bảng trạng thái<br />
Ví dụ: mạch đếm nhị phân<br />
<br />
Lược đồ trạng thái<br />
Thể hiện bằng hình ảnh của bảng trạng thái (h 3.8)<br />
Hình tượng các chuyển tiếp trạng thái, giúp hiểu<br />
hoạt động của mạch.<br />
<br />
2.4 Thanh ghi và bộ nhớ<br />
Bài tập 8, 9, 10, (11)<br />
<br />
Thanh ghi (Register)<br />
Lưu nhiều (n) bit, gồm n mạch lật. Lưu dữ liệu và<br />
cung cấp cho các mạch khác.<br />
Ví dụ: 4.1<br />
<br />
Điều khiển việc chuyển thông tin bằng cổng.<br />
Các thanh ghi đặc biệt:<br />
Mạch đếm (Counter)<br />
Thanh ghi dịch (Shift register)<br />
<br />
5<br />
<br />