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

輸入完狀態(tài)圖,就基本完成了狀態(tài)機的設計過(guò)程。進(jìn)行邏輯優(yōu)化(工具自動(dòng)進(jìn)行邏輯優(yōu)化)后,使用STATEBENCH進(jìn)行狀態(tài)轉移分析。以下是自動(dòng)狀態(tài)轉移模擬波形。

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

評論