在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Verilog狀態機+設計實例

FPGA學習筆記 ? 來源:FPGA學習筆記 ? 作者:FPGA學習筆記 ? 2024-02-12 19:07 ? 次閱讀

verilog中狀態機的一種很常用的邏輯結構,學習和理解狀態機的運行規律能夠幫助我們更好地書寫代碼,同時作為一種思想方法,在別的代碼設計中也會有所幫助。

一、簡介

在使用過程中我們常說的是有限狀態機(Finite-State Machine,FSM),簡稱為狀態機,表示在有限個狀態以及這些狀態之間的轉移和動作等行為的數學模型。

二、分類

在verilog中常使用的狀態機可以分為兩類,分別是Moore(摩爾)狀態機和Mealy(米利)狀態機。兩種狀態機的主要區別在于****Moore狀態機的輸出只與當前狀態有關,與當前輸入無關;Mealy狀態機的輸出不僅與當前狀態有關,還與當前的輸入信號有關

三、設計實例

在狀態機設計的過程中推薦使用三段式設計,下面是三段式狀態機的基本結構:

(1)狀態機第一段,時序邏輯,非阻塞賦值,傳遞狀態機的狀態

(2)狀態機第二段,組合邏輯,阻塞賦值 ,根據當前狀態和當前輸入, 確定下一個狀態機的狀態

(3)狀態機第三段,時序邏輯,非阻塞賦值,確定輸出信號

下面介紹一個簡單的狀態機設計實例:一個學生,一周七天周一到周五需要上學,單周周六鞏固復習這一周的知識,周日出去玩;雙周周六周日出去玩。可以得到狀態轉移圖如下:
image.png

設計代碼如下:

`timescale 1ns / 1ps
 ?
 module FSM(
     input        clk,
 input        rst_n,
 input  [2:0] week,
 input        odd_even,
 output [1:0] activity
 );
 ?
 parameter learn = 2'd0;
 parameter review= 2'd1;
 parameter play  = 2'd2;
 ?
 reg [1:0] st_cur;
 reg [1:0] st_next;
 ?
 always @ (posedge clk or negedge rst_n)begin //Update the current status
     if(!rst_n)begin
     st_cur <= learn;
 end
 else begin
     st_cur <= st_next;
 end
 end
 ?
 always @(*)begin //Determine the next status
     case(st_cur)
     learn:
     case(week)
     3'd5: begin
     if(odd_even)
     st_next = review;
     else
     st_next = play;
                 end
     3'd6:begin
         st_next = play;
 end
 3'd7:begin
         st_next = learn;
 end
 default:st_next = learn;
 endcase
 review: st_next = play;
 play  :
     case(week)
     3'd7: st_next = learn;
 default:    st_next = play;
 endcase
 default: st_next = st_next;
 endcase
 end
 ?
 reg [1:0] activity_r;
 ?
 always @(posedge clk or negedge rst_n)begin //Output signal
     if(!rst_n)
     activity_r <= 2'd0;
 else
         activity_r <= st_next;
 end
 ?
 assign activity = activity_r;
 ?
 endmodule

仿真代碼如下:

`timescale 1ns / 1ps
 ?
 module FSM_tb;
     reg        clk;
 reg        rst_n;
 reg  [2:0] week;
 reg        odd_even;
 wire [1:0] activity;
 initial begin
     clk      <= 1'b0;
     rst_n    <= 1'b0;
     odd_even <= 1'b0;
     week     <= 3'd1;
     #10
     rst_n <= 1'b1;
 end
 always #10
     clk = ~clk;
 always @(posedge clk)begin
     week <= week + 3'd1;
     if(week == 3'd7)begin
         odd_even <= ~odd_even;
         week     <= 3'd1;
     end
 end
 ?
 FSM fsm_inst(
     .clk(clk),
     .rst_n(rst_n),
     .week(week),
     .odd_even(odd_even),
     .activity(activity)
 );
 
 endmodule

仿真結果如下圖所示:

image.png

對狀態機的理解需要大量的實際操作,孰能生巧,在我學習的過程中老師曾要求我們用狀態機寫 萬年歷 ,對于感興趣的同學來說也可以進行嘗試。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1365

    瀏覽量

    111488
  • 狀態機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    27975
收藏 人收藏

    評論

    相關推薦

    狀態機編程實例-狀態表法

    上篇文章,使用嵌套switch-case法的狀態機編程,實現了一個炸彈拆除小游戲。本篇,繼續介紹狀態機編程的第二種方法:狀態表法,來實現炸彈拆除小游戲的狀態機編程。
    的頭像 發表于 06-20 09:05 ?2484次閱讀
    <b class='flag-5'>狀態機</b>編程<b class='flag-5'>實例</b>-<b class='flag-5'>狀態</b>表法

    狀態機編程實例-面向對象的狀態設計模式

    本編介紹了狀態機編程的第3種方法——面向對象的狀態設計模式,通過C++的繼承特性,以及類指針,實現炸彈拆除小游戲中的狀態機功能。
    的頭像 發表于 06-28 09:04 ?1857次閱讀
    <b class='flag-5'>狀態機</b>編程<b class='flag-5'>實例</b>-面向對象的<b class='flag-5'>狀態</b>設計模式

    verilog狀態機問題

    波形仿真時verilog 寫的狀態機被綜合掉,編譯沒有錯誤,狀態轉移也沒錯,什么原因可能導致這種問題呢。
    發表于 10-05 11:31

    狀態機實例(VHDL源代碼)

    狀態機實例(VHDL源代碼):
    發表于 05-27 10:27 ?59次下載
    <b class='flag-5'>狀態機</b><b class='flag-5'>實例</b>(VHDL源代碼)

    狀態機舉例

    狀態機舉例 你可以指定狀態寄存器和狀態機狀態。以下是一個有四種狀態的普通狀態機。 // Th
    發表于 03-28 15:18 ?1057次閱讀

    狀態機原理及用法

    狀態機原理及用法狀態機原理及用法狀態機原理及用法
    發表于 03-15 15:25 ?0次下載

    基于有限狀態機的工控系統軟件設計

    本文詳 細論述了高速狀態機的錯步問題以及控制層中狀態機狀態劃分問題,結合具體的應用實例,給出了基于狀態機的實現方法。
    發表于 03-22 15:48 ?3次下載

    有限狀態機的建模與優化設計

    本文提出一種優秀 、高效的 Verilog HDL 描述方式來進行有限狀態機設計 介紹了 有限狀態機的建模原則 并通過一個可綜合的實例 驗證了 該方法設計的有限
    發表于 03-22 15:19 ?1次下載

    狀態機概述 如何理解狀態機

    本篇文章包括狀態機的基本概述以及通過簡單的實例理解狀態機
    的頭像 發表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態機</b>概述  如何理解<b class='flag-5'>狀態機</b>

    使用verilog HDL實現狀態機8位流水燈的程序和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用verilog HDL實現狀態機8位流水燈的程序和工程文件免費下載。
    發表于 10-16 16:20 ?23次下載
    使用<b class='flag-5'>verilog</b> HDL實現<b class='flag-5'>狀態機</b>8位流水燈的程序和工程文件免費下載

    FPGA:狀態機簡述

    本文目錄 前言 狀態機簡介 狀態機分類 Mealy 型狀態機 Moore 型狀態機 狀態機描述 一段式
    的頭像 發表于 11-05 17:58 ?7813次閱讀
    FPGA:<b class='flag-5'>狀態機</b>簡述

    Verilog設計過程中狀態機的設計方法

    “本文主要分享了在Verilog設計過程中狀態機的一些設計方法。 關于狀態機 狀態機本質是對具有邏輯順序或時序順序事件的一種描述方法,也就是說具有邏輯順序和時序規律的事情都適用
    的頭像 發表于 06-25 11:04 ?2817次閱讀

    如何在Verilog中創建有限狀態機

    本文描述了有限狀態機的基礎知識,并展示了在 Verilog 硬件描述語言中實現它們的實用方法。
    的頭像 發表于 04-26 16:20 ?3732次閱讀
    如何在<b class='flag-5'>Verilog</b>中創建有限<b class='flag-5'>狀態機</b>

    Verilog狀態機的類型

    有限狀態機(Finite-State Machine,FSM),簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。
    的頭像 發表于 06-01 15:23 ?2124次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>狀態機</b>的類型

    什么是狀態機狀態機的種類與實現

    狀態機,又稱有限狀態機(Finite State Machine,FSM)或米利狀態機(Mealy Machine),是一種描述系統狀態變化的模型。在芯片設計中,
    的頭像 發表于 10-19 10:27 ?1.1w次閱讀
    主站蜘蛛池模板: 午夜精品国产 | 你懂得视频在线 | 人人艹在线视频 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 色欧美在线视频 | 99久久精品免费看国产免费 | 不良视频在线观看 | 四虎永久在线精品2022 | 中文字幕一区二区三 | 一级毛片免费网站 | 波多久久夜色精品国产 | 亚洲最大成人在线 | 欧美三级 欧美一级 | 精品午夜久久福利大片免费 | 18视频免费网址在线观看 | 手机看片福利在线 | 天天操天天操天天射 | 69日本人xxxxxxxx18| 亚洲成a人在线播放www | 特级全黄一级毛片视频 | 久久九九色 | 午夜窝窝 | 天天干天天曰天天操 | 夜夜狠狠操 | 丁香综合网 | wwwxx在线观看 | 干干日日| 四虎永久免费影院在线 | 18女人毛片 | 国产美女在线精品观看 | 四虎在线永久免费视频网站 | 午夜无遮挡怕怕怕免费视频 | 午夜 福利 | 夜夜橹橹网站夜夜橹橹 | 国产成人一级片 | 亚洲精品一区二区中文 | 1024免费永久福利视频 | 福利午夜 | 九九免费久久这里有精品23 | 亚洲va欧美va国产综合久久 | 国产综合图区 |