用STATECAD快速設計有限狀態機

2021-01-07 電子產品世界

作者Email: zlyadvocate@163.com

數字系統通常劃分為信息處理單元和控制單元。信息單元主要進行信息的傳輸和運算, 而控制單元的主要任務是控制信息處理單元的微操作的順序。控制單元的實現方式有: 有限狀態機、控制寄存器和微代碼控制器等。有限狀態機在時間尺度上對其控制信號進行離散化控制, 利用狀態轉移使控制信號在有限狀態機的狀態節拍控制下變化, 以實現對被控對象的控制。有限狀態機設計的關鍵是如何把一個實際的時序邏輯關係抽象成一個時序邏輯函數,傳統的電路圖輸入法通過直接設計寄存器組來實現各個狀態之間的轉換, 而用硬體描述語言來描述有限狀態機, 往往是通過充分發揮硬體描述語言的抽象建模能力,通過對系統在系統級或寄存器傳輸級進行描述來建立有限狀態機。EDA 工具的快速發展,使通過CAD快速設計有限狀態機自動化成為可能。

傳統上在系統級和寄存器傳輸級完成VHDL 的描述主要分以下幾步:

(1) 分析控制器設計指標, 建立系統算法模型圖;
(2) 分析被控對象的時序狀態, 確定控制器有限狀態機的各個狀態及輸入.輸出條件;
(3) 應用VHDL 語言完成描述。

使用XILINX的ISE6.1軟體包能加速有限狀態機設計,大大簡化狀態機的設計過程,實現狀態機設計的自動化。下面分析二個簡單的狀態機設計實例來介紹使用ISE6.1軟體包中STATECAD來介紹快速設計有限狀態機的方法。使用STATECAD進行狀態機設計的流程如下:

(1) 分析控制器設計指標, 建立系統算法模型圖;
(2) 分析被控對象的時序狀態, 確定控制器有限狀態機的各個狀態及輸入.輸出條件;
(3) 在STATECAD中輸入有限狀態機狀態圖,自動產生VHDL模型描述,使用STATEBENCH進行狀態轉移分析,分析無誤後使用導出VHDL模型塊到ISE中進行仿真後綜合,實現到CPLD或FPGA的映射。

設計人員的主要工作在第一步。第二步,第三步基本上可以通過STATECAD完成有限狀態機的自動生成和分析,還可以利用分析結果來對被控對象的邏輯進行分析,改進,完善系統控制邏輯。

下面以一個VCR控制機狀態機設計過程來介紹如何使用STATECAD設計狀態機。
VCR控制機描述:

外部輸入:
1.POWERSWITCH----電源開關
2.STOP-停按鈕
3.PLAYDDDDDDDD播放按鈕
4.RECORDDDDDDDD錄影按鈕

輸出狀態:
1.有電顯示:電源指示燈亮,播放指示燈滅,錄影指示燈滅;
2.按播放按鈕,進入播放狀態,播放指示燈亮,電源指示燈亮,錄影指示燈滅;按停按鈕,退出播放狀態回到有電狀態,播放指示燈滅,電源指示燈亮,錄影指示燈滅;
3.按錄影按鈕,進入錄影狀態,錄影指示燈亮;按停按鈕,退出錄影狀態回到有電狀態;電源指示燈亮,播放指示燈滅,錄影指示燈滅;
4.電源開關斷開,電源指示燈滅,播放指示燈滅,錄影指示燈滅;

打開STATECAD,輸入如下的狀態圖:

進行邏輯優化(工具自動進行邏輯優化)後,使用STATEBENCH進行狀態轉移分析。以下是自動狀態轉移模擬波形。

也可以進行行為狀態模擬:如以下動作的模擬波形,按電源開關上電,按播放按鈕,按播放按鈕,按停按鈕,按錄影按鈕,按停按鈕,電源開關斷電。

綜合以上的模擬波形結果,可以看到狀態機安裝指定的狀態轉移圖工作。
導出VHDL模型塊到ISE中進行仿真後綜合後可以適配到XC9536-5-PC44晶片,適配結果如下:

宏模塊使用Pterms Used寄存器使用情況引腳使用情況IOB使用情況
9/36 (25%)37/180 (21%)9/36 (25%)13/34 (39%)11/72 (16%)

進行引腳鎖定後就可以進行編程。
代碼如下:
-- D:XILINXTUTORIALVCRSTATE.vhd
-- VHDL code created by Xilinx's StateCAD 6.1i

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY VCRSTATE IS
PORT (CLK,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,RESET,STOPSWITCH: IN std_logic;
PLAYLED,POWERLED,RECORDLED : OUT std_logic);
END;

ARCHITECTURE BEHAVIOR OF VCRSTATE IS
TYPE type_sreg IS (OFF,PLAY,POWERON,RECORDING);
SIGNAL sreg, next_sreg : type_sreg;
SIGNAL next_PLAYLED,next_POWERLED,next_RECORDLED : std_logic;
BEGIN
PROCESS (CLK, RESET, next_sreg, next_PLAYLED, next_POWERLED, next_RECORDLED)
BEGIN
IF ( RESET='1' ) THEN
sreg = OFF; PLAYLED = '0';
POWERLED = '0'; RECORDLED = '0';
ELSIF CLK='1' AND CLK'event THEN
sreg = next_sreg; PLAYLED = next_PLAYLED;
POWERLED = next_POWERLED;RECORDLED = next_RECORDLED;
END IF;
END PROCESS;

PROCESS (sreg,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,STOPSWITCH)
BEGIN
next_PLAYLED = '0'; next_POWERLED = '0'; next_RECORDLED = '0';
next_sreg=OFF;
CASE sreg IS
WHEN OFF =>
IF ( POWERSWITCH='1' ) THEN
next_sreg=POWERON;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='0';
ELSE
next_sreg=OFF;next_POWERLED='0';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
WHEN PLAY =>
IF ( POWERSWITCH='1' AND STOPSWITCH='0' ) THEN
next_sreg=PLAY; next_POWERLED='1';
next_PLAYLED='1';next_RECORDLED='0';
END IF;
IF ( POWERSWITCH='0' ) THEN
next_sreg=OFF;next_POWERLED='0';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
IF ( STOPSWITCH='1' AND POWERSWITCH='1' ) THEN
next_sreg=POWERON;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
WHEN POWERON =>
IF ( POWERSWITCH='0' ) THEN
next_sreg=OFF;next_POWERLED='0';
next_PLAYLED='0';next_RECORDLED='0';
ELSIF ( RECORDSWITCH='1' ) THEN
next_sreg=RECORDING;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='1';
ELSIF ( PLAYSWITCH='1' ) THEN
next_sreg=PLAY; next_POWERLED='1';
next_PLAYLED='1';next_RECORDLED='0';
ELSE
next_sreg=POWERON;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
WHEN RECORDING =>
IF ( POWERSWITCH='1' AND STOPSWITCH='0' ) THEN
next_sreg=RECORDING;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='1';
END IF;
IF ( POWERSWITCH='0' ) THEN
next_sreg=OFF;next_POWERLED='0';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
IF ( STOPSWITCH='1' AND POWERSWITCH='1' ) THEN
next_sreg=POWERON;next_POWERLED='1';
next_PLAYLED='0';next_RECORDLED='0';
END IF;
WHEN OTHERS =>
END CASE;
END PROCESS;
END BEHAVIOR;

整個狀態機實現過程比相當簡單。快捷。有效。

相關焦點

  • Verilog HDL設計進階:有限狀態機的設計原理及其代
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • Verilog HDL設計進階:有限狀態機的設計原理及其代碼風格
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • 如何以面向對象的思想設計有限狀態機
    狀態機的概念有限狀態機又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學計算模型,用英文縮寫也被簡稱為 FSM。FSM 會響應「事件」而改變狀態,當事件發生時,就會調用一個函數,而且 FSM 會執行動作產生輸出,所執行的動作會因為當前系統的狀態和輸入的事件不同而不同。
  • 利用有限狀態機的交通燈控制系統設計與仿真
    僅用一片可編程邏輯器件,即完成需要的控制功能,設計思路清晰,實現過程靈活。關鍵詞:有限狀態機;交通燈;控制系統;設計 實現路口交通燈控制器系統的方法很多,可以用標準邏輯器件、可編程序控制器PLC、單片機等方案來實現。但是這些方法在進行功能修改及調試時,都涉及硬體電路的調整,在一定程度上增加了工作的難度。
  • 用VHDL設計有限狀態機的方法
    受控部分通常是設計者們所熟悉的各種功能電路,設計較為容易。主要任務是設計控制器,而其控制功能可以用有限狀態機來實現。因而有必要深入探討有限狀態機的設計方法。本文引用地址:http://www.eepw.com.cn/article/150667.htm1 狀態機設計的一般方法  傳統的設計方法是首先繪製出控制器的狀態圖,並由此列出狀態表,再合併消除狀態表中的等價狀態項。在完成狀態寄存器的分配之後,根據狀態表求出次態及輸出方程,最後畫出設計原理圖。
  • 有限狀態機的FPGA設計
    有限狀態機是一種常見的電路,由於時序電路和組合電路組成,設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。Mealy狀態機的狀態轉變不僅和當前狀態有關,而且和各輸入信號有關;Moore狀態機的轉變只和當前狀態有關。
  • 產品經理不得不知的——有限狀態機
    二、什麼是有限狀態機有限狀態機(Finite-state machine)是一個非常有用的模型,可以模擬世界上大部分事物。它有三個特徵:狀態總數(state)是有限的。任一時刻,只處在一種狀態之中。某種條件下,會從一種狀態轉變(transition)到另一種狀態。
  • 初學者對有限狀態機(FSM)的設計的認識
    有限狀態機(FSM)是一種常見的電路,由時序電路和組合電路組成。設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。(Mealy型:狀態的轉變不僅和當前狀態有關,而且跟各輸入信號有關;Moore型:狀態的轉變只和當前狀態有關)。
  • 基於FPGA與有限狀態機的高精度測角系統的設計與實
    本文介紹的有限狀態機方法,在FPGA上可以有效消除抖動引起的計數幹擾,提高計數的精度[1]。1 方案設計1.1 系統組成雷射跟蹤測量系統的核心處理模塊主要由ARM處理器,FPGA組成。2 理論分析與算法2.1 有限狀態機原理在編碼器的一個輸出周期內
  • 基於有限狀態機的飛行器自毀系統時序控制設計
    分析飛行器自毀系統工作原理,採用複雜可編程邏輯器件(CPLD)實現了飛行器自毀系統設計,結合CPLD的特點,提出一種基於改進型有限狀態機的飛行器自毀系統時序控制的設計方法,並在CPLD中予以實現。仿真及實驗表明,基於有限狀態機的飛行器自毀系統定時精度達到納秒級,可以有效地控制自毀信號輸出並消除毛刺現象,很好地滿足系統性能要求。該方法具有結構簡單緊湊、成本低、可靠性高、精度高等優點。
  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真
  • 簡單的狀態機入門!
    大家晚上好,今天給大家分享一個篇關於狀態機的學習。1、有限狀態機:常說的狀態機是有限狀態機FSM(Finite State Machine)。FSM指的是有有限個狀態(一般是一個狀態變量的值),這個機器同時能夠從外部接收信號和信息輸入,機器在接收到外部輸入的信號後會綜合考慮當前自己的狀態和用戶輸入的信息,然後機器做出動作:跳轉到另一個狀態。
  • FPGA工程師:如何在FPGA中實現狀態機?
    對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。
  • 如何用cad製圖軟體修改內容?試試這個快速修改的方法
    如何用cad製圖軟體修改內容?cad是我們常用的一款製圖軟體,不管是你身上穿的衣服或是你手上的玩具都有可能會經過cad而出。可見cad製圖軟體遍布在我們身邊的各個地方,當你獲得一份cad圖紙有錯誤或者想添加內容時你知道該怎麼修改嗎?
  • 10天學會CAD?小白如何快速自學?快速掌握CAD製圖?
    小白如何快速自學掌握CAD製圖?CAD是一個比較普遍,應用面極為廣泛的製圖軟體,全屋定製離不開cad軟體,室內裝修施工圖離不開cad軟體,建築工程製圖更離不開cad軟體。知道CAD的人很多,懂點皮毛的也不少,但是如果要能獨立的cad製圖的就不那麼多了。Cad軟體好不好學呢?當然好學,上小學二年級的侄子天天聽我上課,現在都能自己繪圖了。
  • 基於有限狀態機的嵌入式系統模型校驗技術
    對於面向控制的系統,可以採用有限狀態 機(FSM)定義需求和設計,這是一種得到廣泛認可的抽象表示方法。當然,光靠FSM並不能對複雜的實際工業系統進行建模。我們還需要:1. 能將需求模塊化並區分需求等級;2. 能合併各組成部分的需求(或設計);3. 能通過更新預先規定的變量和設備,防止可能出現的異常。校驗設計需求時,通常可以通過回答一些問題得到結果。
  • 三維CAD實現快速設計汽車輪轂五大步驟
    汽車輪轂設計是汽車CAD造型設計中一個舉足輕重的環節,如何靈活、快速設計企業所需要的輪轂三維CAD模型?成為輪轂製造廠家和CAD設計師們共同關心的問題。本文專訪某汽車行業的資深三維CAD工程設計師Joe,以三維CAD軟體中望3D 2013為例,為大家展示如何快速繪製汽車輪轂。
  • CAXA三維CAD教程:平面圖快速生成三維圖
    CAXA實體設計(三維CAD)是唯一集創新設計、工程設計、協同設計於一體的新一代三維 CAD解決方案。它包含三維建模、協同工作和分析仿真等各種功能,其無可匹敵的易操作性和設計速度幫助工程師將更多的精力用於產品設計本身。
  • cad製圖軟體怎麼用?修改cad文件內容的方法
    cad製圖軟體怎麼用?cad指利用計算機及其圖形設備輔助設計人員進行設計工作,常應用於土木建築、城市規劃、園林設計和機械設計等諸多領域,是眾多製圖軟體的其中之一。前幾天有位小夥伴獲得一份cad圖紙因為不會使用cad製圖軟體,因此私信小編幫忙修改圖紙內容。
  • 如何用Python實現超級瑪麗的界面和狀態機?
    狀態機介紹遊戲中的狀態機一般都是有限狀態機,簡寫為FSM(Finite State Machine),簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態機的每一個狀態至少需要有下面三個操作:Startup:當從其他狀態進入這個狀態時,需要進行的初始化操作;Update :在這個狀態運行時進行的更新操作;Cleanup:當從這個狀態退出時,需要進行的清除操作。