Bài tập thiết kế mạch module 11 đồng bộ năm 2024

  • 1. Thuật Số Chủ biên Võ Thanh Ân Trang 52 CHƯƠNG 5: MẠCH TUẦN TỰ  FLIPFLOP  FF RS  FF JK  FF T  FF D  MẠCH GHI DỊCH  MẠCH ĐẾM  Đồng bộ  Không đồng bộ  Đếm vòng I. GIỚI THIỆU Trong chương trước, chúng ta đã khảo sát các loại mạch tổ hợp, đó là các mạch mà ngã ra của nó không phụ thuộc vào trạng thái trước đó của mạch. Nói cách khác, nó là loại mạch không có khả năng nhớ, một chức năng quan trọng của hệ thống logic. Trong chương này, ta sẽ xét loại mạch thứ 2 là mạch tuần tự. - Mạch tuần tự là mạch có ngã ra không những phụ thuộc vào các trạng thái ngã vào mà còn phụ thuộc vào trạng thái ngã ra trước đó. Ta nói mạch tuần tự có tính nhớ. Ngã ra Q+ của mạch tuần tự là hàm logic của các biến ngã vào A, B, C,… và ngã ra Q trước đó. Nghĩa là: Q+ = f(Q,A,B,C,…) - Mạch tuần tự vận hành dưới tác động của xung đồng hồ và được chia làm 2 loại: Đồng bộ và Không đồng bộ. Ở mạch đồng bộ, các phần tử chịu tác động đồng thời của xung đồng hồ (CK) và ở mạch không đồng bộ thì không có điều kiện này. - Phần tử cơ bản cấu thành mạch tuần tự là các Flipflop. II. FLIPFLOP 1. Giới thiệu Mạch flipflop (FF) là mạch đa hài lưỡng ổn tức mạch tạo ra sóng vuông và có 2 trạng thái cân bằng. Trạng thái cân bằng của FF chỉ thay đổi khi có xung đồng hồ tác động. Một FF thường có một hoặc nhiều ngã vào, và hai ngã ra. Tính nhớ của FF được thể hiện ở điểm: Trạng thái của FF vẫn được giữ nguyên mặc dù sự tác động ngã vào đã chấm dứt. Hai ngã ra của FF thường được ký hiệu là Q (ngã ra chính) và Q (ngã ra phụ). Người ta thường chỉ trạng thái của FF bởi ngã ra chính của nó. Nếu hai ngã ra có trạng thái giống nhau ta nói FF ở trạng thái cấm. FF có thể tạo nên từ các mạch chốt (latch). Điểm khác biệt giữa một mạch chốt và một FF là: FF chịu tác động của xung đồng hồ còn mạch chốt thì không. Người ta gọi tên các FF khác nhau bằng cách dựa vào tên các ngã vào của chúng.
  • 2. 53 Chủ biên Võ Thanh Ân 2. Chốt RS a. Chốt RS tác động cao Dưới đây là chốt RS có ngã vào R và S tác động ở mức cao. Hình: Chốt RS tác động mức cao. Các trạng thái logic của mạch được biễu diễn trong bảng dưới đây. R S Q Q+ R S Q+ 0 0 0 0 Tác dụng nhớ 0 0 Q 0 0 1 1 0 1 1 0 1 0 1 Đặt (Set) 1 0 0 0 1 1 1 1 1 Cấm 1 0 0 0 Đặt lại (Reset) Từ bảng bên, ta tóm tắt lại hoạt động của chốt RS trong bảng trên. 1 0 1 0 1 1 0 0 Q+=Q + (Cấm) 1 1 1 1 Từ bảng trên, ta tóm tắt hoạt động của RS như sau: - Khi R = S = 0, ngã ra không đổi trạng thái. - Khi R = 0 và S = 1, chốt được Set (tức đặt Q+ = 1). - Khi R = 1 và S = 0, chốt được Reset (tức đặt Q+ = 0). - Khi R = S = 1, chốt rơi vào trạng thái cấm. b. Chốt RS tác động thấp Dưới đây là chốt RS có ngã vào R và S tác động ở mức thấp. S R Q+ 0 0 Cấm 0 1 1 1 0 0 1 1 Q Hình: Chốt RS tác động mức thấp. Để có chốt RS tác động mức cao dùng cổng NAND, người ta thêm hai cổng đảo ở các ngõ vào của mạch. Hình: Chốt RS tác động mức cao. Q R S Q Q Q S R Q Q S R
  • 3. Thuật Số Chủ biên Võ Thanh Ân Trang 54 Hình: Ký hiệu chốt RS tác động mức cao và RS tác động thấp. 3. FlipFlop RS a. Cấu trúc tổng quát FlipFlop RS Trong các phần dưới đây, ta sử dụng chốt RS tác động mức cao dùng cổng NAND. Khi thêm ngã vào xung CK cho chốt RS ta được FF RS. Dưới đây là bảng sự thật FF RS có các ngã vào R, S và xung đồng hồ CK đều tác động mức cao. Vào Ra CK S R Q+ 0   Q 1 0 0 Q 1 0 1 0 1 1 0 1 1 1 1 Cấm Hình: FF RS tác động mức cao. Để có FF xung đồng hồ tác động mức thấp, ta thêm một cổng đảo cho ngã vào CK. Ta được bảng sự thật giống như trên, ngoại trừ ngã vào CK đảo ngược lại. Vào Ra CK S R Q+ 1   Q 0 0 0 Q 0 0 1 0 0 1 0 1 0 1 1 Cấm Hình: FF RS có CK tác động mức thấp. b. FlipFlop RS có ngã vào Preset và Clear Tính chất của FF là có ngã ra bất kỳ khi mở máy. Trong nhiều trường hợp ta cần đặt trước ngã ra Q=1 hoặc Q=0, muốn thế, người ta thêm vào FF các ngã vào Preset (Q=1) và Clear (Q=0). Dưới đây là dạng mạch và ký hiệu của FF RS có ngã vào Preset và Clear. Hình: FlipFlop RS có ngã vào Preset và Clear. S Q R Q S Q R Q Q Q S R CK Q Q S R CK Q Q S R CK Cl Pr S Pr Q CK R Cl Q
  • 4. 55 Chủ biên Võ Thanh Ân Bảng sự thật của FF RS có Preset và Clear tác động thấp. Pr Cl CK S R Q+ 0 0    Cấm 0 1    1 1 0    0 1 1 0   Q 1 1 1 0 0 Q 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 Cấm c. FlipFlop RS chủ tớ Kết nối thành chuỗi hai FF RS với các ngã vào xung CK của 2 FF có mức tác động ngược nhau, ta được FF chủ tớ. Với cách mắc này, mạch thoát khỏi trạng thái cấm (nhưng vẫn rơi vào trạng thái bất định) đồng thời có xung CK tác động bằng cạnh. Hình: Sơ đồ FF RS chủ tớ. Hoạt động của FF được giải thích như sau: Do CKS của tầng tớ là đảo của CKM của tầng chủ, nên khi CKM = 1, tầng chủ giao hoán và tầng tớ ngưng. Trong khoảng thời gian này, dữ liệu ngã vào R và S được đưa ra và đã ổn định ở ngã ra R’ và S’, tại thời điểm xung CK xuống thấp, R’ và S’ được truyền đến ngã ra Q và Q . Hình: Vị trí xảy ra giao hoán. Đối với trường hợp R = S = 1 khi CKM = 1 thì R’ = S’ = 1, nhưng khi CK xuống thấp thì một trong hai ngã ra này xuống thấp, do đó mạch thoát khỏi trạng thái cấm, nhưng S’ hay R’ xuống thấp trước thì không đoán trước được nên mạch rơi vào trạng thái bất định, nghĩa là Q+ có thể bằng 1 có thể bằng 0, nhưng khác  Q . Ta có bảng sự thật như sau: S R CK Q+ 0 0  Q 0 1  0 1 0  1 1 1  Bất định S R CKM Q Q S’ R’ CKS Ngã ra giao hoán CKM CKS
  • 5. Thuật Số Chủ biên Võ Thanh Ân Trang 56 4. FlipFlop JK FF JK được tạo từ FF RS theo sơ đồ sau: Hình: Cấu tạo FF JK có ngã vào Pr và Cl tác động thấp. Bảng sự thật của FF JK. J K Q Q Q J S  R = KQ CK Q+ 0 0 0 1 0 0  Q 0 0 1 0 0 0  Q 0 1 0 1 0 0  Q=0 0 1 1 0 0 1  0 1 0 0 1 1 0  1 1 0 1 0 0 0  Q=1 1 1 0 1 1 0  1 1 1 1 0 0 1  0 Từ bảng trên, ta có thể rút gọn thành bảng sau: J K CK Q+ 0 0  Q 0 1  0 1 0  1 1 1  Đảo Q Kết quả trên cho ta thấy: FF JK đã thoát khỏi trạng thái cấm và thay vào đó là trạng thái đảo (khi J=K=1). Người ta lợi dụng trạng thái này để thiết kế mạch đếm. 5. FlipFlop D Thiết kế FF D từ FF RS (hoặc FF JK) bằng cách nối một cổng đảo từ S qua R (hoặc từ J sang K). Dữ liệu được đưa vào ngã vào gọi là ngã vào D. Hình: Sơ đồ và ký hiệu FF D. S Pr Q CK R Cl Q J K J Pr Q CK K Cl Q S,J Pr Q CK R,K Cl Q D D Pr Q CK Cl Q
  • 6. 57 Chủ biên Võ Thanh Ân Bảng sự thật của FF D được biễu diễn như sau: D CK Q+ 0  0 1  1 6. FlipFlop T Nối chung 2 ngã vào của FF JK ta được FF T. Dưới đây là bảng sự thật và sơ đồ ký hiệu của FF T. Hình: Sơ đồ và ký hiệu FF T. Bảng sự thật của FF T được biễu diễn như sau: T CK Q+ 0  Q 1  Q 7. Mạch chốt D Mạch chốt D hoạt động giống như FF D, chỉ khác nhau ở điểm ngã vào xung đồng hồ CK được thay bằng ngã vào cho phép G, và tác động bằng mức chứ không bằng cạnh. D G Q+  0 Q 0 1 0 1 1 1 Hình: Ký hiệu mạch chốt D. III.MẠCH GHI DỊCH 1. Sơ đồ nguyên tắc và vận chuyển Hình: Sơ đồ mạch ghi dịch đơn giản. J Pr Q CK K Cl Q T T Pr Q CK Cl Q D Q G Q D Q CK Cl Q D Q CK Cl Q D Q CK Cl Q D Q CK Cl Q Cl Vào nối tiếp QA QB QC QD A B C D
  • 7. Thuật Số Chủ biên Võ Thanh Ân Trang 58 Các FF D nối chung ngã vào CK để được tác động đồng thời, ngã ra Q của FF trước nối với ngã vào D của FF sau. Ngã vào DA của FF đầu tiên gọi là ngã vào của dữ liệu nối tiếp, các ngã ra QA, QB, QC, QD là các ngã ra song song, ngã ra của FF cuối cùng (FF D) là ngã ra nối tiếp. Trước khi mạch hoạt động, tác dụng một xung xóa các ngã vào Cl (đưa chân Cl xuống thấp rồi đưa lên cao như cũ) để các ngã ra QA = QB = QC = QD = 0. Cho dữ liệu vào DA, sau mỗi xung đồng hồ, dữ liệu của tầng trước lần lượt truyền qua tầng sau. Giả sử DA có dữ liệu lần lượt vào như sau: 3 bit cao, 2 bit thấp, 1 cao, 1 thấp. Ta có bảng sự thật của sơ đồ mạch như sau: Vào Ra Cl CK DA QA QB QC QD 0   0 0 0 0 1  1 1 0 0 0 1  1 1 1 0 0 1  1 1 1 1 0 1  0 0 1 1 1 1  0 0 0 1 1 1  1 1 0 0 1 1  0 0 1 0 0 Các mạch ghi dịch được phân loại tuỳ vào số bit (số FF), chiều dịch (trái/phải), các ngã vào ra (nối tiếp/song song). 2. Vài IC ghi dịch tiêu biểu a. Giới thiệu Trên thị trường hiện có hiện có khá nhiều loại IC ghi dịch có đầy đủ chức năng dịch trái, dịch phải, vào ra nối tiếp/song song. Sau đây, chúng ta khảo sát 2 IC tiêu biểu: IC74164 là IC dịch phải 8 bit, IC 7495 là IC 4 bit, dịch phải, trái, vào ra nối tiếp/song song. b. IC 74164 GND VCC MR : Master Reset, tác động thấp. CP: Clock pulse, tác động cạnh lên. D Q CK Cl CP Q0 D Q CK Cl D Q CK Cl D Q CK Cl D Q CK Cl D Q CK Cl D Q CK Cl D Q CK Cl Q1 Q2 Q3 Q4 Q5 Q6 Q7 A B MR 2 1 3 4 5 6 10 11 12 13 8 9 7 14
  • 8. 59 Chủ biên Võ Thanh Ân c. IC 7495 Hình: Sơ đồ mạch IC 7495. Ý nghĩa các chân S: Mode control input. DS: Serial data input. P0  P3: Parrallel data inputs. CP1: Serial clock. CP2: Parrallel clock. Q0  Q3: Parrallel data outputs. Nạp dữ liệu song song - Chuẩn bị dữ liệu ngã vào P0 đến P3. - Cho S = 1, dữ liệu được đưa vào các ngã vào của các FF, CP1 bị khoá, CP2 là ngã vào CK, dữ liệu xuất hiện ở ngã ra Q0 đến Q3 khi có cạnh xuống của CK. Nạp dữ liệu nối tiếp - Cho S = 0. - Đưa dữ liệu nối tiếp vào DS, CP2 bị khoá, CP1 là ngã vào CK, khi có cạnh xuống của CK dữ liệu dịch từng bit trên các ngã ra Q0 đến Q3. Dịch phải - Nạp dữ liệu song song. - Đưa dữ liệu nối tiếp ở DS và cho CK tác động. Dịch trái - Nối ngã ra của FF sau vào ngã vào song song của FF trước. - P3 là ngã vào nối tiếp. - Cho S = 1 để cách ly FF trước với FF sau. - CP2 là ngã vào xung CK, dữ liệu sẽ được dịch trái ứng với cạnh xuống của xung CK. d. Ứng dụng của mạch ghi dịch Mạch ghi dịch có nhiều ứng dụng. - Một số nhị phân khi dịch trái một bit, giá trị nhị phân sẽ được nhân lên gấp đôi. Khi dịch phải 1 bit, giá trị nhị phân được chia 2 (lấy phần nguyên). R CK S Q R CK S Q R CK S Q R CK S Q Q0 S DS Q1 Q2 Q3 1 CP 2 CP P0 P1 P2 P3
  • 9. Thuật Số Chủ biên Võ Thanh Ân Trang 60 - Trong máy tính, thanh ghi là nơi lưu tạm dữ liệu để thực hiện các phép tính, các lệnh cơ bản như: quay, dịch phải, dịch trái,… - Ngoài ra, mạch ghi dịch còn những ứng dụng khác như: tạo mạch đếm vòng, biến đổi nối tiếp  song song. IV.MẠCH ĐẾM 1. Giới thiệu Lợi dụng tính đảo trạng thái của FF JK, người ta thực hiện mạch đếm. Chức năng của mạch đếm là đếm số xung CK đưa vào ngã vào hoặc thể hiện số trạng thái có thể của ngã ra và nếu xét khía cạnh tần số của tín hiệu thì mạch đếm có chức năng của mạch chia tần, nghĩa là tần số tín hiệu ngã ra là kết quả của phép chia tần số của tín hiệu ngã vào cho một số nào đó. 2. Mạch đếm đồng bộ a. Mạch đếm đồng bộ n tầng đếm lên Trong các mạch đếm đồng bộ, các FF chịu tác động đồng thời của xung CK. Để thiết kế mạch đếm đồng bộ n tầng (ví dụ n = 4), trước tiên, ta lập bảng trạng thái, quan sát bảng trạng thái suy ra cách mắc ngã vào JK của các FF sao cho mạch giao hoán tạo trạng thái ngã ra đúng với bảng đã lập. Giả sử FF có xung CK tác động ở cạnh xuống, với 4 FF mạch đếm được 24 = 16 trạng thái và số xung đếm được từ 0 đến 15, với mạch đếm lên, ta có bảng trạng thái dưới đây. CK QD QC QB QA Số xung đếm Xóa 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 0 FF A đổi trạng thái sau từng xung CK vậy: TA = JA = KA = 1. FF B đổi trạng thái nếu trước đó QA = 1, vậy: TB = JB = KB = QA. FF C đổi trạng thái nếu trước đó QA = QB = 1, vậy: TC = JC = KC = QA.QB.
  • 10. 61 Chủ biên Võ Thanh Ân FF D đổi trạng thái nếu trước đó QA = QB = QC = 1, vậy: TD=JD=KD=TC.QC. Ta được kết quả như hình sau: Hình: Mạch đếm đồng bộ n tầng đếm lên. b. Mạch đếm đồng bộ n tầng đếm xuống Giả sử FF có xung CK tác động ở cạnh xuống, với 4 FF mạch đếm được 24 = 16 trạng thái và số xung đếm được từ 0 đến 15, với mạch đếm xuống, ta có bảng trạng thái dưới đây. CK QD QC QB QA Số đếm Xóa 0 0 0 0 0  1 1 1 1 15  1 1 1 0 14  1 1 0 1 13  1 1 0 0 12  1 0 1 1 11  1 0 1 0 10  1 0 0 1 9  1 0 0 0 8  0 1 1 1 7  0 1 1 0 6  0 1 0 1 5  0 1 0 0 4  0 0 1 1 3  0 0 1 0 2  0 0 0 1 1  0 0 0 0 0 FF A đổi trạng thái sau từng xung CK vậy: TA = JA = KA = 1. FF B đổi trạng thái nếu trước đó QA = 0, vậy: TB = JB = KB = A Q . FF C đổi trạng thái nếu trước đó QA = QB = 0, vậy: TC = JC = KC = B A Q Q . . FF D đổi trạng thái nếu trước đó QA = QB = QC = 1, vậy: TD=JD=KD= C C Q T . . J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl + QA QB QC QD A B C D
  • 11. Thuật Số Chủ biên Võ Thanh Ân Trang 62 Ta được kết quả như hình sau: Hình: Mạch đếm đồng bộ n tầng đếm xuống. c. Mạch đếm đồng bộ n tầng đếm lên, xuống Để có mạch n tầng đếm lên hoặc xuống, ta dùng một mạch đa hợp 21 có ngã vào điều khiển C để chọn Q hoặc Q đưa vào tầng sau qua các cổng AND. Trong mạch dưới đây, C = 0 mạch đếm lên, C = 1 mạch đếm xuống. Hình: Mạch đếm đồng bộ n tầng đếm lên, xuống. d. Tần số hoạt động lớn nhất của mạch đếm đồng bộ n tầng Ta xét mạch đếm đồng bộ n tầng đếm lên, ta cần dùng 2 cổng AND. Trong trường hợp tổng quát cho n tầng, số cổng AND dùng là n – 2 như vậy thời gian tối thiểu để tín hiệu truyền qua mạch là: Tmin = TP FF + (n– 2).TP AND Tầng số cực đại xác định bởi: AND P FF P T n T T f ) 2 ( 1 1 min max     Để gia tăng tần số làm việc của mạch, thay vì dùng cổng AND 2 ngã vào, ta phải dùng cổng AND nhiều ngã vào và mắc theo kiểu: TA = JA = KA = 1. TB = JB = KB = QA TC = JC = KC = QA.QB TD=JD=KD=QA.QB.QC J Q CK K Cl Q J Q CK K Cl Q Cl + QC QD C D J Q CK K Cl Q J Q CK K Cl Q QA QB A B J Q CK K Cl Q J Q CK K Cl Q Cl + QC QD C D J Q CK K Cl Q J Q CK K Cl Q QA QB A B C
  • 12. 63 Chủ biên Võ Thanh Ân Như vậy tần số làm việc không phụ thuộc vào n và bằng: AND P FF P T T T f    1 1 min max e. Mạch đếm đồng bộ Modulo – N (N  2n ) Để thiết kế mạch đếm modulo – N, trước nhất ta phải chọn số tầng. Số tầng là n phải thoả điều kiện: 2n-1 < N < 2n . Ví dụ: Thiết kế mạch đếm 10 (N = 10). Ta thấy 24-1 = 23 < 10 < 24 , vậy số tần là 4. Có nhiều phương pháp thiết kế mạch đếm đồng bộ modulo N. Sau đây, ta khảo sát hai phương pháp: Phương pháp dùng hàm chuyển và phương pháp MARCUS. i. Phương pháp dùng hàm chuyển (Transfer function) Hàm chuyển được định nghĩa như sau: Hàm có giá trị 1 khi có sự thay đổi trạng thái của FF và hàm có giá trị 0 khi FF không đổi trạng thái. Ta sẽ xác định hàm chuyển của FF JK. Dưới đây là bảng trạng thái của FF JK và hàm chuyển H. CK J K Q Q+ H  0 0 0 0 0  0 0 1 1 0  0 1 0 0 0  0 1 1 0 1  1 0 0 1 1  1 0 1 1 0  1 1 0 1 1  1 1 1 0 1 Dùng bảng Karnaugh ta suy ra được biểu thức của H: KQ Q J H   Để thiết kế mạch đếm cụ thể, ta sẽ xác định hàm H cho từng FF trong mạch, so sánh với biểu thức của hàm H suy ra J, K của các FF. Ví dụ: Thiết kế mạch đếm 10 đồng bộ dùng FF JK. Bảng trạng thái của mạch đếm 10 và giá trị của hàm H tương ứng. CK QD QC QB QA QD+ QC+ QB+ QA+ HD HC HB HA 1 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 1 0 0 1 0 0 0 1 1 3 0 0 1 0 0 0 1 1 0 0 0 1 4 0 0 1 1 0 1 0 0 0 1 1 1 5 0 1 0 0 0 1 0 1 0 0 0 1 6 0 1 0 1 0 1 1 0 0 0 1 1 7 0 1 1 0 0 1 1 1 0 0 0 1 8 0 1 1 1 1 0 0 0 1 1 1 1 9 1 0 0 0 1 0 0 1 0 0 0 1 10 1 0 0 1 0 0 0 0 1 0 1 1
  • 13. Thuật Số Chủ biên Võ Thanh Ân Trang 64 Từ bảng sự thật trên, ta thấy: 1 1       A A A A A K J Q Q H Để xác định HB, HC, HD ta phải vẽ bảng đồ Karnaugh. B Q QB QBQA QDQC 00 01 11 10 QBQA QDQC 00 01 11 10 QBQA QDQC 00 01 11 10 00 1 1 00 1 C Q 00 D Q 01 1 1 01 1 QC 01 1 11     11     11     QD 10   10   C Q 10 1   A D B B B A D B A D B Q Q K J Q Q Q Q Q Q H      A B C C C A B C A B B Q Q K J Q Q Q Q Q Q H      A C A B C C D A D A B C D Q K Q Q Q J Q Q Q Q Q Q H      ; Từ kết quả trên ta vẽ được mạch: Hình: Mạch đếm 10. ii. Phương pháp MARCUS Phương pháp MARCUS cho phép xác định các biểu thức của J, K dựa vào sự khác nhau của Q+ so với Q sau mỗi lần tác động của xung CK. Từ bảng trạng thái của FF JK ta có thể rút gọn lại bảng sau: Q Q+ J K 0 0 0  0 1 1  1 0  1 1 1  0 Để thiết kế mạch, ta so sánh Q+ và Q để có được bảng sự thật cho J, K của từng FF, sau đó xác định J và K. Ví dụ: Thiết kế mạch đếm 10 bằng phương pháp MARCUS. J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl + QA QB QC QD A B C D
  • 14. 65 Chủ biên Võ Thanh Ân CK QD QC QB QA JD KD JC KC JB KB JA KA 1 0 0 0 0 0  0  0  1  2 0 0 0 1 0  0  1   1 3 0 0 1 0 0  0   0 1  4 0 0 1 1 0  1   1  1 5 0 1 0 0 0   0 0  1  6 0 1 0 1 0   0 1   1 7 0 1 1 0 0   0  0 1  8 0 1 1 1 1   1  1  1 9 1 0 0 0  0 0  0  1  10 1 0 0 1  1 0  0   1 Từ bảng sự thật trên, ta thấy: JA = KA = 1 Dùng bảng Karnaugh xác định các hàm còn lại. Ta thấy rằng, FF B và FF C có thể xác định chung cho J và K vì chúng có cùng vị trí 1 và vị trí . FF D được xác định J và K riêng. QBQA QDQC 00 01 11 10 QBQA QDQC 00 01 11 10 00 1 1 00 1 01 1 1 01 1 11     11     10   10   A D B B Q Q K J   JC = KC = QBQA QBQA QDQC 00 01 11 10 QBQA QDQC 00 01 11 10 00 00     01 1 01     11     11     10     10 1   JD = QCQBQA KD = QA Ta được kết quả như trên. 3. Mạch đếm không đồng bộ a. Mạch đếm không đồng bộ n tầng đếm lên (n=4) Trong các mạch đếm đồng bộ, xung CK không tác động đồng thời lên các FF. Từ bảng trạng thái của mạch đếm đồng bộ n tầng đếm lên (trình bày ở trên), ta thấy nếu dùng FF JK với xung đồng hồ tác động cạnh xuống thì có thể lấy ngã ra của tầng trước làm xung đồng hồ CK cho tầng sau, với điều kiện các ngõ vào JK đều được đưa lên mức cao. Ta được mạch đếm không đồng bộ 4 bit, đếm lên. Ta được kết quả như hình sau:
  • 15. Thuật Số Chủ biên Võ Thanh Ân Trang 66 Hình: Mạch đếm không đồng bộ n tầng đếm lên. Dưới đây là tín hiệu của xung CK và ngã ra của các FF. 0 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 Tổ hợp các số tạo bởi các ngã ra các FF D, C, B, A là số nhị phân từ 0 đến 15. b. Mạch đếm không đồng bộ n tầng đếm xuống (n=4) Để có mạch đếm không đồng bộ n tầng đếm xuống, ta nối Q của tầng trước vào ngã vào CK của tầng sau. Dưới đây là sơ đồ mạch, sơ đồ xung CK và sơ đồ các ngã ra của các FF. Hình: Mạch đếm không đồng bộ n tầng đếm xuống. + + J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl + QA QB QC QD A B C D + CK QA QB QC QD + + J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl + QA QB QC QD A B C D +
  • 16. 67 Chủ biên Võ Thanh Ân Dưới đây là tín hiệu của xung CK và ngã ra của các FF. 0 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 Tổ hợp các số tạo bởi các ngã ra các FF D, C, B, A là số nhị phân từ 15 xuống 0. c. Mạch đếm không đồng bộ n tầng đếm lên, xuống Để có mạch n tầng đếm lên hoặc xuống, ta dùng một mạch đa hợp 21 có ngã vào điều khiển C để chọn Q hoặc Q đưa vào tầng sau qua các cổng AND. Trong mạch dưới đây, C = 0 mạch đếm xuống, C = 1 mạch đếm lên. Hình: Mạch đếm không đồng bộ n tầng đếm lên, xuống. CK QA QB QC QD + + J Q CK K Cl Q J Q CK K Cl Q Cl + QC QD C D J Q CK K Cl Q J Q CK K Cl Q QA QB A B C
  • 17. Thuật Số Chủ biên Võ Thanh Ân Trang 68 d. Mạch đếm không đồng bộ modulo – N (N = 10) i. Kiểu Reset Để thiết kế mạch đếm kiểu Reset, trước nhất người ta lập bảng trạng thái cho số đếm. CK QD QC QB QA Dec Xóa 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 0 2 3 0 0 1 1 3 4 0 1 0 0 4 5 0 1 0 1 5 6 0 1 1 0 6 7 0 1 1 1 7 8 1 0 0 0 8 9 1 0 0 1 9 10 0(1) 0 0(1) 0 10 Quan sát bảng trên ta thấy, ở xung thứ 10, nếu theo cách đếm 4 tầng thì QD và QB phải lên 1 (số trong ngoặc). Lợi dụng 2 trạng thái này ta dùng một cổng NAND 2 ngã vào để đưa các tín hiệu về xoá các FF, ta được mạch đếm như dưới đây. Hình: Mạch đếm 10 kiểu Reset. ii. Kiểu Preset Trong kiểu Preset các ngã vào của các FF sẽ được đặt trước hoặc nối với một ngã ra nào đó hoặc một mạch tổ hợp có ngã vào nối với các ngã ra của các FF để khi mạch đếm đến trạng thái thứ N thì tất cả các FF tự động quay về 0. Thường người ta sẽ quan sát bảng trạng thái và kết hợp với phương pháp MARCUS để xác định JK của các FF và để dễ thiết kế, người ta phân N = 2n . N’ (N’
  • 18. 69 Chủ biên Võ Thanh Ân Số xung CK vào Số nhị phân Số thập phân QD QC QB Xóa 0 0 0 0 1 0 0 1 1 2 0 1 0 2 3 0 1 1 3 4 1 0 0 4 5 0 0 0 0 Giả sử FF JK có xung CK tác động cạnh xuống. Từ bảng trên ta thấy, có thể dùng tín hiệu ngã ra của FF B làm xung đồng hồ cho FF C. CKC = QB FF C, FF D dùng xung CK của hệ thống và ngã vào JK được xác định theo phương pháp MARCUS. CK QD QC QB JD KD JC KC Xóa 0 0 0 0  1  1 0 0 1 0   1 2 0 1 0 0  1  3 0 1 1 1   1 4 1 0 0  1 0  5 0 0 0 Ta thấy ngay KD = KB = 1. Dùng bảng đồ Karnaugh xác định JD và JB. QCQB QD 00 01 11 10 QCQB QD 00 01 11 10 0 1 0 1   1 1     1    JD = QC.QB D B Q J  Dưới đây là mạch đếm 10 thiết kế theo kiểu 25, với mạch đếm 5 có được từ kết quả trên. Hình: Mạch đếm 10 kiểu 25. IC 7490 là IC đếm 10, có sơ đồ mạch với các ngã vào Reset như dưới đây. + + J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl + QA QB QC QD A B C D +
  • 19. Thuật Số Chủ biên Võ Thanh Ân Trang 70 Hình: Sơ đồ mạch IC 7490. Dưới đây là bảng sự thật cho các ngã vào Reset. Reset Input Output R0(1) R0(2) RS(1) RS(1) QD QC QB QA 1 1 0  0 0 0 0 1 1  0 0 0 0 0   1 1 1 0 0 1  0  0 Đếm Đếm Đếm Đếm 0  0  Đếm Đếm Đếm Đếm 0   0 Đếm Đếm Đếm Đếm  0 0  Đếm Đếm Đếm Đếm IC 7490 có thể thực hiện một trong 2 cách mắc sau: - Mạch đếm 25. Nối QA vào ngã vào B, xung CK vào ngã vào A. - Mạch đếm 52. Nối QD vào ngã vào A, xung CK vào ngã vào B. Hai cách mắc trên cho kết quả số đếm khác nhau nhưng cùng một chu kỳ 10. Tần số tín hiệu của ngã ra sau bằng 1/10 tần số xung CK. Dưới đây là bảng trạng thái cho 2 trường hợp nói trên. QD QC QB QA QD QC QB QA 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 Đếm 25 Đếm 52 + + J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q B + QA QB QC QD + A RS(1) RS(2) R0(1) R0(2)
  • 20. 71 Chủ biên Võ Thanh Ân 4. Mạch đếm vòng a. Giới thiệu Mạch đếm vòng thực chất là mạch ghi dịch trong đó ta cho hồi tiếp từ một ngã ra nào đó về ngã vào để thực hiện một chu kỳ đếm. Tuỳ đường hồi tiếp mà ta có chu kỳ đếm khác nhau. Sau đây, ta khảo sát một vài loại mạch đếm vòng phổ biến. b. Hồi tiếp từ QD về JA và D Q về KA Hình: Mạch hồi tiếp từ QD về JA và Q về KA. Đối với mạch này, sự đếm vòng chỉ thấy khi có đặt trước ngã ra. Ta xét các ví dụ đặt trước QA = 1 và đặt trước QA = QB = 1, ta được bảng dưới đây. CK QD QC QB QA Dec CK QD QC QB QA Dec Preset 0 0 0 1 1 Preset 0 0 1 1 3 1 0 0 1 0 2 1 0 1 1 0 6 2 0 1 0 0 4 2 1 1 0 0 12 3 1 0 0 0 8 3 1 0 0 1 9 4 0 0 0 1 1 4 0 0 1 1 3 : : : : : : : : : : : : Đặt trước QA = 1 Đặt trước QA = QB = 1 c. Hồi tiếp từ D Q về JA và QD về KA Hình: Hồi tiếp từ D Q về JA và QD về KA. J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl QA QB QC QD A B C D J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl QA QB QC QD A B C D
  • 21. Thuật Số Chủ biên Võ Thanh Ân Trang 72 Mạch này còn có tên là mạch Johnson. Mạc có chu kỳ đếm mặc nhiên mà không cần đặt trước. Nếu đặt trước, mạch sẽ cho các chu kỳ khác nhau, tùy vào tổ hợp đặt trước. Bảng dưới đây là chu kỳ đếm mặc nhiên. CK QD QC QB QA Dec Preset 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 1 3 3 0 1 1 1 7 4 1 1 1 1 15 5 1 1 1 0 14 6 1 1 0 1 12 7 1 0 0 0 8 8 0 0 0 0 0 Không đặt trước d. Hồi tiếp từ D Q về JA và QC về KA Hình: Hồi tiếp từ D Q về JA và QC về KA. CK QD QC QB QA Dec Preset 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 1 3 3 0 1 1 1 7 4 1 1 1 0 14 5 1 1 0 1 12 6 1 0 0 0 8 7 0 0 0 0 0 Không đặt trước J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q J Q CK K Cl Q Cl QA QB QC QD A B C D
  • 22. 73 Chủ biên Võ Thanh Ân CHƯƠNG 6: MẠCH LÀM TOÁN  SỐ BÙ  PHÉP TOÁN VỚI SỐ BÙ 1  PHÉP TOÁN VỚI SỐ BÙ 2  PHÉP TOÁN VỚI SỐ BÙ 2 KỂ CẢ BIT DẤU  MẠCH CỘNG  Bán phần  Toàn phần  Cộng nhiều bit  MẠCH TRỪ  Bán phần  Toàn phần  Cộng trừ trong một mạch  MẠCH NHÂN  MẠCH CHIA I. SỐ BÙ Cho số dương N, n bit, các số bù của N được định nghĩa như sau: Số bù 2: (N)2 = 2n – N. Số bù 1: (N)1 = (N)2 – 1 = 2n – N –1. Ví dụ 1: Ta cho N = 1010. Số bù 2 của N là (N)2 = 10000 – 1010 = 0110. Và số bù 1 của N là (N)1 = 0110 – 1 = 0101. Ví dụ 2: Ta cho N = 1100 1010 1100. Số bù 2 của N là (N)2 = 0011 0101 0100. Và số bù 1 của N là (N)1 = 0011 0101 0011. Nhận xét: - Để có số bù 2 của một số, bắt đầu từ bit LSB (bit tận cùng bên phải), đi ngược về bên trái, các số 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 ta đảo tất cả các bit của số đó. Từ nhận xét trên, ta có thể tạo mạch với số bù 1 và bù 2 (hình dưới). Hình: Mạch tạo số bù 1 và bù 2 (3 bit). Khi C = 1, mạch tạo ngã ra là số nhị phân bù 1 (của số ngã vào). Khi C = 0, mạch tạo ngã ra là số nhị phân bù 2 (của số ngã vào). Ta xét biểu thức ngã ra theo các ngã vào như sau: ) ( ) ( 2 1 3 3 1 2 2 1 1 b b C b B b C b B C b B          Khi C = 1, các ngã ra của cổng OR luôn bằng 1, các cổng EX-OR luôn có 1 ngã vào bằng 1 nên ngã ra là đảo của ngã vào còn lại. C b1 b2 b3 B1 B2 B3
  • 23. Thuật Số Chủ biên Võ Thanh Ân Trang 74 3 3 2 1 3 3 2 2 1 2 2 1 1 1 1 ) 1 ( 1 ) 1 ( 1 b b b b b B b b b b B b b B                 Khi C = 0. B1 = b1  0 = b1 B2 = b2  (0 + b1) = b2  b1 B3 = b3  (0 + b1+ b2) = b2  (b1 + b2) Vậy tất cả các bít sau bit đầu tiên bằng 1 (tính từ bít trọng số nhỏ nhất - LSB) đều bị đảo trạng thái. Đây chính là số bù 2 của b. Chúng ta có thể thiết kế mạch tạo số bù 2 bằng cách dùng FF RS. Mạch này dùng thuận tiện khi cần thực hiện bài toán cộng và trừ nhiều bit nối tiếp. Hình: Mạch tạo số bù 2 dùng FF RS. Bắt đầu, Preset mạch để ngã ra Q = 1, các cổng G2 mở, G3 đóng 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 và Q =1, G3 mở, G2 đóng, số B đi qua cổng G2 và bị đảo. Ở ngã ra được số bù 2 của B. II. CÁC PHÉP TOÁN NHỊ PHÂN TRÊN SỐ BÙ 1 1. Trường hợp N1
  • 24. 75 Chủ biên Võ Thanh Ân + N1 01001 N2 00101 Số tràn 0 01110 Không có số tràn là dấu hiệu của số âm, ta phải lấy bù 1 và thêm dấu trừ để đọc kết quả cuối cùng: –(01110)1 = – 10001. 2. Trường hợp N1  N2 Kết quả N1 – N2 là số 0 hoặc số dương, phép tính được thực hiện theo qui tắc sau: Cộng N1 với (N2)1 rồi cộng thêm 1 mà không quan tâm đến số nhớ. Ví dụ 1: Tính 110101 – 100110. N1 = 110101 và (N2)1 = 011001. + N1 110101 (N2)1 011001 1 001110 + 1 Số tràn1 001111 Bỏ qua số nhớ cuối cùng ta được kết quả N1 – N2 =001111. Trong hệ thập phân đây là bài toán: 5310 – 3810 = 1510. Trong phép tính trên 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. Ví dụ 2: Tính 10110 – 10110. N1 = 10110 và (N2)1 = 01001. + N1 10110 (N2)1 01001 11111 + 1 Số tràn1 00000 Trong phép cộng đầu tiên, không có số tràn, kết quả xem như số âm của số bù và khi cộng thêm 1 thì xuất hiện số tràn mà ta đã bỏ qua. Vậy N1 – N2 = 00000. III.CÁC PHÉP TOÁN NHỊ PHÂN TRÊN SỐ BÙ 2 1. Trường hợp N1
  • 25. Thuật Số Chủ biên Võ Thanh Ân Trang 76 Vậy N1 – N2 = – [N1 + (N2)2]2 = –[01001+00110]2 = –(01111)2 = – (10001). Tương tự như trên, để thấy trừ được nhận ra như thế nào, ta viết lại phép toán. + N1 01001 (N2)2 00110 Số tràn0 01111 Không có số tràn là dấu hiệu của số âm. Ta phải lấy bù 2 và thêm dấu trừ để có kết quả cuối cùng. 2. Trường hợp N1  N2 Kết quả N1 – N2 là số 0 hoặc số dương, phép tính được thực hiện theo qui tắc sau: Cộng N1 với (N2)2 mà không quan tâm đến số nhớ ở vị trí 2n . Ví dụ 1: Tính 110101 – 100110. N1 = 110101 và (N2)2 = 011010. + N1 110101 (N2)2 011010 Số tràn1 001111 Có số tràn, đây là kết quả số dương. Bỏ qua số nhớ cuối cùng, không cần biến đổi ta được kết quả N1 – N2 =001111. Trong hệ thập phân đây là bài toán: 5310 – 3810 = 1510. Ví dụ 2: Tính 10110 – 10110. N1 = 10110 và (N2)1 = 01010. + N1 10110 (N2)2 01010 Số tràn1 00000 Bỏ qua số tràn, ta được N1 – N2 = 00000. IV.CÁC PHÉP TOÁN DÙNG SỐ BÙ 2 KỂ CẢ BIT 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, đều này có thể khắc phục được bằng cách dùng số có dấu. Với qui ước chung là: Số dương bit dấu là 0, số âm bit dấu là 1. Ví dụ 1: Ta lấy một số số âm và dương đối nhau như dưới đây (lưu ý là hai số đối nhau cộng lại phải bằng 0). +10 = 01010 +15 = 01111 +23 = 010111 –10 = 10110 –15 = 10001 –23 = 101001 Có thể thấy rằng, số âm của một số là 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. N1 – N2 = N1 + (–N2) Ví dụ 2: Tính N1 – N2 = 01110 – 01001. N2 = 01001 = +910  –910 = 10111.
  • 26. 77 Chủ biên Võ Thanh Ân C2 C1 1 1 11  Số nhớ + 0 1110 1 0111 1 0 0101 C’2 Dấu Bit dấu bằng 0 chỉ kết quả là số dương, bỏ số tràn C’2. Vậy N1 – N2 = 00101. Trong thập phân đây là bài toán [14 + (–9)] = 5. Nếu N1, N2 đều dương hoặc âm, kết quả có thể cần thêm 1 bit do tràn số. Trong trường hợp này bit tràn đầu tiên thuộc kết quả C’2 là bit dấu. Ví dụ 3: Tính N1 + N2 = 01110 + 01001 (Bài toán: 1410 + 910). Kết quả là: 010111 (2310). Với C’2 = 0 là bit dấu. C2 C1 0 1  Số nhớ + 0 1110 0 1001 0 1 0111 Dấu = C’2 Ví dụ 4: Tính N1 – N2 = 10010 – 01001 (Bài toán: –1410 – 910). Tương tự như trên: (N2)2 = 10111. C2 C1 1 0 11  Số nhớ + 1 0010 1 0111 1 0 1001 Dấu = C’2 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 rut ra qui tắc sau: Nếu C1 = C2 thì C’2 là bit tràn bỏ đi. Nếu C1  C2 thì C’2 là bit dấu. Ví dụ 5: Tính N1 – N2 = 011101 – 0110 (Bài toán: 2910 – 610). Tương tự như trên, N2 phải có số bit bằng N1: N2 = 000110  (N2)2 = 111010. C2 C1 1 1 1  Số nhớ + 0 11101 1 11010 1 0 10111 C’2 Dấu Trường hợp này C1 = C2 nên C’2 là bit tràn, ta bỏ đi.
  • 27. Thuật Số Chủ biên Võ Thanh Ân Trang 78 Ghi chú: - Trong tất cả trường hợp, ta luôn thực hiện phép cộng do đó có thể bỏ qua phép trừ. - Khi hai số hạng cùng dấu thì có thể xảy ra hiện tượng tràn, lúc đó bít dấu dời về bên trái 1 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 số hạng. - Ngoài ra, kết quả còn được xử lý bằng cách so sánh hai số nhớ C1 và C2 như nói trên. V. MẠCH CỘNG NHỊ PHÂN 1. Mạch cộng nhị phân bán phần (Half adder, HA) Là mạch cộng 2 số 1 bit. Vào Ra S = a  b C = a.b a b S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 Bảng sự thật. Kết quả 2. Mạch cộng nhị phân toàn phần (Full adder, FA) Là mạch cộng 2 số 1 bit ở cùng vị trí trong 2 số nhị phân nhiều bit, nói cách khác, đây là mạch cộng 2 bit (giả sữ thứ n) và bít nhớ từ phép cộng 2 bit thứ n–1 của 2 số nhị phân đó. Ta có bảng sự thật như dưới đây. Cn–1 Bn An Sn Cn 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Dùng bảng đồ Karnaugh ta xác định Sn và Cn, ta được: Sn = Cn–1  (An  Bn) Cn = AnBn + Cn–1(An  Bn) a b S C a S b C HA
  • 28. 79 Chủ biên Võ Thanh Ân Hình: Sơ đồ mạch và ký hiệu của mạch cộng toàn phần. Có thể thấy, mạch cộng toàn phần gồm 2 mạch cộng bán phần và một cổng OR. VI.CỘNG HAI SỐ NHỊ PHÂN NHIỀU BIT 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 duy nhất, số nhớ từ ngã ra Cn được làm trể 1 bit nhờ FF D và đưa vào ngã vào Cn–1. Vậy tốc độ của phép cộng tùy thuộc vào các xung CK và số bit phải thực hiện. Hình: Sơ đồ mạch cộng nối tiếp. 2. Cộng song song Trong cách cộng song song, mỗi mạch cộng toàn phần dùng cho 1 bit, số nhớ của bit trước sẽ được mang qua bit sau, chính vì lý do này mà tốc độ cộng còn hạn chế. Muốn nâng tốc độ cộng, người ta thực hiện phép cộng song song định trước số nhớ. Hình: Sơ đồ mạch cộng song song. 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ớ: Cn = An.Bn + Cn–1(An  Bn) An Bn S’ C’ C’’ Cn–1 Sn Cn a S b C HA a S b C HA An Bn Cn–1 Sn Cn An S FA Bn Cn–1 Cn Q D FF D CK A B FA 4 FA 3 FA 2 FA 1 C0 C1 C2 C3 C4 S4 S3 S2 S1 A4 B4 A3 B3 A2 B2 A1 B1
  • 29. Thuật Số Chủ biên Võ Thanh Ân Trang 80 Ta đặt: Pn = An.Bn và Gn = An  Bn Ta xác định C1, C2, C3,… như sau: C1 = P1 + C0G1 C2 = P2 + C1G2 C2 = P2 + P1G2 + C0G1G2 C3 = P3 + C2G3 C3 = P3 + P2G3 + P1G2G3 + C0G1G2G3 Ta nhận thấy thời gian tính số nhớ bằng nhau ở tất cả các tầng và bằng t1 + t2 là thời gian truyền qua hai cổng AND và OR. Dưới đây là sơ đồ mạch cộng song song định trước số nhớ. Trên thị trường hiện có IC 7483 (tương đương với 4008 của CMOS) là IC cộng 4 bit theo kiểu định trước số nhớ. P1 G1 C0 C1 t1 t2 P2 P1 G2 C1 t1 t2 G1 C0 P3 P2 G3 C1 t1 t2 P1 G2 G1 C0 Tính Gn và Pn b4 a4 b3 a3 b2 a2 b1 a1 Tính số nhớ G4 P4 G3 P3 G2 P2 G1 P1 Tính tổng b4 a4 b3 a3 b2 a2 b1 a1 C3 C2 C1 C0 C4 S4 S3 S2 S1
  • 30. 81 Chủ biên Võ Thanh Ân Hình: Sơ đồ chân IC 4008 và IC 7483. 4. Mạch cộng hai số BCD Dùng IC 7483 (hoặc 4008) để cộng 2 số BCD. Hai số BCD có trị từ 0 đến 9 khi cộng lại cho kết quả từ 0 đến 18. Để đọc được kết quả dưới 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à bảng tương đương của 3 mã: thập phân, nhị phân, BCD. TP Số nhị phân Số BCD BCD đọc theo NP S’=C’4 S’4 S’3 S’2 S’1 S=C4 S4 S3 S2 S1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 2 0 0 0 1 0 0 0 0 1 0 2 3 0 0 0 1 1 0 0 0 1 1 3 4 0 0 1 0 0 0 0 1 0 0 4 5 0 0 1 0 1 0 0 1 0 1 5 6 0 0 1 1 0 0 0 1 1 0 6 7 0 0 1 1 1 0 0 1 1 1 7 8 0 1 0 0 0 0 1 0 0 0 8 9 0 1 0 0 1 0 1 0 0 1 9 10 0 1 0 1 0 1 0 0 0 0 16 11 0 1 0 1 1 1 0 0 0 1 17 12 0 1 1 0 0 1 0 0 1 0 18 13 0 1 1 0 1 1 0 0 1 1 19 14 0 1 1 1 0 1 0 1 0 0 20 15 0 1 1 1 1 1 0 1 0 1 21 16 1 0 0 0 0 1 0 1 1 0 22 17 1 0 0 0 1 1 0 1 1 1 23 18 1 0 0 1 0 1 1 0 0 0 24 Ta nhận thấy: - Khi kết quả <10 mã nhị phân và BCD trùng nhau. - Khi kết quả  10, để có được mã BCD ta phải cộng thêm 6 cho mã nhị phân. 16 15 14 13 12 11 10 9 4008 1 2 3 4 5 6 7 8 VDD B3 C4 S3 S2 S1 S0 C0 A3 B2 A2 B1 A1 B0 A0 Vss 16 15 14 13 12 11 10 9 7483 1 2 3 4 5 6 7 8 B4 S4 C4 C0 GND B1 A1 S1 A4 S3 A3 B3 VCC S2 B2 A2
  • 31. Thuật Số Chủ biên Võ Thanh Ân Trang 82 Như vậy, ta sẽ thực hịên một mạch có ngã ra Y = 1 khi phát hiện kết quả phép cộng  10. TP C’4 S’4 S’3 S’2 Y 0,1 0 0 0 0 0 2,3 0 0 0 1 0 4,5 0 0 1 0 0 6,7 0 0 1 1 0 8,9 0 1 0 0 0 10,11 0 1 0 1 1 12,13 0 1 1 0 1 14,15 0 1 1 1 1 16,17 1 0 0 0 1 18 1 0 0 1 1 Ta không dùng ngã vào S’1 vì ứng với từng cặp trị số C’4S’4S’3S’2 giống nhau thì S’1 = 0 và S’1 = 1 (Y không phụ thuộc vào S’1). Dùng bảng đồ Karnaugh xác định Y ta được như sau: Y = C’4 + S’4(S’3 + S’2) Hình: Sơ đồ mạch cộng hai số BCD dùng IC 4008. 5. Mạch cộng lưu số nhớ Nhắc lại mạch cộng toàn phần FA, nhận 3 bit ở ngã vào và 2 bit ở ngã ra. Để cộng một chuỗi số, nhiều mạch cộng toàn phần được sử dụng, số nhớ được lưu lại để đưa vào mạch cộng bit cao hơn. A4 C4 A3 A2 S4 A1 S3 4008 S2 B4 S1 B3 B2 B1 C0 A4 C4 A3 A2 S4 A1 S3 4008 S2 B4 S1 B3 B2 B1 C0 Đơn vị Chục
  • 32. 83 Chủ biên Võ Thanh Ân Ví dụ: Tính X + Y + Z, với X, Y, Z là số nhị phân 3 bit. Hình: Mạch cộng 3 số 3 bit dùng FA. Người ta dùng mạch cộng này để thực hiện một bài toán nhân. Để có kết cộng quả nhanh hơn ta có thể dùng mạch như hình dưới đây. Hình: Mạch cộng 3 số 3 bit dùng FA (cải tiến). VII. MẠCH TRỪ NHỊ PHÂN 1. Mạch trừ nhị phân bán phần Là mạch trừ 2 số 1 bit. Vào Ra D = a  b b a R .  A b D R 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Bảng sự thật. Kết quả FA FA FA FA FA FA FA Y3 X3 Y2 X2 Y1 X1 Z1 Z2 Z3 S1 S2 S3 S5 S4 FA FA FA FA FA FA Y3 X3 Y2 X2 Y1 X1 S S2 S3 S5 S4 Z3 Z2 Z1 S C C S1 a b D R
  • 33. Thuật Số Chủ biên Võ Thanh Ân Trang 84 2. Mạch trừ nhị phân có số nhớ (mạch trừ toàn phần) Là mạch trừ 2 bit có quan tâm đến số nhớ mang từ bit trước. Rn–1 Bn An Dn Rn 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 Dùng bảng đồ Karnaugh ta xác định Dn và Rn, ta được: Dn = Rn–1  (An  Bn) ) ( R 1 n n n n n n B A R B A     Hình: Sơ đồ và ký hiệu của mạch trừ toàn phần. 3. Trừ nhiều bit Ta có mạch trừ nhiều bit bằng cách mắc song song các mạch trừ 1 bit. Hình: Sơ đồ mạch trừ nhiều bit. 4. Cộng và trừ nhiều bit trong một mạch Để 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 (cộng với số bù 2). Như vậy, để thực hiện phép tính A – B ta tính A + (B)1 + 1. Mạch cộng toàn phần được sửa đổi để có thể thực hiện phép toán cộng và trừ tuỳ vào ngã vào điều khiển C. - C = 0, ta có mạch cộng. - C = 1, ta có mạch trừ. An Bn Rn–1 Dn Rn SUB An Bn Rn–1 Dn Rn SUB 4 SUB 3 SUB 2 SUB 1 R0 R1 R2 R3 R4 D4 D3 D2 D1 A4 B4 A3 B3 A2 B2 A1 B1
  • 34. 85 Chủ biên Võ Thanh Ân Hình: Sơ đồ cộng và trừ chung một mạch. Ta cũng có thể thực hiện mạch cộng trừ theo kiểu mắc nối tiếp. Hình: Mạch cộng hoặc trừ nối tiếp (chung mạch). Nếu A, B là số 8 bit, 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 hoặc 8 8 8 8 8 8 S B A S B A OV   . Khi OV = 1 nghĩa là có số tràn, thì C8 là bit dấu, S8 là 1 bit kết quả; khi OV = 0 thì S8 là bit dấu. VIII. MẠCH NHÂN 1. Mạch cơ bản Lấy ví dụ nhân 2 số 4 bit như sau: Y4 Y3 Y2 Y1 Thừa số 1 X4 X3 X2 X1 Thừa số 2 P14 P13 P12 P11 Các tích từng phần P24 P23 P22 P21 P34 P33 P32 P31 P44 P43 P42 P41 S8 S7 S6 S5 S4 S3 S2 S1 Kết quả Việc thực hiện phép nhân có thể chia làm 2 bước. - Tính các tích từng phần, được thực hiện bởi các cổng AND. - Tính tổng các tích từng phần: Áp dụng bài toán tổng chuỗi số. FA 4 FA 3 FA 2 FA 1 C C1 C2 C3 C4 S4 S3 S2 S1 A4 B4 A3 B3 A2 B2 A1 B1 Tạo số bù 2 FA FF D CK A B C C=1: Cộng C=0: Trừ
  • 35. Thuật Số Chủ biên Võ Thanh Ân Trang 86 Hình: Sơ đồ mạch nhân số 4 bit. Dùng IC cộng 4 bit (7483 hoặc 4008) mạch nhân 2 số 4 bit có dạng như dưới đây. Hình: Sơ đồ mạch nhân dùng IC cộng 4 bit. X4 X3 X2 X1 Y4 Y3 Y2 Y1 FA FA FA P21 P12 P22 P13 P23 P14 FA FA FA P31 S8 S7 S6 S5 S4 S3 S2 S1 FA FA FA FA FA FA P32 P33 P24 P41 P42 P43 P34 B4 B3 B2 B1 A4 A3 A2 A1 C4 S4 S3 S2 S1 C0 a4 a3 a2 a1 a4 a3 a2 a1 b1 b2 B4 B3 B2 B1 A4 A3 A2 A1 C4 S4 S3 S2 S1 C0 a4 a3 a2 a1 b3 B4 B3 B2 B1 A4 A3 A2 A1 C4 S4 S3 S2 S1 C0 a4 a3 a2 a1 b4 P8 P7 P6 P5 P4 P3 P2 P1
  • 36. 87 Chủ biên Võ Thanh Ân 2. Mạch nhân nối tiếp – song song đơn giản Hình: Mạch nhân nối tiếp – song song đơn giản. Trong loại mạch này, 1 trong 2 thừa số được đưa nối tiếp vào mạch, thừa số còn lại được đưa song song vào mạch. Thừa số a4a3a2a1 được đưa nối tiếp vào mạch, bắt đầu từ bit LSB (a1). Các FF D có tác dụng dịch kết quả của phép nhân trước khi đưa vào mạch cộng để tính các tích từng phần này. Thừa số b4b3b2b1 được đưa song song vào mạch như hình trên. Ví dụ: Xét bài toán 1014. Thừa số thứ nhất là 1010, thừa số thứ 2 là 1110. Quá trình nhân được giải thích như sau: P8 P7 P6 P5 P4 P3 P2 P1 A 0 0 0 0 0 0 0 0 B 0 0 0 1 1 1 0 0 C 0 0 0 0 0 0 0 0 D 0 1 1 1 0 0 0 0 Output 1 0 0 0 1 1 0 0 Ta thấy rằng: 100011002 = 14010. Ngã ra A luôn bằng 0 vì LSB của số nhân bằng 0. Ngã ra B có giá trị nhân được làm trể 1 bit (1 xung đồng hồ). Ngã ra C được làm trể 2 bit (luôn bằng 0 – giống A). Ngã ra D được làm trể 3 bit. Điều này có thể so sánh với bài toán trên giấy như dưới đây. 1 1 1 0 Thừa số 1 1 0 1 0 Thừa số 2 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 Tích Muốn không sử dụng mạch cộng số nhiều bit, người ta sử dụng mạch theo sơ đồ sau: Hình: Mạch cộng số 4 bit. 1 2 3 4 D D D D D D b1 b2 b3 b4 a4a3a2a1 Adder Output D Adder D Adder D Adder 4 3 2 1 b4=1 b3=0 b2=1 b1=0 a4a3a2a1 =1110 Output A B C
  • 37. Thuật Số Chủ biên Võ Thanh Ân Trang 88 Mạch trên cần (n–1) mạch cộng và mạch trể cho số nhân n bit. Các cổng AND cho phép các bit của thừa số thứ nhất đi qua khi bit của thừa số 2 là 1. Thừa số thứ nhất với số bit bất kỳ cho vào mạch nối tiếp với bit LSB đầu tiên. Ngã ra cổng AND thứ tư sau 4 xung Clock có giá trị là 1110. Ngã ra cổng 3 là 0000 (do b3 = 0). Vậy Adder A sẽ tính giá trị ngã ra cổng AND 4 bị trể 1 bit và ngã ra cổng AND 3 là: 11100 + 0000. 0 0 0 0 1 1 1 0 0 1 1 1 0 0 Tương tự, mạch cộng B cộng số nhị phân ở ngỏ ra cổng AND 2 với kết quả A được làm trể 1 bit. 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 Và cộng tiếp với mạch cộng C, kết quả ở mạch cộng A trể 1 bit. Ta được kết quả ở ngã ra của mạch cộng C. 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 Lưu ý: Các mạch trên là mạch cộng chưa quan tâm đến số nhớ. Để thiết kế mạch cho kết quả với số nhớ ta thiết kế như dưới đây. Hình: Mạch nhân số 4 bit có quan tâm số nhớ. Để thiết kế mạch thực tế dùng ghi dịch 4 bit có ngã vào/ra song song và một chíp 4 cổng AND (IC 4 cổng AND) để thực hiện bài toán nhân, có sơ đồ như dưới đây. Hình: Mạch nhân 4 bit dùng tổ hợp các IC. D FA D FA D FA 4 3 2 1 b4=1 b3=0 b2=1 b1=0 a4a3a2a1 =1110 Output C4 FA D C3 C2 C1 C0 D FA D FA D FA 4 3 2 1 b4=1 b3=0 b2=1 b1=0 a4a3a2a1 =1110 Output C4 FA D C3 C2 C1 C0 Clock
  • 38. 89 Chủ biên Võ Thanh Ân IX.MẠCH CHIA Tương tự như mạch nhân, mạch chia có thể xem như một chuỗi mạch trừ liên tiếp của số bị chia và số chia. Tuy nhiên, tuỳ theo kết quả của mạch trừ dương hay âm mà có cách xử lý khác nhau. Dưới đây là qui tắc: - 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 hiện bài toán cộng số chia và số bị chia. - SC0), thương số là 1, dịch phải số chia 1 bit, thực hiện bài toán trừ số chia và số bị chia (cộng với số bù 2). Để đơn giản, ta xét số bị chia và số chia đều dương (MSB = 0), số bị chia gồm 6 bit và số chia gồm 4 bit. Ví dụ 1: Thực hiện bài toán 2110 = 0101012 chia 710 = 01112. Số bù 2 của 710 = 01112 là (0111)2 = 1001. 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0  0 1 1 1 1 0 0 1 1 1  1 0 0 1 1 0 0 0 0 Số dư 0 1 1 Thương Dấu  trong ô chỉ lên số 1, tức là kết quả phép trừ là số âm, bước kế tiếp là dời và cộng với số chia – cộng với 0111. Dấu  trong ô chỉ lên số 0, tức là kết quả phép trừ là số dương, bước kế tiếp là dời và trừ với số chia (cộng với số bù 2) – cộng với 1001. Thương số là số có được từ các số tràn, như hình 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 mức cộng/trừ. Tuy nhiên, nếu chia 21 cho 1 ta cần 6 phép cộng trừ để có thương số 6 bit. Một cách tổng quát, số mức của bài toán bằng với số bit của số bị chia (ta có thể thêm vào phép chia trên 3 số 0 trước số bị chia để có được thương số là 6 bit). Ví dụ 2: Thực hiện bài toán 2110 = 0101012 chia 610 = 01102. Số bù 2 của 610 = 01112 là (0111)2 = 1010.
  • 39. Thuật Số Chủ biên Võ Thanh Ân Trang 90 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1  0 1 1 0 0 1 0 1 1 0  0 1 1 0 0 1 1 0 0 1  0 1 1 0 0 1 1 1 1 0  0 1 1 0 1 0 1 0 0 1  1 0 1 0 1 0 0 1 1 Số dư 0 0 0 0 1 1 Thương số Ví dụ 3: Thực hiện bài toán 2110 = 0101012 chia 510 = 01102, được kết quả là 4 dư 1. Tuy nhiên, trên phép toán ta thấy phép cộng với phép chia cuối cùng cho kết quả âm (1100), để điều chỉnh ta phải cộng vào số chia và bỏ qua số tràn. Số bù 2 của 510 = 01012 là (0111)2 = 1011. 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1  0 1 0 1 0 1 1 0 0 0  0 1 0 1 0 1 1 0 1 1  0 1 0 1 1 0 0 0 0 0  1 0 1 1 0 1 0 1 1 1  0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 Thương số = 4 Số dư = 1 Trong mạch chia hình dưới đây, bước đầu tiên được thực hiện bởi các cổng EXOR trên cùng, có ngã vào điều khiển là 1 để thực hiện bài toán trừ. Sau bước thứ nhất, bit thứ tư của mạch cộng (S4) sẽ quyết định phép toán sau đó là cộng (S4=1) hay trừ (S4=0) số bị chia với số chia. Số nhớ của bài toán cuối cùng (bước 6) là bit LSB của thương số. Mạch cộng cuối cùng được thiết kế kết hợp các cổng AND để xử lý kết quả của số dư như trong hai ví dụ 2 và 3. Nếu kết quả của bài toán ở bước 6 có S4=1 thì cổng AND được mở để thực hiện bài toán cộng với số chia để điều chỉnh số dư.  Cộng vào số chia, để điều chỉnh số dư đúng.
  • 40. 91 Chủ biên Võ Thanh Ân 0 1 0 0 0 D6 D5 D4 D3 D2 D1 d1d2d3d4 O6 O5 O4 O3 O2 O1 R4 R3 R2 R1 Thương số Số dư C4 C4 C4 C4 C4 C4 S4 S3 S2 S1