有限狀態(tài)機(jī)課程設(shè)計(jì)報(bào)告 EDASoda Machine 自動(dòng)售貨機(jī)
《有限狀態(tài)機(jī)課程設(shè)計(jì)報(bào)告 EDASoda Machine 自動(dòng)售貨機(jī)》由會(huì)員分享,可在線閱讀,更多相關(guān)《有限狀態(tài)機(jī)課程設(shè)計(jì)報(bào)告 EDASoda Machine 自動(dòng)售貨機(jī)(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、電子通信07級(jí)EDA課程實(shí)驗(yàn)報(bào)告 1 有限狀態(tài)機(jī) 有限狀態(tài)機(jī)(Finite State Machine)是一種具有內(nèi)部記憶的抽象機(jī)器模型,是時(shí)序電路的一種,通過(guò)有限狀態(tài)機(jī)課實(shí)現(xiàn)高效率高可靠邏輯控制。 根據(jù)輸出與輸入關(guān)系、系統(tǒng)狀態(tài)的關(guān)系,有限狀態(tài)機(jī)又可以分為Moore型有限狀態(tài)機(jī)和Mealy型有限狀態(tài)機(jī)。Moore型狀態(tài)機(jī)的輸出信號(hào)只于當(dāng)前的狀態(tài)有關(guān);Mealy型狀態(tài)機(jī)是輸出信號(hào)不僅與當(dāng)前的狀態(tài)有關(guān),還與輸入信號(hào)有關(guān)。 Mealy機(jī)的示意圖如圖二所示: 圖二Mealy機(jī)的示意圖 Moore機(jī)的示意圖如圖三所示: 圖三 Moore機(jī)的示意圖 Moore型有限狀態(tài)機(jī)和Meal
2、y型有限狀態(tài)機(jī)的區(qū)別: ● 在Moore機(jī)中,輸出的時(shí)鐘活動(dòng)沿到達(dá)后的幾個(gè)門電路的延遲時(shí)間之后即到達(dá),并且在該時(shí)鐘周期的剩余時(shí)間內(nèi)保持不變,即使輸入在該時(shí)鐘周期內(nèi)發(fā)生變化,輸出值也保持不變。然而,因?yàn)檩敵雠c當(dāng)前的輸入無(wú)關(guān),當(dāng)前輸出產(chǎn)生的任何效果將延遲到下一個(gè)時(shí)鐘周期。Moore機(jī)的優(yōu)點(diǎn)是將輸出與輸入分隔開。 ● 在Mealy機(jī)中,因?yàn)檩敵鍪禽斎氲暮瘮?shù),如果輸入改變,則輸出可以在下一個(gè)時(shí)鐘周期的中間發(fā)生改變。這使得Mealy機(jī)比Moore機(jī),對(duì)輸入變化的響應(yīng)要早一個(gè)時(shí)鐘周期,一旦輸入信號(hào)或狀態(tài)發(fā)生變化,輸出信號(hào)隨著輸入信號(hào)變化。 ● 實(shí)現(xiàn)同樣功能,Moore機(jī)要比Mealy機(jī)需要更多
3、的狀態(tài)。 通過(guò)分析本次實(shí)驗(yàn),利用Mealy機(jī)更加容易理解,并且使用Moore會(huì)使用更多的狀態(tài),所以本次實(shí)驗(yàn)使用Mealy型有限狀態(tài)機(jī)。 2 Soda Machine機(jī)的設(shè)計(jì) 2.1 Soda Machine機(jī)的狀態(tài)轉(zhuǎn)換圖 Soda Machine機(jī)的狀態(tài)轉(zhuǎn)換圖如圖四所示。 圖四Soda Machine機(jī)的狀態(tài)轉(zhuǎn)換圖 圖中共有10個(gè)狀態(tài),為ST0—ST9。在狀態(tài)轉(zhuǎn)換圖中00代表無(wú)輸入,11代表輸入Q(25c),10代表輸入D(10c), 01代表輸入N(5c)。在輸出中000代表無(wú)輸出,001代表輸出DN(5C),010代表輸出的DD(10C),100代表輸出DC(1 can
4、)。 ST0是初始態(tài)。當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持STO狀態(tài)不變。當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST1狀態(tài),無(wú)輸出(即000);當(dāng)投入10分時(shí)(即10),跳轉(zhuǎn)到S2狀態(tài),無(wú)輸出(即000);當(dāng)投入25分時(shí)(即11)跳轉(zhuǎn)到S5狀態(tài),無(wú)輸出(即000)。 ST1是有投入5分后的狀態(tài)。當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持ST1狀態(tài)不變, 無(wú)輸出(即000);當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST2狀態(tài),無(wú)輸出(即000);當(dāng)投入10分(即10)時(shí),跳轉(zhuǎn)到ST3狀態(tài), 無(wú)輸出(即000);當(dāng)投入25分(即11)時(shí),跳轉(zhuǎn)到ST0狀態(tài),輸出一瓶飲料(即100)。 ST2是投入10分后的狀態(tài)。
5、當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持ST2狀態(tài)不變, 無(wú)輸出(即000);當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST3狀態(tài),無(wú)輸出(即000);當(dāng)投入10分(即10)時(shí),跳轉(zhuǎn)到ST4狀態(tài), 無(wú)輸出(即000);當(dāng)投入25分(即11)時(shí),跳轉(zhuǎn)到ST6狀態(tài),輸出一瓶飲料(即100),在下一個(gè)時(shí)鐘到來(lái)ST6再跳轉(zhuǎn)到ST0,輸出5分(即001)。這樣可保證每個(gè)時(shí)鐘只輸出一個(gè)(飲料或10分或5分)。 ST3是投入15分后的狀態(tài)。當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持ST3狀態(tài)不變, 無(wú)輸出(即000);當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST4狀態(tài),無(wú)輸出(即000);當(dāng)投入10分(即10)時(shí),跳轉(zhuǎn)到ST5狀態(tài),
6、 無(wú)輸出(即000);當(dāng)投入25分(即11)時(shí),跳轉(zhuǎn)到ST7狀態(tài),輸出一瓶飲料(即100),在下一個(gè)時(shí)鐘到來(lái)ST7再跳轉(zhuǎn)到ST0,輸出10分(即010)。輸出正確,同樣可保證每個(gè)時(shí)鐘只輸出一個(gè)(飲料或10分或5分)。 ST4是投入20分后的狀態(tài)。當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持ST4狀態(tài)不變, 無(wú)輸出(即000);當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST5狀態(tài),無(wú)輸出(即000);當(dāng)投入10分(即10)時(shí),跳轉(zhuǎn)到ST0狀態(tài), 輸出一瓶飲料(即100);當(dāng)投入25分(即11)時(shí),跳轉(zhuǎn)到ST8狀態(tài),輸出一瓶飲料(即100),在下一個(gè)時(shí)鐘到來(lái)ST8再跳轉(zhuǎn)到ST6,輸出10分(即010),在下一個(gè)時(shí)
7、鐘到來(lái)ST6再跳轉(zhuǎn)到ST0,輸出10分(即001)。輸出正確,同樣可保證每個(gè)時(shí)鐘只輸出一個(gè)(飲料或10分或5分)。 ST5是投入25分后的狀態(tài)。當(dāng)沒(méi)有硬幣投入時(shí),狀態(tài)機(jī)始終保持ST3狀態(tài)不變, 無(wú)輸出(即000);當(dāng)投入5分(即01)時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到ST0狀態(tài),輸出一瓶飲料(即100);當(dāng)投入10分(即10)時(shí),跳轉(zhuǎn)到ST6狀態(tài), 輸出一瓶飲料(即100),在下一個(gè)時(shí)鐘到來(lái)ST6再跳轉(zhuǎn)到ST0,輸出5分(即001);當(dāng)投入25分(即11)時(shí),跳轉(zhuǎn)到ST9狀態(tài),輸出一瓶飲料(即100),在下一個(gè)時(shí)鐘到來(lái)ST9再跳轉(zhuǎn)到ST7,輸出10分(即010),在下一個(gè)時(shí)鐘到來(lái)ST7再跳轉(zhuǎn)到ST0,輸出10
8、分(即010)。輸出正確,同樣可保證每個(gè)時(shí)鐘只輸出一個(gè)(飲料或10分或5分)。 2.2 Soda Machine機(jī)的狀態(tài)分配與編碼 2.2.1狀態(tài)編碼方式 在狀態(tài)機(jī)的設(shè)計(jì)中,對(duì)狀態(tài)編碼有多種,常用編碼的方式有:有限狀態(tài)機(jī)中常用的編碼主要有二進(jìn)制編碼、格雷碼和One-Hot編碼。 表1 二進(jìn)制編碼、格雷碼和One-Hot編碼的比較 比較 二進(jìn)制編碼 格雷碼編碼 一位熱碼編碼 觸發(fā)器數(shù)量 少 少 多 時(shí)序條件 一般 好 最好 非法狀態(tài) 少 少 多 譯碼電路 復(fù)雜 復(fù)雜 簡(jiǎn)單 下面是對(duì)這三種編碼方式的仿真。 2.2.2 一位熱碼編碼方式 由一位
9、熱碼編碼形成的RTL如圖五所示。 圖五 一位熱碼編碼形成的RTL 2.2.2 二進(jìn)制編碼方式 二進(jìn)制編碼代碼為: 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"; 由二進(jìn)制碼形成的RTL如圖六所示。 圖六 二進(jìn)制碼形成的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個(gè)圖可知:采用一位熱碼編碼,雖然這種方法的用的的觸發(fā)器不是最少,但是可以使次態(tài)邏輯變得簡(jiǎn)單,由于一般的可編程器件,觸發(fā)器的比率高于組合邏輯,所以采用一位熱碼編碼的系統(tǒng)占用的資源反而少于采用最少觸發(fā)器的系統(tǒng)。因此采用一位熱碼編碼的編碼方式。 2.2.4 對(duì)輸入信號(hào)編碼 兩位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)
14、行編碼的RTL如圖八所示,及00代表無(wú)輸入,01代表輸入為5分,10代表輸入10分,11代表輸入25分。 圖八 兩位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)行編碼的RTL 三位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)行編碼的RTL如圖所示,及000代表無(wú)輸入,001代表輸入為5分,010代表輸入10分,100代表輸入25分。 圖九 三位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)行編碼的RTL 從上面的兩個(gè)RTL圖中可以看出,用兩位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)行編碼電路簡(jiǎn)單,并且完全避免的輸入的非法狀態(tài),所以使用兩位二進(jìn)制數(shù)對(duì)輸入信號(hào)進(jìn)行編碼。 2.3 Soda Machine機(jī)狀態(tài)最少化 狀態(tài)最少化采用的方法一般是手動(dòng)法,只有當(dāng)兩個(gè)狀態(tài)在相同
15、的輸入條件下,有相同的次態(tài)和輸出,那么這兩個(gè)狀態(tài)就可以合并,狀態(tài)最少化是基于觀察完成的。 2.3.1 Soda Machine機(jī)狀態(tài)轉(zhuǎn)換及輸出表 根據(jù)圖寫出狀態(tài)轉(zhuǎn)換及輸出表,見(jiàn)表2。 表2 Soda Machine機(jī)的狀態(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 沒(méi)有輸入,次態(tài)為ST0 0 0 1 ST7 沒(méi)有輸入,次態(tài)為ST0 0 1 0 ST8 沒(méi)有輸入,次態(tài)為ST9 0 1 0 ST9 沒(méi)有輸入,次態(tài)為ST0 0 1 0 ST10 沒(méi)有輸入,次態(tài)為ST0 0 0 1 ST11 沒(méi)有輸入,次態(tài)為ST12 0 1 0 ST12 沒(méi)有輸入,次態(tài)為ST0 0 1 0 注:ST2跳轉(zhuǎn)到ST6的過(guò)程中
17、,輸出一瓶飲料;ST3跳轉(zhuǎn)到ST7的過(guò)程中,輸出一瓶飲料;ST4跳轉(zhuǎn)到ST8的過(guò)程中,輸出一瓶飲料;ST5跳轉(zhuǎn)到ST6的過(guò)程中,輸出一瓶飲料;ST5跳轉(zhuǎn)到ST9的過(guò)程中,輸出一瓶飲料。 2.3.2 Soda Machine機(jī)的狀態(tài)合并 根據(jù)上面的狀態(tài)轉(zhuǎn)換表及輸出表,基于觀察,發(fā)現(xiàn)st6、st10的次態(tài)轉(zhuǎn)移和輸出完全相同,st7、st9、st12的次態(tài)轉(zhuǎn)移和輸出完全相同,因此可以將這幾個(gè)狀態(tài)進(jìn)行合并,見(jiàn)表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 沒(méi)有輸入,次態(tài)為ST0 0 0 1 ST7 沒(méi)有輸入,次態(tài)為ST0 0 1 0 2.4 Soda Machine機(jī)的VHDL語(yǔ)言
19、 2.4.1 實(shí)體設(shè)計(jì) ENTITY Soda IS PORT (CLK ,RESET:IN STD_LOGIC;--時(shí)鐘、復(fù)位信號(hào) STATE_INPUTS:IN STD_LOGIC_VECTOR (0 TO 1);--輸入信號(hào) COMB_OUTPUTS:OUT STD_LOGIC_VECTOR (0 TO 2));--輸出信號(hào) END Soda; 2.4.2 結(jié)構(gòu)體設(shè)計(jì)(部分代碼) 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機(jī)的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的時(shí)序仿真 Soda Machine的時(shí)序仿真圖如圖十二所示: 圖十二 Soda Machine的時(shí)序仿真圖 時(shí)序邏輯說(shuō)明:復(fù)位信號(hào)后,狀態(tài)為ST0;連續(xù)來(lái)兩個(gè)時(shí)鐘,每次輸入25分,第四個(gè)時(shí)鐘輸出一瓶飲料,第五個(gè)時(shí)鐘輸出10分,第六個(gè)時(shí)鐘輸出10分。符合邏輯設(shè)計(jì)要求。 Soda Machine的時(shí)序仿真圖如圖十三所示: 圖十三Soda Machine的時(shí)序仿真圖 時(shí)序邏輯說(shuō)明:復(fù)位信號(hào)后,狀態(tài)為ST0;第兩個(gè)時(shí)鐘,輸入25分,第三個(gè)時(shí)鐘輸入10分,即共輸入35分,第四個(gè)時(shí)鐘輸出一瓶飲料,第五個(gè)時(shí)鐘輸出5分。每個(gè)時(shí)鐘輸出一個(gè),符合邏輯設(shè)計(jì)要求。 3 結(jié)束語(yǔ) 通過(guò)本次實(shí)驗(yàn),對(duì)EDA技術(shù)和VHDL語(yǔ)言有了更深的了解和認(rèn)識(shí),會(huì)利用Quartus II對(duì)設(shè)計(jì)電路進(jìn)行功能仿真、時(shí)序仿真和優(yōu)化,掌握了設(shè)計(jì)有限狀態(tài)機(jī)的方法。 13
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Storytime (2)
- 【四清導(dǎo)航】秋八年級(jí)數(shù)學(xué)上冊(cè) 3.3 一元一次不等式(第3課時(shí))課件 (新版)浙教版
- 海淀區(qū)域P4P實(shí)操診斷課件
- 三年級(jí)記事作文指導(dǎo)
- 醫(yī)院內(nèi)感染的預(yù)防和控制
- 機(jī)械設(shè)計(jì)第十章習(xí)題
- 華泰汽車“全心服務(wù)_貼心關(guān)懷”管理知識(shí)分析方案
- Unit 11 Lesson 2 What's the matter 課件 1
- 創(chuàng)業(yè)大賽設(shè)計(jì)中財(cái)務(wù)分析方法與技巧
- 從現(xiàn)在開始課件 (4)(精品)
- 蛋白質(zhì)促降解與氨基酸代謝
- (精品)電視原理第1章1
- 術(shù)中病情觀察小講課
- 日系汽車研發(fā)質(zhì)量管控
- 6Sigma的管理理論(ppt 30頁(yè))