Ví dụ phân tích Mealy FSM:

Một phần của tài liệu Bài giảng VHDL (Trang 84 - 88)

Ví dụ 2.2: Minh họa quá trình để thực hiện một sự phân tích trên một Mealy FSM

Hình 2.40 cho thấy một Mealy FSM đơn giản. Mạch này cũng giống như mạch trong hình 2.37ngoại trừ mạch ngõ ra, mà trong ví dụ này là một cổng AND 3-ngõ vào, nó không chỉ phụ thuộc vào ngõ vào hiện tại Q1Q0 mà còn phụ thuộc vào ngõ vào C.

Phân tích mạch này cũng giống như phân tích Moore FSM trong ví dụ 2.1 trên để tạo bảng trạng thái tiếp theo trong bước 3. Chỉ khác là dẫn xuất phương trình ngõ ra và bảng ngõ ra trong bước 4 và 5. Đối với Mealy FSM, phương trình ngõ ra thì tùy thuộc vào cả trạng thái hiện tại và trạng thái ngõ vào. Vì mạch chỉ có 1 tín hiệu ngõ ra, chúng ta được phương trình ngõ ra phụ thuộc vào C như sau.

Hình 2.41 chỉ bảng kết quả ngõ ra có được bằng cách thay tất cả các giá trị có thể có của Q0, Q1, C vào phương trình ngõ ra:

Hình 2. 41 : Bảng chân trị ngõ ra.

Với sơ đồ trạng thái, chúng ta không thể đặt giá trị ngõ ra vào bên trong một nút kể vì giá trị ngõ ra tùy thuộc vào trạng thái hiện tại và giá trị ngõ vào. Do đó, giá trị ngõ ra được đặt lên hướng đi tương ứng tới giá trị trạng thái hiện tại và giá trị ngõ vào như ở hình 2.42 . Tín hiệu ngõ ra Y là 0 cho tất cả các hướng ngoại trừ tín hiệu bắt nguồn từ trạng thái 11 có ngõ vào điều kiện C=1. Trên một hướng Y là 1.

Hình 2. 42 : Trạng thái đầy đủ của Mealy FSM.

Một sơ đồ tính toán thời gian mẫu được đưa vào hình 2.43 cho Moore FSM từ thời gian t5. Vào thời gian t5, ngõ vào C xuống 0, và vì vậy ngõ ra Y cũng xuống 0 vì Y=C*Q1*Q0. Vào thời gian t6, C tăng lên 1, và do đó Y cũng lên 1 ngay lập tức. Vì ngõ ra mạch là một mạch kết hợp, Y không thay đổi tại cạnh tích cực của xung clock, nhưng thay đổi ngay lập tức khi các ngõ vào thay đổi. Ở thời gian t7 khi Q1Q0 thay đổi tới 00, Y lại thay đổi về 0.

Chương 2 : Dùng ngôn ngữ VHDL mô tả các mạch số cơ bản

Hình 2. 43 : Tính toán thời gian mẫu cho Mealy FSM

Ngoại trừ sự khác nhau trong mạch này là tạo tín hiệu ngõ ra Y như thế nào, Mealy FSM chạy giống như FSM Moore từ ví dụ 2.1 theo cách nó thay đổi từ một trạng thái tới trạng

thái tiếp theo. Điều này là tất nhiên, vì thực tế là cả 2 bảng trạng thái tiếp theo đồng nhất. Như vậy, mạch Mealy FSM cũng là một bộ đếm lên modulo 4.

Mã VHDL theo hành vi của Mealy FSM trong ví dụ 2.2 như sau và giản đồ thời gian ở hình 2.44.

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MealyFSM IS PORT (

clock: IN STD_LOGIC; reset: IN STD_LOGIC; C: IN STD_LOGIC; Y: OUT STD_LOGIC); END MealyFSM;

ARCHITECTURE Behavioral OF MealyFSM IS TYPE state_type IS (s0, s1, s2, s3); SIGNAL state: state_type;

BEGIN

next_state_logic: PROCESS (clock) BEGIN

IF (reset = '1') THEN state <= s0;

ELSIF (clock'EVENT AND clock = '1') THEN CASE state is

WHEN s0 =>

IF C = '1' THEN state <= s1; ELSE

state <= s0; END IF; WHEN s1 => IF C = '1' THEN state <= s2; ELSE state <= s1; END IF; WHEN s2=> IF C = '1' THEN state <= s3; ELSE state <= s2; END IF; WHEN s3=> IF C = '1' THEN state <= s0; ELSE state <= s3; END IF; END CASE; END IF; END PROCESS;

output_logic: PROCESS (state, C) BEGIN CASE state IS WHEN s0 => y <= '0'; WHEN s1 => y <= '0'; WHEN s2 => y <= '0'; WHEN s3 => IF (C = '1') THEN y <= '1'; ELSE y <= '0'; END IF;

Chương 2 : Dùng ngôn ngữ VHDL mô tả các mạch số cơ bản

END PROCESS; END Behavioral;

Hình 2. 44 : Giãn đồ thời gian của Mealy FSM được mô phỏng bằng xilinx.

Một phần của tài liệu Bài giảng VHDL (Trang 84 - 88)