Hình sau đây chỉ ra sơ đồ khối của một máy trạng thái một pha. Trong hình này, phần mạch dãy chứa các mạch dãy (flip-flops), phần cao chứa mạch logic tổ hợp.
Hình 8.1 Sơ đồ máy trạng thái Phần mạch tổ hợp có 2 đầu vào và 2 đầu ra:
+ Đầu vào thứ nhất: là đầu vào trạng thái hiện tại của máy. + Đầu vào thứ 2: là đầu vào từ bên ngoài.
+ Đầu ra thứ nhất: là đầu ra phía ngoài
+ Đầu ra thứ 2: là trạng thái tiếp theo của máy. Phần mạch dãy có:
+ 3 đầu vào: clock, reset, và trạng thái tiếp theo + 1 đầu ra: trạng thái hiện tại.
Tất cả các flip-flop đều nằm trong phần này, các tín hiệu clock và reset phải được kết nối với các flip – flop để thực hiện việc điều khiển.
Như vậy, một máy ôtômát hữu hạn là một bộ 6 thông số <X, Y, S, s0,
δ,λ>, trong đó:
X = { x1(t),…,xn(t)}
• Tập các tín hiệu ra của ôtômat: Y = {y1(t),…,ym(t)}
• Tập hợp các trạng thái của ôtômat: S = {s1(t),…,ss(t)}
• Hàm δ(s, x) – hàm chuyển trạng thái của ôtômat
• Hàm λ(s,x) – hàm đầu ra của ôtômat.
Tương ứng với các phương pháp tính toán hàm chuyển trạng thái và hàm ra, chúng ta có các loại ôtômat khác nhau. Hai dạng ôtômat hữu hạn chuyên dụng là: ôtômat Moore và ôtômat Mealy.
Quay lại với hình vẽ trên, mạch cần thiết kế được chia làm hai đoạn. Việc chia đoạn như thế này sẽ giúp chúng ta thiết kế tốt hơn. Chúng ta sẽ thiết kế 2 phần theo những cách khác nhau. Cụ thể trong môi trường VHDL, phần mạch dãy chúng ta sẽ thực hiện trong PROCESS và phần mạch tổ hợp chúng ta có thể thực hiện theo cấu trúc hoặc tuần tự hoặc kết hợp cả cấu trúc lẫn tuần tự. Tuy nhiên mã tuần tự có thể áp dụng cho cả 2 loại logic: tổ hợp và tuần tự.
Thông thường các tín hiệu clock và các tín hiệu reset trong phần mạch dãy sẽ xuất hiện trong PROCESS (trừ khi tín hiệu reset là đồng bộ hoặc không được sử dụng, tín hiệu WAIT được sử dụng thay cho lệnh IF). Khi tín hiệu reset được xác nhận, trạng thái hiện tại sẽ được thiết lập cho trạng thái khởi tạo của hệ thống. Mặt khác, tại sườn đồng hồ thực tế, các flip-flop sẽ lưu trữ trạng thái tiếp theo, do đó sẽ chuyển nó tới đầu ra của phần mạch dãy (trạng thái hiện tại).
Một điều quan trọng liên quan tới phương pháp FSM là : về nguyên tắc chung là bất kỳ một mạch dãy nào cũng có thể được mô hình hoá thành 1 máy trạng thái, nhưng điều này không phải luôn luôn thuận lợi. Vì có nhiều trường hợp (đặc biệt là các mạch thanh ghi như: bộ đếm,…) nếu thiết kế theo phương pháp FSM thì mã nguồn có thể trở nên dài hơn, phức tạp hơn, mắc nhiều lỗi hơn so với phương pháp thông thường.
Như thành một quy tắc nhỏ, phương pháp FSM thì thích hợp với các hệ thống mà thao tác của nó là một dãy hoàn toàn được cấu trúc, ví dụ: các mạch điều khiển số. Vì đối với các hệ thống loại này thì tất cả các trạng thái của nó có thể dễ dàng được liệt kê. Khi soạn thảo mã VHDL, thì các trạng thái này sẽ được khai báo trong phần đầu của phần ARCHITECTURE dưới dạng kiểu dữ liệu liệt kê được định nghĩa bởi người sử dụng.