Thiết kế mạch mã hóa nhị phân 4 bit Johnson
Home » VHDL Example » Thiết kế mạch mã hoá 4 đường sang 2 đường với ngõ vào tích cực mức cao - VHDL Show
Bài 3. Thiết kế mạch mã hoá 4 đường sang 2 đường với ngõ vào tích cực mức cao
Share: Cập nhật 22/11/2016 (đề nghị mọi người ghi rõ nguồn bản quyền trước khi chia sẽ ) 1. Thiết kế RSFF đồng bộ tín hiệu Rst 2. Thiết kế RSFF không đồng bộ tín hiệu Rst 3. DFF đồng bộ tín hiệu RST Bài thực hành số 24. Thiết kế mạch DEMUX 1_8 5. Thiết kế mạch giải mã 7 đoạn 6. Thiết kế bộ mã hóa nhị phân – Gray 7. Thiết kế bộ so sánh 2 số nhị phân 4 bit 8. Thiết kế bộ ALU 4 bit Bài thực hành số 39. Thiết kế D-FF , Thiết kế RS-FF 10. Thiết bộ đếm nhị phân tiến, lùi có Kđ =16 11. Bộ đếm mã Johnson 8 bít 12. Thiết kế mạch ghi dịch 8 bít vào nối tiếp ra nối tiếp 13. Thiết kế bộ ghi dịch 8 bit vào nối tiếp ra song song Bài thực hành số 414.Thiết kế bộ đếm mã Gray 4 bit 15.Thiết kế bộ đếm mã vòng 16 Thiết kế mạch điều kiển đèn giao thông 17.Thiết mạch kiểm tra chuỗi dữ liệu Bài thực hành số 518. Thiết kế bộ ALU 8 bit dùng Function 19. ALU 8 bit procedure 20. Alu 8 bit component Thiết kế hệ thống sốNội Dung gồm có : I. Hướng dẫn sử dụng altium desginer 10.97 trong việc sử dụng và thiết kế mạch FPGA sử dụng kit nano board 3000 II. Tổng hợp các bài viết về môn thiết kế hệ thống số. 1. Bài 1:Viết chương trình điều khiển 2 led : LED0 và LED7 sáng nhấp nháy theo chu kỳ 1s 2. Bài 2 :Viết chương trình đếm tiến theo mã nhị phân Kđ = 128, đầu ra hiển thị trên 8 LED đơn 3.Bài 3:Viết chương trình điều khiển 8 led đơn sáng lần lượt theo quy luật: LED0 sáng – LED1 sáng – ….- LED7 sáng. 4. Bài 4 :Viết chương trình điều khiển 8 led đơn sáng lan theo quy luật LED0 sáng, LED1 và LED0 sáng, LED2, LED1 và LED0 sáng,…, 7 LED cùng sáng . 5. Bài 5 :Thiết kế mạch giải mã 3_8 đầu vào SW0…SW2 đầu ra LED0..LED7,chân enable là button0 6. Bài 6 : Thiết kế bộ ALU 4 bít với đầu vào cho số hạng thứ nhất là SW0 …SW3, số hạng thứ 2 là SW4…SW7 ,chân chọn là button 0 …button 2 ,đầu ra là led0 …led3. 7.Bài 7 : Thiết kế bộ so sánh 2 số nhị phân 4 bit . 8.Bài 8 : Thiết kế mạch tạo mã chẵn lẻ cho chuỗi nhị phân 7 bit 9.Bài 9 :Thiết kế bộ đếm theo mã Gray 4 bit hiện thị kết quả trên LED0…LED3 10.Bài 10 : Thiết kế mạch điều kiển led sáng lan từ giữa sang hai bên 11.Bài 11 :Thiết kế bộ đếm theo mã Jonhson 8 bit,kết quả hiển thị trên led 12.Bài 12 : Thiết kế bộ đếm 10 hiển thị trên LED 21. Đề Thi 22. Đề thi VHDL & Thiết kế hệ thống số – Đề 1 23. Đề thi VHDL & Thiết kế hệ thống số – Đề 2 24. Đề thi VHDL & Thiết kế hệ thống số – Đề 3 25. Đề thi VHDL & Thiết kế hệ thống số – Đề 4 VHDL26. MUX 8_1 tạo từ MUX2_1 Hãy chia sẻ cảm nhận của bạn khi đọc các bài viết trên trang Blog : Tại đâyCác bạn muốn download toàn bộ code & mô phỏng các bài biết xin hãy liên hệ : Click HereThanhPhamCopyright @ Thanh Pham BÀI 6: MẠCH ĐẾM VÒNG 3.1 Đếm vòng Mạch đếm vòng có cấu trúc cơ bản là thanh ghi dịch với ngõ ra tầng sau cùng được đưa về ngõ vào tầng đầu. Hình dưới là mạch đếm vòng 4 bit dùng FF D.
Hình 3.3.22 Mạch đếm vòng 4 bit Nhưng để ý rằng, khi mới bật nguồn cho mạch đếm chạy, ta không biết bit 1 nằm ở ngõ ra của tầng nào. Do đó, cần phải xác lập dữ liệu dịch chuyển ban đầu cho bộ đếm. Ta có thể dùng ngõ Pr và Cl để làm, như là đã từng dùng để đặt số đếm cho các mạch đếm khác đã nói ở trước, giả sử trạng thái ban đầu là 1000 vậy ta có thể reset tầng FF 3 để đặt Q3 mức 1, các tầng khác thì xoá bằng clear. Có thể dùng mạch tạo xung để nạp dữ liệu ban đầu như sau :
Hình 3.3.23 Mạch nạp số ban đầu cho mạch đếm vòng Giả sử ban đầu chỉ cho D0 = 1, các ngõ vào tầng FF khác là 0. Bây giờ cấp xung ck đồng bộ khi ck lên cao, dữ liệu 1000 được dịch sang phải 1 tầng do đó Q0 = 1, các ngõ ra khác là 0. Tiếp tục cho ck xuống thấp lần nữa, Q1 sẽ lên 1, các ngõ ra khác là 0. Như vậy sau 4 nhịp xung ck thì Q3 lên 1 và đưa về làm D0 = 1. mạch đã thực hiện xong 1 chu trình. Trạng thái các ngõ ra của mạch như hình sau:
Hình 3.3.24 Dạng sóng minh hoạ mạch đếm vòng Hình trên cho thấy rằng, dạng sóng các ngõ ra là sóng vuông, dịch vòng quanh, chu kì như nhau nhưng lệch nhau đúng 1 chu kì xung vào Ck. Số đếm ra là 1, 2, 4, 8 không phải là số xung vào (như bảng trạng thái đếm phía dưới)
3.2 Đếm Johnson (đếm vòng xoắn)
Hình 3.3.25 Mạch đếm vòng xoắn
Ta có thể nạp trạng thái ban đầu cho mạch là 1000 bằng cách sử dụng ngõ Pr và Cl giống như ở trên. Dạng sóng các ngõ ra cũng giống như trên, hơn thế nữa, nó còn đối xứng giữa mức thấp với mức cao trong từng chu kì
Hình 3.3.26 Dạng sóng mạch đếm vòng xoắn Page 2BÀI 5: MẠCH ĐẾM ĐỒNG BỘ Ở phần trước ta đã biết rằng những mạch đếm không đồng bộ khi có nhiều tầng FF sẽ tích luỹ nhiều trì hoãn truyền của mỗi tầng làm cho nó lớn hơn cả chu kì đếm xung khiến toàn mạch có thể hoạt động sai logic nhất là khi hoạt động ở tần số cao. Như ở mạch đếm bốn bit chia 2 đã nói ở trước : khi số đếm tăng từ 1110 lên 1111 chỉ cần chờ ngõ ra của FF 0 thay đổi nên chỉ mất 1tD. Khi số đếm tăng từ 1011 lên 1100 đòi hỏi ba FF chuyển mạch liên tiếp nên sẽ phải mất 3tD. Trường hợp nữa khi số đếm tự động reset về 0000 thì cả 4 FF đều chuyển trạng thái do đó trì hoãn truyền sẽ là 4tD. Có thể khắc phục những giới hạn này bằng việc sử dụng bộ đếm đồng bộ hay còn gọi là bộ đếm song song bởi vì tất cả các tầng đều được kích bởi cùng một xung nhịp Ck đầu vào. Khi đó các FF chuyển mạch cùng một lúc khiến thời gian trì hoãn của mạch đếm bằng trì hoãn truyền của một FF bất kể số tầng. Để đảm bảo hoạt động đúng, một số cổng logic được thêm vào để khống chế ngõ vào J, K (T). Trước hết là mạch đếm chia 16. 2.1 Đếm lên chia 16 Nối dây như thế nào ...?
Hình 3.3.16 Mạch đếm lên đồng bộ mod 16 Bảng trạng thái và dạng sóng đếm lên của mạch đếm đồng bộ hoàn toàn giống như ở mạch đếm không đồng bộ do đó ta sẽ dựa vào chúng để xác định xem mạch hoạt động như thế nào. Cũng cần lưu ý là ở đây ta xây dựng mạch đếm lên mod 16 với 4 FF JK có xung Ck tác động cạnh xuống. Ta cũng có thể làm mạch tương tư, với xung ck tác động cạnh lên hay sử dụng FF T thay cho FF JK.
Để mạch đếm đúng, ở mỗi xung kích ck tác động cạnh xuống, chỉ có FF nào dự kiến sẽ lật trạng thái mới phải để T = 1(J, K được nối chung với nhau và được coi như là ngõ chung T). Nhìn vào bảng trạng thái hoạt động của bộ đếm lên ta sẽ thấy được cần phải kết nối như thế nào - Ngõ ra Q0 sẽ thay đổi trạng thái theo cạnh xuống của xung kích ck do đó ngõ T0 được để trống (mức cao). - Ngõ ra Q1 đổi trạng thái khi có xung kích xuống Q0 do đó Q0 được đưa thẳng vào ngõ T1 - Ngõ ra Q2 đổi trạng thái khi đếm đến số 4, 8, 12, 0, lúc này thì Q0 và Q1 đều xuống thấp; vậy ngõ vào T2 sẽ là And của hai ngõ vào này - Ngõ ra Q3 đảo trạng thái khi số đếm là 8 và 0 khi này Q0, Q1, Q2 đều tác dụng cạnh xuống, vậy ngõ vào T3 sẽ là And của 2 ngõ vào này Vậy mỗi FF đều phải có đầu vào T được nối sao cho chúng ở mức cao chỉ khi nào đầu ra của các FF trước nó ở mức cao. T0 = 1 T1 = Q0 T2 = Q1.Q2 T3 = Q0.Q1.Q2 và từ đây mạch được kết nối với hai cổng And được thêm vào
Hình 3.3.17 Mạch đếm lên đồng bộ mod 16 Trì hoãn truyền của mạch đếm sẽ bằng trì hoãn truyền qua một FF cộng với trì hoãn truyền qua các cổng and. Với mạch đếm đã khảo sát ở trên số tầng là n = 4, số cổng and phải dùng thêm là n – 2 = 2 nhưng thời gian cũng chỉ trì hoãn trên một cổng and thôi nên trì hoãn truyền tổng cộng là : tD = tD(FF) + tD(and) Do trì hoãn truyền của cổng and thì nhỏ hơn nhiều so với trì hoãn truyền của FF nên thời gian này nhỏ hơn so với thời gian tương ứng của mạch đếm không đồng bộ. Điều này còn có ích hơn khi trong mạch có rất nhiều tầng FF và mạch phải hoạt động ở tần số cao. Đây là điểm nổi bật của nó so với mạch đếm không đồng bộ nhưng rõ ràng nó sẽ phải có cấu tạo phức tạp hơn Ví dụ : Hãy xem tần số hoạt động lớn nhất của mạch trên (fmax) khi tD(FF) = 50ns, tD(and) = 20ns và so sánh nó với fmax của mạch đếm không đồng bộ cùng số bit Ta có trì hoãn truyền tổng cộng của mạch là tD = 50 + 20 = 70(ns). Chu kì xung nhịp ck đầu vào Tck phải lớn hơn 70 ns này do đó fmax = 1/70ns = 14,3MHz Bây giờ với bộ đếm mod 16 không đồng bộ fmax = ¼.50ns = 5MHz Như vậy rõ ràng bộ đếm song song hoạt động được ở tần số cao hơn hẳn Bây giờ giả sử cần làm mạch mod 32 từ mod 16, thì ta sẽ phải mắc thêm 1 tầng FF thứ 5. Trì hoãn truyền của đếm song song sẽ vẫn là 70ns suy ra fmax = 14,3MHz. Còn với bộ đếm không đồng bộ thì do có thêm 1 tầng nên fmax = 1/5.50ns = 4MHz, tần số này bị giảm hẳn đi. Ở hình 3.3.17 ở trên là mạch đếm đồng bộ lên, ta có thể xây dựng mạch đếm đồng bộ xuống giống như cách đã làm với mạch đếm không đồng bộ tức là dùng các đầu ra đảo của FF để điều khiển các đầu vào T của tầng kế tiếp. Như vậy với mạch đếm xuống mod 16 thì đầu ra Q sẽ được nối tới T1, T2, T3 và bộ đếm sẽ đếm xuống từ 15, 14, 13,… rồi về 0 để reset trở lại 15. Bây giờ thêm 1 ngõ điều khiển chế độ đếm giống như bên mạch đếm lên xuống không đồng bộ ta đã có mạch đếm lên xuống đồng bộ. K = 1(up) đếm lên, K = 0(down) đếm xuống. Mạch được xây dựng như hình sau (lưu ý xung ck tác động cạnh lên)
Hình 3.3.18 Mạch đếm đồng bộ lên hay xuống 2.3 Đếm đồng bộ không theo hệ nhị phân Để thiết kế mạch đếm mod m bất kì từ mạch đếm mod 2n (m <= 2n) ta có thể dùng ngõ clear để xoá mạch khi đếm đến số m, cách khác là nhìn vào giản đồ xung để thử nghiệm việc nối các đầu vào J, K. Ở đây ta sẽ xét đến mạch đếm mod 10 hay dùng Ngoài xung ck được đưa vào tất cả 4 tầng FF thì cần phải giải quyết các ngõ J, K Để ý là khi mạch đếm đến số 10 thì Q0 = 0 và Q2 = 0 không đổi trạng thái khi reset về 0 nên FF 0 và FF 2 được kích bình thường như đã nói. Còn với FF 1, Q1 đổi trạng thái khi Q0 ở cao đồng thời Q1 phải được giữ luôn mức thấp ở số đếm thứ 10, khi này có thể tận dụng đang ở cao cho tới khi reset, vậy J1 = K1 = Q0. Sau cùng với FF 3 Q3 sẽ được reset về 0 khi cả 3 Q0Q1Q2 đều về 0. Vậy J3 = K3 = Q0Q1Q2 Kiểm tra lại thấy rằng mạch đúng là hoạt động đếm chia 10. Bạn có thể xem phần thiết kế mạch đếm đồng bộ ở sau để hiểu rõ cách nối mạch, còn đây là cấu trúc mạch mô tả:
Hình 3.3.19 Mạch đếm mod 10 đồng bộ Nhiều bộ đếm song song ở dạng IC tích hợp được thiết kế để có khả năng nạp trước số cần đếm thay vì 0 như ta thường thấy. Số đặt trước là bất kì trong những số có thể ra của mạch và mạch có thể đếm lên hay đếm xuống 1 cách đồng bộ hay không đồng bộ từ số này.Việc này giống như là nạp song song ở ghi dịch vậy, bằng cách tận dụng ngõ Cl và Pr (ngõ không đồng bộ độc lập với ck). Cấu trúc mạch với 3 tầng FF được minh hoạ như hình và hoạt động nạp được thực hiện như sau:
hình 3.3.20 Mạch đếm đặt trước 3 bit Giả sử mạch đang đếm hay dừng ở 1 số đếm nào đó Đưa sẵn số đếm có trạng thái cần nạp vào ngõ A B C Đặt một xung mức thấp vào đầu LD (parallel load), xung này sẽ cho phép trạng thái logic ABC qua cổng Nand để đưa vào 3 tầng FF qua 3 ngõ Pr hay Cl (tuỳ thuộc bit mức thấp hay cao). Kết quả là Q0 = A, Q1 = B, Q2 = C Khi LD lên cao trở lại, lúc này nếu có xung nhịp Ck thì mạch sẽ tiếp tục đếm từ số vừa nạp (trước đó ck và các ngõ T không có tác dụng). 2.5 Một số IC đếm đồng bộ Nhóm 74LS160/161/162/163Cả 4 IC đều có cùng kiểu chân và các ngõ vào ra tương tự nhau; có xung ck nảy ở cạnh xuống do trong cấu tạo có thêm mạch đệm sau ngõ đồng bộ; có khả năng nạp song song; preset đồng bộ; có thể nối chồng nhiều IC để có số mod lớn hơn nhiều do có - LS160, LS161 là IC đếm chia 10 còn LS161 và LS163 là đếm chia 16 - LS160 và LS161 có chân xoá Cl không đồng bộ còn LS161, LS163 có chân xoá Cl đồng bộ Nhóm 74190, 7419174LS190 là mạch đếm chia 10 còn 74LS191 là mạch đếm chia 16. Chúng có kiểu chân ra như nhau và chức năng cũng như nhau - Chân EnG (enable gate) là ngõ vào cho phép tác động ở thấp; chân U/D là ngõ cho phép đếm lên hay xuống (thấp) - Chân RC (ripple clock) xung rợn sẽ xuống thấp khi đếm hết số; được dùng cho việc nối tầng và xác định tần số của xung max/min khi nối tới chân LD (load) của tầng sau. Cách nối tầng như sau : chân RC của tầng trước nối tới chân ck của tầng sau, khi này tuy mỗi mạch là đếm đồng bộ nhưng toàn mạch là đếm bất đồng bộ. Cách khác là chân RC của tầng trước nối tới chân EnG của tầng sau, xung ck dùng đồng bộ tới các tầng. Nhóm 74LS192, LS193 LS192 là mạch đếm chia 10 còn LS193 là mạch đếm chia 16 Cả 2 loại đều cấu trúc chân như nhau và đều có khả năng đếm lên hay xuống Khi đếm lên xung ck được đưa vào chân CKU còn khi đếm xuống xung ck được đưa vào chân CKD Khi đếm lên hết số chân Carry xuống thấp, khi đếm xuống hết số chân Borrow xuồng thấp. 2 chân này dùng khi cần nối tầng nhiều IC Đặc biệt mạch có thể đặt trước số đếm ban đầu ở các chân ABCD và chân LD xuống thấp để cho phép nạp số ban đầu. Nhóm 74HC/HCT4518 và 74HC/HCT4520 Đây là 2 IC đếm đồng bộ họ CMOS dùng FF D về hoạt động cũng tương tự như những IC kể trên nhưng vì cấu tạo cơ bản từ các cổng logic CMOS nên tần số hoạt động thấp hơn so với những IC cùng loại bù lại tiêu tán công suất thấp. 4518 là IC đếm chia 10 còn 4520 là IC đếm chia 16 Cấu trúc chân và đặc tính của chúng như nhau Chân nhận xung ck và chân cho phép E có thể chuyển đổi chức năng cho nhau do đó mạch có thể tác động cạnh xuống hay cạnh lên Mạch cũng cho phép nối tầng nhiều IC khi nối Q3 của tầng trước tới ngõ E của tầng sau. Page 3BÀI 4: MẠCH ĐẾM KHÔNG ĐỒNG BỘ Trong những phần trước ta đã được biết đến 2 loại mạch tuần tự cơ bản là mạch lật và mạch ghi dịch; và cũng biết rằng nhiều FF nối lại với nhau có thể hoạt động như một mạch đếm hay thanh ghi (nhớ nhiều bit). Nhưng đó mới chỉ là những mạch nhớ cơ bản, phần này sẽ đề cập đến chi tiết hơn cấu tạo, hoạt động và nhiều ứng dụng của nhiều mạch đếm khác nhau. Phần lớn chúng ở dạng mạch tích hợp. Hệ thống số ngày nay sử dụng khá nhiều loại mạch đếm, có thể dùng để đếm xung, đếm sản phẩm, đếm làm đồng hồ, định thời gian … và rõ ràng chúng là các mạch logic nên chính xác và dễ dàng thiết kế hơn nhiều so với các loại mạch tương tự. 1.1 Đếm không đồng bộ theo hệ nhị phân (chia 2) Mạch đếm lên Hình dưới đây trình bày một mạch đếm gồm 4 FF T mắc nối tiếp. Các ngõ vào T (hay J=K) của cả 4 tầng FF đều để trống hay nối lên +Vcc. Xung cần đếm được đưa vào ngõ ck tác động cạnh xuống của tầng FF đầu tiên (nó có thể là một chuỗi xung vuông có chu kì không cố định) Các ngõ ra Q lần lượt được nối tới ngõ vào đếm ck của tầng sau nó (nếu có). Chúng được đặt tên là Q0 (LSB), Q1, Q2, Q3 (MSB)
Hình 3.3.1 Bộ đếm nhị phân 4 bit không đồng bộ cơ bản
Hình 3.3.2 Giản đồ thời gian xung của ngõ vào và các ngõ ra bộ đếm : Mạch sẽ đếm như thế nào? Mạch đếm thường hoạt động ở trạng thái ban đầu là 0000 do đó một xung tác động mức thấp sẽ được áp vào ngõ Cl của các tầng FF để đặt trạng thái ngõ ra là 0000. Khi xung đếm ck tác động cạnh xuống đầu tiên thì Q0 lật trạng thái tức là Q0 = 1. Ở cạnh xuống thứ 2 của xung ck, Q0 lại lật trạng thái một lần nữa, tức là Q0 = 0. Như vậy cứ sau mỗi lần tác động của ck Q0 lại lật trạng thái một lần, sau 2 lần ck tác động, Q0 lặp lại trạng thái ban đầu, do đó nếu xung ck có chu kì là T và tần số là f thì xung ngõ ra Q0 sẽ có chu kì là 2T và tần số còn 1/2f. Như vậy xung đếm ck đã được chia đôi tần số sau 1 tầng FF. Do Q0 lại trở thành ngõ vào xung đếm của FF thứ 2 (FF B) nên tương tự tần như vậy fQ1 bằng một nửa fQ0. Với 4 tầng FF thì fQ3 = 1/2fQ2 = 1/4fQ1 = 1/8fQ0 = 1/16f Như vậy với 4 FF ta có 16 trạng thái logic ngõ ra từ 0000(010) ở xung đếm đầu tiên đến 1111 (1510) ở xung đếm thứ 16, tức là trị thập phân ra bằng số xung đếm vào và vì vậy đây là mạch đếm nhị phân 4 bit (có 4 tầng FF, tần số được chia đổi sau mỗi tầng) hay mạch đếm chia 16 Mạch được xếp vào loại mạch đếm lên vì khi số xung đếm vào tăng thì số thập phân ra tương ứng cũng tăng. Nhưng để ý rằng chỉ có 16 trạng thái ra nên ở xung đếm ck thứ 16 mạch được tự động xoá về 0 để đếm lại. Muốn có nhiều trạng thái ra hơn thì phải nối thêm tầng FF. Tổng quát với hoạt động như trên nếu có n FF thì sẽ tạo ra 2n trạng thái ngõ ra. Số trạng thái ngõ ra hay số lượng số đếm khác nhau còn được gọi là Modulus (viết tắt : Mod) do đó, mạch đếm trình bày ở trên còn gọi là mạch đếm mod 16 Bảng sự thật của mạch đếm nhị phân 4 bit như sau :
Nhìn vào giản đồ xung và bảng trạng thái hoạt động của mạch đếm này ta thấy rằng không phải lúc nào các trạng thái logic các ngõ ra đều thay đổi theo nhịp xung đếm ck đầu vào nên ở đây chỉ là mạch đếm không đồng bộ. Giải mã mạch đếm Với bộ đếm như trên thì có thể làm được gì ? Chắc chắn là nó có nhiều ứng dụng rồi, hãy xét qua một số ví dụ sau : Ở phần mạch giải mã để hiển thị led 7 đoạn, mạch đếm đã được ứng dụng để tạo số đếm cho mạch giải mã từ 0000(0) đến 1010(910) Còn đây là 1 ứng dụng đơn giản khác : yêu cầu được đặt ra là phải biết được mạch đếm đến một số nào đó (chẳng hạn 5) rồi hiển thị ra led. Bạn đọc có thể dễ dàng nghĩ ngay đến việc sử dụng cổng logic để tạo trạng thái ngõ ra làm sáng led từ tổ hợp trạng thái logic ngõ vào khi mạch đếm đến 5. Cách mắc sẽ như sau :
Hình 3.3.3 Giải mã mạch đếm để hiển thị ra led Vậy là ta đã có một trò chơi điện tử đơn giản theo kiểu may mắn. Cho bộ đếm hoạt động, người chơi sẽ nhấn một nút vào một thời điểm bất kì để ngưng cấp xung đếm ck, mạch đếm sẽ dừng lại ở con số đang đếm đến. Nếu số này làm đèn led sáng thì người chơi sẽ thắng. Tất nhiên để hoàn chỉnh ta cần phải có một mạch dao động để cấp xung ck cho mạch đếm chạy (bạn có thể tạo mạch dao động từ cổng logic hay mạch chốt kết hợp với linh kiện thụ động R, C như đã nói ở phần trước). Một ứng dụng đơn giản khác là dùng mạch đếm này để tạo khoảng xung vuông điều khiển tải (chẳng hạn động cơ chạy hay mở van xả) trong khoảng thời gian 3s đếm từ số 7 đến số 10 Giải pháp để giải bài toán trên là sẽ dùng cổng logic để tạo mạch giải mã số 0111(710) để kích ngõ ra lên cao rồi giải mã số 1010(1010) để kích ngõ ra xuống thấp trở lại. Hai đường giải mã này được đưa vào ngõ Pr và Cl của mạch chốt để đặt ngõ ra lên mức cao khi Pr và xoá nó khi Cl. Mạch thực hiện kết nối như sau :
Hình 3.3.4 Giải mã mạch đếm điều khiển tải Trong đó NAND1 sẽ giải mã số 7 còn Nand2 sẽ giải mã cho số 10. Ở số đếm thứ 7 của mạch đếm ngõ ra Nand1 xuống thấp preset mạch chốt đặt Q lên cao. Đến khi đếm tới 10 thì ngõ ra nand2 khi này xuống thấp (tất nhiên Nand1 đã trở lại cao rồi) thực hiện xoá ngõ ra Q làm Q xuống thấp. Khi mạch đếm đến 7 trở lại thì khoảng xung vuông lại xuất hiện. Nó có tính chu kỳ. Thời gian tồn tại xung vuông được quyết định bởi tần số (chu kì) mạch dao động cấp cho xung ck của mạch đếm, nếu Tck = 1s thì T = 3s. Do đó ta có thể thay đổi f mạch dao động để thay đổi khoảng thời gian điều khiển tải. Bây giờ bạn hãy thiết kế bộ trò chơi đó chỉ cần dùng 3 FF T (tạo 8 trạng thái ra). Khi người chơi nhấn dừng mạch đếm ở số 5 hay số 10 thì đèn led sẽ sáng. Mạch đếm xuống Ở trước là mạch đếm lên lần lượt chia 2 tần số, số hệ 10 ra tương ứng là từ 0 đến 15. Cũng có khi cần mạch đếm xuống từ 15 xuống 0 chẳng hạn, cách nối mạch sẽ như thế nào? Hình dưới trình bày cấu trúc mạch đếm xuống nhị phân 4 bit. Ngõ ra Q lần lượt của tầng trước sẽ được nối đến ngõ vào ck của tầng sau đó. Xung đếm ck vẫn tác động ở mức thấp
Hình 3.3.5 Mạch đếm xuống 4 bit không đồng bộ Các ngõ ra và cách thức xoá mạch, đưa xung vào giống như ở trước. Ngõ ra Q của tầng FF đầu dổi trạng thái ở đổi cạnh xuống của xung vào các ngõ ra khác đổi trạng thái ở cạnh xuống của ngõ ra Q', tức là cạnh lên của ngõ ra Q0 của FF kề trước. Dạng sóng ở ngõ vào và các ngõ ra cùng với mức logic sau mỗi xung vào và kết quả số đếm được trình bày như hình dưới đây. Để ý rằng sau xung ck đầu tiên thì mạch se đếm ngay lên số đếm cao nhất là 15 rồi dần dần xuống 14, … cho tới 0 tổng cộng sau 15 xung ck và tới xung ck thứ 16 mạch sẽ tự động xoá về 15 để đếm xuống trở lại. Hình dưới đây trình bày cả 2 dạng sóng của mạch đếm lên và xuống bạn có thể so sánh chúng để thấy rõ hơn nguyên lí của sự đếm lên và đếm xuống.
hình 3.3.6 So sánh dạng sóng đếm lên và đếm xuống Hãy nối dây 4 FF T để tạo ra mạch đếm lên, mạch đếm xuống chia 16, có ngõ ck tác động mức cao. Hãy thay FF T bằng FF JK và thiết kế tương tự Thêm một bước nữa là cũng với từng ấy FF ta sẽ thiết kế mạch để có thể đếm lên đếm xuống đều được. Nhận thấy mạch đếm lên hay xuống là do nối từ ngõ raĠ của tầng trước tới ngõ vào ck của tầng sau do đó ở đây sẽ phải dùng một cổng OR cho 2 ngõ vào. Việc đếm lên xuống được quyết định bởi một ngõ điều khiển chọn chế độ lên hay xuống. Cấu trúc của mạch sẽ được thiết kế như sau :
Hình 3.3.7 Mạch đếm lên hay xuống Muốn có cả hai dạng sóng đếm lên và đếm xuống như hình ta có thể lấy ra cùng lúc từ các ngõ đảo và không đảo của các tầng FF giống như hình sau :
Hình 3.3.8 Mạch đếm lấy ra dạng sóng đếm lên và đếm xuống Mạch đếm tự dừng Các mạch đếm ở trước tự động quay vòng (đếm lên hết 15 rồi reset để trở lại đếm từ đầu hay đếm xuống đến 0 thì reset trở lại đếm từ 15 xuống) nếu tiếp tục cấp xung Ck cho mạch đếm. Bây giờ có một yêu cầu là mạch sẽ phải dừng đếm ở một con số nào đó định trước (chẳng hạn 10). Để thực hiện nó ta phải tìm cách dừng FF đầu tiên. Một cách mà chúng ta đã dùng ở phần “trò chơi may mắn” đó là ngưng cấp xung ck vào; nếu muốn mạch tự động làm, có thể dùng cổng logic tổ hợp để khống chế ngõ vào T (chung) của tầng đầu, các ngõ vào cổng logic sẽ là các mã số đếm của số đang đếm tới mà muốn dừng. Hình dưới đây trình bày cách thực hiện:
Hình 3.3.9 Mạch đếm tự dừng ở số đếm 10 1.2 Mạch đếm không đồng bộ không theo hệ nhị phân (chia 2) Với mạch đếm dùng n FF mắc nối tiếp thì số mod (số trạng thái logic ra) là 2n, và mạch sẽ đếm từ 0 đến 2n – 1 (4 FF đếm tới 16 trạng thái). Trong nhiều trường hợp ta cần mạch đếm có số mod không theo 2n, chẳng hạn đếm mod 10 (còn gọi là mạch đếm thập giai hay mạch đếm chia 10) rất hay dùng để hiển thị kết quả đếm ở dạng hệ 10, hay ví dụ khác là trong đồng hồ số cần mạch đếm chia 6 và chia 12 để hiển thị giờ và phút hay bất kì mạch đếm chia mod n nào.Thường thì trong mạch đếm lên số đếm tăng theo thứ tự liên tục từ 0 đền 2n – 1 rồi quay về 0 để đếm trở lại. Nhưng cũng có thể không tăng theo thứ tự hay thứ tự nhưng không liên tục miễn là đủ số trạng thái n. Trở lại mạch đếm tự dừng ở hình trên : khi đếm tới một số định sẵn (số 10) mạch sẽ tự dừng, vậy ta có thể cho mạch tiếp tục chạy để đếm trở lại bằng cách đưa ngõ đó tới chân clear thay vì đưa tới chân J, K. Hình mạch đếm mod 10 được nối như sau :
Hình 3.3.10 Mạch đếm mod 10 Cần để ý là ở xung đếm ck thứ 10 khi số đếm vừa lên 10 thì các trạng thái logic ngõ ra được đưa về khống chế ngõ Cl ngay do đó có thể thấy là số 10 không kịp hiện ra đã phải chuyển về 0. Thực tế thì do thời gian trì hoãn giữa các cổng logic khoảng vài ns nên vẫn có số đếm 10 trong khoảng thời gian này, ta chỉ quan tâm tới ảnh hưởng này khi cần đòi hỏi mạch hoạt động với độ chính xác cao như trong máy vi tính chẳng hạn. Ảnh hưởng của trì hoãn được thể hiện rõ hơn qua giản đồ xung sau
Hình 3.3.11 Trì hoãn truyền của mạch đếm không đồng bộ mod 10 Thực tế thì cách thiết kế mạch đếm không theo hệ nhị phân lợi dụng ngõ clear như ở trên không được dùng do: + Các ngõ ra do được nối với tải khác nhau ảnh hưởng đến ngõ đưa về, rồi trì hoãn truyền qua các cổng logic nữa sẽ phát sinh xung nhọn, các tầng FF sẽ không được xoá đồng thời + Hơn nữa ngõ clear không còn được tự do để xoá mạch lúc mong muốn. Do vậy có một cách tạo mạch đếm trên là nghiên cứu sự liên hệ giữa các trạng thái ở các ngõ ra rồi thử nối chúng với các ngõ vào J, K của tầng nào đó cho tới khi thoả bảng trạng thái. Hãy xem cách nối như thế nào: Trước hết hãy nhìn vào giản đồ xung của mạch đếm mod 16. Tới số đếm thứ 10 thì mạch phải reset trở lại. - Ngõ ra Q0 không thay đổi gì dù có được xoá hay không vì nó theo xung ck - Ngõ ra Q1 tới đó phải giữ nguyên trạng thái trong 2 chu kì của xung ck nữa do đó ngõ J, K phải ở mức 0 trong khoảng thời gian này, ta có thể nối từ chân Q3 về J1, K1 vì lúc này Q3 đang ở mức 0 (nó cũng lên 1 sau khi bị xoá) - Ngõ ra Q2 tới lúc xoá vẫn ở 0 nên không cần thay đổi gì tầng FF 2 - Ngõ ra Q3 khi xoá phải trở lại mức 0 ban đầu, lúc này Q1 ở cao, Q2 ở thấp đồng thời Q0 đang đi xuống, do đó có thể nối Q0 tới ngõ ck của FF 3 và nối cổng and từ Q1 và Q2 Kết quả nối mạch như sau:
hình 3.3.12 Mạch đếm mod 10 Cuối cùng kiểm tra lại thấy thoả hoạt động. Nhưng cách này xem ra “khá rắc rối và như là đoán mò”. Thực ra nó lại rất hay, nó có một phương pháp thiết kế rất đúng và bài bản ta sẽ gặp lại ở phần thiết kế mạch đếm đồng bộ ở phần sau. Có rất nhiều IC đếm không đồng bộ cả họ TTL và CMOS. Ở đây chỉ giới thiệu một số IC hay dùng : Mạch có tới 2 đầu vào xung nhịp CP (clock pulse) cũng chính là xung ck mà ta đã biết) cho tầng 0 và tầng 1 để dễ thiết kế nhiều ứng dụng. Hai ngõ vào không đồng bộ MR1 và MR2 (master reset) nếu cùng tác động mức cao thì sẽ hoạt động như chân clear để xoá mạch. Sơ đồ logic và sơ đồ khối của IC như sau :
Hình 3.3.13a Kí hiệu khối và chân ra của 74LS293
Hình 3.3.13b Cấu trúc mạch của 74LS293 74LS293 là IC đếm không đồng bộ nhiều kiểu bit ra tuỳ cách mắc dây. Đếm mod 16 : Xung nhịp vào sẽ vào chân CP0; chân CP1 nối tới ngõ ra Q0; MR1, MR2 nối chung xuống mass để mạch xoá tự động
Hình 3.3.13c 74LS293 đếm mod 16 Đếm mod 10 Xung nhịp vẫn vào chân CP0; chân CP1 nối tới Q0 để cho đủ số trạng thái lên đến 10, khi đếm đến 10 Q1, Q3 lên mức cao nên được nối về MR1 và MR2 để xoá mạch
Hình 3.3.13d 74LS293 đếm mod 10 Đếm mod 14 CP0, CP1 vẫn nối dây như cũ khi đếm tới 14 thì Q3Q2Q1Q0 là 1110 do đó phải nối Q3 tới MR1, Q2, Q1 tới MR2 qua cổng nand.
Hình 3.3.13e 74LS293 đếm mod 14 74LS90, 74LS92, 74LS93 3 IC trên cùng các loạt của nó (LS, HC, …) cũng rất hay dùng. Sơ đồ mạch và sơ đồ chân như hình. Cũng giống như 74LS293 tầng FF đầu khá độc lập để dùng linh hoạt hơn, muốn đếm đầy đủ số trạng thái của IC thì cần phải nối ngõ ra Q0 tới ngõ vào B; hai ngõ reset thường nối AND đề xoá mạch đếm khi đưa lên cao. Khi đếm lên thì cần phải cho 1 trong 2 ngõ này lên cao trong chốc lát (khoảng vài mươi ns) rồi đưa xuống thấp trở lại. Riêng 74LS90 có thêm 2 ngõ reset 9 (R9(0) và R9(1)). Bình thường một trong hai hoặc cả 2 ngõ này được giữ ở thấp, muốn ngõ ra có số đếm là 9 thì phải đưa cả 2 ngõ lên cao.Như vậy ta có thể dùng 74LS93 để làm mạch đếm mod 10, mod 12 hay mod 16 giống như 74LS293 ở trên. Cách mắc dây bạn có thể dễ dàng làm được.
Hình 3.3.14a Chân ra IC đếm 74LS90 74LS92 74LS93
Hình 3.3.14b kí hiệu khối của 74LS90 74LS92 74LS93 Còn khi cần số mod lớn ta có thể dùng 4020 (mod 16384 tức 14 tầng FF) hay 4040 (mod 4096 tức 12 tầng FF). Do dùng nhiều tầng FF và lại thuộc loại CMOS cũ nên tần số hoạt động khá giới hạn chỉ khoảng 2MHz. Page 4
Hình 3.2.1 Ghi dịch 4 bit cơ bản
CÁC LOẠI THANH GHI DỊCH Có nhiều cách chia loại thanh ghi dịch (SR) - Theo số tầng FF (số bit) : SR có cấu tạo bởi bao nhiêu FF mắc nối tiếp thì có bấy nhiêu bit (ra song song). Ta có SR 4 bit, 5 bit, 8 bit, 16 bit … Có thể có SR nhiều bit hơn bằng cách mắc nhiều SR với nhau hay dùng công nghệ CMOS (các máy tính sử dụng SR nhiều bit) - Theo cách ghi dịch có
- Theo chiều dịch có SR trái, phải, hay cả 2 chiều - Theo mạch ra có loại thường và 3 trạng thái Loại vào nối tiếp ra song song và ra nối tiếp Loại vừa khảo sát ở mục 1 thuộc loại ghi dịch vào nối tiếp ra nối tiếp. Đây cũng là cấu trúc của mạch ghi dịch vào nối tiếp ra song song. Dữ liệu sẽ được lấy ra ở 4 ngõ Q của 4 tầng FF, vì chung nhịp đồng hồ nên dữ liệu cũng được lấy ra cùng lúc.
Hình 3.2.3 Mạch ghi dịch vào nối tiếp ra song song Bảng dưới đây cho thấy làm như thế nào dữ liệu được đưa tới ngõ ra 4 tầng FF
Loại được nạp song song (vào song song) ra nối tiếp và song song Bây giờ muốn đưa dữ liệu vào song song (còn gọi là nạp song song) ta có thể tận dụng ngõ vào không đồng bộ Pr và Cl của các FF để nạp dữ liệu cùng một lúc vào các FF. Như vậy có thể dùng thêm 2 cổng nand và một cổng not cho mỗi tầng. Mạch mắc như sau
H3.2.4a Mạch ghi dịch nạp song song Mạch hoạt động bình thường khi nạp song song ở thấp như đã nói. Khi nạp song song WRITE = 1 cho phép nạp
ABCD được đưa vào Pr và Cl đặt và xoá để Q0 = A, Q1 = B, … Xung ck và ngõ vào nổi tiếp không có tác dụng (vì sử dụng ngõ không đồng bộ Pr và Cl) Một cách khác không sử dụng chân Pr và Cl được minh hoạ như hình dưới đây.Các cổng nand được thêm vào để nạp các bit thấp D1, D2, D3. Ngõ WRITE/SHIFT dùng để cho phép nạp (ở mức thấp) và cho phép dịch (ở mức cao). Dữ liệu nạp và dịch vẫn được thực hiện đồng bộ như các mạch trước.
H3.2.4b Mạch ghi dịch nạp song song ra nối tiếp Với mạch hình 3.2.4b ngõ ra dữ liệu là nối tiếp, ta cũng có thể lấy ra dữ liệu song song như ở hình 3.2.5, Cấu trúc mạch không khác so với ở trên. Dữ liệu được đưa vào cùng lúc và cũng lấy ra cùng lúc (mạch như là tầng đệm và hoạt động khi có xung ck tác động lên.
Hình 3.2.5 Mạch ghi dịch vào song song ra song song Ghi dịch 2 chiều Như đã thấy, các mạch ghi dịch nói ở những phần trên đều đưa dữ liệu ra bên phải nên chúng thuộc loại ghi dịch phải. Để có thể dịch chuyển dữ liệu ngược trở lại (dịch trái) ta chỉ việc cho dữ liệu vào ngõ D của tầng cuối cùng, ngõ ra Q được đưa tới tầng kế tiếp, …. Dữ liệu lấy ra ở tầng đầu. Để dịch chuyển cả 2 chiều, có thể nối mạch như hình dưới đây :
Hình 3.2.6 Mạch ghi dịch cho phép dịch chuyển cả 2 chiều Với mạch trên, các cổng NAND và đường cho phép dịch chuyển dữ liệu trái hay phải. Bảng dưới đây minh hoạ cho mạch trên : dữ liệu sẽ dịch phải 4 lần rồi dịch trái 4 lần. Để ý là thứ tự 4 bit ra bị đảo ngược lại so với chúng ở trên.
MỘT SỐ IC GHI DỊCH Nhận thấy rằng các ghi dịch mô tả ở trên đều dùng các FF rời, rồi phải thêm nhiều cổng logic phụ để tạo các loại SR khác nhau. Trong thực tế ghi dịch được tích hợp sẵn các FF và đã nối sẵn nhiều đường mạch bên trong; người sử dụng chỉ còn phải làm một số đường nối bên ngoài điều khiển các ngõ cho phép thôi. Các SR cũng được tích hợp sẵn các chức năng như vừa có thể dịch trái dịch phải vừa vào nối tiếp vừa nạp song song. Ở đây là một số ghi dịch hay được dùng : Liệt kê 7494 : 4bit vào song song, nối tiếp; ra nối tiếp 7495/LS95 : 4 bit, vào song song/nối tiếp; ra song song; dịch chuyển trái phải 7495/LS96 : 5 bit, vào nối tiếp/song song; ra song song nối tiếp 74164/LS164 : 8 bit vào song song ra nối tiếp 74165/LS765 : 8 bit, vào song song/nối tiếp; ra nối tiếp bổ túc 74166/LS166 : 8 bit; vào song song/nối tiếp; ra nối tiếp; có thể nạp đồng bộ 74194/LS194 : 4 bit vào song song/nối tiếp; ra song song; nạp đồng bộ dịch chuyển trái phải 74195/LS195 : 4 bit, vào song/nối tiếp; ra song song; tầng đầu vào ở JK 74295/LS295 : như 74194/LS194 nhưng ra 3 trạng thái 74395/LS295 : 4 bit vào song song; ra song song 3 trạng thái 74LS671/672 : 4 bit có thêm chốt 74LS673/674 : 16 bit Khảo sát ghi dịch tiêu biểu 74/74LS95
Hình 3.2.7 Sơ đồ chân ra 74LS95
Hình 3.2.8 Cấu trúc bên trong ghi dịch 74LS95 Sơ đồ cấu tạo và bảng hoạt động của IC như hình trên. Các chế độ hoạt động của nó như sau : Nạp nối tiếp Đưa dữ liệu vào tầng đầu Q0 Đặt điều khiển chọn ở mức thấp Khi có ck1 hay ck2 thì dữ liệu sẽ lần lượt nạp vào ghi dịch và sẽ được đưa tới các tầng sau Nạp song song Dữ liệu vào ở 4 ngõ ABCD Đưa điều khiển kiểu lên cao Khi có ck1 hay ck2 thì dữ liệu sẽ được nạp vào đồng thời các tầng của ghi dịch ở cạnh lên đầu của xung ck. ỨNG DỤNG
Page 5
Super User Ngày đăng: 28 Tháng 11 2016 Cập nhật lần cuối:28 Tháng 11 2016 Bài 2.3: Một số IC chốt và ứng dụng thường dùng Trang 3
4.1 FF JK
4.2 FF D
4.3 Chốt D
4.4 FF và chốt CMOS
|