版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告 書</p><p> 所屬課程名稱 《電子(通信)系統(tǒng)設(shè)計(jì)》 </p><p> 題 目 自動售貨機(jī)系統(tǒng)設(shè)計(jì) </p><p> 分 院 電 信 分 院 </p><p> 專業(yè)班
2、級 09級電信綜合班 </p><p> 學(xué) 號 </p><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師 </p&g
3、t;<p> 2012 年 12 月 28 日 </p><p> 課 程 設(shè) 計(jì)( 論 文 )任 務(wù) 書</p><p> 專 業(yè) 09通信 班 級 1班 姓名 朱文斌 </p><p> 一、課程設(shè)計(jì)(論文)題目 自動售貨機(jī)系統(tǒng)設(shè)計(jì) </p><p
4、> 二、課程設(shè)計(jì)(論文)工作:自 2012 年12 月 17 日起至 2012 年 12 月 28 日止。</p><p> 三、課程設(shè)計(jì)(論文)的內(nèi)容要求:</p><p> 1)設(shè)計(jì)一個自動售貨機(jī),此機(jī)能出售1元、2元、5元、10元的四種商品。出售哪種商品可有顧客按動相應(yīng)的一個按鍵即可,并同時用數(shù)碼管顯示出此商品的價(jià)格。</p><p> 2)顧客
5、投入硬幣的錢數(shù)也是有1元、2元、5元、10元四種,但每次只能投入其中的一種硬幣,此操作通過按動相應(yīng)的一個按鍵來模擬,并同時用數(shù)碼管將投幣額顯示出來。</p><p> 3)顧客投幣后,按一次確認(rèn)鍵,如果投幣額不足時則報(bào)警,報(bào)警時間3秒(可用點(diǎn)陣模擬報(bào)警)。如果投幣額足夠時自動送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示來模擬),同時多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來。</p><p&g
6、t; 4)顧客一旦按動確認(rèn)鍵3秒后,自動售貨機(jī)即可自動恢復(fù)到初始狀態(tài),此時才允許顧客進(jìn)行下一次購貨操作。</p><p> 5)售貨機(jī)還應(yīng)具有供商家使用的累加賣貨額的功能,累加的錢數(shù)要用數(shù)碼管顯示,顯示2位即可。此累加器只有商家可以控制清零。</p><p><b> 目 錄</b></p><p> 課程設(shè)計(jì)內(nèi)容及要求........
7、................2</p><p> 程序設(shè)計(jì)目的..............................5</p><p> 程序?qū)崿F(xiàn)思路..............................6</p><p> 程序清單(或正文)........................8</p><p> 課程設(shè)
8、計(jì)心得.............................15</p><p> 參考文獻(xiàn).................................16</p><p><b> 程序設(shè)計(jì)目的</b></p><p> 1)設(shè)計(jì)一個自動售貨機(jī),此機(jī)能出售1元、2元、5元、10元的四種商品。出售哪種商品可有顧客按動相應(yīng)的一個按
9、鍵即可,并同時用數(shù)碼管顯示出此商品的價(jià)格。</p><p> 2)顧客投入硬幣的錢數(shù)也是有1元、2元、5元、10元四種,但每次只能投入其中的一種硬幣,此操作通過按動相應(yīng)的一個按鍵來模擬,并同時用數(shù)碼管將投幣額顯示出來。</p><p> 3)顧客投幣后,按一次確認(rèn)鍵,如果投幣額不足時則報(bào)警,報(bào)警時間3秒(可用點(diǎn)陣模擬報(bào)警)。如果投幣額足夠時自動送出貨物(送出的貨物用相應(yīng)不同的指示燈顯示
10、來模擬),同時多余的錢應(yīng)找回,找回的錢數(shù)用數(shù)碼管顯示出來。</p><p> 4)顧客一旦按動確認(rèn)鍵3秒后,自動售貨機(jī)即可自動恢復(fù)到初始狀態(tài),此時才允許顧客進(jìn)行下一次購貨操作。</p><p> 5)售貨機(jī)還應(yīng)具有供商家使用的累加賣貨額的功能,累加的錢數(shù)要用數(shù)碼管顯示,顯示2位即可。此累加器只有商家可以控制清零。</p><p> 6)此售貨機(jī)要設(shè)有一個由商家
11、控制的整體復(fù)位控制。</p><p> 第3章程序?qū)崿F(xiàn)思路</p><p> 3.1此次設(shè)計(jì)的自動售貨機(jī)的功能簡介</p><p> 基本原理:硬件實(shí)現(xiàn)中,顧客首先按鍵來選擇自己想購買的貨物,自動售貨機(jī)會用數(shù)碼管顯示出來,然后顧客再選擇貨幣種類,自動售貨機(jī)也用數(shù)碼管顯示出來,顧客投幣,自動售貨機(jī)通過貨幣識別器來識別貨幣,顧客按確認(rèn)鍵3s之后,自動售貨機(jī)馬上做
12、出判斷,投入的錢大于價(jià)格,則送出此貨物,并找零,否則就會報(bào)警持續(xù)3s,自動售貨機(jī)自動恢復(fù)初始狀態(tài)等待為下一顧客服務(wù),同時,它還會為商家做賣貨額累加功能,并且這顯示只能由商家來清零(商家通過整體復(fù)位來清零)</p><p> 那么,基于硬件電路,軟件來實(shí)現(xiàn)的時候就盡量模仿此按鍵、顯示部分、以及各功能,在本文中用state、state_next、sure、give、clk、reset、goods1、goods2、g
13、oods3、goods4、j、display、profit、i、warning、readya、readyb、readyc、readyd、readye、readyf來實(shí)現(xiàn)模擬,并且這些變量名稱通俗易懂,并且程序已全部給出。</p><p> 3.2實(shí)現(xiàn)自動售貨機(jī)的功能的設(shè)計(jì)思路</p><p> 變量選擇:貨物選擇有四種,貨幣選擇有四種,這樣可以用編碼形式設(shè)置成兩位即可,但是考慮到與st
14、ate作為引發(fā)條件,故兩位不夠,為了簡便,本文用四位獨(dú)熱碼編碼方式;設(shè)計(jì)要求三次顯示出貨物選擇、貨幣選擇、找零顯示,當(dāng)然設(shè)置成三個數(shù)碼管肯定可以,但是為來節(jié)約成本,就用一個兩位的數(shù)碼管顯示即可,但此時要求數(shù)碼管時分時使用;賣貨額累加顯示用八位的,以便在硬件中方便用數(shù)碼管顯示(當(dāng)然需要7448顯示譯碼器);另外售出的貨物用四個數(shù)表示,送出的就為1,此功能與實(shí)際要求中四個不同顏色的指示燈顯示匹配;實(shí)際要求還有說3s,故得引入時鐘信號,但實(shí)現(xiàn)
15、此功能只需要示意即可,用5個時鐘周期示意。</p><p> 程序構(gòu)建:本文模塊是分步實(shí)現(xiàn),所以得借助中間變量來引發(fā)下一次操作,一共六步,大概需要六個變量,結(jié)合引發(fā)功能,故用wait語句來實(shí)現(xiàn),當(dāng)wait()中括號內(nèi)的條件滿足則執(zhí)行,否則循環(huán)等待,按照此想法,故每個子模塊中都用到wait語句;另外,此程序明顯要求多路選擇,故用case語句,滿足case()中對應(yīng)條件,則執(zhí)行對應(yīng)的語句,實(shí)現(xiàn)對應(yīng)的功能,此過程中還
16、得用到輔助變量,本文可用j來實(shí)現(xiàn),為case語句結(jié)合使用;當(dāng)然if、else語句少不了;阻塞語句和非阻塞語句使用,他們只有是立即賦值還是等到下一時鐘上升沿來到時再賦值,本文因?yàn)榭紤]到實(shí)時性,故主要用到阻塞賦值。</p><p> 測試文件生成:本來嚴(yán)格的需要用自動生成測試文件,這樣可靠性更高,但是結(jié)合本文具體設(shè)計(jì)而言,手工寫測試文件足已(程序代碼不是很大),考慮到之前.v文件每個模塊基本上都用到時鐘的上升沿,這
17、個引發(fā)條件就迫使測試文件中state和state_next中一直有效,等到sure按下3s后再清零,這使得硬件實(shí)現(xiàn)中得考慮這問題(用D觸發(fā)器等們實(shí)現(xiàn)鎖存等功能)</p><p><b> 程序清單或正文</b></p><p><b> 程序代碼:</b></p><p> mescale 1ns/100ps<
18、/p><p> module AUTOTELLER( clk,state,state_next,sure,reset,give,goods1,goods2,goods3,goods4,warning,display,profit);</p><p> input clk,state,state_next,sure,reset,give;</p><p>
19、output goods1,goods2,goods3,goods4,warning,display,profit;</p><p> wire clk;</p><p> wire reset; </p><p> wire sure;</p><p>
20、; wire[3:0] state;</p><p> wire[3:0] state_next;</p><p> wire[3:0] give;</p><p> reg[2:0] j;</p><p> reg readya;</p><p> reg readyb;
21、</p><p> reg readyc;</p><p> reg readyd;</p><p> reg readye;</p><p> reg readyf;</p><p> integer i;</p><p> r
22、eg goods1;</p><p> reg goods2;</p><p> reg goods3;</p><p> reg goods4;</p><p> reg warning;</p><p> reg[3:0] display;&
23、lt;/p><p> reg[7:0] profit; </p><p> always @ (posedge clk ) // 商家整體復(fù)位 </p><p> if(!reset)</p><p><b> begin</b></p><p> display=4'b
24、0000;</p><p> profit=8'b00000000;</p><p><b> j=3'b000;</b></p><p> warning=1'b0;</p><p> goods1=1'b0;</p><p> goods2=1'
25、;b0;</p><p> goods3=1'b0;</p><p> goods4=1'b0;</p><p> readya=1'b0;</p><p> readyb=1'b0;</p><p> readyc=1'b0;</p><p>
26、 readyd=1'b0;</p><p> readye=1'b0;</p><p> readyf=1'b0;</p><p><b> end</b></p><p> always @(posedge clk) //顧客貨品選擇模擬以及顯示</p><p&g
27、t; if(state!=4'b0000)</p><p><b> begin</b></p><p> readya<=1'b1;</p><p> case(state)</p><p> 4'b1000: display=4'b0001;</p>&l
28、t;p> 4'b0100: display=4'b0010;</p><p> 4'b0010: display=4'b0101;</p><p> 4'b0001: display=4'b1010;</p><p> endcase </p><p><b>
29、; end</b></p><p> always @ (posedge clk or posedge readya) //顧客貨幣選擇以及顯示</p><p><b> begin</b></p><p> wait(readya)</p><p> begin
30、 </p><p> case(state_next)</p><p> 4'b1000: begin</p><p> display=4'b0001;</p><p><b> j=3'b001;</b></p><p> readyb=1'b1;&l
31、t;/p><p><b> end</b></p><p> 4'b0100: begin</p><p> display=4'b0010;</p><p><b> j=3'b010;</b></p><p> readyb=1'b1
32、;</p><p><b> end</b></p><p> 4'b0010: begin</p><p> display=4'b0101;</p><p><b> j=3'b011;</b></p><p> readyb=1'
33、;b1;</p><p><b> end</b></p><p> 4'b0001: begin</p><p> display=4'b1010;</p><p><b> j=3'b100;</b></p><p> readyb=1&
34、#39;b1;</p><p><b> end</b></p><p> default: begin</p><p> display=4'b0000;</p><p><b> j=3'b000;</b></p><p> readyb=1
35、39;b0;</p><p> end </p><p><b> endcase</b></p><p><b> end </b></p><p><b> end </b></p><p> a
36、lways @(posedge clk or posedge readyb ) //投入貨幣不足引起警告準(zhǔn)備找零顯示</p><p><b> begin</b></p><p> wait(readyb)</p><p><b> begin</b></p><p> readya=1
37、39;b0;</p><p><b> if(sure)</b></p><p><b> begin</b></p><p> readyc=1'b1;</p><p> if(give<display)</p><p><b> begi
38、n</b></p><p><b> i=5;</b></p><p> readyd=1'b1;</p><p><b> end</b></p><p><b> else</b></p><p><b> b
39、egin</b></p><p> display=give-display;</p><p> readye=1'b1; </p><p><b> end</b></p><p><b> end&l
40、t;/b></p><p><b> end</b></p><p><b> end</b></p><p> always @ (posedge clk) //貨物送出及商家賣貨額累加顯示</p><p><b> begin</b></p>
41、<p> wait(readye)</p><p><b> begin</b></p><p><b> case(j)</b></p><p> 3'b001: begin</p><p> goods1=1'b1;</p><p>
42、 profit=profit+8'b00000001; </p><p><b> end</b></p><p> 3'b010: begin</p><p> goods2=1'b1;</p><p> profit=profit+8
43、'b00000010; </p><p><b> end</b></p><p> 3'b011: begin</p><p> goods3=1'b1;</p><p> profit=profit+8'b00000101
44、; </p><p><b> end</b></p><p> 3'b100: begin</p><p> goods4=1'b1;</p><p> profit=profit+8'b00001010;
45、 </p><p><b> end</b></p><p> endcase </p><p><b> end</b></p><p><b> end</b></p><p> always @
46、(posedge clk ) //3s警告或者是按鍵3s后自動復(fù)位準(zhǔn)備下一位顧客操作</p><p><b> begin </b></p><p> wait(readyc)</p><p><b> begin</b></p><p> readyb=1'b0;
47、 </p><p><b> if(i>=1)</b></p><p><b> begin</b></p><p> if(readyd)</p><p><b> begin</b></p><p>
48、warning<=1'b1;</p><p><b> i=i-1;</b></p><p><b> end</b></p><p><b> else</b></p><p><b> i=i+0;</b></p>
49、<p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> readyd=1'b0;</p><p> readyc=1'b0;</p><
50、p> readyf=1'b1;</p><p> warning=1'b0;</p><p> goods1=1'b0;</p><p> goods2=1'b0;</p><p> goods3=1'b0;</p><p> goods4=1'b0;&
51、lt;/p><p><b> end</b></p><p><b> end</b></p><p><b> end </b></p><p> always @ (posedge clk)</p><p><b> begin&l
52、t;/b></p><p> wait(readyf)</p><p><b> begin</b></p><p> readye=1'b0;</p><p><b> end</b></p><p> end </p>
53、<p><b> 課程設(shè)計(jì)心得</b></p><p> 通過本次課程設(shè)計(jì),我對Verilog HDL語言有了更深刻的了解,能夠比較靈活地運(yùn)用它來實(shí)現(xiàn)我們所想要要其實(shí)現(xiàn)的功能。在實(shí)驗(yàn)中,我也遇到了很多挫折,不過我都和同伴一一克服了,大家齊心協(xié)力解決了問題,使我明白了和他人共同合作的重要性。在以后的道路上我們也必須深刻認(rèn)識到團(tuán)隊(duì)合作的精神,投入今后的發(fā)展之中。</p&g
54、t;<p> 成功就是在不斷摸索著前進(jìn)中實(shí)現(xiàn)的,遇到問題我們不能灰心、煩躁,甚至放棄,而要靜下心來仔細(xì)思考,分部檢查,找出最終的原因進(jìn)行改正,這樣才會有進(jìn)步,才會一步步向自己的目標(biāo)靠近,才會取得自己所要追求的成功。</p><p> 第6章 參考文獻(xiàn)(資料)</p><p> [1] 夏宇聞 編著 《Verilog數(shù)字系統(tǒng)教程》 北京航空航天出版社</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動售貨機(jī)課程設(shè)計(jì)
- 自動售貨機(jī)課程設(shè)計(jì)
- 自動售貨機(jī)課程設(shè)計(jì)--飲料自動售貨機(jī)控制系統(tǒng)設(shè)計(jì)
- plc自動售貨機(jī)課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---自動售貨機(jī)
- plc課程設(shè)計(jì)---自動售貨機(jī)
- plc自動售貨機(jī)課程設(shè)計(jì)
- plc自動售貨機(jī)課程設(shè)計(jì)
- plc自動售貨機(jī)課程設(shè)計(jì)
- plc課程設(shè)計(jì)---自動售貨機(jī)
- plc自動售貨機(jī)課程設(shè)計(jì)
- 自動售貨機(jī)的課程設(shè)計(jì)
- plc課程設(shè)計(jì)--自動售貨機(jī)
- eda課程設(shè)計(jì)--自動售貨機(jī)
- 自動售貨機(jī)plc課程設(shè)計(jì)
- plc課程設(shè)計(jì)——自動售貨機(jī)
- 自動售貨機(jī)課程設(shè)計(jì)報(bào)告
- 自動售貨機(jī)的plc課程設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告(自動售貨機(jī))
- plc課程設(shè)計(jì)報(bào)告-自動售貨機(jī)
評論
0/150
提交評論