自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì).doc_第1頁
自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì).doc_第2頁
自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì).doc_第3頁
自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì).doc_第4頁
自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì).doc_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù) 電 課 程 設(shè) 計(jì) 報(bào) 告題目:自動(dòng)售貨機(jī)的EDA實(shí)現(xiàn)設(shè)計(jì)學(xué) 院: 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí): 電子信息科學(xué)與技術(shù)081 學(xué)生姓名: 何偉偉 組 員: 何穎 指導(dǎo)教師: 張秀娟 目錄摘要 3一、自動(dòng)售貨機(jī)的系統(tǒng)結(jié)構(gòu)41.1自動(dòng)售貨機(jī)的系統(tǒng)結(jié)構(gòu) 41。2自動(dòng)售貨實(shí)現(xiàn)的設(shè)計(jì)要求 5二、自動(dòng)售貨機(jī)的功能介紹 52。1此次設(shè)計(jì)的自動(dòng)售貨機(jī)的功能簡介 52。2實(shí)現(xiàn)自動(dòng)售貨機(jī)的功能的設(shè)計(jì)思路 6三、分步模塊設(shè)計(jì)及波形輔助分析 63。1 Verilog語言簡介 63.2程序變量名稱解釋 63.3商家整體復(fù)位模塊及分析 63.4顧客貨品選擇模擬以及顯示模塊及分析 83。5顧客貨幣選擇以及顯示模塊及分析

2、 93。6投入貨幣不足引起警告準(zhǔn)備找零顯示模塊及分析103.7貨物送出及商家賣貨額累加顯示模塊及分析103.8警告3s或者是按鍵3s后自動(dòng)復(fù)位準(zhǔn)備模塊及分析11四、設(shè)計(jì)仿真 114。1 Modelsim簡介 114.2 完整的程序代碼 12五、附錄 17六、參考文獻(xiàn) 19摘要隨著經(jīng)濟(jì)發(fā)展,21世紀(jì)進(jìn)入信息化,為更好的實(shí)現(xiàn)人們生活水平的提高,生活更好、更便捷、更經(jīng)濟(jì)已經(jīng)成為人們追求的對(duì)象。然而小型自動(dòng)售貨機(jī)就是在這樣的時(shí)代背景下產(chǎn)生的,由于它的操作方便簡潔等優(yōu)越性能很好的符合人們需求,故它很快形成了自己市場,并日益擴(kuò)大。本文也是基于這個(gè)背景下,和讀者一起探討,本文詳細(xì)介紹了自動(dòng)售貨機(jī)系統(tǒng)的方案設(shè)

3、計(jì)、軟件規(guī)劃和編寫,并重點(diǎn)描述了自動(dòng)售貨機(jī)系統(tǒng)的工作原理、系統(tǒng)設(shè)計(jì)、軟件編程的原則和技巧,主要實(shí)現(xiàn)自動(dòng)售貨機(jī)的功能。該系統(tǒng)以Verilog編程為核心,以Modelsim軟件為輔助,程序結(jié)構(gòu)分模塊設(shè)計(jì),故結(jié)構(gòu)清晰,加上仿真器仿真結(jié)果最大程度說明問題,符合課程設(shè)計(jì)要求,并加以解釋與說明。另外,用Verilog編程時(shí).v重要,_tb。v也重要,仿真結(jié)果只能根據(jù)波形圖來說明問題,經(jīng)過多次努力,測試文件已經(jīng)相當(dāng)成熟,很好的滿足了設(shè)計(jì)要求,.v文件穿插文中配合講解的需要,_tb.v(測試文件)在附錄中給出,以供查閱。關(guān)鍵詞:自動(dòng)售貨機(jī) Verilog 仿真一、自動(dòng)售貨機(jī)的系統(tǒng)結(jié)構(gòu)1.1自動(dòng)售貨機(jī)的總體系統(tǒng)

4、結(jié)構(gòu) 自動(dòng)售貨機(jī)是集光、機(jī)、電一體化的獨(dú)立機(jī)構(gòu),它只需要顧客投幣和按購物鍵選擇即可自動(dòng)售貨及退找零錢,一下都是針對(duì)本人具體程序而言,實(shí)際中硬件電路的實(shí)現(xiàn)只要作相應(yīng)的改變即可,按鍵編碼,顯示用7448譯碼再用7段數(shù)碼管顯示即可,其工作程序如下圖售貨機(jī)的工作原理是:(1) 顧客選擇某貨物:只需要按相應(yīng)按鍵即可(用state來模擬) (2)顧客選擇某貨幣:只需要按相應(yīng)按鍵即可(用state_next來模擬)(3)顧客投幣:投幣后按確認(rèn)鍵(用give模擬,sure為確認(rèn)鍵)(4)錢數(shù)判斷:足夠,則找零并送出貨物(送出貨物用goods1、goods2、goods3、goods4來模擬),不足則報(bào)警3s(

5、用warning來模擬)(5)賣貨額累加:每次成功交易之后賣貨額累加(用profit來模擬)(6)系統(tǒng)復(fù)位:包括sure之后3s自動(dòng)復(fù)位和商家整體復(fù)位綜合所述,售貨機(jī)系統(tǒng)可以分為六部分組成,即商家整體復(fù)位模塊及分析、顧客貨品選擇模擬以及顯示模塊及分析、顧客貨幣選擇以及顯示模塊及、投入貨幣不足引起警告準(zhǔn)備找零顯示模塊及分析、貨物送出及商家賣貨額累加顯示模塊及分析、警告3s或者是按鍵3s后自動(dòng)復(fù)位準(zhǔn)備模塊及分析,因?yàn)轭櫩唾徺I時(shí)是一步一步來操作的,故要有一個(gè)等待的過程,為解決上述問題,本文采用為每步制造條件,符合條件則執(zhí)行,不符合則等待,故在Verilog中用wait語句實(shí)現(xiàn),另外,為實(shí)現(xiàn)3s計(jì)時(shí)功

6、能,故引入時(shí)鐘clk(當(dāng)然本文只是示意,滿足功能即可,累計(jì)為5個(gè)時(shí)鐘周期).1。2 自動(dòng)售貨實(shí)現(xiàn)的設(shè)計(jì)要求: (1)設(shè)計(jì)一個(gè)自動(dòng)售貨機(jī),此機(jī)能出售1元、2元、5元、10元的四種商品。出售哪種商品可有顧客按動(dòng)相應(yīng)的一個(gè)按鍵即可,并同時(shí)用數(shù)碼管顯示出此商品的價(jià)格。(2)顧客投入硬幣的錢數(shù)也是有1元、2元、5元、10元四種,但每次只能投入其中的一種硬幣,此操作通過按動(dòng)相應(yīng)的一個(gè)按鍵來模擬,并同時(shí)用數(shù)碼管將投幣額顯示出來。(3)顧客投幣后,按一次確認(rèn)鍵,如果投幣額不足時(shí)則報(bào)警,報(bào)警時(shí)間3秒.如果投幣額足夠時(shí)自動(dòng)送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來模擬),同時(shí)多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯

7、示出來。(4)顧客一旦按動(dòng)確認(rèn)鍵3秒后,自動(dòng)售貨機(jī)即可自動(dòng)恢復(fù)到初始狀態(tài),此時(shí)才允許顧客進(jìn)行下一次購貨操作.(5)售貨機(jī)還應(yīng)具有供商家使用的累加賣貨額的功能,累加的錢數(shù)要用數(shù)碼管顯示,顯示2位即可。此累加器只有商家可以控制清零。(6)此售貨機(jī)要設(shè)有一個(gè)由商家控制的整體復(fù)位控制 二、自動(dòng)售貨機(jī)的功能介紹2.1 此次設(shè)計(jì)的自動(dòng)售貨機(jī)的功能簡介基本原理:硬件實(shí)現(xiàn)中,顧客首先按鍵來選擇自己想購買的貨物,自動(dòng)售貨機(jī)會(huì)用數(shù)碼管顯示出來,然后顧客再選擇貨幣種類,自動(dòng)售貨機(jī)也用數(shù)碼管顯示出來,顧客投幣,自動(dòng)售貨機(jī)通過貨幣識(shí)別器來識(shí)別貨幣,顧客按確認(rèn)鍵3s之后,自動(dòng)售貨機(jī)馬上做出判斷,投入的錢大于價(jià)格,則送出此

8、貨物,并找零,否則就會(huì)報(bào)警持續(xù)3s,自動(dòng)售貨機(jī)自動(dòng)恢復(fù)初始狀態(tài)等待為下一顧客服務(wù),同時(shí),它還會(huì)為商家做賣貨額累加功能,并且這顯示只能由商家來清零(商家通過整體復(fù)位來清零)那么,基于硬件電路,軟件來實(shí)現(xiàn)的時(shí)候就盡量模仿此按鍵、顯示部分、以及各功能,在本文中用state、state_next、sure、give、clk、reset、goods1、goods2、goods3、goods4、j、display、profit、i、warning、readya、readyb、readyc、readyd、readye、readyf來實(shí)現(xiàn)模擬,并且這些變量名稱通俗易懂,并且程序已全部給出.2。2實(shí)現(xiàn)自動(dòng)售貨機(jī)

9、的功能的設(shè)計(jì)思路 變量選擇:貨物選擇有四種,貨幣選擇有四種,這樣可以用編碼形式設(shè)置成兩位即可,但是考慮到與state作為引發(fā)條件,故兩位不夠,為了簡便,本文用四位獨(dú)熱碼編碼方式;設(shè)計(jì)要求三次顯示出貨物選擇、貨幣選擇、找零顯示,當(dāng)然設(shè)置成三個(gè)數(shù)碼管肯定可以,但是為來節(jié)約成本,就用一個(gè)兩位的數(shù)碼管顯示即可,但此時(shí)要求數(shù)碼管時(shí)分時(shí)使用;賣貨額累加顯示用八位的,以便在硬件中方便用數(shù)碼管顯示(當(dāng)然需要7448顯示譯碼器);另外售出的貨物用四個(gè)數(shù)表示,送出的就為1,此功能與實(shí)際要求中四個(gè)不同顏色的指示燈顯示匹配;實(shí)際要求還有說3s,故得引入時(shí)鐘信號(hào),但實(shí)現(xiàn)此功能只需要示意即可,用5個(gè)時(shí)鐘周期示意. 程序構(gòu)

10、建:本文模塊是分步實(shí)現(xiàn),所以得借助中間變量來引發(fā)下一次操作,一共六步,大概需要六個(gè)變量,結(jié)合引發(fā)功能,故用wait語句來實(shí)現(xiàn),當(dāng)wait()中括號(hào)內(nèi)的條件滿足則執(zhí)行,否則循環(huán)等待,按照此想法,故每個(gè)子模塊中都用到wait語句;另外,此程序明顯要求多路選擇,故用case語句,滿足case()中對(duì)應(yīng)條件,則執(zhí)行對(duì)應(yīng)的語句,實(shí)現(xiàn)對(duì)應(yīng)的功能,此過程中還得用到輔助變量,本文可用j來實(shí)現(xiàn),為case語句結(jié)合使用;當(dāng)然if、else語句少不了;阻塞語句和非阻塞語句使用,他們只有是立即賦值還是等到下一時(shí)鐘上升沿來到時(shí)再賦值,本文因?yàn)榭紤]到實(shí)時(shí)性,故主要用到阻塞賦值。 測試文件生成:本來嚴(yán)格的需要用自動(dòng)生成測試

11、文件,這樣可靠性更高,但是結(jié)合本文具體設(shè)計(jì)而言,手工寫測試文件足已(程序代碼不是很大),考慮到之前.v文件每個(gè)模塊基本上都用到時(shí)鐘的上升沿,這個(gè)引發(fā)條件就迫使測試文件中state和state_next中一直有效,等到sure按下3s后再清零,這使得硬件實(shí)現(xiàn)中得考慮這問題(用D觸發(fā)器等們實(shí)現(xiàn)鎖存等功能)三、分步分模塊設(shè)計(jì)及波形輔助分析3。1 Verilog語言簡介:Verilog HDL 是目前應(yīng)用最為廣泛的硬件描述語言,Verilog HDL可以用來進(jìn)行各種層次的邏輯設(shè)計(jì),也可以進(jìn)行數(shù)字系統(tǒng)的邏輯綜合,仿真驗(yàn)證和時(shí)序分析等.Verilog HDL適合算法級(jí),寄存器級(jí),邏輯級(jí),門級(jí)和版圖級(jí)等各個(gè)

12、層次的設(shè)計(jì)和描述Verilog HDL進(jìn)行設(shè)計(jì)最大的優(yōu)點(diǎn)是其工藝無關(guān)性這使得工程師在功能設(shè)計(jì),邏輯驗(yàn)證階段可以不必過多考慮門級(jí)及工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需根據(jù)系統(tǒng)設(shè)計(jì)的要求施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路Verilog HDL是一種硬件描述語言(hardware description language),為了制作數(shù)字電路而用來描述ASICs和FPGA的設(shè)計(jì)之用。Verilog 的設(shè)計(jì)者想要以 C 編程語言為基礎(chǔ)設(shè)計(jì)一種語言,可以使工程師比較容易學(xué)習(xí)。Verilog 是由en:Gateway Design Automation公司于大約1984年開始發(fā)展.Gateway Design Au

13、tomation公司后來被 Cadence Design Systems于1990年所購并.3.2程序變量名稱解釋clk: 時(shí)鐘信號(hào),主要是為后面3s計(jì)時(shí)用;state: 顧客貨物選擇按鍵模擬,1000表示選擇1元貨物,0100表示選擇2元貨物,0010表示選擇5元貨物,0001表示選擇10元貨物;state_next: 顧客貨幣種類選擇模擬,1000表示選擇1元貨幣,0100表示選擇2元貨幣,0010表示選擇5元貨幣,0001表示選擇10元貨幣sure: 確認(rèn)鍵(按照要求是,3s后自動(dòng)售貨機(jī)自動(dòng)恢復(fù)到初始狀態(tài))reset: 商家整體復(fù)位,按鍵后,全都清零,包括賣貨額give: 顧客投入的錢數(shù)

14、goods1、goods2、goods3、goods4、分別表示出倉1元的貨物2元的貨物5元的貨物10元的貨物warning: 模擬投入的錢數(shù)不夠的發(fā)出的警告信號(hào)display: 分時(shí)顯示顧客選擇貨物種類、投入的錢數(shù)、找回的錢數(shù)profit: 顯示商家賣貨額,具有累加功能(只能夠由商家清零)i: 中間變量,輔助用來計(jì)數(shù),時(shí)鐘脈沖個(gè)數(shù),從而實(shí)現(xiàn)計(jì)時(shí)功能j: 中間變量,輔助用來表明貨物的種類readya、readyb、readyc、readyd、readye、readyf 都為中間變量,成為每個(gè)模塊執(zhí)行的條件3.3商家整體復(fù)位模塊及分析: 當(dāng)商家輸入低電平時(shí),立即實(shí)現(xiàn)整體復(fù)位功能,本文用reset

15、=0時(shí)模擬; always (posedge clk ) if(!reset) begin display=4'b0000; profit=8'b00000000; j=3'b000; warning=1b0; goods1=1b0; goods2=1b0; goods3=1b0; goods4=1b0; readya=1'b0; readyb=1'b0; readyc=1'b0; readyd=1'b0; readye=1'b0; readyf=1'b0; end 在_tb.v文件中,在150000ps時(shí)sure置0,當(dāng)

16、下一個(gè)時(shí)鐘上升沿到來時(shí),輸出都置零,結(jié)果圖中所有輸出都為0,滿足要求3。4顧客貨品選擇模擬以及顯示模塊及分析:顧客選擇貨物時(shí)state為1000時(shí)表示選了1元貨物、0100時(shí)表示選擇2元貨物、0010表示選擇5元貨物、0001表示選擇10元貨物always (posedge clk) /顧客貨品選擇模擬以及顯示if(state!=4'b0000)beginreadya<=1'b1;case(state)4b1000: display=4b0001;4'b0100: display=4b0010;4'b0010: display=4b0101;4'b

17、0001: display=4'b1010;endcase end右上第一幅圖中:當(dāng)state為0000時(shí),即此時(shí)無按鍵按下,故無顧客購買,結(jié)果無顯示,如圖,state為0000時(shí),當(dāng)下一時(shí)鐘上升沿到來時(shí),display就為0000,故滿足要求;右上第二幅圖中:當(dāng)state為1000時(shí),即顧客想購買1元貨物,按要求,要顯示為1,圖中當(dāng)下一時(shí)鐘上升沿到來時(shí),display就display為0001,圖滿足要求。3.5顧客貨幣選擇以及顯示模塊及State_next表示貨幣選擇,即1000時(shí)表示選了1元貨幣、0100時(shí)表示選擇2元貨幣、0010表示選擇5元貨幣、0001表示選擇10元貨幣,其

18、中中間變量j則分別對(duì)應(yīng)的表示成001、010、100為后來profit累加時(shí)做準(zhǔn)備always (posedge clk or posedge readya) /顧客貨幣選擇以及顯示beginwait(readya) begin case(state_next)4b1000: begindisplay=4'b0001;j=3'b001;readyb=1'b1;end4b0100: begindisplay=4'b0010;j=3b010;readyb=1b1;end4'b0010: begindisplay=4'b0101;j=3b011;rea

19、dyb=1b1;end4b0001: begindisplay=4'b1010;j=3'b100;readyb=1'b1;enddefault: begindisplay=4'b0000;j=3'b000;readyb=1'b0;end endcaseend end 右上第一幅圖中:在18000時(shí)state_next為0001,表示顧客選擇1元硬幣,按要求顯示的應(yīng)該為0001,在圖中,當(dāng)下一時(shí)鐘上升沿到來時(shí)display就為0001,故滿足要求。3。6投入貨幣不足引起警告準(zhǔn)備找零顯示模塊及分析顧客投幣確定后,其錢數(shù)就會(huì)被自動(dòng)售貨機(jī)來計(jì)算比較,足夠

20、時(shí)就準(zhǔn)備送出貨物并把相應(yīng)的指示燈置1,否則就準(zhǔn)備警告always (posedge clk or posedge readyb ) /投入貨幣不足引起警告準(zhǔn)備找零顯示beginwait(readyb)beginreadya=1b0;if(sure)beginreadyc=1b1;if(givedisplay)begini=5;readyd=1'b1;endelsebegindisplay=givedisplay;readye=1'b1; endendend右上圖中,give為0001,即投入了1元(想買1元貨物,選擇了1元貨幣),此時(shí)display為0001,表示為投入了1元錢

21、,故正確;等到下一時(shí)鐘上升沿到來時(shí)display為0000,因?yàn)榇藭r(shí)display顯示的是找回的錢,當(dāng)然是找回0元,也正確3。7貨物送出及商家賣貨額累加顯示模塊及分析:顧客選擇貨物,選擇貨幣,給錢,再判斷給的錢是否滿足價(jià)格要求,成功則要送出相應(yīng)的貨物always (posedge clk) /貨物送出及商家賣貨額累加顯示beginwait(readye)begincase(j)3'b001: begingoods1=1'b1;profit=profit+8b00000001; end3'b010: begingoods2=1b1;profit=profit+8b0000

22、0010; end3b011: begingoods3=1'b1;profit=profit+8b00000101; end3'b100: begingoods4=1'b1;profit=profit+8b00001010; endendcase endend由上圖所示,此顧客此時(shí)選擇了1元貨物,選擇者1元貨幣,投入了1元錢,故交易可認(rèn)為成功,找回0元,但是此時(shí)必須送出1元貨物,圖中也表示goods1為1,就是這個(gè)意思,滿足設(shè)計(jì)要求另外profit由00000011變成00000100說明賣貨額多了1元,對(duì)應(yīng)的前面顧客也是選擇的1元貨物,選擇1元貨幣,給了1元錢,符合設(shè)

23、計(jì)要求3.8警告3s或者是按鍵3s后自動(dòng)復(fù)位準(zhǔn)備模塊及分析:不足警告3s,足夠的話就送出貨物,當(dāng)然此操作必須在sure置1之后3s立即執(zhí)行always (posedge clk ) /3s警告或者是按鍵3s后自動(dòng)復(fù)位準(zhǔn)備下一位顧客操作begin wait(readyc)beginreadyb=1'b0;if(i>=1)beginif(readyd)beginwarning=1b1;i=i1;endelsei=i+0;endelsebeginreadyd=1b0;readyc=1'b0;readyf=1b1;warning=1'b0;goods1=1b0;goods

24、2=1'b0;goods3=1b0;goods4=1'b0;endendend 右上第一圖所示:顧客選擇10元貨物,選擇10元貨幣,但是只是給了5元,故不夠,此時(shí)要警告3s,而圖中warning等于1持續(xù)3s;右上第二圖:顧客顧客選擇了1元貨物,選擇1元貨幣,給了1元錢,交易可認(rèn)為成功,sure之后,所有的輸出都為0,故滿足要求 總結(jié):通過波形圖,再結(jié)合每個(gè)模塊里分析,各模塊都符合要求,綜合起來,故滿足設(shè)計(jì)要求,但此程序也有不足的地方較為死板,一步一步,很機(jī)械,但是作為軟件模擬已經(jīng)足夠,要想更進(jìn)一步實(shí)現(xiàn)硬件電路并仿真的話就要稍微修改,不但滿足設(shè)計(jì)要求,還要滿足可靠性、穩(wěn)定性四、

25、設(shè)計(jì)仿真4。1 Modelsim簡介:Mentor公司的Modelsim是業(yè)界最優(yōu)秀的HDL語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無關(guān),便于保護(hù)IP核,個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段,是FPGA/ASIC設(shè)計(jì)的首選仿真軟件.主要特點(diǎn):RTL和門級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺(tái)跨版本仿真;單內(nèi)核VHDL和Verilog混合仿真源代碼模板和助手,項(xiàng)目管理集成性能分析、波形分析、代碼覆蓋、數(shù)據(jù)流Chas

26、eX、Signal Spy、虛擬對(duì)象Virtual Object、Memory窗口、Assertion窗口、源碼窗口顯示信號(hào)值、信號(hào)條件斷點(diǎn)等眾多調(diào)試功能C和Tcl/Tk接口,C調(diào)試對(duì)SystemC的直接支持,和HDL任意混合支持SystemVerilog的設(shè)計(jì)功能對(duì)系統(tǒng)級(jí)描述的最全面支持,SystemVerilog, SystemC, PSL; ASIC Sign off。4.2完整的程序代碼timescale 1ns/100psmodule AUTOTELLER( clk,state,state_next,sure,reset,give,goods1,goods2,goods3,goods

27、4,warning,display,profit);input clk,state,state_next,sure,reset,give;output goods1,goods2,goods3,goods4,warning,display,profit;wire clk;wire reset; wire sure;wire3:0 state;wire3:0 state_next;wire3:0 give;reg2:0 j;reg readya;reg readyb;reg readyc;reg readyd;reg readye;reg readyf;integer i;reg goods1;

28、reg goods2;reg goods3;reg goods4;reg warning;reg3:0 display;reg7:0 profit; always (posedge clk ) / 商家整體復(fù)位 if(!reset) begin display=4'b0000; profit=8'b00000000; j=3b000; warning=1b0; goods1=1b0; goods2=1'b0; goods3=1b0; goods4=1'b0; readya=1b0; readyb=1b0; readyc=1b0; readyd=1b0; read

29、ye=1'b0; readyf=1'b0; endalways (posedge clk) /顧客貨品選擇模擬以及顯示 if(state!=4'b0000) begin readya=1'b1; case(state) 4'b1000: display=4'b0001; 4b0100: display=4'b0010; 4b0010: display=4b0101; 4'b0001: display=4'b1010; endcase endalways (posedge clk or posedge readya) /顧客

30、貨幣選擇以及顯示 begin wait(readya) begin case(state_next) 4'b1000: begin display=4'b0001; j=3b001; readyb=1b1; end 4'b0100: begin display=4'b0010; j=3'b010; readyb=1b1; end 4'b0010: begin display=4b0101; j=3b011; readyb=1b1; end 4b0001: begin display=4'b1010; j=3'b100; ready

31、b=1'b1; end default: begin display=4'b0000; j=3'b000; readyb=1b0; end endcase end end always (posedge clk or posedge readyb ) /投入貨幣不足引起警告準(zhǔn)備找零顯示 begin wait(readyb) begin readya=1'b0; if(sure) begin readyc=1'b1; if(givedisplay) begin i=5; readyd=1b1; end else begin display=givedisp

32、lay; readye=1'b1; end end end endalways (posedge clk) /貨物送出及商家賣貨額累加顯示 begin wait(readye) begin case(j) 3'b001: begin goods1=1'b1; profit=profit+8'b00000001; end 3b010: begin goods2=1b1; profit=profit+8'b00000010; end 3'b011: begin goods3=1b1; profit=profit+8'b00000101; en

33、d 3b100: begin goods4=1b1; profit=profit+8'b00001010; end endcase end endalways (posedge clk ) /3s警告或者是按鍵3s后自動(dòng)復(fù)位準(zhǔn)備下一位顧客操作 begin wait(readyc) begin readyb=1b0; if(i>=1) begin if(readyd) begin warning<=1'b1; i=i-1; end else i=i+0; end else begin readyd=1'b0; readyc=1b0; readyf=1b1; w

34、arning=1b0; goods1=1b0; goods2=1b0; goods3=1'b0; goods4=1'b0; end end end always (posedge clk) begin wait(readyf) begin readye=1b0; end end endmodule五、附錄_tb。v(測試文件)完整程序:timescale 1ns/100psmodule at;reg clk;reg reset; reg sure;reg3:0 give;reg3:0 state;reg3:0 state_next;wire readya;wire redayb;wire readyc;wire readyd;wire readye;wire readyf;wire2:0 j;wire goods1;wire goods2;wire goods3;wire goods4;wire warning;wire3:0 display;wire7:0 profit;AUTOTELLER AUTOTELLER_test(clk,state,state_next,sure,reset,giv

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論