HDLVerilog課程設(shè)計(jì)報(bào)告自動(dòng)售貨機(jī)_第1頁(yè)
HDLVerilog課程設(shè)計(jì)報(bào)告自動(dòng)售貨機(jī)_第2頁(yè)
HDLVerilog課程設(shè)計(jì)報(bào)告自動(dòng)售貨機(jī)_第3頁(yè)
HDLVerilog課程設(shè)計(jì)報(bào)告自動(dòng)售貨機(jī)_第4頁(yè)
HDLVerilog課程設(shè)計(jì)報(bào)告自動(dòng)售貨機(jī)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余6頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、Verilog HDL課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)名稱:基于Verilog HDL的自動(dòng)售貨機(jī)指導(dǎo)老師:xx 冠軍班級(jí):信科 12-1姓名:xx學(xué)號(hào):第一章系統(tǒng)設(shè)計(jì)1.1 系統(tǒng)設(shè)計(jì)(1) 用四個(gè)發(fā)光二極管分別模擬售出價(jià)值為 5角、1元、1.5元和 2元的小商 品,購(gòu)買者可以通過(guò)開(kāi)關(guān)選擇任意一種標(biāo)價(jià)中的小商品。(2) 燈亮?xí)r表示該小商品售出。(3) 用開(kāi)關(guān)分別模擬 5角、1 元硬幣和 5元紙幣投入,可以用幾只發(fā)光二極 管(或數(shù)碼管 )分別代表找回剩余的硬幣。(4) 每次只能售出一種小商品,當(dāng)所投硬幣達(dá)到或超過(guò)購(gòu)買者所選面值時(shí), 售出貨物并找回剩余的硬幣,回到初始狀態(tài);(5) 當(dāng)所投硬幣值不足面值時(shí),可通過(guò)一

2、個(gè)復(fù)位鍵退回所投硬幣,回到初始 狀態(tài)。第二章詳細(xì)設(shè)計(jì)2.1 自動(dòng)售貨機(jī)狀態(tài)描述判斷開(kāi)關(guān)被按下的個(gè)數(shù)N。若N>=2表示所選本次選擇無(wú)效,返回初始狀 態(tài);若N=1則顯示所選商品,并繼續(xù)執(zhí)行下面的流程。3個(gè)開(kāi)關(guān)分別代表三種商品。 4個(gè)開(kāi)關(guān)分別代表投入 0.5元, 1 元, 2元, 5元,統(tǒng)計(jì)投入總額。投入總 額與商品價(jià)格做比較,如果總額 <商品價(jià)格,退錢并返回初始狀態(tài)如果總額 >=商 品價(jià)格,則繼續(xù)執(zhí)行下面的程序。找零 =總額-商品價(jià)格,數(shù)碼管顯示找零金額。 狀態(tài)圖如圖 2.1 所示:2.2 詳細(xì)狀態(tài)描述2.2.1 初始狀態(tài)各變量都設(shè)置為零,按下 rst 鍵后,一切恢復(fù)到初始狀態(tài)。

3、2.2.2 選商品狀態(tài)分別有價(jià)格為 0.5元、 1 元、1.5元和2元的商品,每次選擇商品前,設(shè)置 一個(gè)標(biāo)志位 btn_sell 表示選擇商品狀態(tài)。此自動(dòng)售貨機(jī)每一次售貨時(shí)只能一次選 擇一種商品,當(dāng)同時(shí)選擇兩種以上時(shí),選擇商品無(wú)效,數(shù)碼管顯示清零,重新 進(jìn)行商品選擇。選擇商品后,數(shù)碼管顯示所選商品價(jià)格。2.2.3 投幣狀態(tài)當(dāng)選好商品后,開(kāi)始投幣。同樣有一標(biāo)志位 btn_price 表示投幣金額。投幣 口只接受三種面值的錢幣 0.5元、 1 元和 5元,可以同時(shí)投入多種面值錢幣。投 完幣后,先有一個(gè)確認(rèn)買商品的過(guò)程,若投了幣但又不購(gòu)買商品了,就將全部 投幣金額退回;若確認(rèn)購(gòu)買商品,則進(jìn)入下一狀態(tài)

4、 找零狀態(tài)。2.2.4 找零狀態(tài)投完幣,并確認(rèn)購(gòu)買商品后,進(jìn)入找零狀態(tài)。首先要將所投的金額與所選 商品的價(jià)格做比較,若所投金額小于商品價(jià)格,則退回所投錢幣;若大于等于 商品價(jià)格,則兩者做差,得到需要找零的錢。第三章軟件設(shè)計(jì)3.1 程序總流程圖3.2 程序module seller(clk,rst,dis_mony,btn_ok,btn_mon,btn_sell,led_warn,led,beep); input clk,rst,btn_ok;input 2:0 btn_mon;/ 選擇放入的錢input 3:0 btn_sell;/ 選擇商品 bbt_5,gz_10,kqs_15,kl_20o

5、utput 3:0 led;/led_5,led_10,led_15,led_20output led_warn;/ 錢不足,指示燈output beep;integer r;reg clk_500Hz;reg 3:0 led;/led_5,led_10,led_15,led_20reg led_warn;/ 警告放入錢不足reg 10:0 dis_mony;reg 31:0 counter;reg 9:0 price,price_all;reg 1:0 flag = 2'b00;/ 數(shù)碼管顯示標(biāo)志位reg beep=0;parameter COUNT1 = 25'd100;/

6、* 分頻使數(shù)碼管顯示穩(wěn)定 */always (posedge clk)beginif(counter= 0)begincounter <= COUNT1;clk_500Hz <= clk_500Hz;endelsecounter <= counter-1;endalways (negedge rst or posedge clk) beginif (rst=0)beginled = 4'b00;/LED 滅price_all = 0;/ 價(jià)格清零led_warn = 0;price = 0;beep = 0;endelsebegin/*三種面值共8種組合*/case(

7、btn_mon)3'b001:begin price_all = 5;end3'b010:begin price_all = 10;end3'b100:begin price_all = 50;end3'b011:begin price_all = 15;end3'b101:begin price_all = 55;end3'b110:begin price_all = 60;end3'b111:begin price_all = 65;end default:begin price_all = 0;end endcasecase(btn

8、_sell)4'b0001:begin price = 5;end4'b0010:begin price = 10; end4'b0100:begin price = 15; end4'b1000:begin price = 20; enddefault:begin price = 0;endendcaseif(btn_ok = 1)beginif(price_all < price) / 放入錢不足 beginendelsebegin / 金錢足夠price_all = price_all-price;beep = 1;case(price) /LED燈

9、顯示貨物賣出5: begin led = 4'b0001;end led_warn = 1;price = 0;10:begin led = 4'b0010;end15:begin led = 4'b0100;end20:begin led = 4'b1000;endendcaseendendelsebeep = 0;endend/* 分頻后將時(shí)鐘給數(shù)碼管,數(shù)碼管分別顯示放入錢的多少、商品價(jià)格 */always (posedge clk_500Hz)begincase(flag)2'b00:beginr=price_all%10;case(r)0:beg

10、in dis_mony=11'b111_0011_11;end1:begin dis_mony=11'b111_00_0110;end2:begin dis_mony=11'b111_01_1011;end3:begin dis_mony=11'b111_0100_11;end4:begin dis_mony=11'b111_0110;end5:begin dis_mony=11'b111_0110_1101;end6:begin dis_mony=11'b111_0111_1101;end7:begin dis_mony=11'

11、b111_00_0111;end8:begin dis_mony=11'b111_0111_11;end9:begin dis_mony=11'b111_0110_11;endendcaseflag = 2'b01;end 2'b01: begin r=price_all/10; case(r) 0:begin dis_mony=11'b110_1011_11;end 1:begin dis_mony=11'b110_1000_0110;end 2:begin dis_mony=11'b110_1101_1011;end end 3:be

12、gin dis_mony=11'b110_1100_11;end4:begin dis_mony=11'b110_1110_0110;end5:begin dis_mony=11'b110_1101;end6:begin dis_mony=11'b110_11_1101;end7:begin dis_mony=11'b110_1000_0111;end8:begin dis_mony=11'b110_1111;end9:begin dis_mony=11'b110_1111;endendcaseflag = 2'b00;enden

13、dcase /* 數(shù)碼管段碼表 */ function 7:0 led7; input 3:0 dis_input; begin case (dis_input) 0 :led7 = 8'b0011_11;1 :led7 = 8'b00_0110;2 :led7 = 8'b01_1011;3 :led7 = 8'b0100_11;4 :led7 = 8'b0110_0110;5 :led7 = 8'b0110_1101;6 :led7 = 8'b0111_1101;7 :led7 = 8'b00_0111;8 :led7 = 8&

14、#39;b0111_11;9 :led7 = 8'b0110_11;default :led7 = 8'b0011_11;endcaseendendfunctionendmodule第四章結(jié)果與討論4.1 實(shí)驗(yàn)調(diào)試4.1.1 調(diào)試步驟 運(yùn)行 Quartus II 軟件,新建工程。 建立文本文件Verilog HDL File在文件中寫(xiě)入程序。保存,編譯。 分配管腳。保存,編譯。 將生成的.sof文件寫(xiě)入FPGA式驗(yàn)箱中。 根據(jù)要求選擇幾種買東西的可能情況,在實(shí)驗(yàn)箱上實(shí)驗(yàn),觀察記錄結(jié) 果。4.1.2 實(shí)驗(yàn)現(xiàn)象選擇買 0.5元的商品,投 5 元的金額,調(diào)試現(xiàn)象如下: 選擇 0.5

15、元商品數(shù)碼管顯示 0.5,再選擇一種商品,數(shù)碼管顯示清零,重 新進(jìn)行商品選擇。 按下 5 元投幣鍵,對(duì)應(yīng)數(shù)碼管顯示 5.0。 按下確認(rèn)購(gòu)買開(kāi)關(guān),找零時(shí),對(duì)應(yīng)數(shù)碼管顯示4.5,蜂鳴器響,對(duì)應(yīng) 0.5兀商品的LED燈亮。選擇 1.5 元的商品,投 1元的金額,調(diào)試現(xiàn)象如下: 選擇 1.5兀的商品,對(duì)應(yīng)數(shù)碼管顯示 1.5。 按下 1 兀的投幣鍵,對(duì)應(yīng)數(shù)碼管顯示 1。 找零顯示1元,退回所投的錢,表示警告的LED燈亮(交易不成功)。4.2 結(jié)果與分析調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及原因:(1) 本程序定義了函數(shù),注意函數(shù)結(jié)構(gòu)的定義以及函數(shù)的調(diào)用(函數(shù)不能作 為單獨(dú)的語(yǔ)句進(jìn)行調(diào)用)。(2) 在編寫(xiě)完程序之后,編譯運(yùn)行成功后,注意數(shù)碼管管腳的連接,參考實(shí) 驗(yàn)指導(dǎo)書(shū)。(3) 后面一切正常后,但是仍然出不了正確的結(jié)果,經(jīng)過(guò)和同學(xué)的相互討 論,才發(fā)現(xiàn)按鈕按下是 0,懸空是 1。最后及時(shí)發(fā)現(xiàn)并得出了正確的實(shí)驗(yàn)結(jié)果。第五章總結(jié)經(jīng)過(guò)幾次實(shí)驗(yàn),讓我對(duì) Verilog HDL有了很深刻的認(rèn)識(shí),從剛開(kāi)始接觸 EDA 到現(xiàn)在的Verilog HDL的學(xué)習(xí),讓我對(duì)這些硬件描述語(yǔ)言有了進(jìn)一步的理解。這 些語(yǔ)言和 c+, j

溫馨提示

  • 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. 人人文庫(kù)網(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)論