如何使用STATECAD進行多狀態機設計實例分析
負責對M0讀的狀態機包括四個狀態:
STATE1:讀狀態機復位后初始化
Read0:對M0讀,讀4個轉到M0empty
M0empty:M0空狀態
M0readwait:等待。M0空時轉入Read0狀態
負責對M0寫的狀態機必須知道M0是空的,而負責對M0讀的狀態機必須知道M0是滿的才能讀。讀完了通知負責對M0寫的狀態機M0是空的,可以寫了。二個狀態機同時并行工作。M0寫的狀態機在寫操作完了,就等待M0空。M0讀的狀態機在讀操作完了,就等待M0滿。在STATECAD中,狀態本身可以作為其他狀態機的轉移條件。這也正是在進行多狀態機的協同設計中最需要的功能,能大大方便多狀態機的設計。

輸入完狀態圖,就基本完成了狀態機的設計過程。進行邏輯優化(工具自動進行邏輯優化)后,使用STATEBENCH進行狀態轉移分析。以下是自動狀態轉移模擬波形。

由以上的波形看到狀態機的工作過程符合設計邏輯。對單獨的器件操作也許不需要采用多狀態機的設計方法,但在多器件需要并行工作時,多狀態機的協同設計就顯得必要了。導出VHDL模型塊到ISE中進行仿真后綜合,這里就不多講了,以下是產生的代碼:
-- D:XILINXTUTORIALDUOZTJI.Vhd
LIBRARY Ieee;
USE Ieee.Std_logic_1164.All;
LIBRARY Ieee;
USE Ieee.Std_logic_unsigned.All;
ENTITY SHELL_DUOZTJI IS

評論