CHƯƠNG 3 : CỔNG LOGIC & MẠCH SỐ
3.13 ĐƠN GIẢN HÀM BOOL BẰNG PHƯƠNG PHÁP ĐẠI SỐ
Một biểu thức Bool có thể được đơn giản để trở thành một biểu thức chứa ít nhất các số hạng và các biến do đó có thể thực hiện mạch logic với số cổng ít nhất.
Để minh họa, mạch hình 3-15 có thể đơn giản thành mạch 3-16. Rõ ràng rằng việc thực hiện mạch theo 3-16 đơn giản hơn 3-15 nhiều.
Hình 3-15
Hình 3-16
Có 3 phương pháp đơn giản mạch logic.
• Đơn giản bằng phương pháp đại số
• Đơn giản bằng phương pháp bảng Karnaugh
• Đơn giản bằng phương pháp Mc Cluskey
Trong khn khổ của giáo trình này chúng ta sẽ chỉ xem xét phương pháp đại số. Để đơn giản mạch bằng phương pháp đại số ta dùng các định lý của đại số Bool, định lý De Morgan và theo 2 bước sau đây:
• Viết biểu thức dưới dạng tổng của các số hạng AND của các biến.
• Nhóm và ước lược các số hạng nếu có thể để thu được biểu thức cuối cùng đơn giản nhất.
Ví dụ 1: Đơn giản biểu thức F = ABC + A B (A C) Khai triển biểu thức thành tổng các số hạng AND như sau:
= ABC + ABA + ABC = ABC + AB + A B C = AC(B + B) + AB = AC + AB = A( C+ B)
Ví dụ 2: Đơn giản biểu thức F = ABC + ABC + A B C Coù 2 cách để đơn giản biểu thức này
Caùch 1: F = AB ( C+ C ) + ABC
= AB + ABC = A( B + B C) = A(B + C)
Cách 2: Có thể viết lại biểu thức dưới dạng sau: F = ABC + ABC + ABC + ABC
= AB ( C+C) + AC ( B+B) = A( B+C)
3.14 CÁC MẠCH SỐ
Phần cứng máy tính được xây dựng từ các mạch logic tổ hợp mà chúng được cấu tạo từ các cổng logic. Trong máy tính, các cổng logic được dùng để tạo ra các mạch chức năng mà nòng cốt là các thiết bị sau:
♦ Flip- flop (FF)
♦ Mạch đếm (Counter)
♦ Thanh ghi (Register).
Phần sau đây sẽ trình bày một cách sơ lược các thiết bị này.
3.15 FLIP - FLOP
Thiết bị cơ bản để lưu giữ thơng tin trên máy tính là Flip-flop (FF). Có nhiều loại FF và mạch thực hiện chúng. FF có các đặc điểm sau.
• FF là thiết bị mà lối ra của nó (X hoặc X ) có 2 trạng thái bền là trạng thái 0 (0 state) và trạng thái 1 (1 state). Nhờ tính chất này mà FF có thể nhớ hay lưu giữ 1 bit thông tin.
• FF có thể có nhiều lối vào và 2 lối ra mà trạng thái logic của chúng phủ định lẫn nhau. Hình 3-17 là sơ đồ khối của một FF có tên gọi là FF RS.
X
X Hình 3-17: FF RS
FF RS có 2 lối vào là R và S, 2 lối ra là X vaø X.
Để mơ tả và phân tích hoạt động của FF, chúng ta sử dụng các quy ước sau đây.
♦ Mỗi FF có một tên. Tên thường dùng là một chữ cái như X, Y, A hay B. Flip Flop trên hình 3-17 gọi là FF X.
♦ FF X có 2 lối ra là X và X mà chúng có trạng thái logic ln ln phủ định nhau.
R
S
♦ Trạng thái của FF là trạng thái của X. Như vậy nếu lối ra X =1, chúng ta nói rằng FF X là ở trạng thái 1. Tương tự nếu X =0, chúng ta nói FF X ở trạng thái 0.
Có 2 lối vào trên FF RS. Những lối vào này để điều khiển trạng thái của FF, chúng ta gọi chúng là các lối vào điều khiển .
Các lối vào điều khiển ảnh hưởng đến trạng thái ra của FF như bảng sự thật sau. S R X 1 0 1 0 0 giữ 0 1 0 1 1 caám
Lối vào S là lối vào đặt (Set), cịn lối vào R là lối vào xóa (Reset). RS FF dùng 2 cổng NOR mắc theo sơ đồ hình 3-18.
Hình 3-18: FF RS
3.16 ĐỒNG HỒ VÀ FF CĨ ĐỒNG HỒ
a) Khái niệm đồng hồ
Các hệ thống số có thể hoạt động ở chế độ đồng bộ (Synchronously) hoặc chế độ không đồng bộ (Asynchronously). Trong hệ thống không đồng bộ, lối ra của mạch logic có thể thay đổi trạng thái tại một thời điểm bất kỳ khi có sự thay đổi của lối vào điều khiển. Trong hệ thống đồng bộ, lối ra của mạch logic chỉ thay đổi trạng thái khi và chỉ khi có một tín hiệu chung gọi là đồng hồ (Clock). Tín hiệu đồng hồ là một chuỗi xung hình vng như hình vẽ 3-19.
Hình 3-19: Tín hiệu đồng hồ
Lối ra của các hệ thống đồng bộ chỉ thay đổi trạng thái khi có sự chuyển (transition) của tín hiệu đồng hồ. Sự chuyển trạng thái chỉ ra trên hình vẽ 3-20.
Hình 3-20: Xung đồng hồ với các sườn chuyển PGT và NGT
Khi đồng hồ thay đổi từ 0 lên 1 gọi là sự chuyển mức dương (positive going transition - PGT). Khi đồng hồ chuyển từ 1 về 0 gọi là sự chuyển mức âm (negative going transition - NGT).
b) FF có đồng hồ (Clocked Flip - Flops)
Trong FF có đồng hồ, ngồi các đầu vào điều khiển cịn có lối vào đồng hồ, gọi là CLK, CK hoặc CP.
Đồng hồ có thể làm cho lối ra chuyển trạng thái tại PGT hoặc NGT. Nếu đồng hồ tác động ở PGT ta vẽ tín hiệu đồng hồ đi thẳng với 1 mũi tên. Nếu đồng hồ tác động ở NGT ta vẽ dấu trịn trước mũi tên như hình vẽ 3-21.
Hình 3-21: FF có đồng hồ tác động ở sườn âm
• FF SC có đồng hồ
Hình vẽ 3-22 là sơ đồ FF SC có đồng hồ loại PGT
Hình 3-22: Sơ đồ khơí FF SC
Bảng sự thật cho FF SC có đồng hồ tác dụng ở sườn dương như sau.
S C CLK X
0 0 No change 1 0 1
0 1 0
1 1 Ambiguous
Bảng sự thật cho FF SC có đồng hồ tác dụng ở sườn âm như sau.
S C CLK X
0 0 No change
1 0 1 0 1 0
• FF JK có đồng hồ
Hình 3-23 chỉ ra sơ đồ một FF JK hoạt động ở sườn dương của đồng hồ. Các lối vào điều khiển J K có vai trị giống như các lối vào S C của FF SC. Chỉ có một điều khác biệt là khi J=K=1 thì FF JK liên tục thay đổi trạng thái khi có xung đồng hồ.
Hình 3-23: FF JK Bảng sự thật cho FF JK nhö sau: J K CLK X 0 0 No change 1 0 1 0 1 0 1 1 Toggles Cũng có FF JK kích bằng sườn âm của xung đồng hồ.
• FF D (delay FF)
Hình 3-24 chỉ ra ký hiệu và bảng sự thật của FF D kích bằng sườn dương của xung đồng hồ.
D CLK Q
1 1 0 0
Hình 3-24: FF D
Không giống như FF JK, FF D chỉ có một lối vào điều khiển đồng bộ là D (data). Hoạt động của FF D rất đơn giản: Q sẽ nhận giá trị của D trước khi có đồng hồ.
FF D có thể làm từ FF SC hoặc FF JK bằng cách sử dụng một cổng đảo như hình vẽ 3-25.
Hình 3-25: FF D từ SC FF
c) Các lối vào khơng đồng bộ
Trong các FF chúng ta đãõ xem xét trước đây, các lối vào S, C, J, K, D gọi là các lối vào điều khiển (control inputs). Những lối vào này còn gọi là lối vào đồng bộ (synchronous inputs) bởi vì ảnh hưởng của chúng lên lối ra đồng bộ với lối vào đồng hồ. Hầu hết các FF có một hay nhiều lối vào khơng đồng bộ (asynchronous inputs) mà hoạt động của chúng không phụ thuộc vào đồng hồ và các tín hiệu vào đồng bộ. Những tín hiệu này dùng để đặt FF lên 1 hoặc xóa FF về 0 tại một thời điểm bất kỳ không phụ thuộc vào trạng thái của các lối vào khác.
Hình 3-26 là sơ đồ FF JK có 2 lối vào bất đồng bộ là DC SET vaø DC CLEAR Hai lối vào này đều tác động thấp. Người ta dùng các ký hiệu sau để chỉ các lối vào không đồng bộ .
DC SET, SET Direct (SD), PRESET (PRE): đặt 1 cho FF
DC CLEAR, CLEAR Direct (CD) hay CLEAR (CLR): xoá về 0 cho FF
Hình 3-26: FF JK với các lối vào điều khiển không đồng bộ
3.17 ỨNG DỤNG CỦA FF
a)Lưu trữ và truyền số liệu:
FF thường được dùng để lưu trữ và truyền số liệu. Các số liệu có thể ở dạng nhị phân, BCD. Các số liệu có thể được lưu trữ trên một nhóm các FF gọi là thanh ghi (register). Số lượng bit trên 1 thanh ghi bằng số FF.
Hoạt động thường xuyên đối với số liệu được lưu giữ trên thanh ghi là chuyển số liệu. Việc chuyển số liệu bao gồm chuyển số liệu giữa các FF hoặc giữa các thanh ghi với nhau. Hình 3-27 là mạch truyền số liệu giữa các FF loại SC, JK và D. Trong từng trường hợp, giá trị nhị phân được lưu giữ trong thanh ghi A được truyền cho thanh ghi B tại PGT của xung chuyển ( transfer pulse).
Hình 3-27: Truyền số liệu nối tiếp giữa các thanh ghi
Hình 3-28 là sơ đồ truyền số liệu song song giữa hai thanh ghi X và Y. Mỗi thanh ghi coù 3 bit. Mạch này gọi là mạch chuyển số liệu song song (parallel transfer) do X1X2X3 được chuyển đồng thời đến Y1Y2Y3. Nếu việc chuyển nối tiếp được thực hiện thì nội dung của thanh ghi X được chuyển từng bit một cho thanh ghi Y.
Hình 3-28: Truyền số liệu song song giữa 2 thanh ghi 3 bit
Truyền số liệu nối tiếp . Thanh ghi dịch
Hình 3-29 là một thanh ghi dịch (shift register) 4 bit. Số liệu được truyền theo kiểu nối tiếp trong thanh ghi khi có xung chuyển.
Thanh ghi dịch này được tổ chức từ 4 FF JK. Data được đưa vào FF đầu tiên. Giả sử ban đầu trạng thái của thanh ghi là 0000. Xung đồng hồ đầu tiên dữ liệu được truyền tới FF thứ nhất. Sau 3 xung đồng hồ, dữ liệu được chuyển đến FF cuối cùng .
Hình 3-30 là sơ đồ truyền số liệu nối tiếp giữa thanh ghi X vaø thanh ghi Y. Sau mỗi xung đồng hồ dữ liệu được dịch sang phải 1 bit như bảng sau:
X2 X1 X0 Y2 Y1 Y0
1 0 1 0 0 0 Trước khi coù xung đồng hoà 0 1 0 1 0 0 Sau xung thứ nhaát
0 0 1 0 1 0 Sau xung thứ hai 0 0 0 1 0 1 Sau xung thứ ba
Hình 3-30: Truyền số liệu nối tiếp giữa 2 thanh ghi 3 bit
b) Mạch đếm (counter)
Mạch đếm là thiết bị nhận xung đếm ở lối vào. Lối ra của mạch đếm có thể là số nhị phân hay BCD.
Traïng thái lối ra phản ánh số xung đếm xuất hiện ở lối vào của bộ đếm. Có nhiều kiểu bộ đếm khác nhau, sau đây ta sẽ xét một vài loại bộ đếm thông dụng.
Bộ đếm nhị phân
Bộ đếm nhị phân (Binary Counter) là bộ đếm mà mã số lối ra là số nhị phân. Bộ đếm nhị phân cấu tạo từ các FF. Một bộ đếm nhị phân có lối ra n bit thì cần n FF.
Hình 3-31: Bộ đếm nhị phân 4 bit D C B A Number of clock 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 1 0 1 0 10 1 0 1 1 11 1 1 0 0 12 1 1 0 1 13
1 1 1 0 14 1 1 1 1 15
0 0 0 0 16 (recycles)
Hình 3-31 là sơ đồ bộ đếm nhị phân không đồng bộ 4 bit.Các FF dùng loại JK. Với 4 bit bộ đếm sẽ đếm được 24 =16 trạng thái. Một chu trình đếm sẽ kết thúc tại xung thứ 15, xung thứ 16 bộ đếm sẽ bắt đầu lại chu trình đếm mới. Bộ đếm trên hình 3-31 gọi là bộ đếm khơng đồng bộ (asynchronous counter) vì mỗi FF đóng vai trị như là đồng hồ cho các FF tiếp theo. Sự không đồng bộ là ở chỗ: Các FF khơng thay đổi trạng thái vào thời điểm có xung đồng hồ. Chỉ FF A thay đổi trạng thái khi có đồng hồ, cịn FF B thay đổi trạng thái khi FF A thay đổi.
Bộ đếm trên đây còn gọi là bộ đếm MOD N=2n. Ở đây n là số FF tham gia trong bộ đếm.
Bộ đếm với số trạng thái < 2n
Nếu nối bộ đếm với n FF thì có thể đếm được N = 2n trạng thái. Để mạch chỉ đến với số trạng thái < 2n thì ần phải kiểm sốt trạng thái theo cách sau đây: Sử dụng đường dây CLR để RESET bộ đếm tương ứng với trạng thái mong muốn. Ví dụ để mạch đếm 10 (từ 0 đến 9) thì cần phải có mạch theo dõi trạng thái lối ra sao cho khi xuất hiện trạng thái 10 = 10102 thì cần RESET bộ đếm. Có thể sử dụng mạch như hình 3-32.
Hình 3-32: Kiểm sốt trạng thái cho bộ đếm 10
Mạch đếm xuống (down counter)
Trong một số trường hợp cần phải đếm xuống từ một giá trị cho trước. Để thực hiện việc này cần phải sử dụng mạch đếm xuống như hình 3-33.
Hình 3-33: Mạch đếm xuống 3 bit
Mạch đếm này có sơ đồ nối như mạch đếm lên 3 bit không đồng bộ, chỉ khác là lối ra đảo của các FF A và FF B được đưa đến lối vào đồng hồ của các FF B và FF C.
Giả sử trạng thái ban đầu của bộ đếm là 000.
Xung đồng hồ thứ nhất làm cho bộ đếm có giá trị lối ra laø 111.
Xung đồng hồ tiếp theo, kết quả của bộ đếm là 110. Cứ tiếp tục như vậy cho đến xung đồng hồ thứ 7, trạng thái lối ra của bộ đếm là 000. Xung đồng hồ thứ 8, trạng thái bộ đếm là 111 và một chu trình đếm mới được bắt đầu.
CHƯƠNG 4: BỘ LOGIC SỐ HỌC (ALU)
Bộ logic và số học của máy tính là một bộ phận thuộc vi xử lý. Hoạt động của ALU do bộ điều khiển chỉ dẫn, còn số liệu cho các phép tính của ALU được cung cấp từ bộ nhớ. ALU thực hiện một loạt các phép tính trên số liệu mà cơ bản là thực hiện các phép cộng, trừ, nhân, chia. Trong chương này chúng ta sẽ xem xét những nguyên lý cơ bản cần thiết để hiểu hoạt động của bộ ALU trong máy tính về phương diện phần cứng khi nó thực hiện các phép toán cộng, trừ nhị phân, cũng như các phép toán trên số BCD và số Hex.
4.1 CẤU TRÚC CỦA ALU
ALU cuûa vi xử lý bao gồm các thanh ghi, các mạch logic. Trong trường hợp đơn giản ALU bao gồm:
• 2 thanh ghi ( A và B) để chứa các toán hạng của phép toán .
• Một mạch logic được điều khiển bởi bộ điều khiển nhằm thực hiện phép toán mong muoán.
• 1 thanh ghi (C) để chứa kết quả.
Các thanh ghi A, B, C có thể là một trong các thanh ghi của vi xử lý như thanh ghi tích lũy (accumulator), các thanh ghi dùng chung (general registers).
4.2 BỘ CỘNG NHỊ PHÂN
Để tiến hành cộng 2 số nhị phân cần phải dùng bộ cộng (adder). Có 5 trường hợp khả dó đối với phép cộng nhị phân, đó là:
0+0=0 0+1=1 1+0=1
1+1=10 = 0 nhớ 1 sang bit có trọng số lớn hơn . 1+1+1=11=1 nhớ 1 sang bit có trọng số lớn hơn.
Trường hợp cuối cùng xảy ra khi cộng 2 bit 1 và có nhớ 1 từ bit có trọng số bé hơn. Sau đây là vài ví dụ:
011(3) 1001(9) 11.011(3.375) +110(6) +1111(5) +10.110(2.750)
Khơng cần thiết phải xem xét phép cộng của nhiều số nhị phân vì máy tính chỉ thực hiện phép cộng của 2 số nhị phân cùng một lúc. Khi có nhiều hơn 2 số được cộng thì máy tính sẽ cộng 2 số với nhau rồi lấy kết quả đó cộng với số tiếp theo.
Phép cộng là phép tính số học quan trọng nhất trong máy tính. Như chúng ta sẽ thấy sau này phép trừ, phép nhân và phép chia cuối cùng đều quy về phép cộng.
a) Boä cộng nhị phân một nửa (half-adder)
Trước hết xét phép cộng nhị phân giữa 2 bit và khơng có bit nhớ vào. Trường hợp này gọi là phép cộng nhị phân một nửa. Giả sử 2 biến là X và Y. Tổng là S và C là bit nhớ ra. Sử dụng bài toán thiết kế mạch logic ở chương 3, ta có sơ đồ khối mạch cộng một nửa như hình 4-1.
X S
Y C Half-adder
Hình 4-1: Sơ đồ khối bộ cộng nhị phân một nửa Bảng sự thật cho phép cộng nhị phân một nửa nhö sau:
X Y S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1
Từ bảng sự thật, dễ daøng suy ra: S= X ⊕ Y vaø C=XY.
Mạch logic thực hiện phép cộng nhị phân một nửa vẽ trên hình 4-2.