用VHDL設計有限狀態機的方法

2020-12-05 電子產品世界

現代數字系統的設計一般都採用自頂向下的模塊化設計方法。即從整個系統的功能出發,將系統分割成若干功能模塊。在自頂向下劃分的過程中,最重要的是將系統或子系統按計算機組成結構那樣劃分成控制器和若干個受控制的功能模塊。受控部分通常是設計者們所熟悉的各種功能電路,設計較為容易。主要任務是設計控制器,而其控制功能可以用有限狀態機來實現。因而有必要深入探討有限狀態機的設計方法

本文引用地址:http://www.eepw.com.cn/article/150667.htm

1 狀態機設計的一般方法

  傳統的設計方法是首先繪製出控制器的狀態圖,並由此列出狀態表,再合併消除狀態表中的等價狀態項。在完成狀態寄存器的分配之後,根據狀態表求出次態及輸出方程,最後畫出設計原理圖。採用這種方法設計複雜狀態機將會十分繁雜。

  利用VHDL設計狀態機,不需要進行繁瑣的狀態分配、繪製狀態表和化簡次態方程。設計者不必使用卡諾圖進行邏輯化簡,不必畫電路原理圖,也不必搭試硬體電路進行邏輯功能的測試,所有這些工作都可以通過EDA工具自動完成。應用VHDL設計狀態機的具體步驟如下:

  (1)根據系統要求確定狀態數量、狀態轉移的條件和各狀態輸出信號的賦值,並畫出狀態轉移圖;

  (2)按照狀態轉移圖編寫狀態機的VHDL設計程序;

  (3)利用EDA工具對狀態機的功能進行仿真驗證。

  下面以離心機定時順序控制器的設計為例,說明狀態機的設計方法。

2 定時順序控制狀態機的設計

  在化工生產中,離心機用於固、液分離的工藝流程,如圖1所示。

加料至刮刀回程循環N次之後,進入大洗網工序,隨後又開始進入新一輪順序循環工作。該系統控制器的框圖如圖2所示。

  圖2中計數模塊是由三個帶異步復位和並行預置的計數器組成。其中COUNTER1是2位加/減法計數器,用於控制從加料至刮刀回程的各工序時間,其中加料和卸料工序為加計時,其餘工序為減計時;COUNTER2是3位減法計數器,用於控制大洗網的時間;COUNTER3是2位加法計數器,用於控制循環工作次數。解碼器用於選通與各工序相對應的預置數。圖2中K1、K2分別是加料和卸料限位開關信號,R{R1、R2、R3}為計數器減為零(或循環次數等於預置數)時發出的信號,它們都可作為狀態轉移的控制信號。LD(LD1、LD2、LD3)為並行置數控制信號,CLR(CLR1、CLR2、CLR3)為異步清零信號,ENA(ENA1、ENA2)為計數使能信號,J為加/減計數控制信號,G(G1、A、B、C)為解碼器控制信號,FO為各工序電磁閥和指示燈控制信號。

  系統工作方式如下:當系統處於初始狀態或復位信號reset有效時,系統處於復位狀態。按下自動工作鍵C0,系統進入加料工序並開始自動控制離心機的運行。以加水工序為例,首先在加水預置數狀態(water_ld)時,狀態機輸出信號FO,開啟加水電磁閥及指示燈,同時輸出信號G控制選通加水時間預置數,在LD1信號的控制下,將預置數送入COUNTER1。此時ENA1=1,J=1,使計數器為減計數狀態。然後,在下一個時鐘周期進入加水工作狀態(water),並開始減計時。當計時為零時,計數器發出借位信號R1作為此工序結束的信號送入狀態機,使其轉入下一個工作狀態。根據系統要求可畫出狀態轉移圖如圖3所示。其中圖3表示各狀態轉移的順序和轉移條件,表1列出了與各狀態相應的輸出信號值。


按照狀態轉移圖可編寫狀態機的VHDL源程序。採用雙進程描述法設計的離心機控制器源程序如下:

library ieee;

use ieee.std_logic_1164.all;

entity controller is

port (c0,reset: in std_logic;

clk1,k1,k2,r1,r2,r3: in std_logic;

clr1,clr2,clr3,j,enal,ena2: out std_logic;

ld1,ld2,ld3,g1,a,b,c: out std_logic;

fo: out std_logic_vector(6 downto 0));

end controller;

塵埃粒子計數器相關文章:塵埃粒子計數器原理

相關焦點

  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真
  • 用STATECAD快速設計有限狀態機
    控制單元的實現方式有: 有限狀態機、控制寄存器和微代碼控制器等。有限狀態機在時間尺度上對其控制信號進行離散化控制, 利用狀態轉移使控制信號在有限狀態機的狀態節拍控制下變化, 以實現對被控對象的控制。有限狀態機設計的關鍵是如何把一個實際的時序邏輯關係抽象成一個時序邏輯函數,傳統的電路圖輸入法通過直接設計寄存器組來實現各個狀態之間的轉換, 而用硬體描述語言來描述有限狀態機, 往往是通過充分發揮硬體描述語言的抽象建模能力,通過對系統在系統級或寄存器傳輸級進行描述來建立有限狀態機。EDA 工具的快速發展,使通過CAD快速設計有限狀態機自動化成為可能。
  • 利用有限狀態機的交通燈控制系統設計與仿真
    僅用一片可編程邏輯器件,即完成需要的控制功能,設計思路清晰,實現過程靈活。關鍵詞:有限狀態機;交通燈;控制系統;設計 實現路口交通燈控制器系統的方法很多,可以用標準邏輯器件、可編程序控制器PLC、單片機等方案來實現。但是這些方法在進行功能修改及調試時,都涉及硬體電路的調整,在一定程度上增加了工作的難度。
  • 有限狀態機的FPGA設計
    有限狀態機是一種常見的電路,由於時序電路和組合電路組成,設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。Mealy狀態機的狀態轉變不僅和當前狀態有關,而且和各輸入信號有關;Moore狀態機的轉變只和當前狀態有關。
  • Verilog HDL設計進階:有限狀態機的設計原理及其代
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • 如何以面向對象的思想設計有限狀態機
    狀態機的概念有限狀態機又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學計算模型,用英文縮寫也被簡稱為 FSM。FSM 會響應「事件」而改變狀態,當事件發生時,就會調用一個函數,而且 FSM 會執行動作產生輸出,所執行的動作會因為當前系統的狀態和輸入的事件不同而不同。
  • 基於有限狀態機的飛行器自毀系統時序控制設計
    分析飛行器自毀系統工作原理,採用複雜可編程邏輯器件(CPLD)實現了飛行器自毀系統設計,結合CPLD的特點,提出一種基於改進型有限狀態機的飛行器自毀系統時序控制的設計方法,並在CPLD中予以實現。仿真及實驗表明,基於有限狀態機的飛行器自毀系統定時精度達到納秒級,可以有效地控制自毀信號輸出並消除毛刺現象,很好地滿足系統性能要求。該方法具有結構簡單緊湊、成本低、可靠性高、精度高等優點。
  • Verilog HDL設計進階:有限狀態機的設計原理及其代碼風格
    由於寄存器傳輸級(RTL)描述是以時序邏輯抽象所得到的有限狀態機為依據的,所以把一個時序邏輯抽象成一個同步有限狀態機是設計可綜合風格的Verilog HDL模塊的關鍵。在本章中我們將通過各種實例由淺入深地來介紹各種可綜合風格的Verilog HDL模塊,並把重點放在時序邏輯的可綜合有限狀態機的Verilog HDL設計要點。
  • 初學者對有限狀態機(FSM)的設計的認識
    有限狀態機(FSM)是一種常見的電路,由時序電路和組合電路組成。設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。(Mealy型:狀態的轉變不僅和當前狀態有關,而且跟各輸入信號有關;Moore型:狀態的轉變只和當前狀態有關)。
  • 基於FPGA與有限狀態機的高精度測角系統的設計與實
    然而,由於機械振動或抖動等原因,增量式編碼器的輸出脈衝會出現抖動毛刺的現象,因此需要在對編碼器輸出脈衝進行計數的過程中採取有效的方法來去掉抖動幹擾。本文介紹的有限狀態機方法,在FPGA上可以有效消除抖動引起的計數幹擾,提高計數的精度[1]。
  • 產品經理不得不知的——有限狀態機
    二、什麼是有限狀態機有限狀態機(Finite-state machine)是一個非常有用的模型,可以模擬世界上大部分事物。它有三個特徵:狀態總數(state)是有限的。任一時刻,只處在一種狀態之中。某種條件下,會從一種狀態轉變(transition)到另一種狀態。
  • ST推出LIS3DSH內置2個有限狀態機的三軸高解析度加速度計
    打開APP ST推出LIS3DSH內置2個有限狀態機的三軸高解析度加速度計 愛好者 發表於 2011-11-07 23:33:20
  • 基於有限狀態機的嵌入式系統模型校驗技術
    對於面向控制的系統,可以採用有限狀態 機(FSM)定義需求和設計,這是一種得到廣泛認可的抽象表示方法。當然,光靠FSM並不能對複雜的實際工業系統進行建模。我們還需要:1. 能將需求模塊化並區分需求等級;2. 能合併各組成部分的需求(或設計);3. 能通過更新預先規定的變量和設備,防止可能出現的異常。校驗設計需求時,通常可以通過回答一些問題得到結果。
  • 簡單的狀態機入門!
    大家晚上好,今天給大家分享一個篇關於狀態機的學習。1、有限狀態機:常說的狀態機是有限狀態機FSM(Finite State Machine)。FSM指的是有有限個狀態(一般是一個狀態變量的值),這個機器同時能夠從外部接收信號和信息輸入,機器在接收到外部輸入的信號後會綜合考慮當前自己的狀態和用戶輸入的信息,然後機器做出動作:跳轉到另一個狀態。
  • UML狀態機圖繪製方法及其應用說明
    UML狀態機圖繪製方法及其應用說明 在學習UML的過程中你是否遇到過UML狀態機圖,你對他是否了解,這裡就向大家介紹一下UML狀態機圖的概念,如何繪製UML狀態機圖以及它的應用說明。
  • FPGA工程師:如何在FPGA中實現狀態機?
    對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。
  • 如何繪畫狀態機來描述業務的變化
    後來軟體編程裡面繼承了這種思想,用來表示有限多個狀態以及在這些狀態之間轉移和動作的模型。簡稱為FSM(Finite State Machine),是常見的軟體設計模式之一。對於PM來說,借鑑這種思想並融入到自己的產品思維中是很有必要的。據此設計業務實體的功能會更容易闡述本質,並且讓技術更容易理解。三、狀態機是什麼?
  • 基於VHDL/CPLD的I2C串行總線控制器設計及實現
    I2C總線用兩根信號線進行數據傳輸,一根為串行數據線(SDA),另一根為串行時鐘線(SCL)。I2C總線允許若干兼容器件(如存儲器、A/D轉換器、D/A轉換器、LCD驅動器等)共享總線。I2C總線理論上可以允許的最大設備數,是以總線上所有器件的總電容(其中包括連線本身的電容和連接端的引出電容)不超過400pF為限,總線上所有器件依靠SDA線發送的地址信號尋址,不需要片選線。
  • 基於Verilog的順序狀態邏輯FSM設計與仿真
    這在設計過程中,進行邏輯結構部分設計時可以將行為結構和層次化結構混合起來;為確認正確性還可以將描述進行模擬,並提供一些用於自動設計的綜合工具。因而Verilog語言為設計者進行大型複雜數字系統的設計提供了途徑。超大規模集成電路設計的典型流程如圖1所示。   本文將以順序狀態邏輯有限狀態機的設計為例介紹用Verilog語言設計數字電路的一般過程。
  • LabVIEW設計模型——狀態機之狀態轉換圖
    狀態機是在工程應用中使用最多的設計模型。使用狀態機,我們可以很容易的實現程序流程圖中的判斷、分支。 狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。