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

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

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

FPGA學(xué)習(xí)系列:9.簡(jiǎn)單狀態(tài)機(jī)設(shè)計(jì)

FPGA學(xué)習(xí)交流 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-06-01 16:59 ? 次閱讀

設(shè)計(jì)背景:

狀態(tài)機(jī)是描述各種復(fù)雜時(shí)序的時(shí)序行為,是使用HDL進(jìn)行數(shù)學(xué)邏輯設(shè)計(jì)中非常重要的方法之一,狀態(tài)機(jī)分為摩爾機(jī)和米粒機(jī),當(dāng)輸出只和狀態(tài)有關(guān)系的話(huà)稱(chēng)為摩爾機(jī),當(dāng)輸出不僅和狀態(tài)有關(guān)系也和輸入信號(hào)有關(guān)系的時(shí)候稱(chēng)為米粒機(jī),米粒機(jī)和摩爾機(jī)的電路原型我就不在這里給大家介紹了。

狀態(tài)機(jī)是由狀態(tài)寄存器和組合邏輯電路構(gòu)成,能夠根據(jù)控制信號(hào)按照預(yù)先設(shè)計(jì)的狀態(tài)進(jìn)行狀態(tài)的轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號(hào)的動(dòng)作,完成特定操作的控制中心。比如我們生活中遇到的問(wèn)題,健康---感冒---健康,這個(gè)就是一個(gè)狀態(tài)的轉(zhuǎn)移圖,從健康狀態(tài)到感冒狀態(tài)在到健康狀態(tài)。

設(shè)計(jì)原理:

我認(rèn)為對(duì)于我們初學(xué)者來(lái)說(shuō)我們只要只要狀態(tài)機(jī)就是當(dāng)這個(gè)狀態(tài)也就是當(dāng)這個(gè)時(shí)鐘來(lái)的時(shí)候發(fā)生這件事情,當(dāng)下各時(shí)鐘來(lái)的時(shí)候發(fā)生另一件事,也就是說(shuō)發(fā)生這件事后,跳轉(zhuǎn)下一個(gè)時(shí)鐘發(fā)生另一件事情,兩個(gè)事情發(fā)生沒(méi)有關(guān)系。我們理解初學(xué)者理解這個(gè)就行了,不用理解高深的二段式,三段式。

我們會(huì)在下面的設(shè)計(jì)中用到簡(jiǎn)單的狀態(tài)機(jī)讓大家明白簡(jiǎn)單的狀態(tài)機(jī)。

我們的設(shè)計(jì)也是一個(gè)流水燈,我們的設(shè)計(jì)是在復(fù)位的時(shí)候讓4個(gè)等全熄滅,第一個(gè)上升沿點(diǎn)亮一個(gè),第二個(gè)點(diǎn)亮下一個(gè),依次類(lèi)推。

我們的寫(xiě)法可以這樣想,當(dāng)?shù)谝粋€(gè)狀態(tài)也就是一個(gè)上升沿點(diǎn)亮第一個(gè)燈,然后跳轉(zhuǎn)下一個(gè)狀態(tài)點(diǎn)亮第二個(gè)燈,第三個(gè)點(diǎn)亮下一個(gè)。。。。

設(shè)計(jì)架構(gòu)圖:

image.png?

設(shè)計(jì)代碼:

設(shè)計(jì)模塊

0moduleled_run (clk,rst_n,led);

1

2 inputclk,rst_n; //定義輸入輸出

3

4 outputreg[3:0]led;

5

6 reg[10:0]count; //定義一個(gè)時(shí)間寄存器

7 regclk_1hz; //定義一個(gè)時(shí)鐘

8 reg[1:0]state;//定義狀態(tài)

9

10 always@(posedgeclk)

11 if(!rst_n)

12 begin

13 clk_1hz <=1;

14 count <=0;

15 end

16 elseif(count <(5/1/2-1))//計(jì)數(shù)來(lái)產(chǎn)生一個(gè)時(shí)鐘

17 count <=count +1'd1;

18 else

19 begin

20 count <=26'd0;

21 clk_1hz <=~clk_1hz;

22 end

23

24 always@(posedgeclk_1hz)

25 if(!rst_n)

26 led <=4'b1111; //復(fù)位熄滅4個(gè)燈

27 else

28 case(state)

29 0 : begin //第一個(gè)狀態(tài)點(diǎn)亮第一個(gè)燈,然后跳轉(zhuǎn)下 一個(gè)狀態(tài)

30 state <=1;

31 led <=4'b1110;

32 end

33

34 1 : begin //2個(gè)狀態(tài)點(diǎn)亮第2個(gè)燈,然后跳轉(zhuǎn)下 一個(gè)狀態(tài)

35 state <=2;

36 led <=4'b1101;

37 end

38

39 2 : begin //3個(gè)狀態(tài)點(diǎn)亮第3個(gè)燈,然后跳轉(zhuǎn)下 一個(gè)狀態(tài)

40 state <=3;

41 led <=4'b1011;

42 end

43 3 : begin //4個(gè)狀態(tài)點(diǎn)亮第4個(gè)燈,然后跳轉(zhuǎn)0狀態(tài)

44 state <=0;

45 led <=4'b0111;

46 end

47

48 default:state <=0;//否則跳轉(zhuǎn)0狀態(tài)

49 endcase

50

51endmodule

測(cè)試模塊

0`timescale1ns/1ps//例化時(shí)標(biāo)

1

2moduletb();

3

4 regclk,rst_n;

5 wire[3:0]led;

6

7 initialbegin

8

9 clk =1;

10 rst_n =0;

11

12 #200.1rst_n =1;

13

14

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598990
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    489

    瀏覽量

    27395
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA工程師:如何在FPGA中實(shí)現(xiàn)狀態(tài)機(jī)?

    安全高效的狀態(tài)機(jī)設(shè)計(jì)對(duì)于任何使用FPGA的工程師而言都是一項(xiàng)重要技能。選擇Moore狀態(tài)機(jī)、Mealy狀態(tài)機(jī)還是混合機(jī)取決于整個(gè)系統(tǒng)的需求。無(wú)論選擇哪種類(lèi)型的
    發(fā)表于 03-29 15:02 ?1.3w次閱讀
    <b class='flag-5'>FPGA</b>工程師:如何在<b class='flag-5'>FPGA</b>中實(shí)現(xiàn)<b class='flag-5'>狀態(tài)機(jī)</b>?

    高效安全的狀態(tài)機(jī)設(shè)計(jì)

    本帖最后由 eehome 于 2013-1-5 09:56 編輯 高效安全的狀態(tài)機(jī)設(shè)計(jì)
    發(fā)表于 08-13 17:53

    狀態(tài)機(jī)設(shè)計(jì)的例子

    本帖最后由 eehome 于 2013-1-5 09:56 編輯 狀態(tài)機(jī)設(shè)計(jì)的例子
    發(fā)表于 08-19 23:01

    狀態(tài)機(jī)設(shè)計(jì)指導(dǎo)

    狀態(tài)機(jī)設(shè)計(jì)指導(dǎo)
    發(fā)表于 08-20 23:45

    明德?lián)P視頻分享--點(diǎn)撥FPGA課程---第十四章 狀態(tài)機(jī)設(shè)計(jì)

    1.狀態(tài)機(jī)設(shè)計(jì)原則2.狀態(tài)機(jī)練習(xí)13.狀態(tài)機(jī)練習(xí)1答案4.波形對(duì)比方法5.狀態(tài)機(jī)練習(xí)26.狀態(tài)機(jī)練習(xí)2答案7.
    發(fā)表于 10-31 13:52

    FPGA---如何寫(xiě)好狀態(tài)機(jī),詳細(xì)下載pdf

    的基本方法。但是,筆者希望大家能擴(kuò)展思維,認(rèn)識(shí)到狀態(tài)機(jī)不僅僅是一種時(shí)序電路設(shè)計(jì)工具,它更是一種思想方法。我們先看下面一個(gè)簡(jiǎn)單的例子。在大學(xué)生活中,某學(xué)生的在校的學(xué)習(xí)生活可以簡(jiǎn)單地概括為
    發(fā)表于 09-28 10:29

    一個(gè)簡(jiǎn)單狀態(tài)機(jī)設(shè)計(jì)

    筆試時(shí)也很常見(jiàn)。[例1] 一個(gè)簡(jiǎn)單狀態(tài)機(jī)設(shè)計(jì)--序列檢測(cè)器序列檢測(cè)器是時(shí)序數(shù)字電路設(shè)計(jì)中經(jīng)典的教學(xué)范例,下面我們將用Verilog HDL語(yǔ)言來(lái)描述、仿真、并實(shí)現(xiàn)它。序列檢測(cè)器的邏輯功能...
    發(fā)表于 02-16 07:29

    狀態(tài)機(jī)設(shè)計(jì)

    狀態(tài)機(jī)設(shè)計(jì):8.1.1 數(shù)據(jù)類(lèi)型定義語(yǔ)句TYPE語(yǔ)句的用法如下:TYPE 數(shù)據(jù)類(lèi)型名IS 數(shù)據(jù)類(lèi)型定義OF 基本數(shù)據(jù)類(lèi)型;或TYPE 數(shù)據(jù)類(lèi)型名IS 數(shù)據(jù)類(lèi)型定義;TYPE st1 IS ARRAY ( 0 TO 15 ) OF STD_L
    發(fā)表于 08-09 23:07 ?36次下載

    高速環(huán)境下FPGA或CPLD中的狀態(tài)機(jī)設(shè)計(jì)

        本文給出了采用這些技術(shù)的高速環(huán)境狀態(tài)機(jī)設(shè)計(jì)的規(guī)范及分析方法和優(yōu)化方法,并給出了相應(yīng)的示例。       為了使FPGA或CPLD中的狀態(tài)機(jī)設(shè)
    發(fā)表于 04-15 11:27 ?642次閱讀
    高速環(huán)境下<b class='flag-5'>FPGA</b>或CPLD中的<b class='flag-5'>狀態(tài)機(jī)設(shè)</b>計(jì)

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

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

    華清遠(yuǎn)見(jiàn)FPGA代碼-狀態(tài)機(jī)

    FPGA學(xué)習(xí)資料教程——華清遠(yuǎn)見(jiàn)FPGA代碼-狀態(tài)機(jī)
    發(fā)表于 10-27 18:07 ?9次下載

    FPGA狀態(tài)機(jī)設(shè)計(jì)原則

    狀態(tài)機(jī)狀態(tài)寄存器和組合邏輯電路構(gòu)成,能夠根據(jù)控制信號(hào)按照預(yù)先設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號(hào)動(dòng)作、完成特定操作的控制中心。
    的頭像 發(fā)表于 10-09 07:02 ?2286次閱讀

    FPGA狀態(tài)機(jī)簡(jiǎn)述

    FPGA設(shè)計(jì)中一種非常重要、非常根基的設(shè)計(jì)思想,堪稱(chēng)FPGA的靈魂,貫穿FPGA設(shè)計(jì)的始終。 02. 狀態(tài)機(jī)簡(jiǎn)介 什么是狀態(tài)機(jī)
    的頭像 發(fā)表于 11-05 17:58 ?7106次閱讀
    <b class='flag-5'>FPGA</b>:<b class='flag-5'>狀態(tài)機(jī)</b>簡(jiǎn)述

    如何在FPGA中實(shí)現(xiàn)狀態(tài)機(jī)

    狀態(tài)機(jī)往往是FPGA 開(kāi)發(fā)的主力。選擇合適的架構(gòu)和實(shí)現(xiàn)方法將確保您獲得一款最佳解決方案。 FPGA 常常用于執(zhí)行基于序列和控制的行動(dòng), 比如實(shí)現(xiàn)一個(gè)簡(jiǎn)單的通信協(xié)議。對(duì)于設(shè)計(jì)人員來(lái)說(shuō),滿(mǎn)
    的頭像 發(fā)表于 07-18 16:05 ?933次閱讀
    如何在<b class='flag-5'>FPGA</b>中實(shí)現(xiàn)<b class='flag-5'>狀態(tài)機(jī)</b>

    基于FPGA狀態(tài)機(jī)設(shè)計(jì)

    狀態(tài)機(jī)的基礎(chǔ)知識(shí)依然強(qiáng)烈推薦mooc上華科的數(shù)字電路與邏輯設(shè)計(jì),yyds!但是數(shù)電基礎(chǔ)一定要和實(shí)際應(yīng)用結(jié)合起來(lái),理論才能發(fā)揮真正的價(jià)值。我們知道FPGA是并行執(zhí)行的,如果我們想要處理具有前后順序的事件就需要引入狀態(tài)機(jī)。
    的頭像 發(fā)表于 07-28 10:02 ?790次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>狀態(tài)機(jī)設(shè)</b>計(jì)