Thiết kế mạch mã hóa nhị phân 4 bit Johnson


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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson


Thiết kế mạch mã hóa nhị phân 4 bit Johnson


Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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ố 2 

4. 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ố 3

9. 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ố 4

14.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ố 5

18.  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
13.Bài 13 : Thiết kế bộ đếm nhị phân 8 bit và hiện thị ra led đơn
14.Bai 14: Chương trình sử dụng 4 button làm đầu vào, đầu ra là LED0, LED1, LED2, LED3 sáng tương ứng khi bấm button 0,1,2,3 trên nanoboard 3000.

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

VHDL

26. 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 đây

Cá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 Here 

ThanhPham

Copyright @ Thanh Pham

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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. 

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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:

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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)

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Với 4 số đếm ra từ 4 tầng FF ta có  mạch đếm mod 4. Chỉ 4 trạng thái ra trong tổng số 16 trạng thái có thể, điều này làm giảm hiệu quả sử dụng của mạch đếm vòng. Nhưng nó cũng có ưu điểm nổi bật so với mạch đếm chia hệ 2 là không cần mạch giải mã trong cấu trúc mạch (vì thường trong trạng thái của số đếm ra chỉ có 1 bit 1)  .

3.2 Đếm Johnson (đếm vòng xoắn)

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.3.25 Mạch đếm vòng xoắn

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Mạch đếm Johnson có một chút thay đổi so với đếm vòng ở chỗ ngõ ra đảo tầng cuối được đưa về ngõ vào tầng đầu. Hoạt động của mạch cũng giải thích tương tự. Với n tầng FF thì đếm vòng xoắn cho ra 2n số đếm do đó nó còn được coi là mạch đếm mod 2n (đếm nhị phân cho phép đếm với chu kỳ đếm đến 2n). Như vậy ở trên là mạch đếm vòng xoắn 4 bit. Bảng bên cho thấy 8 trạng thái ngõ ra và hình dưới  sẽ minh hoạ cho số đếm.

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ì

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.3.26 Dạng sóng mạch đếm vòng xoắn


Page 2

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

BÀ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 ...?

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Để 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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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)

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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ả:

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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:

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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/163

Cả 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, 74191

74LS190 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 3

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

BÀ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)

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.3.1 Bộ đếm nhị phân 4 bit không đồng bộ cơ bản

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Số xung  vào

Mã số ra sau khi có xung vào

Trị thập phân ra

Q3

Q2

Q1

Q0

Xoá

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

0

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

1

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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:

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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:

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.3.13a Kí hiệu khối và chân ra của 74LS293

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.3.14a Chân ra IC đếm 74LS90 74LS92 74LS93

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson
BÀI 3: THANH GHI

1. Giới thiệu

Ở phần trước ta đã được biết đến các loại FF. Chúng đều có thể lưu trữ (nhớ 1 bit) và chỉ khi có xung đồng bộ thì bit đó mới truyền tới ngõ ra (đảo hay không đảo). Bây giờ nếu ta mắc nhiều FF nối tiếp lại với nhau thì sẽ nhớ được nhiều bit. Các ngõ ra sẽ phần hoạt động theo xung nhịp ck. Có thể lấy ngõ ra ở từng tầng FF (gọi là các ngõ ra song song) hay ở tầng cuối (ngõ ra nối tiếp). Như vậy mạch có thể ghi lại dữ liệu (nhớ) và dịch chuyển nó (truyền) nên mạch được gọi là ghi dịch. Ghi dịch cũng có rất nhiều ứng dụng đặc biệt trong máy tính, như chính cái tên của nó: lưu trữ dữ liệu và dịch chuyển dữ liệu chỉ là ứng dụng nổi bật nhất

2. Cấu tạo

  Ghi dịch có thể được xây dựng từ các FF khác nhau và cách mắc cũng khác nhau nhưng thường dùng FF D, chúng được tích hợp sẵn trong 1 IC gồm nhiều FF (tạo nên ghi dịch n bit). Hãy xem cấu tạo của 1 ghi dịch cơ bản 4 bit dùng FF D

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.2.1 Ghi dịch 4 bit cơ bản


Thiết kế mạch mã hóa nhị phân 4 bit Johnson

3. Hoạt động

Thanh ghi, trước hết được xoá (áp xung CLEAR) để đặt các ngõ ra về 0. Dữ liệu cần dịch chuyển được đưa vào ngõ D của tầng FF đầu tiên (FF0). Ở mỗi xung kích lên của đồng hồ ck, sẽ có 1 bit được dịch chuyển từ trái sang phải, nối tiếp từ tầng này qua tầng khác và đưa ra ở ngõ Q của tầng sau cùng (FF3). Giả sử dữ liệu đưa vào là 1001, sau 4 xung ck thì ta lấy ra bit LSB, sau 7 xung ck ta lấy ra bit MSB. 

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Nếu tiếp tục có xung ck và không đưa thêm dữ liệu vào thì ngõ ra chỉ còn là 0 (các FF đã reset : đặt lại về 0 hết. Do đó ta phải “hứng”  hay ghim dữ liệu lại. Một cách làm là sử dụng 2 cổng AND, 1 cổng OR và 1 cổng NOT như hình dưới đây.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.2.2 Cho phép chốt dữ liệu trước khi dịch ra ngoài

Dữ liệu được đưa vào thanh ghi khi đường điều khiển R/W control ở mức cao (Write). Dữ liệu chỉ được đưa ra ngoài khi đường điều khiển ở mức thấp (Read).

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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ó

SISO vào nối tiếp ra nối tiếp

SIPO vào nối tiếp ra song song

PISO vào song song ra nối tiếp

PIPO vào song song ra song song

- 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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

 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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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 :

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.2.7 Sơ đồ chân ra 74LS95

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

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

Thanh ghi dịch đóng vai trò cực kì quan trọng trong việc lưu trữ, tính toán số học và logic. Chẳng hạn trong các bộ vi xử lí, máy tính đều có cấu tạo các thanh ghi dịch; trong vi điều khiển (8051) cũng có các ghi dịch làm nhiều chức năng hay như trong nhân chia, ALU đã xét ở chương 2 ghi dịch cũng đã được đề cập đến. Ở đây không đi vào chi tiết mà chỉ nói khái quát ngắn gọn về ứng dụng của chúng.

1. Lưu trữ và dịch chuyển dữ liệu

Đây là ứng dụng cơ bản và phổ biến nhất của chúng. Ghi dịch n bit sẽ cho phép lưu trữ được n bit dữ liệu một thời gian mà chừng nào mạch còn được cấp điện. Hay nói cách khác dữ liệu  khi dịch chuyển đã được trì hoãn một khoảng thời gian, nó tuỳ thuộc vào :

- Số bit có thể ghi dịch (số tầng FF cấu tạo nên ghi dịch)

- Tần số xung đồng hồ

2. Tạo kí tự hay tạo dạng song điều khiển

Ta có thể nạp vào ghi dịch, theo cách nạp nối tiếp hay song song, một mã nhị phân của một chữ nào đó (A, B, ...) hay một dạng sóng nào đó. Sau đó nếu ta nối ngõ ra nối tiếp của ghi dịch vòng trở lại ngõ vào nối tiếp thì khi có xung ck các bit sẽ dịch chuyển vòng quanh theo tốc độ của đồng hồ. Cách này có thể điều khiển sáng tắt của các đèn (sắp xếp trên vòng tròn hay cách nào khác) Như mô phỏng sau là dạng sáng tắt của đèn led. Với tải cổng suất thì cần mạch giao tiếp công suất như thêm trans, rờ le, SCR,... đã nói ở chương 1 cũng sẽ được dùng. Cũng có thể tạo ra dạng sóng tín hiệu tuần hoàn cho mục đích thử mạch bằng cách này. Ta có thể thay đổi dạng sóng bằng cách thay đổi mã số nhị phân nạp cho ghi dịch, và thay đổi tần số xung kích ck được cấp từ mạch dao động ngoài từ 0 đến 200MHz tuỳ loại mạch ghi dịch.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Hình 3.2.10 Tạo dạng sóng điều khiển bởi ghi dịch

3. Chuyển đổi dữ liệu nối tiếp sang song song và ngược lại

Các máy tính hay các bộ vi xử lí khi giao tiếp với nhau hay với các thiết bị ngoài thường trao đổi dữ liệu dạng nối tiếp khi giữa chúng có một khoảng cách khá xa. Ngoài cách dùng các bộ dồn kênh tách kênh ở 2 đầu truyền mà ta đã nói ở chương 2 thì ghi dịch cũng có thể được dùng. Các ghi dịch chuyển song song sang nối tiếp sẽ thay thế cho mạch dồn kênh và các ghi dịch chuyển nối tiếp sang song song sẽ thay thế cho mạch tách kênh. Bên cạnh ghi dịch, cũng cần phải có các mạch khác để đồng bộ, chống nhiễu, rò sai… nhằm thực hiện quá trình truyền nối tiếp hiệu quả.

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

hình 3.2.11 Truyền dữ liệu nối tiếp

4. Bus truyền dữ liệu

Bây giờ liệu với 8 đường dữ liệu song song vừa nhận được từ tách kênh đó (còn gọi là 1 byte), ta có thể dùng chung cho nhiều mạch được không? Sở dĩ có yêu cầu đó là vì trong máy vi tính có rất nhiều mạch liên kết với nhau bởi các đường dữ liệu địa chỉ gồm nhiều bit dữ liệu 8, 16, 32… mà ta đã biết đến nó với cái tên là bus. Vậy bus chính là các đường dữ liệu dùng chung cho nhiều mạch (chẳng hạn bus giữa các vi xử lí, các chíp nhớ bán dẫn, các bộ chuyển đổi tương tự và số,…

Chỉ có một đường bus mà lại dùng chung cho nhiều mạch, do đó để tránh tranh chấp giữa các mạch thì cần phải có một bộ phận điều khiển quyết định cho phép mạch nào được thông với bus, các mạch khác bị cắt khỏi bus. Vậy ở đây thanh ghi hay các bộ đệm 3 trạng thái được dùng

Hình dưới minh hoạ cho đường bus 8 bit nối giữa vi xử lí với bộ đếm 8 bit, bàn phím, và bộ  8 nút nhấn

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Giả sử rằng cả thiết bị đều cần giao tiếp với vi xử  lí, nhưng chỉ có một đường truyền nếu tất cả đồng loạt đưa lên thì có thể bị ảnh hưởng lẫn nhau giữa các dữ liệu, và thông tin nhận được là không chính xác. Do đó ở đây vi xử lí sẽ quyết định: chẳng hạn nó đặt ngõ OE1 cho phép bộ đếm cho mạch đếm đưa dữ liệu lên bus còn chân OE2 và OE3 ngưng làm dữ liệu từ bàn phím và nút nhấn bị ngắt (chờ) tức ngõ ra các bộ đệm hay thanh ghi 3 trạng thái ở trạng thái tổng trở cao. Tương tự khi vi xử lí cần giao tiếp với các mạch khác. Với tốc độ xử lí hàng trăm hàng ngàn MHz thì việc dữ liệu phải chờ là không đáng kể do đó giữa các thiết bị giao tiếp với nhau rất nhanh và dường như đồng thời.


Page 5

Chương 3: Mạch tuần tự

Super User Ngày đăng: 28 Tháng 11 2016 Cập nhật lần cuối:28 Tháng 11 2016

Thiết kế mạch mã hóa nhị phân 4 bit Johnson

Bài 2.3: Một số IC chốt và ứng dụng thường dùng

Trang 3

Các đặc tính kĩ thuật và điện của FF cũng tương tự như của các IC cổng logic, tuỳ từng loại có khác nhau đôi chút, bạn có thể xem cụ thể ở data sheet của từng IC. Ở đây đưa ra một số IC chứa FF hay dùng.

Như đã nói, chỉ có FF JK, FF D và chốt D là được tích hợp, FF RS bị trạng thái cấm nên được thay thế bởi FF JK, FF T được tạo ra dễ dàng khi nối chung 2 ngõ vào FF JK. Nếu cần ta cũng có thể tạo ra các loại trên từ cổng logic rời, tất nhiên các đặc tính không tốt bằng chúng khi tích hợp.

4.1 FF JK

  • 74LS76 là 1 IC chứa 2 FF JK trong cùng một vỏ, ngõ đồng hồ clock (kí hiệu là CP: Clock Pulse)tác động cạnh xuống; nó đều có cả 2 ngõ vào trực tiếp là Preset (kí hiệu chân là SD) và Clear (kí hiệu chân là CD), trong cấu tạo mạch như hình dưới, chúng đều được đưa vào tầng nand đầu. Người đọc có thể xem thêm thông tin ở phần datasheet 74LS76

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hình 3.1.32  Kí hiệu khối và cấu tạo bên trong của 74LS76

    Bảng trạng thái hoạt động của 74LS76

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson
     

  • Một số IC khác :

    • 7473                 : 2 FF JK cấu tạo chủ tớ, ck tác động cạnh lên, có ngõ xoá clear

    • 74LS73              : 2 FF JK thường, ck tác động cạnh xuống, có ngõ xoá clear

    • 7476                 : 2FF JK cấu tạo chủ tớ, ck tác động cạnh lên, có cả  preset và clear

    • 74112/113/114: 2 FF JK nảy ở cạnh xuống có preset và clear

    • 74276/LS276      : 4 FF JK dùng ck riêng và nảy ở cạnh xuống, chân preset và clear lại dùng chung.

    • 74376/LS376      : 4 FF JK dùng ck chung nảy ở cạnh xuống, chỉ có clear chung

4.2 FF D

  • 74LS74 là 1 IC chứa 2 FF D trong cùng 1 vỏ, nó có ngõ đồng hồ (CP) tác động cạnh lên được đưa vào tầng chốt đầu; ngõ xoá (CD) và ngõ đặt (SD) tác động cạnh xuống, được đưa vào tầng chốt sau (như hình dưới). Người đọc có thể xem thêm thông tin ở datasheet của 74LS74

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hình 3.1.33 Kí hiệu khối và cấu trúc mạch của 74LS74

    Bảng trạng thái hoạt động của 74LS74

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

  • Một số IC khác hay dùng

    • 7474       : Hai ff D có ck nảy ở cạnh lên, có cả preset và clear

    • 74LS175  : 4 FF D có ck chung nảy ở cạnh lên, chỉ có clear dùng chung

    • 74LS374  : 8 FF D có ck nảy ở cạnh lên, không có preset hay clear nhưng có ngõ cho phép ra chung. Các ngõ ra 3 trạng thái

    • 74LS174 : 6 FF D có chung ngõ xoá MR

    • 74LS377/738/379 : 8/6/4 FF D có chung ngõ cho phép E

4.3 Chốt D

  • C74LS375 gồm 4 chốt D cho phép chốt dữ liệu 4 bit song song khi ngõ cho phép E01 và E23 ở thấp. E01 cho phép chốt dữ liệu D0, D1; còn E02 cho phép chốt dữ liệu D2, D3. Bạn có thể xem thêm thông tin về IC này ở datasheet 74LS375

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hình 3.1.34 Kí hiệu khối và chân ra của chốt D 74LS375

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hình 3.1.35 Cấu trúc của 1 mạch chốt trong IC 74LS375

  • Một số IC khác hay dùng

    • 7475 : 4 chốt D

    • 74LS373 : 8 chốt D có ngõ cho phép ra chung, các ngõ ra là loại ra 3 trạng thái

    • 74LS256 : 4 chốt D chốt địa chỉ 4 bít song song chung ngõ ECL

    • 74LS259 : 8 chốt D chốt địa chỉ 8 bit song song chung ngõ ECl

4.4 FF và chốt CMOS

  • Để ý là tất cả các loại FF và chốt kể trên đều thuộc họ TTL và cơ bản có cấu tạo từ các cổng logic TTL đã xem xét ở phần lí thuyết trên. Ngoài ra cũng có các loại FF và chốt khác cấu tạo từ cổng logic họ CMOS. Chúng thường có cấu tạo chủ tớ và dùng thêm cổng truyền, do đó xung ck cũng thường tác động mức lên hay xuống (ít dùng) thay vì tác động cạnh lên hay xuống.

  • Cấu tạo và bảng hoạt động của 1 IC chốt  CMOS 74HC533 (8 chốt trong suốt đảo ra 3 trạng thái) như hình dưới. Người đọc có thể xem thêm thông tin ở phần datasheet 74HC533

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hình 3.1.36 Kí hiệu khối và chân ra của 74HC533

    Trong đó :

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Hoạt động của IC được tóm tắt theo bảng sau, còn cấu trúc mạch bạn có thể xem thêm trong phân datasheet

    Thiết kế mạch mã hóa nhị phân 4 bit Johnson

    Trong đó

    0* là mức thấp trong lúc đặt trước khi LE chuyển từ cao xuống thấp

    1* là mức cao trong lúc đặt trước khi LE chuyển từ cao xuống thấp

  • Một số IC CMOS khác là :

    • 74HC/HCT75   : 4 chốt trong suốt

    • 74HC/HCT259 : chốt định địa chỉ 8 bit

    • 74HC/HCT173 : 4 FF D có reset, ra 3 trạng thái ở cạnh lên

    • 74HC/HCT377 : 8 FF D có chung đồng hồ và ngõ vào cho phép