Mạch so sánh 4 bit
Trước tiên ta thiết kế mạch so sánh hai số 1 bit. Bảng sự thật của mạch so sánh một bit có ngã vào cho phép (nối mạch) G : Bảng 4.7
(H 4.23) Từ mạch so sánh 1 bit ta có thể mở rộng để so sánh nhiều bit.
Để so sánh 2 số nhiều bit, trước tiên người ta so sánh 2 bit cao nhất (MSB), kết quả lớn hoặc nhỏ hơn do 2 bit này quyết định, nếu 2 bit MSB bằng nhau người ta so sánh 2 bit có trọng số thấp hơn tiếp theo và kết quả được quyết định theo cách tương tự như ở 2 bit MSB. . . . . Sự so sánh được lặp lại cho đến bit LSB để được kết cuối cùng. Dưới đây là sơ đồ mạch so sánh 3 bit (H 4.24).
(H 4.24) - IC 1 so sánh 2 bit cao (a3& b3) nên ngã vào cho phép được đưa lên mức cao, nếu kết quả bằng nhau, ngã ra E của nó lên cao, cho phép IC 2 so sánh, nếu kết quả lại bằng nhau, ngã ra E của IC 2 lên cao cho phép IC 3 so sánh, kết quả bằng nhau cuối cùng chỉ bởi ngã ra E của IC 3. - Các ngã vào cổng OR nhận tín hiệu từ các ngã ra S (hoặc I) sẽ cho kết quả lớn hơn (hoặc nhỏ hơn) tùy vào kết quả so sánh ở bất cứ bit nào. Thật vậy khi có một kết quả lớn hơn (hoặc nhỏ hơn) thì S (hoặc I) ở một IC lên cao, các ngã ra E và I (hoặc S) của các IC khác bằng 0, đây là điều kiện mở cổng OR để cho kết quả so sánh xuất hiện ở một trong các cổng OR này. Trên thị trường có sẵn loại IC so sánh 4 bit 7485 có ngã nối mạch để mở rộng việc so sánh cho số nhiều bit hơn. Bảng sự thật của IC 7485 Bảng 4.8 Dựa vào bảng sự thật, ta thấy: - Khi dùng IC 7485 để so sánh 2 số 4 bit ta phải giữ ngã vào nối mạch A’=B’ ở mức cao, hai ngã vào nối mạch còn lại ở mức thấp, như vậy IC mới thể hiện được kết quả của trạng thái 9. - Khi so sánh 2 số nhiều bit hơn ta phải dùng nhiều IC 7485 và nối ngã ra của IC so sánh bit thấp vào ngã vào nối mạch tương ứng của các IC so sánh các bit cao hơn và IC so sánh các bit thấp nhất có ngã vào nối mạch được mắc như khi dùng riêng lẻ. Để đọc được kết quả so sánh ta phải quan tâm tới các trạng thái 9, 10 và 11 trong bảng sự thật. (H 4.25) cho ta cách mắc 2 IC 7485 để so sánh 2 số nhị phân 8 bit: (H 4.25) Thí dụ : a. So sánh hai số A7 . . . .A0 = 10101111 và B7 . . . . B0 = 10110001 IC 2 so sánh các bit cao A7 . . .A4 = 1010 và B7 . . .B4 =1011 có A7= B7 , A6= B6 , A5= B5 và A4 b. So sánh hai số A7 . . . .A0 = 10101111 và B7 . . . . B0 = 10101001 Trong trường hợp này kết quả hai số bit cao bằng nhau nên IC 2 nhìn vào ngã vào nối mạch để xem kết quả so sánh của IC1 (so sánh bit thấp), A3A2A1A0 =1111>B3B2B1B0 = 1001 nên ngã ra A>B = 1 để chỉ kết quả so sánh của 2 số 8 bit (trạng thái 10). BÀI 3: MẠCH SO SÁNH Ngày nay chúng ta đã rất quen thuộc với máy vi tính, đó là 1 hệ thống vi xử lí hoàn hảo. Trong cấu trúc của VXL có 1 thành phần rất quan trọng là ALU (Arithmetic logic unit : bộ logic và số học). Nó có thể tính toán hàng ngàn, triệu phép tính trong 1s. Cấu tạo nên VXL lại gồm các mạch đếm, thanh ghi, cổng logic và cả các mạch so sánh cộng trừ nhân chia số học gọi là các mạch làm toán. Không những thế các mạch làm toán còn được sử dụng trong điện tử nói chung kể cả điều khiển tự động, truyển dữ liệu chẳng hạn như khi thu nhận dữ liệu từ bên ngoài thì cần phải có mạch tính toán, so sánh để cho tín hiệu phản hồi. Phần này sẽ tìm hiểu về các mạch làm toán cơ bản và giới thiệu qua về ALU. Đây không chỉ là kiến thức cần biết khi học mạch số mà còn là nền tảng để có thể tiếp cận lĩnh vực máy tính và VXL mà ta sẽ gặp khi học hay tìm hiểu các môn VXL, vi điều khiển, cấu trúc máy tính, truyền số liệu... 1. Mạch so sánh Trước hết hãy xem 1 ví dụ của việc cần thiết phải dùng mạch so sánh : đó là việc điều khiển nhiệt độ của 1 lò nhiệt như hình dưới đây : 1 bộ cảm biến sẽ chuyển đổi tình trạng nhiệt độ của lò thành tín hiệu điện tương ứng với 1 nhiệt độ xác định. Bộ so sánh làm nhiệm vụ so sánh tín hiệu vừa đưa về với tín hiệu đã cài đặt.Tuỳ theo tín hiệu ngõ ra, sẽ ra quyết định để cơ cấu chấp hành gia tăng, giảm, hay giữ nguyên nhiệt độ thậm chí có thể kết hợp để báo động hiển thị về tình trạng của lò.
Hình 2.3.1 Hệ thống điều khiển nhiệt độ lò Để đơn giản, giả sử tín hiệu đưa về là A, chỉ có 2 mức logic là cao và thấp (tín hiệu số 1 bit). Tín hiệu đem so sánh là B (tín hiệu cài đặt) Sẽ có 3 trường hợp xảy ra cho ngõ ra : A > B khi A = 1 và B = 0 A < B khi A = 0 và B = 1 A = B khi A = 1 = B hay A = 0 = B Từ đây xây dựng bảng sự thật cho 3 trường hợp ngõ ra từ tổ hợp trạng thái 2 ngõ vào ra như sau : Bảng 2.3.1 So sánh 2 số 1 bit
Nhận thấy Trường hợp A = B là ngõ ra của 1 cổng EXNOR 2 ngõ vào A và B Trường hợp A < B là ngõ ra của 1 cổng AND 2 ngõ vào A v Trường hợp A > B là ngõ ra của 1 cổng AND 2 ngõ vàoĠ và B Đây được gọi là mạch so sánh độ lớn 1 bit. Cấu trúc mạch sẽ như sau :
Hình 2.2.2 Khối so sánh 1 bit Hình 2.2.3 Mạch so sánh 1 bit Bây giờ dạng tín hiệu vào mạch so sánh không phải chỉ có mức cao hay mức thấp (1 bit) mà là một chuỗi các xung vuông thì mạch khi này phải là mạch so sánh độ lớn nhiều bít. Hình thức so sánh của mạch 4 bit cũng giống như mạch 1 bit và rõ ràng là phải so sánh bit MSB trước rồi mới lùi dần. 7485/LS85 là 1 IC tiêu biểu có chứa mạch so sánh 4 bit Kí hiệu khối của IC như hình, còn sơ đồ chân có thể xem trong phần datasheet
Hình 2.3.4 Mạch so sánh độ lớn 4 bit 74LS85 Bảng 2.3.2 Bảng sự thật của 74LS85
Nhìn vào bảng sự thật của IC ta có thể thấy được hoạt động của mạch Ở 8 trường hợp đầu mạch so sánh bình thường, lần lượt so sánh từ bít cao trước. Khi tất cả các bit của 2 ngõ vào đều bằng nhau thì phải xét đến logic của các ngõ vào nối chồng (được dùng khi ghép chồng nhiều IC để có số bit so sánh lớn hơn). Logic ở các ngõ vào này thực ra là của các ngõ ra tầng so sánh các bit thấp (nếu có). Trường hợp ngõ vào nối chồng nào lên cao thì ngõ ra tương ứng cũng lên cao.Trường hợp các bít trước không so sánh được thì các ngõ ra sau cùng đều thấp. Trường hợp không có tín hiệu ngõ vào nối chồng thì tức là dữ liệu ngõ vào A và B khác nhau nên ngõ ra A < B và A> B đểu ở mức cao. Vậy để mạch so sánh đúng 4 bit thì nên nối ngõ nối chống A = B ở mức cao Hình sau đây cho cách hiểu dễ hơn với các ngõ vào nối chồng khi ghép 2 IC 74LS85.
Hình 2.3.5 Nối chồng 2 IC 74LS85 để có mạch so sánh độ lớn 8 bit Ví dụ sau ứng dụng mạch so sánh vào trò chơi đơn giản : Người chơi sẽ nhấn nút SW trong chốc lát để tạo một số xung kích từ mạch dao động; khi đó mạch đếm sẽ cho mã số B3B2B1B0 ngẫu nhiên. Một mã số được cài sẵn (chẳng hạn dùng công tắc tạo mức logic cho A3A2A1A0 là 0110) sẽ so sánh với số đếm ngẫu nhiên vừa vào. Nếu chúng bằng nhau đèn vàng sẽ sáng, nếu A > B đèn đỏ sáng, còn khi A < B thì đèn xanh sáng. Như vậy có thể đặt ra quy định là đèn vàng sáng thì người chơi thắng chẳng hạn. Mạch dao động có thể dùng IC 555 hay dùng cổng logic như ở chương trước cũng được.
Hình 2.3.6 Ứng dụng trò chơi đơn giản dùng mạch so sánh 74LS85 Page 2BÀI 4: PHÉP TÍNH SỐ HỌC MẠCH CỘNG 2.1 Mạch cộng nửa Gọi A là số được cộng B là số cộng S là tổng của A và B C là số nhớ ra từ phép cộng Trước hết để đơn giản, xét mạch cộng nhị phân 1 bit Với tổ hợp 4 trạng thái logic của A và B thì trạng thái logic ngõ ra S và C như sau:
Rút gọn biểu thức logic ta có S = AB + AB C = AB Nhận thấy S là ngõ ra của cổng EXOR 2 ngõ vào A và B; còn C là ngõ ra của cổng AND Từ đây vẽ được cấu trúc logic của mạch
Đây là mạch cộng nửa hay cộng chưa đủ (haft adder : HA) vì chưa có số nhớ ban đầu của phép cộng trước đó.
Hình 2.3.18 Mạch trừ hết 3.2 Mạch trừ nhiều bit Với mạch trừ nhị phân nhiều bit, cũng có thể thực hiện song song các mạch cộng FS từng bit nhưng các bit của số bị trừ cần được đảo, số nhớ của tầng cuối cần đem về bit nhớ ban đầu của tầng đầu. Hình minh hoạ cho mạch trừ nhị phân 4 bit
3.3 Mạch cộng trừ kết hợp
CỘNG TRỪ BCD 4.1 Cộng 2 số BCD Số BCD thực ra cũng là số nhị phân n bit nhưng chỉ có 10 tổ hợp trạng thái từ 0000 đến 1001 (biểu thị số thập phân tương ứng là từ 0 đến 9) nên cách cộng cũng tương tự như cổng số nhị phân nhiều bit. Tuy nhiên khi tổng vượt quá 1001 thì tức là tổng đó không còn là số BCD nữa, do đó ta phải cộng tổng với 0110 (số 610) để cho tổng mới là số BCD đồng thời số nhớ chính là hàng cao hơn của tổng. Ví dụ như cộng 2 số BCD sau:
Hình 2.3.23 Mạch cộng 2 số BCD 1 bit 2 số cần cộng là A3A2A1A0 và B3B2B1B0 cho tổng là C3S4S3S2S1 (C3 là hàng chục nếu có). Nếu tổng đầu vượt quá 9 ( từ 10 đến 18) thì các cổng logic sẽ cho phép xác định hàng chục đồng thời tổng này phải được cộng thêm 6 ở tầng 74LS83 thứ 2 để cho tổng cuối cùng ở dạng BCD. Nếu tổng không vượt quá 9 (vẫn là số BCD) thì tổng hàng chục không có nên 74LS83 thứ 2 sẽ cộng tổng này với 0, tổng ra không có gì thay đổi. Ta có thể ghép nhiều mạch cộng ở trên để có mạch cộng 2 số BCD nhiều bit, khi đó chỉ việc nối ngõ ra hàng chục của tầng đầu tới ngõ vào số nhớ Ci của tầng sau là được. 4.2 Trừ 2 số BCD Với phép trừ BCD, ta phải lấy bù 9 của số trừ rồi mới làm phép cộng lại với số bị trừ. Lấy bù 9 của 1 số tức là lấy 9 trừ đi số đó. Ở chương 1 có nói rõ hơn về phép trừ BCD Ví dụ về phép trừ BCD : 9 – 5 và 2 – 6
Hình 2.3.24 Mạch trừ 2 số BCD 1 bit MẠCH NHÂN CHIA 5.1 Mạch nhân 2 số nhị phân Về nguyên lí, đó là phép cộng nhiều lần. Cách nhân 2 số nhị phân xin xem lại chương 1. Mạch ở hình 2.3.25 minh hoạ cho mạch nhân 2 số nhị phân 4 bit A và B. Mạch gồm ghi dịch 4 bit để chứa số được nhận A, ghi dịch 5 bit để chứa số nhân B, ghi dịch 6 bit để chứa kết quả nhân (còn gọi là bộ tích luỹ : accumulator). 5 cổng And sẽ tạo tích từng phần của các cặp bit và 6 bộ cộng toàn phần để tạo tích cuối và số nhớ tương ứng.
Hình 2.3.25 Cấu trúc 1 mạch nhân 2 số nhị phân Ví dụ về phép nhân 2 số A = 1101và B = 1011: Số nhân (A): 1101 (1310) Số bị nhân B : 1011 (1110) Tích 1101 từng 1101 phần 0000 1101 Tích cuối : 10001111 (14310) 5.2 Mạch chia 2 số nhị phân Còn với mạch chia 2 số nhị phân, nguyên tắc là trừ liên tiếp để cho kết quả, bạn có thể xem thêm ở phần mạch chia nhị phân chương 1, hình mạch khá phức tạp nên không được trình bày ở đây. BỘ LOGIC VÀ SỐ HỌC ALU là thành phần quan trọng của CPU trong máy tính, nó có thể thực hiện nhiều phép tính số học và logic dựa trên dữ liệu thường bao gồm phép cộng, trừ, and,or, exor, dịch chuyển, tăng giảm dần và cả phép nhân, chia. Ngoài ra cũng có một số ALU sản xuất ở dạng IC rời, tất nhiên chúng không thể làm đầy đủ các chức năng như ALU trong VXL. Sau đây, ta hãy xem qua 2 ALU rời hay dùng.
6.1 ALU 74LS181 A0 – A3 : dữ liệu nhị phân 4 bit vào (A = A3A2A1A0) B0 – B3 : dữ liệu nhị phân 4 bit vào (B= B3B2B1B0) CYN : số nhớ ban đầu vào (tác động ở mức thấp) S0 – S3 : Mã số chọn (S = S3S2S1S0) để chọn chức năng của ALU. M điều khiển kiểu (chế độ) hoạt động logic (M =1) hay số học (M = 0). Q0 – Q3 : dữ liệu nhị phân 4 bit ra tác động ở thấp (Q = Q3Q2Q1Q0). CYN + 4 số nhớ ra (tác động thấp). Ở phép trừ nó chỉ dấu của kết quả : o Logic 0 chỉ kết quả dương. o Logic 1 chỉ kết quả âm ở dạng số bù 2. Ngõ số nhớ vào Cn và ngõ số nhớ ra CYN+4 cho phép nối chồng nhiều IC 74LS181. A = B : logic 1 ở ngõ vào này chỉ A = B, logic 0 chỉ A ≠ B. G (carry generate output) và P (carry propagate input) : hai ngõ này được dùng khi nối chồng các IC 74LS181. Hoạt động logic của 74181 được trình bày ở bảng chức năng dưới đây
6.2 ALU 74LS382 ALU 74LS/HC382 cũng là loại 4 bit nhưng có 3 ngõ chọn chức năng nên có ít chức năng logic số học hơn 74LS181. Nó cũng có ngõ vào số nhớ CN, ngõ ra số nhớ CYN+1 như 74LS181 nhưng có thêm ngõ ra chỉ báo tràn overflow trong lúc không có một số ngõ ra khác như 74LS181. Khi dùng số có dấu ngõ overflow sẽ lên 1 khi phép cộng hay trừ tạo số vượt quá số có dấu 4 bit. Ngõ số nhớ vào và số nhớ ra cũng còn dùng để nối chồng nhiều IC 74382.
Hình 2.3.27 Kí hiệu khối ALU 74LS382 và bảng hoạt động Page 3BÀI 5: MẠCH PHÁT VÀ KIỂM TRA TÍNH CHẴN LẺ Dữ liệu dạng số khi được lưu trữ, xử lí hay truyền từ máy này qua máy khác có thể bị lỗi. Như khi truyền dữ liệu đi xa qua môi trường điện thoại, dây cáp, không gian có thể bị ảnh hưởng bởi nhiệt độ, nhiễu đường dây, điện từ… hay do lâu ngày các bộ xử lí, bộ chuyển đổi có một sai sót nhỏ sẽ làm thay đổi dữ liệu. Ví dụ : trong 1 khối dữ liệu có chữ A mã ASCII là 1000001 sẽ bị sai thành 100000 ,bit sai có thể là bất cứ 1 bít nào khác. Mặc dù xác suất làm sai chỉ 1 bít trong cả khối dữ liệu là rất nhỏ ( trung bình khoảng 100000 bit mới có 1 bit sai) nhưng trong nhiều trường hợp đòi hỏi phải thật chính xác hay giảm hết mức những sai sót nhỏ này. Có nhiều mạch có thể phát hiện sai và sửa lỗi, bạn sẽ gặp lại nội dung này kĩ hơn trong môn “Truyền số liệu”, ở đây xin nói tới mạch tạo kiểm parity. Có 2 dạng mạch chính là parity chẵn và parity lẻ. Cả 2 đều được sử dụng.
Ví dụ : Truyền 1 khối dữ liệu 4 bit 1101 có sử dụng mạch tạo kiểm parity để rò sai được minh hoạ như hình dưới đây :
Hình 2.3.28 Mạch tạo kiểm Parity Giả sử mạch parity chẵn được dùng. Nhận thấy rằng tổng số bit truyền là 3 (lẻ) nên bit parity 1 được thêm vào cho chẵn. Như vậy, dữ liệu truyền đi sẽ có 5 bit là 11101 Mạch tạo parity trên sử dụng 3 cổng XNOR để kiểm tra số bit chẵn hay lẻ, còn bên nhận mạch kiểm parity dùng 4 cổng XNOR để rò sai, nếu dữ liệu truyền đúng thì ra Q = 0, nếu truyền sai thì ra Q = 1. Khi này, mạch nhận có thể truyền về tín hiệu báo truyền sai cho máy gửi để nó truyền lại khối dữ liệu bị lỗi này. Nhận thấy rằng nếu khối dữ liệu truyền bị sai tới 2 bit (xác suất này là rất rất nhỏ) hay bit parity truyền sai thì mạch parity mất tác dụng. Các mạch xử lí điều khiển hay truyền dữ liệu thường có sẵn khối tạo kiểm và thậm chỉ có thể sửa lỗi luôn. Còn khi dùng mạch rời thì IC 74180 và họ của nó là thông dụng nhất
Hình 2.3.29 Kí hiệu khối 74180 và bảng hoạt động Đây là IC tạo kiểm 8 bit từ D0 đến D7, bit parity có thể dùng là chẵn hay lẻ. 2 ngõ ra là EVEN (lẻ ra) và ODD (chẵn ra). 2 ngõ PE (lẻ vào) và PO (chẵn vào) dùng trong trường hợp cần nối chồng nhiều IC để có mạch tạo kiểm nhiều bit hơn. Cách nối sẽ là đưa từ ngõ ra chẵn và ngõ ra lẻ tới ngõ vào chẵn và vào lẻ. 2 ngõ vào lẻ và vào chẵn cũng như 2 ngõ ra lẻ và ra chẵn phải không được bằng nhau khi kiểm parity. Khi ngõ vào parity nào không dùng thì phải nối mức thấp. Hình dưới đây là cách sử dụng 74180 làm mạch kiểm parity lẻ cho 9 bit dữ liệu vào (gồm cả bit parity).
Hình 2.3.30 Mạch kiểm Parity 9 bit dùng 74180
|