Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semicon_lab.jpg

Máy trạng thái kiểu Moore

E-mail Print PDF

Máy trạng thái có các đặc điểm chính:

- Máy trạng thái là mạch tuần tự.

- Máy trạng thái gồm 3 thành phần.

- Có ba kiểu máy trạng thái là Kiểu Moore, Mealy và kết hợp cả hai.

Để minh họa việc thực hiện máy trạng thái chúng ta hãy thực hiện ví dụ sau đây: Thiết kế bộ phát hiện chuỗi bit 1011 (có thể bạn đã gặp đề bài này ở đâu đó).

Như vậy ta phải thiết kế một máy trạng thái có các ngõ vào/ra như sau

 

Trong đó:

- clock: là xung nhịp đồng bộ của FSM.

- reset_n: là tín hiệu reset FSM sau khi mới bật nguồn để FSM vào trạng thái khởi động. Reset đồng bộ tích cực mức thấp.

- serial_input: ngõ vào của chuỗi bit dữ liệu.

- y: ngõ ra của bộ phát hiện (ngõ ra FSM). Trạng thái mặc định của y là “0” và y sẽ bằng “1” nếu chuỗi 1011 xuất hiện.

Bây giờ ta bắt đầu với kiểu Moore

Đầu tiên chúng ta phải xác định chuỗi trạng thái cơ bản để có thể phát hiện được chuỗi bit 1011.

 

Trong đó:

- IDLE là trạng thái khởi động khi tín hiệu reset_n tích cực (= 0) thì máy trạng thái sẽ về IDLE.

- D1 là trạng thái đã phát hiện được bit 1. Nghĩa là tại IDLE, nếu serial_input bằng 1 thì sẽ nhảy qua trạng thái này.

- D10 là trạng đã phát hiện được bit 0 sau khi đã phát hiện bit 1, tức là trạng thái đã nhận được chuỗi 10.

- D101 là trạng thái đã phát hiện được bit 1 sau khi đã phát hiện được chuỗi 10.

- D1011 là trạng thái đã phát hiện được bit 1 sau khi đã phát hiện được chuỗi 101. Đây chính là trạng thái phát hiện được đầy đủ chuỗi 1011. Chính trạng thái này ta sẽ cho giá trị ngõ ra y = 1.

Vì đây là kiểu moore, nên giá trị y nằm ngay trong từng trạng thái như sau

 

Sau đây ta bắt đầu xét điều kiện còn lại trong từng trạng thái:

1. Tại IDLE: Nếu serial_input không bằng 1 thì máy trạng thái sẽ nhảy đi đâu? Câu trả lời là sẽ vẫn giữ ở IDLE, dễ quá đúng không.

2. Tại D1: Nếu serial_input không bằng 0 thì máy trạng thái sẽ nhảy đi đâu? Câu trả lời là sẽ về lại IDLE thì là sai bét rồi. Chính xác thì FSM vẫn giữ ở D1. Nên nhớ rằng D1 là trạng thái đã phát hiện được bit 1. Nếu bạn ở D1 mà nhận phát hiện thêm một bit 1 nữa lúc này bạn có chuỗi 11, bạn nghĩ sẽ không thể tạo được chuỗi 1011 nên cho về IDLE là sai luôn. Vì bit 1 phía sau (thứ 2) có khả năng là bắt đầu của một chuỗi 1011 nên ở D1 nếu nhận được thêm một bit 1 thì vẫn ở D1 đúng như ý nghĩa “D1 là trạng thái đã phát hiện được bit 1”.

3. Tại D10: Tiếp tục với cấu hỏi “Nếu serial_input không bằng 1 thì máy trạng thái sẽ nhảy đi đâu?” Câu trả lời là về IDLE. Khi đã đến D1 và nhận thêm một bit 0 thì bạn vừa có chuỗi 100, không có khả năng tạo được 1011 thì chỉ có quay lại IDLE mà thôi.

4. Tại D101: Nếu nhận được một bit 0 thì FSM sẽ nhảy về D10. Tại sao? Nếu ở D101 bạn nhận thêm một bit 0 thì bạn có chuỗi 1010, đây dĩ nhiên không phải chuỗi mong muốn của bạn nhưng hãy để ý hai bit cuối của chuỗi này là 10, tức là có khả năng bạn sẽ nhận tiếp được 11 nữa để có 1011, như vậy FSM phải về D10 đúng như ý nghĩa của nó là “trạng thái đã nhận được chuỗi bit 10”

5. Tại D1011: Đây là trạng thái kết thúc và một chuỗi 1011 vừa được phát hiện. Vì đây là trạng thái kết thúc cho một quá trình phát hiện chuỗi 1011 nên về IDLE nghỉ ngơi cho khỏe chờ chuỗi mới thôi, nếu bạn nghĩ vậy thì ôi xong. Ở đây ta phải trả lời hai câu hỏi:

- Một: nếu “Nếu serial_input bằng 1 thì máy trạng thái sẽ nhảy đi đâu?” trả lời: về D1

- Hai: nếu “Nếu serial_input bằng 0 thì máy trạng thái sẽ nhảy đi đâu?” trả lời: về D10

Cuối cùng ta có một máy trạng thái như sau:

 

Thường ta chỉ cần ghi điều kiện trên một nhánh và ngầm hiểu là “nếu không thỏa điều kiện nhánh này thì FSM sẽ nhảy theo nhánh còn lại” nên ta có:

 

Như vậy là ta đã thiết kế xong FSM kiểu moore dùng để phát hiện chuỗi bit 1011. Cuối cùng, bạn hãy bắt tay viết RTL code cho FSM này.

Nguồn: icdesignvn

Bạn Có Đam Mê Với Vi Mạch hay Nhúng      -     Bạn Muốn Trau Dồi Thêm Kĩ Năng

Mong Muốn Có Thêm Cơ Hội Trong Công Việc

    Và Trở Thành Một Người Có Giá Trị Hơn

Bạn Chưa Biết Phương Thức Nào Nhanh Chóng Để Đạt Được Chúng

Hãy Để Chúng Tôi Hỗ Trợ Cho Bạn. SEMICON  

 

Hotline: 0972.800.931 - 0938.838.404 (Mr Long)

 

 

Related Articles

Chat Zalo