自動售貨機(jī)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論