FPGA開(kāi)發(fā)及應(yīng)用(微課版)課件 U8-自動(dòng)飲料售賣機(jī)_第1頁(yè)
FPGA開(kāi)發(fā)及應(yīng)用(微課版)課件 U8-自動(dòng)飲料售賣機(jī)_第2頁(yè)
FPGA開(kāi)發(fā)及應(yīng)用(微課版)課件 U8-自動(dòng)飲料售賣機(jī)_第3頁(yè)
FPGA開(kāi)發(fā)及應(yīng)用(微課版)課件 U8-自動(dòng)飲料售賣機(jī)_第4頁(yè)
FPGA開(kāi)發(fā)及應(yīng)用(微課版)課件 U8-自動(dòng)飲料售賣機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目8——自動(dòng)飲料售賣機(jī)-人機(jī)交互系統(tǒng)任務(wù)要求與組織邏輯項(xiàng)目八自動(dòng)飲料售賣機(jī)-人機(jī)交互系統(tǒng)任務(wù)要求設(shè)定一種自動(dòng)飲料售賣機(jī)場(chǎng)景:(1)主控制邏輯:飲料售賣機(jī)只出售冰紅茶,每瓶冰紅茶3元,飲料售賣機(jī)接收1元硬幣。(2)人機(jī)交互●按鍵

:用按鍵Key_i代替投入1元硬幣,按鍵每“按”1次代表投入一枚硬幣,●蜂鳴器:按鍵按下時(shí)伴有約100ms短促的“滴”提示音(既支持有源蜂鳴器,也支持無(wú)源蜂鳴器)?!駭?shù)碼管:數(shù)碼管顯示當(dāng)前累計(jì)的投幣總數(shù)。每投幣一次后,數(shù)碼管更新顯示當(dāng)前的投幣總數(shù)?!馤ED燈

:用LED燈代替飲料售賣機(jī)的飲料送出機(jī)械機(jī)構(gòu),當(dāng)有飲料輸出時(shí),LED燈亮1秒。(3)其他:易于拓展其他面額及飲料,如5角硬幣,脈動(dòng)4.5元?;貞洠喉?xiàng)目3~7任務(wù)回顧任務(wù)要求與組織邏輯回憶:項(xiàng)目3~6任務(wù)回顧電路設(shè)計(jì)角度:以計(jì)數(shù)器為核心或切入點(diǎn),此外有ROMIP核數(shù)據(jù)存儲(chǔ)器。用戶使用角度:主要是數(shù)碼管人機(jī)交互器件,還有示波器外部設(shè)備。特點(diǎn)電路設(shè)計(jì)角度:以計(jì)數(shù)器為核心或切入點(diǎn),以RAM、FIFOIP核作為數(shù)據(jù)緩存。用戶使用角度:LCD顯示器人機(jī)交互器件。特點(diǎn)任務(wù)要求與組織邏輯項(xiàng)目7任務(wù)回顧

按鍵(包含蜂鳴器)和狀態(tài)機(jī)的應(yīng)用按鍵(包含蜂鳴器)

任務(wù)要求中按鍵、蜂鳴器、數(shù)碼管是最常見(jiàn)且實(shí)用的人機(jī)交互器件。按鍵是性價(jià)比最高的輸入控制器件,若伴有“提示音”,會(huì)提升人機(jī)交互體驗(yàn)。狀態(tài)機(jī)

對(duì)于邏輯較為簡(jiǎn)單的電路,如飲料售賣機(jī),通常直接使用以if語(yǔ)句為主體的VerilogHDL語(yǔ)言進(jìn)行電路設(shè)計(jì),設(shè)計(jì)實(shí)現(xiàn)方法易于理解,綜合出的電路圖也直觀。

但當(dāng)飲料售賣機(jī)的邏輯較為復(fù)雜時(shí),引入狀態(tài)機(jī)的概念,可以將設(shè)計(jì)的邏輯跳轉(zhuǎn)以“狀態(tài)轉(zhuǎn)換圖”的形式進(jìn)行規(guī)劃,使用狀態(tài)機(jī)輔助(以if語(yǔ)句為主體的)VerilogHDL語(yǔ)言的書寫,可以提升設(shè)計(jì)的效率與成功率,當(dāng)電路運(yùn)轉(zhuǎn)邏輯需求發(fā)生變化時(shí),基于狀態(tài)機(jī)的電路更易修改、維護(hù)。

一般復(fù)雜的邏輯跳轉(zhuǎn),如串行芯片的通信等,都需狀態(tài)機(jī)輔助設(shè)計(jì)。注:狀態(tài)機(jī)功能類似于C語(yǔ)言的程序框圖,是用于指導(dǎo)代碼設(shè)計(jì)而預(yù)先繪制的思維框圖。

任務(wù)要求與組織邏輯8.1節(jié)

按鍵檢測(cè)

1)按鍵邏輯值相對(duì)本地時(shí)鐘是異步信號(hào),

因此須消除亞穩(wěn)態(tài);

2)機(jī)械按鍵因機(jī)械接觸瞬間有抖動(dòng),

故按鍵檢測(cè)軟件設(shè)計(jì)需要消抖。8.1拓展

按鍵提示音1)蜂鳴器是一種性價(jià)比極高且常用的聲音提示器件.

因內(nèi)阻小,故需設(shè)計(jì)模擬驅(qū)動(dòng)電路2)蜂鳴器主要分為有源蜂鳴器和無(wú)源蜂鳴器。8.2節(jié)

基于狀態(tài)機(jī)設(shè)計(jì)的自動(dòng)飲料售賣機(jī)人機(jī)交互系統(tǒng)包含:按鍵、蜂鳴器、數(shù)碼管、LED燈任務(wù)要求與組織邏輯8.2節(jié)

基于狀態(tài)機(jī)設(shè)計(jì)的自動(dòng)飲料售賣機(jī)合理的狀態(tài)機(jī)規(guī)劃可輔助VerilogHDL代碼設(shè)計(jì)復(fù)雜的邏輯跳轉(zhuǎn)。然而,狀態(tài)機(jī)的分類等細(xì)節(jié)較多,因此,規(guī)范的狀態(tài)機(jī)設(shè)計(jì)流程有助于狀態(tài)機(jī)的選擇和設(shè)計(jì),從而提升項(xiàng)目設(shè)計(jì)的效率,以及成功率。人機(jī)交互狀態(tài)機(jī)項(xiàng)目8組織邏輯8.2飲料售賣機(jī)8.1按鍵檢測(cè)1、按鍵檢測(cè)電路;2、按鍵檢測(cè)(提示音)電路-蜂鳴器2、狀態(tài)機(jī)的選擇與設(shè)計(jì)流程3、飲料售賣機(jī)人機(jī)交互綜合電路設(shè)計(jì)1、實(shí)現(xiàn)自動(dòng)飲料售賣的6種狀態(tài)機(jī)示例任務(wù)要求與組織邏輯本章重點(diǎn)按鍵消抖;蜂鳴器驅(qū)動(dòng);狀態(tài)機(jī)設(shè)計(jì)流程。謝謝大家!任務(wù)要求8.1按鍵檢測(cè)與提示音-檢測(cè)部分1)單次模式:按鍵每“按”1次,產(chǎn)生“一個(gè)時(shí)鐘周期寬度”的單脈沖信號(hào)。2)連續(xù)模式:按鍵每“按”1次不松,約每間隔300ms產(chǎn)生“一個(gè)時(shí)鐘周期寬度”的連續(xù)脈沖信號(hào)。8.1按鍵檢測(cè)與提示音-檢測(cè)部分內(nèi)容安排1、按鍵外圍模擬電路;2、按鍵亞穩(wěn)態(tài)現(xiàn)象和抖動(dòng)(或干擾);3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式4、按鍵檢測(cè)電路設(shè)計(jì)-支持單次和連續(xù)模式(parameter)5、按鍵檢測(cè)電路設(shè)計(jì)操作演示(1)按鍵物理實(shí)體及原理一類是觸點(diǎn)式開(kāi)關(guān)按鍵,如機(jī)械式開(kāi)關(guān),造價(jià)低。另一類是無(wú)觸點(diǎn)式開(kāi)關(guān)按鍵,如觸摸按鍵等,壽命長(zhǎng)。機(jī)械式按鈕開(kāi)關(guān)的原理是:當(dāng)按下開(kāi)關(guān)按鈕時(shí),機(jī)械裝置會(huì)將金屬觸點(diǎn)鎖定,使電路保持接通狀態(tài);當(dāng)松開(kāi)開(kāi)關(guān)按鈕時(shí),機(jī)械裝置會(huì)脫鉤,使電路斷開(kāi)。觸摸按鍵中電阻觸摸按鍵的原理是基于人的組織(皮膚)表面含有大量的鹽分和水,使自身帶有導(dǎo)電性。1、按鍵外圍模擬電路(2)按鍵外圍模擬電路處理器引腳被配置為輸入引腳時(shí),從外部向內(nèi)看一般可以等效成一個(gè)無(wú)窮大的電阻Ri。處理器引腳被配置為輸出引腳時(shí),從外部向內(nèi)看1)輸出邏輯1:一般可以等效成一個(gè)含內(nèi)阻的的直流電壓源。2)輸出邏輯0:一般可以等效成內(nèi)部直接接地。按鍵/LED燈外圍電路設(shè)計(jì)(常見(jiàn)方法)外部上拉電阻連接按鍵的方法。輸出電阻存在的意義:防止短路。(特別是輸入輸出引腳混淆)1、按鍵外圍模擬電路(1)按鍵亞穩(wěn)態(tài)現(xiàn)象及規(guī)避亞穩(wěn)態(tài)現(xiàn)象用戶的“按”和“松”按鍵操作決定了送至FPGA輸入引腳的邏輯值是0或者1。如果FPGA內(nèi)部在每個(gè)時(shí)鐘上升沿判決按鍵的邏輯,因?yàn)椤鞍础焙汀八伞眲?dòng)作的隨機(jī)性導(dǎo)致“FPGA內(nèi)部時(shí)鐘和按鍵邏輯值變化的相位是隨機(jī)的”,所以按鍵輸入信號(hào)對(duì)于FPGA內(nèi)部時(shí)鐘是異步信號(hào),會(huì)有亞穩(wěn)態(tài)問(wèn)題。亞穩(wěn)態(tài)現(xiàn)象的解決6.1節(jié)介紹過(guò)亞穩(wěn)態(tài)現(xiàn)象產(chǎn)生的詳細(xì)原因,并且解釋了可以使用兩級(jí)觸發(fā)器來(lái)有效解決這一問(wèn)題2、按鍵亞穩(wěn)態(tài)現(xiàn)象和抖動(dòng)(或干擾)(2)按鍵抖動(dòng)(干擾)-現(xiàn)象及危害1)抖動(dòng)現(xiàn)象因構(gòu)成按鍵結(jié)構(gòu)中金屬的氧化和機(jī)械觸點(diǎn)的彈性等一系列原因,在“按”和“松”操作時(shí)均會(huì)產(chǎn)生物理抖動(dòng)從而導(dǎo)致送入FPGA端口的按鍵信號(hào)電壓呈現(xiàn)波動(dòng),稱之按鍵抖動(dòng)。以下是示波器截取圖及簡(jiǎn)單的示意圖。抖動(dòng)或干擾危害例如,若以按鍵下降沿為判斷依據(jù),按鍵“按”一次,抖動(dòng)部分會(huì)造成系統(tǒng)多次動(dòng)作。2、按鍵亞穩(wěn)態(tài)現(xiàn)象和抖動(dòng)(或干擾)2)干擾現(xiàn)象干擾:如電磁干擾、機(jī)械震動(dòng)造成的干擾等(2)按鍵抖動(dòng)(干擾)-消除方式2)抖動(dòng)(或干擾)特點(diǎn)抖動(dòng)(干擾)階段,低電平持續(xù)時(shí)間<20ms。3)消抖思路抖動(dòng)階段存在若干個(gè)下降沿,但僅有最后1個(gè)下降沿之后低電平保持時(shí)間>20ms;干擾的低電平<20ms因此判定下降沿后的低電平時(shí)間是否>20ms,則可判定是否是“按”操作。4)消抖方法檢測(cè)到下降沿則計(jì)時(shí)器置初值(如0);如果此后按鍵電平為低,則計(jì)時(shí)器加值,否則計(jì)時(shí)器停止或置初值(如0)。判斷“定時(shí)器時(shí)間>20ms”&&“當(dāng)前按鍵值為0”,則判定為按下。核心:邊沿檢測(cè)、計(jì)數(shù)器啟停、判定2、按鍵亞穩(wěn)態(tài)現(xiàn)象和抖動(dòng)(或干擾)1)按鍵抖動(dòng)(干擾)消除方式●硬件消抖:使用自帶硬件消抖功能的按鍵替換普通按鍵,但會(huì)提升硬件成本;●軟件消抖:更常見(jiàn)的消抖方式是軟件消抖,即用FPGA內(nèi)部電路處理。(1)按鍵邊沿檢測(cè)3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式原則:同步系統(tǒng)(將按鍵信號(hào)作為邏輯值,而非時(shí)鐘)上升沿檢測(cè)依據(jù):當(dāng)前時(shí)刻(時(shí)鐘)電平為1&&上一時(shí)刻(時(shí)鐘)電平為0。下降沿檢測(cè)依據(jù):當(dāng)前時(shí)刻(時(shí)鐘)電平為0&&上一時(shí)刻(時(shí)鐘)電平為1。計(jì)數(shù)器cnt_20ms_r(2)按鍵時(shí)間記錄計(jì)數(shù)規(guī)則檢測(cè)到上升沿或下降沿cnt_20ms_r清零,否則計(jì)數(shù)約20ms計(jì)滿停止,避免循環(huán)計(jì)數(shù)。時(shí)鐘clk_in以50MHz為例,計(jì)數(shù)位寬?20位寬自溢計(jì)數(shù)器較宜?。?!3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式“按”動(dòng)作判斷(3)脈沖產(chǎn)生PulseCtrl=“計(jì)數(shù)器值等于某臨近頂值”&&“當(dāng)前電平為低電平”注:某臨近頂值意思是計(jì)數(shù)器停止值(或最大值)前面的某臨近某值。3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式(4)時(shí)序規(guī)劃3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式cnt_20ms_r計(jì)數(shù)規(guī)則(按優(yōu)先級(jí))①?gòu)?fù)位為0;②cnt_20ms_r賦值第1優(yōu)先級(jí):只要按鍵邊沿發(fā)生變化cnt_20ms_r則置為1,以便后續(xù)滿足④計(jì)數(shù);③cnt_20ms_r賦值第2優(yōu)先級(jí):若cnt_20ms_r==0,則保持。④cnt_20ms_r賦值第3優(yōu)先級(jí):若cnt_20ms_r≠0,則自動(dòng)累加直至0停止(0是頂值)。注:也可以是復(fù)位最大值,加至最大值停止,那么按鍵邊沿變化則應(yīng)賦值最大值?!鞍础眲?dòng)作判斷PulseCtrl_o=“計(jì)數(shù)器值等于某臨近頂值(如max或比max小的值)”&&“當(dāng)前電平為低電平”(5)驗(yàn)證方案按鍵次數(shù)計(jì)數(shù)器的規(guī)則上升沿檢測(cè)到“Pulse_Crtl_w==1”加1觸發(fā)器的作用將Pulse_Crtl_w延緩一拍,以便配平和0~255計(jì)數(shù)器值節(jié)拍延時(shí)。3、按鍵檢測(cè)電路設(shè)計(jì)-僅支持單次模式設(shè)計(jì)需求通過(guò)修改電路的端口參數(shù),即可讓其工作在單次檢測(cè)模式,或者工作在連續(xù)檢測(cè)模式設(shè)計(jì)一種單次、連續(xù)均支持的模式4、按鍵檢測(cè)電路設(shè)計(jì)-支持單次和連續(xù)模式(1)設(shè)計(jì)分析與思路設(shè)計(jì)關(guān)鍵點(diǎn)

:300ms是15次20ms,可設(shè)計(jì)一個(gè)計(jì)數(shù)器Num_20ms_r記錄cnt_20ms_r加滿的次數(shù)。0~15循環(huán)計(jì)數(shù)單次模式特點(diǎn):抖動(dòng)結(jié)束后,只要計(jì)數(shù)器能計(jì)滿20ms,代表“按”;連續(xù)模式特點(diǎn):抖動(dòng)結(jié)束后,每計(jì)滿一次300ms,就代表一次“按”。Num_20ms_rcnt_20ms_r每計(jì)滿一次+1cnt_20ms_r加滿停止->循環(huán)計(jì)數(shù)。1~15循環(huán)計(jì)數(shù)0、1、2~150、1、2~15......缺點(diǎn):無(wú)法支持單次模式按鍵邊沿變化、復(fù)位賦值00、1、2~15

1、2~15......4、按鍵檢測(cè)電路設(shè)計(jì)-支持單次和連續(xù)模式脈沖產(chǎn)生1)單次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==0(首次)2)連續(xù)模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==1(1~15任意一個(gè))√(2)電路方案4、按鍵檢測(cè)電路設(shè)計(jì)-支持單次和連續(xù)模式脈沖產(chǎn)生1)單次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==0(首次)2)連續(xù)模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==1(1~15任意一個(gè))(3)時(shí)序規(guī)劃4、按鍵檢測(cè)電路設(shè)計(jì)-支持單次和連續(xù)模式脈沖產(chǎn)生1)單次模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==0(首次)2)連續(xù)模式PulseCtrl=“cnt_20ms_r==20’hfffff”&&“當(dāng)前電平==0”&&Num_20ms_r==1(1~15任意一個(gè))按鍵檢測(cè)操作步驟:1、按鍵檢測(cè)模塊設(shè)計(jì)、仿真;2、頂層電路設(shè)計(jì);3、測(cè)試;5、按鍵檢測(cè)電路設(shè)計(jì)操作演示操作演示謝謝大家!8.1按鍵檢測(cè)與提示音(提示音部分)任務(wù)要求1)每個(gè)PulseCtrl產(chǎn)生100ms短促提示音

對(duì)于單次模式,按鍵“按”1次,產(chǎn)生一個(gè)單時(shí)鐘寬度的單脈沖信號(hào),同時(shí)伴有約100ms短促提示音。對(duì)于連續(xù)模式,按鍵“按”1次,每300ms為間隔產(chǎn)生若干連續(xù)單時(shí)鐘寬度的脈沖信號(hào),每個(gè)脈沖伴有約100ms短促提示音。2)支持有源蜂鳴器和無(wú)源蜂鳴器,parameter可修改8.1按鍵檢測(cè)與提示音(提示音部分)內(nèi)容安排1、蜂鳴器簡(jiǎn)介,包含有源、無(wú)源蜂鳴器;2、蜂鳴器外圍模擬電路3、蜂鳴器FPGA驅(qū)動(dòng)電路,包含有源、無(wú)源蜂鳴器(parameter)4、按鍵提示音設(shè)計(jì)操作演示蜂鳴器簡(jiǎn)介有源蜂鳴器的工作發(fā)聲原理是:輸入的直流信號(hào)經(jīng)過(guò)蜂鳴器內(nèi)部的振蕩電路、放大電路、放大取樣電路后生成頻率固定的交流電信號(hào)再送入內(nèi)部的震動(dòng)裝置產(chǎn)生固定頻率的聲音信號(hào)。只有一個(gè)固定的音調(diào),音調(diào)取決于有源蜂鳴器內(nèi)部的振蕩電路。蜂鳴器由振動(dòng)裝置和諧振裝置等部件組成,又分為無(wú)源他激型與有源自激型兩種,簡(jiǎn)稱無(wú)源蜂鳴器和有源蜂鳴器。無(wú)源蜂鳴器的工作發(fā)聲原理是:諧振裝置將輸入的一定頻率的方波等信號(hào),轉(zhuǎn)換為相同頻率的聲音信號(hào)輸出。音調(diào)取決于送入的電信號(hào)頻率。1、蜂鳴器簡(jiǎn)介蜂鳴器外圍模擬驅(qū)動(dòng)電路當(dāng)FPGA輸出端口輸出邏輯0(即0V)時(shí)三極管導(dǎo)通,電流主要由VCC流經(jīng)Rc、蜂鳴器、三極管的發(fā)射極到集電極,最終流向GND。蜂鳴器的內(nèi)阻常見(jiàn)值有5Ω,8Ω等,工作電流一般為mA級(jí)別,F(xiàn)PGA的引腳不能(或不應(yīng)該,以免燒毀FPGA)為其提供足夠的電流,因此常見(jiàn)的解決方案如圖所示,將三極管當(dāng)做開(kāi)關(guān)。當(dāng)FPGA輸出端口輸出邏輯1(含內(nèi)阻Ro的直流穩(wěn)壓源)時(shí),三極管截止,蜂鳴器無(wú)電流。2、蜂鳴器外圍模擬驅(qū)動(dòng)電路此外,還有類似的各種驅(qū)動(dòng)能力更強(qiáng)的衍生電路。(1)按鍵提示音-設(shè)計(jì)思路3、蜂鳴器FPGA驅(qū)動(dòng)電路無(wú)源蜂鳴器PulseCtrl_w為1,則需產(chǎn)生100ms的周期脈沖beep_o以驅(qū)動(dòng)外部蜂鳴器,頻率不妨取1000Hz。有源蜂鳴器PulseCtrl_w為1,則需產(chǎn)生100ms的高電平有效使能信號(hào)beeo_o以驅(qū)動(dòng)外部蜂鳴器。有源、無(wú)源蜂鳴器整合1)PulseCtrl_w為1則產(chǎn)生100ms的BeepEn100ms_r高電平2)div_1KHz_r恒產(chǎn)生,實(shí)際是一個(gè)分頻器。3)有源蜂鳴器,則輸出BeepEn80ms_r

無(wú)源蜂鳴器,則輸出BeepEn100ms_r&&div_1KHz_r問(wèn)題核心(BeepEn100ms_r的產(chǎn)生,應(yīng)依托于計(jì)數(shù)器)設(shè)計(jì)一個(gè)約100ms計(jì)數(shù)器,以50MHz為例,取22位寬,計(jì)滿約合84ms,記作cnt_80ms_r。計(jì)數(shù)規(guī)則(按優(yōu)先級(jí))①?gòu)?fù)位為0;②賦值第1優(yōu)先級(jí):只要PulseCtrl_w為1,則置為1;③賦值第2優(yōu)先級(jí):cnt_80ms_r==0則保持。④賦值第3優(yōu)先級(jí):自動(dòng)累加直至0停止。BeepEn80ms_r賦值規(guī)則:cnt_80ms_r等于0賦值0,否則賦值1。(2)按鍵提示音-設(shè)計(jì)方案3、蜂鳴器FPGA驅(qū)動(dòng)電路在上節(jié)工程基礎(chǔ)修改操作步驟:1、蜂鳴器驅(qū)動(dòng)電路設(shè)計(jì);2、仿真;3、測(cè)試;4、按鍵提示音設(shè)計(jì)操作演示操作演示問(wèn)題核心——BeepEn80ms_r的產(chǎn)生,應(yīng)依托于計(jì)數(shù)器1)若指定按鍵是單次檢測(cè)則KEYMODE修改為1,反之置為0。;2)若蜂鳴器是有源,則BEEPMODE修改為1,反之為0。支持單次模式和連續(xù)模式按鍵檢測(cè)電路代碼調(diào)用總結(jié)謝謝大家!8.2自動(dòng)售賣機(jī)任務(wù)要求設(shè)定一種自動(dòng)飲料售賣機(jī)場(chǎng)景:(1)主控制邏輯:飲料售賣機(jī)只出售冰紅茶,每瓶冰紅茶3元,飲料售賣機(jī)接收1元硬幣。(2)人機(jī)交互●按鍵

:用按鍵Key_i代替投入1元硬幣,按鍵每“按”1次代表投入一枚硬幣,●蜂鳴器:按鍵按下時(shí)伴有約100ms短促的“滴”提示音(既支持有源蜂鳴器,也支持無(wú)源蜂鳴器)。●數(shù)碼管:數(shù)碼管顯示當(dāng)前累計(jì)的投幣總數(shù)。每投幣一次后,數(shù)碼管更新顯示當(dāng)前的投幣總數(shù)?!馤ED燈

:用LED燈代替飲料售賣機(jī)的飲料送出機(jī)械機(jī)構(gòu),當(dāng)有飲料輸出時(shí),LED燈亮1秒。(3)其他:易于拓展其他面額及飲料,如5角硬幣,脈動(dòng)4.5元。內(nèi)容安排1、非狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī);2、狀態(tài)機(jī)的引入及概念;3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī);●Mealy型狀態(tài)機(jī)(一、二、三段式)●Moore型狀態(tài)機(jī)(一、二、三段式)4、狀態(tài)機(jī)的選擇與設(shè)計(jì)流程5、飲料售賣機(jī)人機(jī)交互綜合電路設(shè)計(jì)注:本節(jié)重點(diǎn)是狀態(tài)機(jī)闡述,為方便闡述1~4,狀態(tài)機(jī)輸出信號(hào)僅以Drink_o為例8.2自動(dòng)售賣機(jī)僅使用if語(yǔ)法-以CurMoney_r為引線非狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)特點(diǎn):初學(xué)者易懂,電路是一些加法器和比較選擇器的組合,直觀、易懂;缺點(diǎn):●代碼不夠直觀,可讀性差;●當(dāng)售賣邏輯復(fù)雜時(shí),難以修改。1、非狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)。狀態(tài)機(jī)的發(fā)明猜想若將設(shè)計(jì)任務(wù)中的money_i修改為可以支持5角甚至1角等多種面額硬幣,上述代碼將因if語(yǔ)句的嵌套變得十分復(fù)雜。飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn).針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如飲料售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了歸納、總結(jié),并給出了一些“范式”的電路代碼描述方法——狀態(tài)機(jī)。將狀態(tài)機(jī)可理解為C語(yǔ)言設(shè)計(jì)前的流程圖,其只是一種指導(dǎo)代碼設(shè)計(jì)而預(yù)先繪制的思維導(dǎo)圖,狀態(tài)機(jī)亦是。很多學(xué)生/開(kāi)發(fā)人員設(shè)計(jì)簡(jiǎn)單電路一般不畫流程圖或畫草圖,但并不影響其設(shè)計(jì)代碼,但大型電路則不可行。也就是說(shuō),面對(duì)FPGA設(shè)計(jì)大型項(xiàng)目時(shí),一般需借助狀態(tài)機(jī)。就VerilogHDL而言,實(shí)際設(shè)計(jì)者在未專門學(xué)習(xí)狀態(tài)機(jī)前,經(jīng)常會(huì)無(wú)意識(shí)的設(shè)計(jì)出非范式的狀態(tài)機(jī)。2、狀態(tài)機(jī)概念飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)。狀態(tài)機(jī)的概念狀態(tài)機(jī)簡(jiǎn)寫為FSM(FiniteStateMachine),稱同步有限狀態(tài)機(jī),也簡(jiǎn)稱為狀態(tài)機(jī)。1)“同步”是因?yàn)闋顟B(tài)機(jī)中所有的狀態(tài)跳轉(zhuǎn)都是在同一時(shí)鐘的作用下觸發(fā);2)“有限”含義是狀態(tài)的個(gè)數(shù)有限。狀態(tài)機(jī)的每一個(gè)狀態(tài)代表一個(gè)事件,從執(zhí)行當(dāng)前事件到執(zhí)行另一事件的跳轉(zhuǎn)稱之為狀態(tài)的跳轉(zhuǎn)或狀態(tài)的轉(zhuǎn)移。設(shè)計(jì)者的任務(wù)是執(zhí)行當(dāng)前事件然后跳轉(zhuǎn)到一下事件,如此一來(lái)包含多個(gè)狀態(tài)的系統(tǒng)就“活”了。狀態(tài)機(jī)通過(guò)控制各個(gè)狀態(tài)的跳轉(zhuǎn)來(lái)控制流程,使得整個(gè)代碼看上去更加清晰易懂,在控制復(fù)雜流程的時(shí)候,狀態(tài)機(jī)優(yōu)勢(shì)明顯,且易于添加和修改。狀態(tài)機(jī)典型的分類主要包含型Mealy型狀態(tài)機(jī)和Moore型狀態(tài)機(jī)兩種,二者都各自有一段式、兩段式、三段式寫法,接下來(lái)通過(guò)6個(gè)案例來(lái)介紹Mealy和Moore型狀態(tài)機(jī)的三種寫法(共2×3=6種),然后對(duì)其進(jìn)行總結(jié),最后給出范式寫法。2、狀態(tài)機(jī)概念1、Mealy狀態(tài)機(jī)整個(gè)系統(tǒng)的輸入信號(hào)是投幣,輸出信號(hào)是飲料(和當(dāng)前投幣數(shù))整個(gè)流程可以抽象為3個(gè)狀態(tài),1)空閑(用IDLE表示)2)已投入1元(用ONE表示)3)已投入2元(用TWO表示)。根據(jù)上述列出3種狀態(tài)及狀態(tài)轉(zhuǎn)移邏輯,預(yù)先繪制圖Mealy型狀態(tài)轉(zhuǎn)移圖。●IDLE:系統(tǒng)復(fù)位后的默認(rèn)狀態(tài),代表當(dāng)前已有金額是0元,無(wú)飲料輸出;根據(jù)是否投幣有兩種目標(biāo)狀態(tài):投1元硬幣跳轉(zhuǎn)至狀態(tài)ONE且無(wú)飲料輸出,無(wú)投幣則保持IDLE狀態(tài)且無(wú)飲料輸出;●ONE:此狀態(tài)下售賣機(jī)已有1元硬幣;根據(jù)是否投幣同樣有兩種目標(biāo)狀態(tài):投1元硬幣則跳轉(zhuǎn)狀態(tài)TWO且無(wú)飲料輸出,無(wú)投幣則保持ONE狀態(tài)且無(wú)飲料輸出;●TWO:此狀態(tài)下售賣機(jī)里已有2元硬幣;接下來(lái)的狀態(tài)有兩種情況:投了1元硬幣則跳轉(zhuǎn)狀態(tài)IDLE,且輸出可樂(lè)(根據(jù)和輸入相關(guān)要求,此時(shí)輸入1元,加上原來(lái)的2元共有3元,滿足輸出可樂(lè)的條件);無(wú)投幣則保持TWO狀態(tài)且沒(méi)有可樂(lè)輸出;3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)Mealy一、二、三段式狀態(tài)機(jī)操作演示1、設(shè)計(jì);2、仿真。3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)操作演示飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)。總結(jié):Mealy狀態(tài)機(jī)一段式(1/3)引入虛擬state這一引線,增強(qiáng)了代碼的條理性和可讀性;代碼主要架構(gòu)為if+case3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Mealy狀態(tài)機(jī)二段式(2/3)現(xiàn)態(tài)cur_state由時(shí)序邏輯賦值,以便存儲(chǔ);次態(tài)next_state由組合邏輯賦值,更為簡(jiǎn)便。3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Mealy狀態(tài)機(jī)二段式(2/3)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)1)二段式狀態(tài)機(jī)是一段式和三段式的一個(gè)過(guò)渡,相比與一段式多了一個(gè)“次態(tài)”。2)典型缺點(diǎn)輸出信號(hào)Drinks_o因在組合邏輯中賦值,仿真結(jié)果顯示出現(xiàn)類似競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象的尖刺3)本例中兩段式狀態(tài)機(jī)相對(duì)一段式狀態(tài)機(jī)沒(méi)有顯現(xiàn)出太大的優(yōu)勢(shì)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Mealy狀態(tài)機(jī)三段式(3/3)1)第2段只負(fù)責(zé)狀態(tài)判斷,由組合邏輯設(shè)計(jì),無(wú)時(shí)序延時(shí),故而清晰易懂;2)第1段只負(fù)責(zé)狀態(tài)轉(zhuǎn)移,由時(shí)序邏輯設(shè)計(jì),固定模板——次態(tài)賦給現(xiàn)態(tài);3)第3段只負(fù)責(zé)輸出信號(hào),由時(shí)序邏輯設(shè)計(jì),避免了類似組合邏輯的競(jìng)爭(zhēng)冒險(xiǎn)。3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Mealy狀態(tài)機(jī)三段式(3/3)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)Mealy三段式狀態(tài)機(jī)代碼直觀上的感受不如一段式簡(jiǎn)單、整潔,原因是此案例應(yīng)用場(chǎng)景過(guò)于簡(jiǎn)單。試想如果售賣機(jī)支持1角和5角,整個(gè)狀態(tài)轉(zhuǎn)移變得更為復(fù)雜,但三段式只需對(duì)第二段always采取復(fù)制粘貼的方法進(jìn)行修改即可,第三段always對(duì)應(yīng)的稍加修改。三段式狀態(tài)機(jī)更易修改,且更適合復(fù)雜的狀態(tài)轉(zhuǎn)移場(chǎng)景,通用性更廣。飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):狀態(tài)機(jī)仿真技巧3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)狀態(tài)機(jī)仿真技巧注意1:進(jìn)行時(shí)序仿真時(shí),因編譯導(dǎo)致state往往被優(yōu)化,因此不能觀測(cè)state_name;注意2:進(jìn)行功能仿真時(shí),觀測(cè)state_name時(shí),需將格式調(diào)整為“ASCII”格式。2、Moore狀態(tài)機(jī)整個(gè)系統(tǒng)的輸入信號(hào)是投幣,輸出信號(hào)是飲料(和當(dāng)前投幣數(shù))整個(gè)流程可以抽象為4個(gè)狀態(tài):1)空閑(用IDLE表示)2)已投入1元(用ONE表示)3)已投入2元(用TWO表示)4)已投入3元(用THREE表示,抽象出的虛擬狀態(tài))●IDLE:首先是系統(tǒng)復(fù)位后的默認(rèn)狀態(tài),這個(gè)狀態(tài)下售賣機(jī)里無(wú)投幣且無(wú)飲料輸出●ONE:這個(gè)狀態(tài)下售賣機(jī)里有1元硬幣且無(wú)飲料輸出●TWO:這個(gè)狀態(tài)下售賣機(jī)里有2元硬幣且無(wú)飲料輸出;●THREE:這個(gè)狀態(tài)是極為短暫的,售賣機(jī)里有3元硬幣,但是因?yàn)槭鞘褂玫臅r(shí)序邏輯,所以在這個(gè)時(shí)鐘周期無(wú)飲料輸出,飲料會(huì)在當(dāng)前狀態(tài)跳轉(zhuǎn)至下一狀態(tài)時(shí)輸出(下一個(gè)時(shí)鐘周期輸出);下一狀態(tài)根據(jù)投幣情況有兩種:投了1元硬幣則跳轉(zhuǎn)狀態(tài)ONE、沒(méi)有投硬幣則跳轉(zhuǎn)狀態(tài)IDLE狀態(tài)。3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)MealyMooreMoore一、二、三段式狀態(tài)機(jī)操作演示1、設(shè)計(jì);2、仿真。3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)操作演示飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Moore狀態(tài)機(jī)一段式(1/3)Moore相比Mealy特點(diǎn):輸出Drinks和輸入Money_i無(wú)關(guān)(代碼第53行)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)??偨Y(jié):Moore狀態(tài)機(jī)二段式(2/3)Moore相比Mealy特點(diǎn):輸出Drinks和輸入Money_i無(wú)關(guān)(代碼第68、72行)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)飲料售賣機(jī)電路設(shè)計(jì)是以if(或case)語(yǔ)法為主各種狀態(tài)的判斷與跳轉(zhuǎn),針對(duì)此類問(wèn)題,工程師們?cè)诳偨Y(jié)了諸如可樂(lè)售賣機(jī)等這種轉(zhuǎn)換邏輯較為復(fù)雜的電路的特點(diǎn)后,將這些應(yīng)用場(chǎng)景下的if(或case)語(yǔ)法進(jìn)行了總結(jié),并給出了一些“范式”的電路描述方法——狀態(tài)機(jī)。總結(jié):Moore狀態(tài)機(jī)三段式(3/3)Moore相比Mealy特點(diǎn):輸出Drinks和輸入Money_i無(wú)關(guān)(代碼第77行)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)總結(jié):Moore狀態(tài)機(jī)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)1)Moore狀態(tài)機(jī)相對(duì)Mealy狀態(tài)機(jī)額外加入THREE這個(gè)抽象的狀態(tài);2)最大的優(yōu)點(diǎn)在于輸出只和當(dāng)前狀態(tài)(THREE)有關(guān),和輸入無(wú)關(guān)(Mealy中的飲料輸出不進(jìn)去決定于當(dāng)時(shí)的狀態(tài)TWO,也和是否有投幣輸入有關(guān))3)缺點(diǎn)是這一額外的狀態(tài)不容易虛構(gòu),這需要根據(jù)實(shí)際情況和經(jīng)驗(yàn)決定。MealyMoore飲料售賣機(jī)IDLE:系統(tǒng)復(fù)位后的默認(rèn)狀態(tài),代表當(dāng)前已有金額是0元,無(wú)飲料輸出;根據(jù)是否投幣有兩種目標(biāo)狀態(tài):投1元硬幣跳轉(zhuǎn)至狀態(tài)ONE且無(wú)飲料輸出,無(wú)投幣則保持IDLE狀態(tài)且無(wú)飲料輸出;ONE:此狀態(tài)下售賣機(jī)已有1元硬幣;根據(jù)是否投幣同樣有兩種目標(biāo)狀態(tài):投1元硬幣則跳轉(zhuǎn)狀態(tài)TWO且無(wú)飲料輸出,無(wú)投幣則保持ONE狀態(tài)且無(wú)飲料輸出;TWO:此狀態(tài)下售賣機(jī)里已有2元硬幣;接下來(lái)的狀態(tài)有兩種情況:投了1元硬幣則跳轉(zhuǎn)狀態(tài)IDLE,且輸出可樂(lè)(根據(jù)和輸入相關(guān)要求,此時(shí)輸入1元,加上原來(lái)的2元共有3元,滿足輸出可樂(lè)的條件);無(wú)投幣則保持TWO狀態(tài)且沒(méi)有可樂(lè)輸出;總結(jié)Mealy和Moore狀態(tài)機(jī)3、6種常見(jiàn)狀態(tài)機(jī)設(shè)計(jì)飲料售賣機(jī)以上6例為說(shuō)明Mealy和Moore型狀態(tài)機(jī)各三種風(fēng)格代碼的設(shè)計(jì)方法而刻意將售賣邏輯簡(jiǎn)化,因此可能未充分體現(xiàn)出各種狀態(tài)機(jī)的優(yōu)缺點(diǎn)。但可以肯定的是售賣邏輯若支持1角或5角等各種面額硬幣,狀態(tài)機(jī)的引入會(huì)簡(jiǎn)化設(shè)計(jì)、提升代碼的閱讀性與可維護(hù)性等。實(shí)際上除了上述6種狀態(tài)機(jī)設(shè)計(jì)風(fēng)格,還有很多衍生代碼風(fēng)格,但最常用的還是以上6種,讀者在掌握狀態(tài)機(jī)的設(shè)計(jì)方法后,會(huì)根據(jù)實(shí)際設(shè)計(jì)任務(wù)無(wú)意識(shí)的寫出衍生代碼格式。在日常設(shè)計(jì)中優(yōu)先選擇6種狀態(tài)機(jī)寫法的哪一種,狀態(tài)機(jī)的設(shè)計(jì)流程是什么,還有哪些注意事項(xiàng)?(1)狀態(tài)機(jī)的選擇-采用幾段式狀態(tài)機(jī)?幾段式狀態(tài)機(jī)的選擇一段式狀態(tài)機(jī):將判斷、狀態(tài)、輸出等寫在一個(gè)always里,只涉及時(shí)序電路,無(wú)組合邏輯的競(jìng)爭(zhēng)與冒險(xiǎn),同時(shí)消耗邏輯比較少,但是如果狀態(tài)較多且轉(zhuǎn)移邏輯復(fù)雜,一段式狀態(tài)機(jī)顯得比較臃腫,不利于維護(hù)和修改。兩段式狀態(tài)機(jī):因?yàn)檫壿嬊逦?、便于閱讀、理解和維護(hù),通用寫法中一個(gè)always模塊采用時(shí)序(狀態(tài)轉(zhuǎn)移,將次態(tài)賦值next_state給現(xiàn)態(tài)cur_state);另一個(gè)always模塊采用組合時(shí)候(包含輸出和next_state等其余電路)。但組合邏輯會(huì)產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn)問(wèn)題,且因組合邏輯競(jìng)爭(zhēng)冒險(xiǎn)問(wèn)題導(dǎo)致有些情況無(wú)法準(zhǔn)確描述,比如輸出時(shí)需要類似計(jì)數(shù)的累加情況。綜合來(lái)看,只要應(yīng)用場(chǎng)景合適,兩段式狀態(tài)機(jī)仍然是推薦的狀態(tài)機(jī)設(shè)計(jì)方法之一。三段式狀態(tài)機(jī):設(shè)計(jì)者可以清晰的將狀態(tài)圖轉(zhuǎn)化為VerilogHDL代碼,代碼可以清晰完整的顯示出狀態(tài)機(jī)的結(jié)構(gòu),代碼清晰且降低編寫維護(hù)復(fù)雜度,一般最常用的是三段式狀態(tài)機(jī),后文及本書后幾章均以三段式狀態(tài)機(jī)為例。實(shí)際中,各種狀態(tài)機(jī)均有優(yōu)缺點(diǎn),應(yīng)視具體情況而靈活抉擇,但首選三段式狀態(tài)機(jī)。4、狀態(tài)機(jī)的選擇與設(shè)計(jì)流程推薦:優(yōu)先考慮三段式狀態(tài)機(jī)√(1)狀態(tài)機(jī)的選擇-Mealy和Moore型選擇?從輸出信號(hào)相關(guān)性角度(最典型區(qū)別)4、狀態(tài)機(jī)的選擇與設(shè)計(jì)流程從優(yōu)缺點(diǎn)角度Mealy型輸出(如Drinks_o)既和當(dāng)前狀態(tài)有關(guān);又和輸入(如Money_i)有關(guān)Moore型輸出(如Drinks_o)僅和當(dāng)前狀態(tài)有關(guān)。Moore型典型優(yōu)點(diǎn):輸出信號(hào)僅有當(dāng)前狀態(tài)決定,和輸入信號(hào)無(wú)關(guān),其三段式輸出便于書寫。典型缺點(diǎn):設(shè)計(jì)前,為保證輸出和輸入無(wú)關(guān),需額外抽象其他虛擬狀態(tài)。因額外“多抽象出的這一個(gè)或幾個(gè)狀態(tài)”而多幾個(gè)時(shí)鐘周期的延遲,這意味著狀態(tài)機(jī)無(wú)法對(duì)輸入變化立即做出反應(yīng)。Mealy型典型優(yōu)點(diǎn):與Moore相反,狀態(tài)少,延時(shí)小。典型缺點(diǎn):Mealy型也沒(méi)有Moore型狀態(tài)機(jī)的“輸出只和狀態(tài)有關(guān)”這一特點(diǎn),其輸出和當(dāng)前狀態(tài)以及輸入有關(guān),導(dǎo)致輸出信號(hào)所在的always模塊書寫邏輯稍加繁雜。(1)狀態(tài)機(jī)的選擇-Mealy和Moore型選擇狀態(tài)機(jī)選擇Mealy型狀態(tài)機(jī)和Moore型狀態(tài)機(jī)還有各種衍生格式,此外,還有二者結(jié)合的混合型狀態(tài)機(jī),應(yīng)視具體設(shè)計(jì)任務(wù)而選擇何種狀態(tài)機(jī)。1)對(duì)于大多數(shù)應(yīng)用場(chǎng)景,Mealy和Moore型狀態(tài)機(jī)均可以完成相同的功能,初級(jí)階段,更多的是一種習(xí)慣。中高級(jí)階段,一般是因具體電路的時(shí)序要求等原因被迫選擇某種狀態(tài)機(jī)。2)建議讀者不要糾結(jié)該使用Mealy還是Moore型狀態(tài)機(jī),在實(shí)際上機(jī)中,依據(jù)設(shè)計(jì)任務(wù),讀者在構(gòu)造輸出信號(hào)時(shí),往往會(huì)無(wú)意識(shí)的選定Mealy還是Moore型狀態(tài)機(jī)。3)其他,對(duì)于初學(xué)者而言,就某一項(xiàng)目需求(實(shí)際一般都是成熟設(shè)計(jì))往往都是參考網(wǎng)絡(luò)資源或書籍狀態(tài)機(jī)而進(jìn)行一定的移植和修改。4)如果熟悉狀態(tài)機(jī)的語(yǔ)法,在能夠接受Moore型狀態(tài)機(jī)的輸出延時(shí)的情況下,優(yōu)先選擇Moore型4、狀態(tài)機(jī)的選擇與設(shè)計(jì)流程(2)狀態(tài)機(jī)的設(shè)計(jì)流程把實(shí)際系統(tǒng)進(jìn)行邏輯抽象,即實(shí)際問(wèn)題轉(zhuǎn)化為設(shè)計(jì)要求。首先確定電路輸入信號(hào)(如Mone

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論