有限狀態(tài)機課程設(shè)計報告 EDASoda Machine 自動售貨機
《有限狀態(tài)機課程設(shè)計報告 EDASoda Machine 自動售貨機》由會員分享,可在線閱讀,更多相關(guān)《有限狀態(tài)機課程設(shè)計報告 EDASoda Machine 自動售貨機(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、電子通信07級EDA課程實驗報告 1 有限狀態(tài)機 有限狀態(tài)機(Finite State Machine)是一種具有內(nèi)部記憶的抽象機器模型,是時序電路的一種,通過有限狀態(tài)機課實現(xiàn)高效率高可靠邏輯控制。 根據(jù)輸出與輸入關(guān)系、系統(tǒng)狀態(tài)的關(guān)系,有限狀態(tài)機又可以分為Moore型有限狀態(tài)機和Mealy型有限狀態(tài)機。Moore型狀態(tài)機的輸出信號只于當前的狀態(tài)有關(guān);Mealy型狀態(tài)機是輸出信號不僅與當前的狀態(tài)有關(guān),還與輸入信號有關(guān)。 Mealy機的示意圖如圖二所示: 圖二Mealy機的示意圖 Moore機的示意圖如圖三所示: 圖三 Moore機的示意圖 Moore型有限狀態(tài)機和Meal
2、y型有限狀態(tài)機的區(qū)別: ● 在Moore機中,輸出的時鐘活動沿到達后的幾個門電路的延遲時間之后即到達,并且在該時鐘周期的剩余時間內(nèi)保持不變,即使輸入在該時鐘周期內(nèi)發(fā)生變化,輸出值也保持不變。然而,因為輸出與當前的輸入無關(guān),當前輸出產(chǎn)生的任何效果將延遲到下一個時鐘周期。Moore機的優(yōu)點是將輸出與輸入分隔開。 ● 在Mealy機中,因為輸出是輸入的函數(shù),如果輸入改變,則輸出可以在下一個時鐘周期的中間發(fā)生改變。這使得Mealy機比Moore機,對輸入變化的響應(yīng)要早一個時鐘周期,一旦輸入信號或狀態(tài)發(fā)生變化,輸出信號隨著輸入信號變化。 ● 實現(xiàn)同樣功能,Moore機要比Mealy機需要更多
3、的狀態(tài)。 通過分析本次實驗,利用Mealy機更加容易理解,并且使用Moore會使用更多的狀態(tài),所以本次實驗使用Mealy型有限狀態(tài)機。 2 Soda Machine機的設(shè)計 2.1 Soda Machine機的狀態(tài)轉(zhuǎn)換圖 Soda Machine機的狀態(tài)轉(zhuǎn)換圖如圖四所示。 圖四Soda Machine機的狀態(tài)轉(zhuǎn)換圖 圖中共有10個狀態(tài),為ST0—ST9。在狀態(tài)轉(zhuǎn)換圖中00代表無輸入,11代表輸入Q(25c),10代表輸入D(10c), 01代表輸入N(5c)。在輸出中000代表無輸出,001代表輸出DN(5C),010代表輸出的DD(10C),100代表輸出DC(1 can
4、)。 ST0是初始態(tài)。當沒有硬幣投入時,狀態(tài)機始終保持STO狀態(tài)不變。當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST1狀態(tài),無輸出(即000);當投入10分時(即10),跳轉(zhuǎn)到S2狀態(tài),無輸出(即000);當投入25分時(即11)跳轉(zhuǎn)到S5狀態(tài),無輸出(即000)。 ST1是有投入5分后的狀態(tài)。當沒有硬幣投入時,狀態(tài)機始終保持ST1狀態(tài)不變, 無輸出(即000);當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST2狀態(tài),無輸出(即000);當投入10分(即10)時,跳轉(zhuǎn)到ST3狀態(tài), 無輸出(即000);當投入25分(即11)時,跳轉(zhuǎn)到ST0狀態(tài),輸出一瓶飲料(即100)。 ST2是投入10分后的狀態(tài)。
5、當沒有硬幣投入時,狀態(tài)機始終保持ST2狀態(tài)不變, 無輸出(即000);當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST3狀態(tài),無輸出(即000);當投入10分(即10)時,跳轉(zhuǎn)到ST4狀態(tài), 無輸出(即000);當投入25分(即11)時,跳轉(zhuǎn)到ST6狀態(tài),輸出一瓶飲料(即100),在下一個時鐘到來ST6再跳轉(zhuǎn)到ST0,輸出5分(即001)。這樣可保證每個時鐘只輸出一個(飲料或10分或5分)。 ST3是投入15分后的狀態(tài)。當沒有硬幣投入時,狀態(tài)機始終保持ST3狀態(tài)不變, 無輸出(即000);當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST4狀態(tài),無輸出(即000);當投入10分(即10)時,跳轉(zhuǎn)到ST5狀態(tài),
6、 無輸出(即000);當投入25分(即11)時,跳轉(zhuǎn)到ST7狀態(tài),輸出一瓶飲料(即100),在下一個時鐘到來ST7再跳轉(zhuǎn)到ST0,輸出10分(即010)。輸出正確,同樣可保證每個時鐘只輸出一個(飲料或10分或5分)。 ST4是投入20分后的狀態(tài)。當沒有硬幣投入時,狀態(tài)機始終保持ST4狀態(tài)不變, 無輸出(即000);當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST5狀態(tài),無輸出(即000);當投入10分(即10)時,跳轉(zhuǎn)到ST0狀態(tài), 輸出一瓶飲料(即100);當投入25分(即11)時,跳轉(zhuǎn)到ST8狀態(tài),輸出一瓶飲料(即100),在下一個時鐘到來ST8再跳轉(zhuǎn)到ST6,輸出10分(即010),在下一個時
7、鐘到來ST6再跳轉(zhuǎn)到ST0,輸出10分(即001)。輸出正確,同樣可保證每個時鐘只輸出一個(飲料或10分或5分)。 ST5是投入25分后的狀態(tài)。當沒有硬幣投入時,狀態(tài)機始終保持ST3狀態(tài)不變, 無輸出(即000);當投入5分(即01)時,狀態(tài)機跳轉(zhuǎn)到ST0狀態(tài),輸出一瓶飲料(即100);當投入10分(即10)時,跳轉(zhuǎn)到ST6狀態(tài), 輸出一瓶飲料(即100),在下一個時鐘到來ST6再跳轉(zhuǎn)到ST0,輸出5分(即001);當投入25分(即11)時,跳轉(zhuǎn)到ST9狀態(tài),輸出一瓶飲料(即100),在下一個時鐘到來ST9再跳轉(zhuǎn)到ST7,輸出10分(即010),在下一個時鐘到來ST7再跳轉(zhuǎn)到ST0,輸出10
8、分(即010)。輸出正確,同樣可保證每個時鐘只輸出一個(飲料或10分或5分)。 2.2 Soda Machine機的狀態(tài)分配與編碼 2.2.1狀態(tài)編碼方式 在狀態(tài)機的設(shè)計中,對狀態(tài)編碼有多種,常用編碼的方式有:有限狀態(tài)機中常用的編碼主要有二進制編碼、格雷碼和One-Hot編碼。 表1 二進制編碼、格雷碼和One-Hot編碼的比較 比較 二進制編碼 格雷碼編碼 一位熱碼編碼 觸發(fā)器數(shù)量 少 少 多 時序條件 一般 好 最好 非法狀態(tài) 少 少 多 譯碼電路 復雜 復雜 簡單 下面是對這三種編碼方式的仿真。 2.2.2 一位熱碼編碼方式 由一位
9、熱碼編碼形成的RTL如圖五所示。 圖五 一位熱碼編碼形成的RTL 2.2.2 二進制編碼方式 二進制編碼代碼為: SIGNAL CURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(3 DOWNTO 0 ); CONSTANT ST0:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0000"; CONSTANT ST1:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0001"; CONSTANT ST2:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0010"; CONSTANT ST3:S
10、TD_LOGIC_VECTOR(3 DOWNTO 0 ):="0011"; CONSTANT ST4:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0100"; CONSTANT ST5:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0101"; CONSTANT ST6:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0110"; CONSTANT ST7:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0111"; CONSTANT ST8:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="1000
11、"; CONSTANT ST9:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="1001"; 由二進制碼形成的RTL如圖六所示。 圖六 二進制碼形成的RTL 2.2.3 格雷碼編碼方式 格雷碼編碼代碼為: SIGNAL CURRENT_STATE,NEXT_STATE:STD_LOGIC_VECTOR(3 DOWNTO 0 ); CONSTANT ST0:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0000"; CONSTANT ST1:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0001"; CONSTANT S
12、T2:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0011"; CONSTANT ST3:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0010"; CONSTANT ST4:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0110"; CONSTANT ST5:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0111"; CONSTANT ST6:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="0101"; CONSTANT ST7:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="
13、0100"; CONSTANT ST8:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="1100"; CONSTANT ST9:STD_LOGIC_VECTOR(3 DOWNTO 0 ):="1101"; 由格雷碼形成的RTL如圖七所示: 圖七格雷碼形成的RTL 從以上3個圖可知:采用一位熱碼編碼,雖然這種方法的用的的觸發(fā)器不是最少,但是可以使次態(tài)邏輯變得簡單,由于一般的可編程器件,觸發(fā)器的比率高于組合邏輯,所以采用一位熱碼編碼的系統(tǒng)占用的資源反而少于采用最少觸發(fā)器的系統(tǒng)。因此采用一位熱碼編碼的編碼方式。 2.2.4 對輸入信號編碼 兩位二進制數(shù)對輸入信號進
14、行編碼的RTL如圖八所示,及00代表無輸入,01代表輸入為5分,10代表輸入10分,11代表輸入25分。 圖八 兩位二進制數(shù)對輸入信號進行編碼的RTL 三位二進制數(shù)對輸入信號進行編碼的RTL如圖所示,及000代表無輸入,001代表輸入為5分,010代表輸入10分,100代表輸入25分。 圖九 三位二進制數(shù)對輸入信號進行編碼的RTL 從上面的兩個RTL圖中可以看出,用兩位二進制數(shù)對輸入信號進行編碼電路簡單,并且完全避免的輸入的非法狀態(tài),所以使用兩位二進制數(shù)對輸入信號進行編碼。 2.3 Soda Machine機狀態(tài)最少化 狀態(tài)最少化采用的方法一般是手動法,只有當兩個狀態(tài)在相同
15、的輸入條件下,有相同的次態(tài)和輸出,那么這兩個狀態(tài)就可以合并,狀態(tài)最少化是基于觀察完成的。 2.3.1 Soda Machine機狀態(tài)轉(zhuǎn)換及輸出表 根據(jù)圖寫出狀態(tài)轉(zhuǎn)換及輸出表,見表2。 表2 Soda Machine機的狀態(tài)轉(zhuǎn)換及輸出表 現(xiàn)態(tài) 相應(yīng)轉(zhuǎn)移條件下的次態(tài) 輸出 狀態(tài)名稱 25美分 10美分 5美分 0美分 飲料 10美分 5美分 ST0 ST5 ST2 ST1 ST0 0 0 0 ST1 ST0 ST3 ST2 ST1 0 0 0 ST2 ST6 ST4 ST3 ST2 0 0 0 ST3 ST7 ST
16、5 ST4 ST3 0 0 0 ST4 ST8 ST0 ST5 ST4 0 0 0 ST5 ST11 ST10 ST0 ST5 0 0 0 ST6 沒有輸入,次態(tài)為ST0 0 0 1 ST7 沒有輸入,次態(tài)為ST0 0 1 0 ST8 沒有輸入,次態(tài)為ST9 0 1 0 ST9 沒有輸入,次態(tài)為ST0 0 1 0 ST10 沒有輸入,次態(tài)為ST0 0 0 1 ST11 沒有輸入,次態(tài)為ST12 0 1 0 ST12 沒有輸入,次態(tài)為ST0 0 1 0 注:ST2跳轉(zhuǎn)到ST6的過程中
17、,輸出一瓶飲料;ST3跳轉(zhuǎn)到ST7的過程中,輸出一瓶飲料;ST4跳轉(zhuǎn)到ST8的過程中,輸出一瓶飲料;ST5跳轉(zhuǎn)到ST6的過程中,輸出一瓶飲料;ST5跳轉(zhuǎn)到ST9的過程中,輸出一瓶飲料。 2.3.2 Soda Machine機的狀態(tài)合并 根據(jù)上面的狀態(tài)轉(zhuǎn)換表及輸出表,基于觀察,發(fā)現(xiàn)st6、st10的次態(tài)轉(zhuǎn)移和輸出完全相同,st7、st9、st12的次態(tài)轉(zhuǎn)移和輸出完全相同,因此可以將這幾個狀態(tài)進行合并,見表3。 表3 合并狀態(tài)st6和st10為st6,合并狀態(tài)st7,st9、st12為st7 現(xiàn)態(tài) 相應(yīng)轉(zhuǎn)移條件下的次態(tài) 輸出 狀態(tài)名稱 25美分 10美分 5美分 0美分
18、 飲料 10美分 5美分 ST0 ST5 ST2 ST1 ST0 0 0 0 ST1 ST0 ST3 ST2 ST1 0 0 0 ST2 ST6 ST4 ST3 ST2 0 0 0 ST3 ST7 ST5 ST4 ST3 0 0 0 ST4 ST8 ST0 ST5 ST4 0 0 0 ST5 ST9 ST6 ST0 ST5 0 0 0 ST6 沒有輸入,次態(tài)為ST0 0 0 1 ST7 沒有輸入,次態(tài)為ST0 0 1 0 2.4 Soda Machine機的VHDL語言
19、 2.4.1 實體設(shè)計 ENTITY Soda IS PORT (CLK ,RESET:IN STD_LOGIC;--時鐘、復位信號 STATE_INPUTS:IN STD_LOGIC_VECTOR (0 TO 1);--輸入信號 COMB_OUTPUTS:OUT STD_LOGIC_VECTOR (0 TO 2));--輸出信號 END Soda; 2.4.2 結(jié)構(gòu)體設(shè)計(部分代碼) TYPE STATES IS (ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8,ST9);--定義數(shù)據(jù)類型 SIGNAL CURR
20、ENT_STATE,NEXT_STATE:STATES;--將現(xiàn)態(tài)和次態(tài)定義為新的數(shù)據(jù)類型 REG:PROCESS(CLK,RESET) BEGIN IF RESET='1'THEN CURRENT_STATE<=ST0; ELSIF CLK'EVENT AND CLK='1' THEN CURRENT_STATE<=NEXT_STATE; END IF; END PROCESS; COM:PROCESS(CURRENT_STATE,STATE_INPUTS) VARIABLE
21、COMB_OUTPUTS2:STD_LOGIC_VECTOR(0 TO 2); BEGIN CASE CURRENT_STATE IS WHEN ST0=> IF STATE_INPUTS="00" THEN NEXT_STATE<=ST0;COMB_OUTPUTS2:="000"; ELSIF STATE_INPUTS="01" THEN NEXT_STATE<=ST1;COMB_O
22、UTPUTS2:="000"; ELSIF STATE_INPUTS="10" THEN NEXT_STATE<=ST2;COMB_OUTPUTS2:="000"; ELSE NEXT_STATE<=ST5;COMB_OUTPUTS2:="000"; END IF; 2.5 Soda Machine機的RTL描述 Soda Machine的RTL描述如圖十所示。 圖十Soda Machine的RTL描述 2.6 Soda Machine在Quartus II中形成
23、的狀態(tài)轉(zhuǎn)圖 Soda Machine在Quartus II中形成的狀態(tài)轉(zhuǎn)圖如圖十一所示。 圖十一 Soda Machine在Quartus II中形成的狀態(tài)轉(zhuǎn)圖 2.7 Soda Machine的時序仿真 Soda Machine的時序仿真圖如圖十二所示: 圖十二 Soda Machine的時序仿真圖 時序邏輯說明:復位信號后,狀態(tài)為ST0;連續(xù)來兩個時鐘,每次輸入25分,第四個時鐘輸出一瓶飲料,第五個時鐘輸出10分,第六個時鐘輸出10分。符合邏輯設(shè)計要求。 Soda Machine的時序仿真圖如圖十三所示: 圖十三Soda Machine的時序仿真圖 時序邏輯說明:復位信號后,狀態(tài)為ST0;第兩個時鐘,輸入25分,第三個時鐘輸入10分,即共輸入35分,第四個時鐘輸出一瓶飲料,第五個時鐘輸出5分。每個時鐘輸出一個,符合邏輯設(shè)計要求。 3 結(jié)束語 通過本次實驗,對EDA技術(shù)和VHDL語言有了更深的了解和認識,會利用Quartus II對設(shè)計電路進行功能仿真、時序仿真和優(yōu)化,掌握了設(shè)計有限狀態(tài)機的方法。 13
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代文閱讀之小說人物形象課件
- 3第12課蘇東的艱難探索
- 《第二節(jié)--探究環(huán)境污染對生物的影響》課件-(同課異構(gòu))2022年課件
- 牛津譯林版七下英語7bunit1dreamhomesreading課件1
- 六年級語文《一個這樣的老師》教學課件
- 六年級安全教育-運動的自我監(jiān)控課件
- 五年級下冊數(shù)學優(yōu)秀教學課件《解決問題》人教新課標
- 27清澈的湖水 (2)
- 49稍復雜的分數(shù)乘法應(yīng)用題練習
- 江蘇省高考物理二輪復習專題一力與物體的平衡課件
- 小松鼠找花生課件(教育精品)
- 22跨越海峽的生命橋 (2)
- 人力資源環(huán)境分析
- 《空氣》課件-(省優(yōu))2022年人教版化學課件-2
- 鐵路與城市軌道交通振動與噪聲