如何在FPGA中實現狀態機

2021-01-07 電子產品世界

  FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。

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

  理論上講,狀態機可以分為Moore狀態機和Mealy狀態機兩大類。它們之間的差異僅在於如何生成狀態機的輸出。Moore狀態機的輸出僅為當前 狀態的函數。典型的例子就是計數器。而Mealy狀態機的輸出是當前狀態和輸入的函數。典型的例子就是Richards控制器。

  定義狀態機

  當需要定義一個狀態機時,首先要繪製一張狀態圖。狀態圖可用來顯示狀態、狀態間的轉換和狀態機的輸出。圖1顯示了Moore狀態機的狀態圖(左)和Mealy狀態機的狀態圖(右)。

  

 

  圖1,用於開/關LED的Moore狀態機(左)和Mealy狀態機(右)的狀態圖。

  如果您要在物理組件中實現這些狀態圖(工程師在FPGA問世之前就是這麼做的),首先就得生成當前狀態和後續狀態表,然後生成實現狀態機所需的邏輯。不過由於我們將使用FPGA來實現設計,因此我們可以直接從狀態轉換圖開始工作。

  算法狀態圖

  雖然有許多狀態機是使用圖1所示的狀態圖方法進行設計的,但另外還有一種描述狀態機行為的方法,這就是算法狀態圖法。ASM圖(圖2)在外觀上更加接近軟體工程流程圖。它由三個基本部分構成:

  狀態框。它與狀態名稱有關,並包含Moore狀態輸出列表。

  決策框。如果檢驗某條件為真,則進行下一狀態的判斷。

  條件輸出框。讓狀態機根據當前狀態和輸入描述Mealy輸出。

  一些工程師認為,如果使用VHDL等硬體描述語言,則採用ASM格式進行描述的狀態機更易於映射到實現方案中。

  

 

  圖2,用於圖1所示的狀態機(Moore狀態機(左),Mealy狀態機(右))的算法狀態圖。

  Moore和Mealy:應該選擇哪個?

  實現Moore狀態機還是Mealy狀態機,取決於狀態機需要實現的功能,以及特定的反應次數要求。兩種狀態機之間的最大差別在於狀態機如何對輸入 做出反應。在輸入和設置的適當輸出之間,Moore狀態機一般有一個時鐘周期的延遲。這就意味著Moore狀態機無法對輸入變化立即做出反應,這點在圖3 中可以清楚地看到。而Mealy狀態機則能夠立即對輸入做出反應,這通常意味著:實現相同的函數,Mealy狀態機比Moore狀態機需要更少的狀態。 Mealy狀態機的不足之處就是在與另一個狀態機進行通信時,如果輸出出乎意料地嚴重依賴於其它事件的序列或時序,就可能會發生紊亂情況。

  

 

  圖3,截屏顯示了Moore狀態機(上)和Mealy狀態機(下)輸出的仿真結果。

  當然,並非只能使用單純的Moore狀態機或Mealy狀態機,也可以將這兩種狀態機混合使用,從而更有效地實現所需的函數。比如說,用於接收RS232串行數據的狀態機就可以是混合機。

fpga相關文章:fpga是什麼

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

相關焦點

  • 零基礎學FPGA(七)淺談狀態機
    狀態機分為兩中類型,一種叫Mealy型,一種叫Moore型。前者就是說時序邏輯的輸出不僅取決於當前的狀態,還取決於輸入,而後者就是時序邏輯的輸出僅僅取決於當前的狀態。下面兩個圖分別表示兩種不同的狀態機。
  • FPGA工程師:如何在FPGA中實現狀態機?
    如果您要在物理組件中實現這些狀態圖(工程師在FPGA問世之前就是這麼做的),首先就得生成當前狀態和後續狀態表,然後生成實現狀態機所需的邏輯。不過由於我們將使用FPGA來實現設計,因此我們可以直接從狀態轉換圖開始工作。
  • 一種近距雷達目標檢測信號處理的FPGA實現
    目標檢測單元調用2#RAM中的頻域數據並進行分析,識別頻譜的峰值位置,提取出目標的速度信息;計算頻域雜波水平,並實現自適應門限恆虛警檢測算法,從而完成雜波環境中的實時動目標檢測(MTD)處理過程。從圖1可以看出,同其它類別的雷達系統不同的是,作為一類目標探測識別裝置,某近距雷達在目標檢測單元之前,可以認為都是對信號的預處理。
  • 如何設計一個穩定可靠的狀態機
    隨著大規模和超大規模FPGA/CPLD器件的誕生和發展,以HDL(硬體描述語言)為工具、FPGA/CPLD器件為載體的EDA技術的應用越來越廣泛.從小型電子系統到大規模SOC(Systemonachip)設計,已經無處不在.在FPGA/CPLD設計中,狀態機是最典型、應用最廣泛的時序電路模塊,如何設計一個穩定可靠的狀態機是我們必須面對的問題.
  • 基於FPGA與有限狀態機的高精度測角系統的設計與實
    光電編碼器是利用光柵衍射原理實現位移數字變換的,光電編碼器作為一種高精度的測角傳感器已普遍應用於伺服跟蹤系統中,它具有精度高、響應快、性能穩定可靠等優點。光電編碼器按編碼方式主要分為兩類:增量式與絕對式。由於增量式光電編碼器成本低、測角的精度高,因此本系統的增量式光電編碼器選用Renishaw公司的高精度圓光柵。
  • 利用74LS161實現複雜狀態機
    打開APP 利用74LS161實現複雜狀態機 發表於 2018-01-18 09:00:02 狀態機的寫法
  • 基於UART以狀態機的形式實現LIN通信
    LIN總線作為CAN總線的有效補充,以低速率和低成本的實現有效解決了分布式控制帶來的成本增加問題。車身分布式控制系統中,採用CAN總線和LIN總線連接各個控制單元,完成單元之間的數據交換,系統結構如圖1所示。
  • OFDM系統中DAGC的應用研究及FPGA實現
    O 引 言本文引用地址:http://www.eepw.com.cn/article/269686.htm  隨著各種FFT算法的出現,DFT在現代信號處理中起著越來越重要的作用。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • LabVIEW設計模型——狀態機
    狀態機是在工程應用中使用最多的設計模型。使用狀態機,我們可以很容易的實現程序流程圖中的判斷、分支。 狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。
  • 單片機之狀態機淺談
    說到單片機編程,不得不說到狀態機,狀態機做為軟體編程的主要架構已經在各種語言中應用,當然包括C語言,在一個思路清晰而且高效的程序中,必然有狀態機的身影浮現。靈活的應用狀態機不僅是程序更高效,而且可讀性和擴展性也很好。狀態無處不在,狀態中有狀態,只要掌握了這種思維,讓它成為您編程中的一種習慣,相信您會受益匪淺。
  • 用FPGA實現FFT算法
    FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。本文提出的FFT實現算法是基於FPGA之上的,算法完成對一個序列的FFT計算,完全由脈衝觸發,外部只輸入一脈衝頭和輸入數據,便可以得到該脈衝頭作為起始標誌的N點FFT輸出結果。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 而tlv320aic23有7位地址和9位數據,也就是說,需要把數據項上面的最高位補充到第二個8 b中的最後一位。 mcbsp串口通過6個引腳clkx,clkr,fsx,fsr,dr和cx與tlv320aic23相連。數據經mcbsp串口與外設的通信通過dr和dx引腳傳輸,控制同步信號則由clkx,clkr,fsx,fsr四個引腳實現。
  • 由淺入深,讓你全面了解狀態機模式的應用原理
    工作中應用到了狀態機,學習過程中發現,如果狀態機使用得當,那麼就會事半功倍。中間也陸陸續續學習研究了狀態機的相關知識。所以,在這裡做個總結,同時也分享出來。本文首先簡單介紹狀態機的基本知識(建議找專門專業的介紹狀態機的書籍進行學習),然後基於十字轉門的例子,以遷移表的方式來實現有限狀態機的功能,接著再介紹經典的狀態機模式,最後重點介紹boost startchart的相關知識點,boost startchart是boost實現的狀態機庫,它幾乎支持了所有的UML中狀態機的特性,主要學習的途徑就是官網提供的指南,該指南信息量很大,但是學習起來有點費勁
  • 如何通過FPGA+AD9361 SDR實現機載視頻無線傳輸
    如何通過FPGA+AD9361 SDR實現機載視頻無線傳輸 宋哲,曹暘等 發表於 2021-01-06 16:46:33 摘要: 針對當前無人機數據鏈日趨小型化,採用射頻收發一體化設計,基於FPGA 對零中頻射頻收發器
  • 如何在 FPGA 上實現雙線性插值的計算?
    作者 | 殷慶瑜責編 | 胡巍巍本文主要討論了如何在FPGA上實現雙線性插值的計算。Interp和Resize是Yolo_v2,Yolo_v3和Faster R-CNN等目標檢測網絡的關鍵層。主要的作用是使得圖片的放大和縮小過程變得更為平滑。What?什麼是雙線性插值?
  • 基於FPGA IP核的FFT實現
    0 引 言 數位訊號處理領域中FFT算法有著廣泛的應用。目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。
  • 狀態機重新優化業務流程
    有限狀態機(FSM:finite-state machine )或有限狀態機(FSA:finite-state automaton)、有限自動機或簡單的狀態機是計算的數學模型。它是一個抽象的機器,在任何給定的時間內都可以處於有限個狀態中的一個。FSM可以根據一些外部輸入從一個狀態更改為另一個狀態;從一個狀態更改為另一個狀態稱為轉換。
  • 採用FPGA實現多種類型的數位訊號處理濾波器
    採用 FPGA 設計和實現的高性能濾波器的能力是模擬方法所望塵莫及的。另外,採用FPGA 設計的數字濾波器可以避免模擬設計中存在的某些問題,特別是組件漂移和容差(在高可靠應用中,由溫度過高、老化和輻射問題造成)。這些模擬問題會顯著降低濾波器的性能,特別是在通帶紋波等方面。
  • 《生命遊戲》FPGA實例評測:有限狀態機用哪種編碼更好?
    儘管如此,下面我決定在三種不同的開發工具和三種不同的狀態機對這三種編碼的結果進行比較。接下來的三個實驗說明了確定哪種編碼適合給定FPGA的過程。 被測系統對於此實驗,我想大量實例化一個狀態機,以放大使用二進位,格雷和獨熱編碼時所得硬體的差異。