0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA中有限狀態(tài)機(jī)的狀態(tài)編碼采用格雷碼還是獨(dú)熱碼?

FPGA研究院 ? 來源:FPGA之家 ? 2023-04-07 09:52 ? 次閱讀

看《從算法設(shè)計(jì)到硬件邏輯的實(shí)現(xiàn)》這本電子書時,遇到了一個問題,就是有限狀態(tài)機(jī)的編寫中,狀態(tài)編碼是采用格雷碼還是獨(dú)熱碼呢?究竟采用哪一種編碼呢?

采用獨(dú)熱碼為什么節(jié)省許多組合電路?

等等問題,就這些問題我收集了一些說法,覺得很有意思,在這里我們一起討論下。

還是先簡介下有限狀態(tài)機(jī):

有限狀態(tài)機(jī)是由寄存器組和組合邏輯構(gòu)成的硬件時序電路,其狀態(tài)(即由寄存器組的1和0的組合狀態(tài)所構(gòu)成的有限個狀態(tài))只可能在同一時鐘跳變沿的情況下才能從一個狀態(tài)轉(zhuǎn)向另一個狀態(tài),究竟轉(zhuǎn)向哪一狀態(tài)還是留在原狀態(tài)不但取決于各個輸入值,還取決于當(dāng)前所在狀態(tài)。這里是指Mealy型有限狀態(tài)機(jī)。

Moore型有限狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移只取決于當(dāng)前狀態(tài),與輸入值無關(guān)。

Verilog HDL中可以用許多種方法來描述有限狀態(tài)機(jī),最常用的方法是用always語句和case語句。下面的狀態(tài)轉(zhuǎn)移圖表示了一個有限狀態(tài)機(jī):

9d4a5008-d4d3-11ed-bfe3-dac502259ad0.png

上面的狀態(tài)轉(zhuǎn)移圖表示了一個四狀態(tài)的有限狀態(tài)機(jī),它的同步時鐘是Clock,輸入信號是 A 和 rst_n ,輸出信號是 F 和 G。狀態(tài)的轉(zhuǎn)移只能在同步時鐘(Clock)的上升沿時發(fā)生,往哪個狀態(tài)的轉(zhuǎn)移則取決于目前所在的狀態(tài)和輸入的信號(Reset 和 A)。

我們采用兩種狀態(tài)編碼方式來實(shí)現(xiàn)這個有限狀態(tài)機(jī):

1)采用格雷碼:

9d6a23ba-d4d3-11ed-bfe3-dac502259ad0.png

9d91226c-d4d3-11ed-bfe3-dac502259ad0.png

9da1abbe-d4d3-11ed-bfe3-dac502259ad0.png

在ISE中,綜合后,得到的RTL Schematic

9db84f40-d4d3-11ed-bfe3-dac502259ad0.png

2)采用獨(dú)熱碼:

程序和上面的幾乎一樣,只需要改下,各個狀態(tài)對應(yīng)的編碼值即可,還有最后的default:state 《= Idle;

還是給出程序吧:

9dcce13a-d4d3-11ed-bfe3-dac502259ad0.png

9ddff3a6-d4d3-11ed-bfe3-dac502259ad0.png

9df319ae-d4d3-11ed-bfe3-dac502259ad0.png

9e0cb08a-d4d3-11ed-bfe3-dac502259ad0.png

上面兩個程序的主要不同點(diǎn)是狀態(tài)編碼,2)采用了獨(dú)熱編碼,而1)則采用Gray碼,究竟采用哪一種編碼好要看具體情況而定。對于用FPGA實(shí)現(xiàn)的有限狀態(tài)機(jī)建議采用獨(dú)熱碼,因?yàn)殡m然采用獨(dú)熱編碼多用了兩個觸發(fā)器,但所用組合電路可省下許多,因而使電路的速度和可靠性有顯著提高,而總的單元數(shù)并無顯著增加。采用了獨(dú)熱編碼后有了多余的狀態(tài),就有一些不可到達(dá)的狀態(tài),為此在CASE語句的最后需要增加default分支項(xiàng),以確保多余狀態(tài)能回到Idle狀態(tài)。

上面所說的多余狀態(tài)是:4位編碼有16種,獨(dú)熱碼只列出了4種,剩下了12種,就是多余的狀態(tài)。

9e2428a0-d4d3-11ed-bfe3-dac502259ad0.jpg

9e435c3e-d4d3-11ed-bfe3-dac502259ad0.png

另一位大牛只說了一句話,但很有啟發(fā):

9e5682a0-d4d3-11ed-bfe3-dac502259ad0.png

那我把3—8譯碼器的真值表給出來,確實(shí)如此。

9e6960d2-d4d3-11ed-bfe3-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21628

    瀏覽量

    601261
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119838
  • 輸出信號
    +關(guān)注

    關(guān)注

    0

    文章

    272

    瀏覽量

    11828

原文標(biāo)題:FPGA中有限狀態(tài)機(jī)的狀態(tài)編碼采用格雷碼還是獨(dú)熱碼?

文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA設(shè)計(jì)的獨(dú)的使用和調(diào)試技巧的詳細(xì)概述

    獨(dú)狀態(tài)機(jī)里面使用比價廣泛,這一塊有些人愛用,有些人嫌煩,有時候可以用用
    的頭像 發(fā)表于 05-05 10:15 ?8201次閱讀

    FPGA Verilog HDL 設(shè)計(jì)實(shí)例系列連載--------有限狀態(tài)機(jī)設(shè)計(jì)

    關(guān)系,因而在狀態(tài)圖中每條轉(zhuǎn)移邊需要包含輸入和輸出的信息。狀態(tài)編碼  數(shù)字邏輯系統(tǒng)狀態(tài)機(jī)設(shè)計(jì)中常見的編碼方式有:二進(jìn)制
    發(fā)表于 03-09 10:04

    FPGA有限狀態(tài)機(jī)

    FPGA有限狀態(tài)機(jī)
    發(fā)表于 09-08 08:45

    為什么相對于來說,獨(dú)會使用更多的觸發(fā)器和更少的組合邏輯???

    在編寫有限狀態(tài)機(jī)時,為什么采用獨(dú)會占用更多的觸發(fā)器和更少的組合邏輯?從FPGA內(nèi)部結(jié)構(gòu)和數(shù)電
    發(fā)表于 03-02 00:33

    FPGA開源教程連載】第七章 狀態(tài)機(jī)設(shè)計(jì)實(shí)例

    各種狀態(tài),這也就分支出一種情況如何對狀態(tài)進(jìn)行有效的編碼。編碼格式,最簡單的就是直接使用二進(jìn)制進(jìn)行表示,除此之外還有使用
    發(fā)表于 12-26 00:17

    fpga Default Latch FPGA設(shè)計(jì)的獨(dú)的使用和調(diào)試技巧的詳細(xì)概述

    獨(dú)狀態(tài)機(jī)里面使用比價廣泛,這一塊有些人愛用,有些人嫌煩,有時候可以用用
    發(fā)表于 06-07 17:57

    有限狀態(tài)機(jī)有什么類型?

    在實(shí)際的應(yīng)用中,根據(jù)有限狀態(tài)機(jī)是否使用輸入信號,設(shè)計(jì)人員經(jīng)常將其分為Moore型有限狀態(tài)機(jī)和Mealy型有限狀態(tài)機(jī)兩種類型。
    發(fā)表于 04-06 09:00

    有限狀態(tài)機(jī)的建模與優(yōu)化設(shè)計(jì)

    本文提出一種優(yōu)秀 、高效的 Verilog HDL 描述方式來進(jìn)行有限狀態(tài)機(jī)設(shè)計(jì) 介紹了 有限狀態(tài)機(jī)的建模原則 并通過一個可綜合的實(shí)例 驗(yàn)證了 該方法設(shè)計(jì)的有限狀態(tài)機(jī)在面積和功耗上的優(yōu)勢。
    發(fā)表于 03-22 15:19 ?1次下載

    VHDL有限狀態(tài)機(jī)設(shè)計(jì)-ST

    EDA的有限狀態(tài)機(jī),廣義而言是指只要涉及觸發(fā)器的電路,無論電路大小都可以歸結(jié)為狀態(tài)機(jī)。有限狀態(tài)機(jī)設(shè)計(jì)在學(xué)習(xí)EDA時是很重要的一章。
    發(fā)表于 06-08 16:46 ?3次下載

    初學(xué)者對有限狀態(tài)機(jī)(FSM)的設(shè)計(jì)的認(rèn)識

    有限狀態(tài)機(jī)(FSM)是一種常見的電路,由時序電路和組合電路組成。設(shè)計(jì)有限狀態(tài)機(jī)的第一步是確定采用Moore狀態(tài)機(jī)還是
    發(fā)表于 02-11 13:51 ?4260次閱讀
    初學(xué)者對<b class='flag-5'>有限狀態(tài)機(jī)</b>(FSM)的設(shè)計(jì)的認(rèn)識

    如何使用FPGA實(shí)現(xiàn)序列檢測有限狀態(tài)機(jī)

    有限狀態(tài)機(jī)是絕大部分控制電路的核心結(jié)構(gòu), 是表示有限狀態(tài)以及在這些狀態(tài)之間轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。有限狀態(tài)機(jī)是指輸出取決于過去輸入部分
    發(fā)表于 11-04 17:17 ?12次下載
    如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)序列檢測<b class='flag-5'>有限狀態(tài)機(jī)</b>

    基于事件驅(qū)動的有限狀態(tài)機(jī)介紹

    ? 一、介紹 EFSM(event finite state machine,事件驅(qū)動型有限狀態(tài)機(jī)),是一個基于事件驅(qū)動的有限狀態(tài)機(jī),主要應(yīng)用于嵌入式設(shè)備的軟件系統(tǒng)中。 EFSM的設(shè)計(jì)原則是:簡單
    的頭像 發(fā)表于 11-16 15:29 ?2298次閱讀

    基于事件驅(qū)動的有限狀態(tài)機(jī)介紹

    EFSM(event finite state machine,事件驅(qū)動型有限狀態(tài)機(jī)),是一個基于事件驅(qū)動的有限狀態(tài)機(jī),主要應(yīng)用于嵌入式設(shè)備的軟件系統(tǒng)中。
    的頭像 發(fā)表于 02-11 10:17 ?1016次閱讀

    FPGA有限狀態(tài)機(jī)編寫如何選擇狀態(tài)編碼

    在Verilog HDL中可以用許多種方法來描述有限狀態(tài)機(jī),最常用的方法是用always語句和case語句。
    發(fā)表于 03-23 14:06 ?587次閱讀

    有限狀態(tài)機(jī)分割設(shè)計(jì)

    有限狀態(tài)機(jī)分割設(shè)計(jì),其實(shí)質(zhì)就是一個狀態(tài)機(jī)分割成多個狀態(tài)機(jī)
    的頭像 發(fā)表于 10-09 10:47 ?603次閱讀