Trong thiết kế số, Máy trạng thái (viết tắt là FSM) là một thành phần quan trọng và không thể thiếu đối với các thiết kế phức tạp. Lợi điểm của máy trạng thái là giúp người thiết kế dễ dàng kiểm soát quy trình hoạt động của một thiết kế.
Để thực hiện tốt một máy trạng thái chúng ta phải hiểu được bản chất của nó. Với mong muốn giúp các bạn hiểu thêm về vấn đề này, mình xin trình bày một loạt bài nhỏ đi từ sách vở đến những phân tích riêng của mình.
Máy trạng thái (FSM) là một mạch tuần tự: Bây giờ hãy xem FSM như một khối riêng biệt có ngõ vào và ngõ ra.
Ngõ vào của FSM là gì?
- Xung nhịp (clock) đồng bộ
- Tín hiệu reset để khởi động FSM vào trạng thái ban đầu trước khi hoạt động
- Các tín hiệu dùng để xác định việc chuyển trạng thái và các tín hiệu này có thể tham gia xác định giá trị ngõ ra.
Ngõ ra của FSM là gì?
Là một hoặc nhiều tín hiệu thay đổi giá trị dựa trên hoạt động của FSM. Ngõ ra FSM dùng để điều khiển một mạch số khác hay làm ngõ ra của một thiết kế; có thể được đồng bộ lại qua các Flip-Flop hoặc không là tùy vào mục đích thiết kế.
Cấu trúc FSM?
Cấu trúc cơ bản của một máy trạng thái gồm ba thành phần là Mạch tổ hợp xác định trạng thái kế tiếp (next state), Mạch tổ hợp xác định giá trị ngõ ra và một thanh ghi (register) lưu giữ trạng thái hiện tại (current state). Dù là Mealy hay Moore thì cấu trúc FSM cũng gồm 3 phần như vậy thôi (bạn nên lưu ý điều này vì nắm rõ điều này sẽ giúp bạn dễ dàng hiểu, thiết kế và viết code cho FSM sau này vì để viết code thực hiện cùng một FSM bạn có thể trình bày nhiều cách khi bạn đã thấm kỹ cái này).
Qua đây bạn đã thấy rõ tại sao FSM là một mạch tuần tự (mạch tuần tự = mạch tổ hợp + phần tử nhớ).
Vậy có bao nhiêu loại máy trạng thái FSM?
Máy trạng thái Mealy: Với FSM Mealy, ngõ ra phụ thuộc vào trạng thái hiện tại và giá trị ngõ vào. Nghĩa là, ngõ ra FSM thay đổi khi trạng thái của FSM thay đổi hoặc giá trị ngõ vào thay đổi. Và các bạn thường thấy hình minh họa sau cho FSM Mealy
Thực chất mạch tổ hợp (combinational logic) ở đây là tổng hợp của Mạch tổ hợp xác định trạng thái kế tiếp và Mạch tổ hợp xác định giá trị ngõ ra như đã nói trong phần trên.
Còn thành phần bộ nhớ (memory elements) chính là cái thanh ghi lưu giữ trạng thái hiện tại.
Máy trạng thái Moore: Với FSM Moore, ngõ ra chỉ phụ thuộc vào trạng thái hiện tại. Nghĩa là, ngõ ra FSM chỉ thay đổi khi trạng thái của FSM thay đổi. Vì ngõ ra “chẳng liên quan” gì đến ngõ vào cả nên chúng ta thường thấy hình mình họa như sau:
Hai mạch combinational logic riêng biệt, một dành cho xác định trạng thái kế tiếp, một dành cho xác định giá trị ngõ ra.
Vậy một máy trạng thái chỉ có thể là thuần kiểu Moore hoặc Mealy? Không hẳn như vậy. Một máy trạng thái phức tạp có nhiều ngõ ra. Trong các ngõ ra đó, có ngõ ra chỉ phụ thuộc vào trạng thái hiện tại (Moore) nhưng cũng có ngõ ra vừa phụ thuộc trạng thái hiện tại và vừa phụ thuộc ngõ vào (Mealy). Đấy là tùy vào mục đích thiết kế của bạn. Máy trạng thái này tạm gọi là "kiểu hỗn hợp" được minh họa như sau
Nguồn: http://icdesignvn.net
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)