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

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

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

3天內不再提示

狀態(tài)機常見的3種類型 狀態(tài)機案例設計

西西 ? 來源:博客園 ? 作者:中國的孩子 ? 2020-08-08 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、狀態(tài)機設計

Mealy 機方框圖

狀態(tài)寄存器輸出當前的信號,用來控制下一個狀態(tài)是什么,和當前狀態(tài)下的輸出是什么。

Moore機方框圖

2、狀態(tài)機---3種類型

二元的:(CPLD與陣列扇入比較多,寄存器比較少)

S1 = 001, S2 = 010, S3 = 011, S3 = 100,etc。。。

枚舉的:

S1 = 100, S2 = 110, S3 = 101, S4 = 111,etc。。。

One Hot:每1 個狀態(tài)機只有1個寄存器(FPGA觸發(fā)器比較多)

S1 = 00000001, S2 =00000010,S3 = 00000100,etc。。。

3、對生剩余狀態(tài)的處理

1、在CASE 語句中增加語句,對每個非法狀態(tài)明確地給出狀態(tài)輪換的指示;

2、用OTHERS語句來對未提及的狀態(tài)做統(tǒng)一處理。

Moore 型狀態(tài)機設計

摩爾型的有限狀態(tài)機的輸出只與當前狀態(tài)有關,而與輸入信號的當前值無關,且僅豐時鐘信號邊沿到來時才發(fā)生變化。

要實現(xiàn)這種結構,必須使用暫存信號(如 temp)來存儲電路的輸出值,當今信號在時鐘邊沿出現(xiàn)時才能夠更新輸出。

例:

library ieee;

use ieee.std_logic_1164.all;

entity s_machine2 is

port(

clk, reset : in std_logic;

x : in std_logic;

z : out std_logic

);

architecture behav of s_machine2 is

type m_state is(s0, s1, s2);

signal present_state, next_state : m_state;

signal temp : std_logic;

begin

-----------------------時序進程---------------------------

reg : process(reset, clk)

begin

if reset = ‘1’ then present_state 《= s0;

elsif clk = ‘1’ and clk‘event then

z 《=temp; --只有在時鐘的上升沿時,輸出才會發(fā)生變化。是同步輸出。

prsent_state 《=nxet_state;

end if;

end process;

-------------------------組合進程-----------------------------

com : process(present_state, x)

begin

case prsent_state is

when s0 =》

if x = ’0‘ then next_state 《= s0;

else next_state 《= s1;

end if;

temp 《= ’0‘;

when s1 =》

if x = ’0‘ then next_state 《= s0;

else next_state 《= s2;

end if;

temp 《= ’0‘;

when s2 =》

if x = ’0‘; then next_state 《= s0; temp 《= ’1‘;

else next_state 《= s2; temp 《= ’0‘;

end if

end case;

end process;

end behv;

Mearly 型的有限狀態(tài)機設計

米立狀態(tài)機的輸出信號是當前狀態(tài)和輸出信號的函數(shù),它的輸出在輸入變化后立即發(fā)生變化,

不依賴時鐘信號的同步。是異步輸出。

例:

library ieee;

use ieee.std_logic_1164.all;

entity s_machine1 is

port(

clk, reset : in std_logic;

x : in std_logic;

z : out std_logic

);

end s_machine1;

architecture behav of s_machine2 is

type m_state is(s0, s1, s2);

signal present_state, next_state : m_state;

begin

-----------------------時序進程---------------------------

reg : process(reset, clk)

begin

if reset = ’1‘ then present_state 《= s0;

elsif clk = ’1‘ and clk’event then

prsent_state 《=nxet_state;

end if;

end process;

-------------------------組合進程-----------------------------

com : process(present_state, x)

begin

case prsent_state is

when s0 =》

if x = ‘0’ then next_state 《= s0;

else next_state 《= s1;

end if;

z 《= ‘0’;

when s1 =》

if x = ‘0’ then next_state 《= s0;

else next_state 《= s2;

end if;

z 《= ‘0’;

when s2 =》

if x = ‘0’; then next_state 《= s0; z 《= ‘1’;

else next_state 《= s2; z《= ‘0’;

end if

end case;

end process;

end behv;

可以看到在該程序中,只要輸入有變化,輸出z就會有變化,它并不依賴于時鐘的上升沿。

怎樣確保一個進程是組合進程:

1、不出現(xiàn)帶沿的語句,即組合進程中決不能出現(xiàn)用時鐘沿控制的敏感信號;

2、在組合電路的進程中,給出輸出端口的缺省值,這樣可以防止鎖存器的生成;

3、在敏感清單中包含所有的輸入量,防止鎖存器的生成。

敏感清單不全的話綜合時可能出現(xiàn)敬告。

例:下例敏感清單中輸入端口不全,可能出現(xiàn)鎖存器

p0 : process (a)

begin

q 《= a and b;

end process p0;

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

下面是一個實例,洗衣機的工作過程:

TYPE state_type IS(idle, fill, heat_w, wash, drain);

entity wm is

port(

clk, reset, door_closed, full : in std_logic;

heat_demand, done, empty : in std_logic;

water, spin, heat, pump : out std_logic

);

end wm;

architecture behave of wm is

------------------------說明部分--------------------------

--說明部分用枚舉數(shù)據(jù)類型來字義狀態(tài)機中的狀態(tài);并把狀態(tài)變量(如現(xiàn)態(tài)和次態(tài))定義為信號。

type state_type is (

idle, fill, heat_w, wash, drain);

signal state : state_type;

begin

process (clk, reset)

begin

if reset = ‘1’ then

state 《= idle;

elsif clk‘event and clk= ’1‘ then

case state is

when idle =》

if door_closed = ’1‘ then

state 《= fill;

else

state 《= idle;

end if

when fill =》

if full =’1‘; then

state 《= neat_w;

else

state 《= fill;

when others =》

state 《= idle;

end case

end if;

end process;

----------------------------------------------

利用兩個進程(純組合邏輯措施一)

--------------時序進程----------------------------

--時序進程是指在時鐘驅動下負責狀態(tài)轉換的進程,只表示次態(tài)和現(xiàn)態(tài)的關系

process(clk, reset)

begin

if reset =’1‘ then

state 《= idle;

elsif clk’event and clk = ‘1’ then

state 《= next_state;

end if;

end process;

------------------組合進程---------------------

組合進程的任務是根據(jù)輸入信號和現(xiàn)態(tài)對輸出端口賦值以及確定狀態(tài)機的下一個狀態(tài),由于沒有任何信號

的賦值是通過其他某個信號的跳變來觸發(fā)的,所以不會產生寄存器。一般用CASE 或IF語句來實現(xiàn)

process(state, door_closed, full,

heat_demand, done, empty)

begin

case state is

when idle =》

if door_closed =‘1’ then

next_state 《= fill;

else

next_state 《= idle;

end if;

when fill =》

if full = ‘1’ then

next_state 《= heat_w;

else

next_state 《= fill;

end case;

end if;

end process;

process(state)

begin

water_i 《= ‘0’;

spin_i 《= ‘0’;

heat_i 《= ‘0’;

pump_i 《= ‘0’;

case state is

when idle =》

when fill =》

water_i 《= ‘1’;

when heat_w =》

spin_i 《=‘1’;

heat_i 《= ‘1’;

when wash =》

spin_i 《= ‘1’;

when drain =》

spin_i 《= ‘1’;

pump_i 《= ‘i’;

end case;

end process;

--------------寄存輸出---------------------

process (clk)

begin

if rising_edge(clk) then

water 《= water_i;

spin 《= spin_i;

heat 《= heat_i;

pump 《= pump_i;

end if;

end process

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

    關注

    31

    文章

    5432

    瀏覽量

    124011
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28176
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Verilog狀態(tài)機+設計實例

    在verilog中狀態(tài)機的一很常用的邏輯結構,學習和理解狀態(tài)機的運行規(guī)律能夠幫助我們更好地書寫代碼,同時作為一思想方法,在別的代碼設計中也會有所幫助。 一、簡介 在使用過程中我們常
    的頭像 發(fā)表于 02-12 19:07 ?5402次閱讀
    Verilog<b class='flag-5'>狀態(tài)機</b>+設計實例

    玩轉Spring狀態(tài)機

    說起Spring狀態(tài)機,大家很容易聯(lián)想到這個狀態(tài)機和設計模式中狀態(tài)模式的區(qū)別是啥呢?沒錯,Spring狀態(tài)機就是狀態(tài)模式的一
    的頭像 發(fā)表于 06-25 14:21 ?1296次閱讀
    玩轉Spring<b class='flag-5'>狀態(tài)機</b>

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

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

    狀態(tài)機是什么?什么是消息觸發(fā)類型狀態(tài)機

    狀態(tài)機可歸納為哪幾個要素?狀態(tài)機可分為哪幾種?什么是消息觸發(fā)類型狀態(tài)機
    發(fā)表于 04-19 06:02

    如何寫好狀態(tài)機

    如何寫好狀態(tài)機:狀態(tài)機是邏輯設計的重要內容,狀態(tài)機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態(tài)機設計幾乎是必選題目。本章在引入
    發(fā)表于 06-14 19:24 ?97次下載

    狀態(tài)機舉例

    狀態(tài)機舉例 你可以指定狀態(tài)寄存器和狀態(tài)機狀態(tài)。以下是一個有四狀態(tài)的普通
    發(fā)表于 03-28 15:18 ?1085次閱讀

    狀態(tài)機代碼生成工具

    狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具狀態(tài)機代碼生成工具
    發(fā)表于 11-19 15:12 ?9次下載

    狀態(tài)機原理及用法

    狀態(tài)機原理及用法狀態(tài)機原理及用法狀態(tài)機原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機概述 如何理解狀態(tài)機

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

    什么是狀態(tài)機 狀態(tài)機的描述三方法

    狀態(tài)機 1、狀態(tài)機是許多數(shù)字系統(tǒng)的核心部件,是一類重要的時序邏輯電路。通常包括三個部分:一是下一個狀態(tài)的邏輯電路,二是存儲狀態(tài)機當前狀態(tài)的時
    的頭像 發(fā)表于 11-16 17:39 ?2.7w次閱讀

    FPGA:狀態(tài)機簡述

    是FPGA設計中一非常重要、非常根基的設計思想,堪稱FPGA的靈魂,貫穿FPGA設計的始終。 02. 狀態(tài)機簡介 什么是狀態(tài)機狀態(tài)機通過不同的
    的頭像 發(fā)表于 11-05 17:58 ?8008次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機</b>簡述

    什么是狀態(tài)機狀態(tài)機5要素

    玩單片還可以,各個外設也都會驅動,但是如果讓你完整的寫一套代碼時,卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學會一好的編程框架或者一編程思想!比如模塊化編程、狀態(tài)機
    的頭像 發(fā)表于 07-27 11:23 ?2.1w次閱讀
    什么是<b class='flag-5'>狀態(tài)機</b>?<b class='flag-5'>狀態(tài)機</b>5要素

    狀態(tài)模式(狀態(tài)機)

    share,作者:亞索老哥)),原來狀態(tài)機還可以這么簡單地玩~~亞索老哥提出的狀態(tài)機六步法(1)、定義狀態(tài)接口(2)、定義系統(tǒng)當前狀態(tài)指針(3
    發(fā)表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態(tài)</b>模式(<b class='flag-5'>狀態(tài)機</b>)

    Verilog狀態(tài)機類型

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

    什么是狀態(tài)機狀態(tài)機種類與實現(xiàn)

    狀態(tài)機,又稱有限狀態(tài)機(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(Mealy Machine),是一描述系統(tǒng)狀態(tài)變化
    的頭像 發(fā)表于 10-19 10:27 ?1.2w次閱讀
    主站蜘蛛池模板: 亚洲综合精品 | 免费在线亚洲 | 欧美在线天堂 | 美女扒开下面让男人捅 | 欧美性猛交xxxx | 丁香啪啪天堂激情婷婷 | 欧美seav在线| 亚洲综合久久综合激情久久 | 久久综合偷偷噜噜噜色 | 久久精品国产99精品最新 | 黄色免费网站在线播放 | 国产成人高清精品免费5388密 | 天天天天天操 | 成人a毛片在线看免费全部播放 | 五月丁香| 日本黄色片在线观看 | 日本不卡在线一区二区三区视频 | 深夜网站免费 | 久久777国产线看观看精品卜 | 拍拍拍交性免费视频 | 午夜视频入口 | 国产精品国产午夜免费福利看 | 亚洲天堂网站 | 免费观看一级特黄三大片视频 | 免费一级欧美在线观看视频片 | 久久精品国产99国产精品免费看 | 男子扒开美女尿口做羞羞的事 | 又黑又长黑人欧美三级 | 天天色天天色天天色 | 一级大片视频 | 永久免费在线看 | 啪啪小视频网站 | 奇米影视一区二区三区 | 一区二区三区四区五区 | a一级黄 | 久久精品国产乱子伦多人 | 中文字幕va一区二区三区 | 久久综合九色综合欧洲色 | 国产毛片农村妇女系列 | 综合六月 | 日本特黄特色免费大片 |