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


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

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]


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]

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


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ì

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

Page 2

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

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

Chủ Đề