




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
-/-/VerilogHDL課程設計報告實驗名稱:基于VerilogHDL的自動售貨機指導老師:王冠軍班 級:信科12-1姓 名:吳濤學 號:06122485第一章系統設計1.1系統設計(1)用四個發光二極管分別模擬售出價值為 5角、1元、1.5元和2元的小商品,購買者可以通過開關選擇任意一種標價中的小商品。(2)燈亮時表示該小商品售出。(3)用開關分別模擬5角、1元硬幣和5元紙幣投入,可以用幾只發光二極管(或數碼管)分別代表找回剩余的硬幣。(4)每次只能售出一種小商品,當所投硬幣達到或超過購買者所選面值時,售出貨物并找回剩余的硬幣,回到初始狀態;(5)當所投硬幣值不足面值時,可通過一個復位鍵退回所投硬幣,回到初始狀態。第二章詳細設計自動售貨機狀態描述判斷開關被按下的個數No若N>=2表示所選本次選擇無效,返回初始狀態;若N=1則顯示所選商品,并繼續執行下面的流程。 3個開關分別代表三種商品。 4個開關分別代表投入0.5元,1元,2元,5元,統計投入總額。投入總額與商品價格做比較,如果總額 〈商品價格,退錢并返回初始狀態如果總額 >=商品價格,則繼續執行下面的程序。找零 =總額-商品價格,數碼管顯示找零金額。狀態圖如圖2.1所示:詳細狀態描述初始狀態各變量都設置為零,按下rst鍵后,一切恢復到初始狀態。選商品狀態分別有價格為0.5元、1元、1.5元和2元的商品,每次選擇商品前,設置一個標志位btn_sell表示選擇商品狀態。此自動售貨機每一次售貨時只能一次選擇一種商品,當同時選擇兩種以上時,選擇商品無效,數碼管顯示清零,重新進行商品選擇。選擇商品后,數碼管顯示所選商品價格。投幣狀態
當選好商品后,開始投幣。同樣有一標志位 btn_price表示投幣金額。投幣口只接受三種面值的錢幣0.5元、1元和5元,可以同時投入多種面值錢幣。投完幣后,先有一個確認買商品的過程,若投了幣但又不購買商品了, 就將全部投幣金額退回;若確認購買商品,則進入下一狀態——找零狀態。找零狀態投完幣,并確認購買商品后,進入找零狀態。首先要將所投的金額與所選商品的價格做比較,若所投金額小于商品價格,則退回所投錢幣;若大于等于商品價格,則兩者做差,得到需要找零的錢。第三章軟件設計程序總流程圖程序-/-/endendmoduleseller(clk,rst,dis_mony,btn_ok,btn_mon,btn_selljed_warn,led,beep);inputclk,rst,btn_ok;input[2:0]btn_mon;//選擇放入的錢input[3:0]btn_sell;//選擇商品bbt_5,gz_10,kqs_15,kl_20output[3:0]led;//led_5,led_10,led_15,led_20outputled_warn;〃錢不足,指示燈output[10:0]dis_mony;//數碼管顯示投入面值, dia_mony[10:8]=com位選,dis_mony[7:0]=段碼outputbeep;integerr;regclk_500Hz;reg[3:0]led;//led_5Jed_10Jed_15,led_20regled_warn;〃警告放入錢不足reg[10:0]dis_mony;reg[31:0]counter;reg[9:0]price,price_all;reg[1:0]flag=2'b00;//數碼管顯示標志位regbeep=0;parameterCOUNT1=25'd10000;/*分頻使數碼管顯示穩定*/always@(posedgeclk)beginif(counter==0)begincounter<=COUNT1;clk_500Hz<=~clk_500Hz;endelsecounter<=counter-1;-/-/always@(negedgerstorposedgeclk)beginif(rst==0)beginled=4'b0000;//LED滅price_all=0;//價格清零led_warn=0;price=0;beep=0;endelsebegin/*三種面值共8種組合*/case(btn_mon)3'b001:beginprice_all=5;end3'b010:beginprice_all=10;end3'b100:beginprice_all=50;end3'b011:beginprice_all=15;end3'b101:beginprice_all=55;end3'b110:beginprice_all=60;end3'b111:beginprice_all=65;enddefault:beginprice_all=0;endendcasecase(btn_sell)4'b0001:beginprice=5;end4'b0010:beginprice=10;end4'b0100:beginprice=15;end4'b1000:beginprice=20;enddefault:beginprice=0;endendcaseif(btn_ok==1)beginif(price_all<price)//放入錢不足beginled_warn=1;price=0;endelsebegin//金錢足夠price_all=price_all-price;beep=1;case(price)//LED燈顯示貨物賣出5:beginled=4'b0001;end10:beginled=4'b0010;end15:beginled=4'b0100;end20:beginled=4'b1000;endendcaseendendelsebeep=0;-/-/endend-/-/2:begindis_mony=11'b110_1101_1011;end2:begindis_mony=11'b110_1101_1011;endend*/end*//*分頻后將時鐘給數碼管,數碼管分別顯示放入錢的多少、商品價格always@(posedgeclk_500Hz)begincase(flag)2'b00:beginr=price_all%10;case(r)0:begindis_mony=11'b111_0011_1111;end1:begindis_mony=11'b111_0000_0110;end2:begindis_mony=11'b111_0101_1011;end3:begindis_mony=11'b111_0100_1111;end4:begindis_mony=11'b111_0110_0110;end5:begindis_mony=11'b111_0110_1101;end6:begindis_mony=11'b111_0111_1101;end7:begindis_mony=11'b111_0000_0111;end8:begindis_mony=11'b111_0111_1111;end9:begindis_mony=11'b111_0110_1111;endendcaseflag=2'b01;end2'b01:beginr=price_all/10;case(r)0:begindis_mony=11'b110_1011_1111;end1:begindis_mony=11'b110_1000_0110;end3:begindis_mony=11'b110_1100_1111;end4:begindis_mony=11'b110_1110_0110;end5:begindis_mony=11'b110_1110_1101;end6:begindis_mony=11'b110_1111_1101;end7:begindis_mony=11'b110_1000_0111;end8:begindis_mony=11'b110_1111_1111;end9:begindis_mony=11'b110_1110_1111;endendcaseflag=2'b00;endendcaseend/*數碼管段碼表*/function[7:0]led7;input[3:0]dis_input;begincase(dis_input)0:led7=8'b0011_1111;:led7=8'b0000_0110;:led7=8'b0101_1011;:led7=8'b0100_1111;:led7=8'b0110_0110;:led7=8'b0110_1101;:led7=8'b0111_1101;:led7=8'b0000_0111;:led7=8'b0111_1111;:led7=8'b0110_1111;default:led7=8'b0011_1111;endcase-/-/endfunctionendmodule第四章結果與討論實驗調試調試步驟①運行QuartusII軟件,新建工程。②建立文本文件VerilogHDLFile。在文件中寫入程序。保存,編譯。③分配管腳。保存,編譯。④將生成的.sof文件寫入FPGA試驗箱中。⑤根據要求選擇幾種買東西的可能情況,在實驗箱上實驗,觀察記錄結果。實驗現象⑴選擇買0.5元的商品,投5元的金額,調試現象如下:①選擇0.5元商品數碼管顯示0.5,再選擇一種商品,數碼管顯示清零,重新進行商品選擇。TOC\o"1-5"\h\z②按下5元投幣鍵,對應數碼管顯示 5.0。③按下確認購買開關,找零時,對應數碼管顯示 4.5,蜂鳴器響,對應0.5元商品的LED燈亮。⑵選擇1.5元的商品,投1元的金額,調試現象如下:①選擇1.5元的商品,對應數碼管顯示 1.5。②按下1元的投幣鍵,對應數碼管顯示 1。③找零顯示1元,退回所投的錢,表示警告的 LED燈亮(交易不成功)。結果與分析調試過程中出現的問題及原因:(1)本程序定義了函數,注意函數結構的定義以及函數的調用(函數不能作為單獨的語句進行調用)。(2)在編寫完程序之后,編譯運行成功后,注意數碼管管腳的連接, 參考實驗指導書。(3)后面一切正常后,但是仍然出不了正確的結果,經過和同學的相互討論,才發現按鈕按下是0,懸空是1。最后及時發現并得出了正確的實驗結果。第五章總結經過幾次實驗,讓我對VerilogHDL有了很深刻的認識,從剛開始接觸 EDABJ現在的VerilogHDL的學習,讓我對這些硬件描述語言有了進一步的理解。 這些語言和c++,j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省耒陽市2025屆初三下學期第二次月考試題數學試題試卷含解析
- 遼寧省沈陽市一三四中學2025屆初三下學期周練試卷(四)生物試題含解析
- 山西省大同市左云縣東北小學校2024-2025學年數學四下期末學業水平測試試題含解析
- 吉林城市職業技術學院《Spss統計軟件》2023-2024學年第二學期期末試卷
- 山東政法學院《犯罪心理學專題》2023-2024學年第一學期期末試卷
- 皖北衛生職業學院《機械制圖Ⅰ》2023-2024學年第二學期期末試卷
- 上海市復旦附中2025屆高三補習班下學期第四次月考數學試題含解析
- 欽州幼兒師范高等??茖W?!睹褡鍛蚯c說唱藝術》2023-2024學年第一學期期末試卷
- 山東省2025屆數學三下期末考試試題含解析
- 四川省棠湖中學2024-2025學年高三語文試題高考沖刺七含解析
- CNAS-RL01:2019實驗室認可規則
- 《大學生心理健康教育》全套教學課件
- 河南輕工職業學院單招《英語》備考試題及答案
- 糖尿病抑郁癥
- 分級護理的內容及要點
- 高考復習語文作文寫作訓練講評【知識精研】《路是自己走出來的》
- 體育賽事策劃與管理全套課件
- 高標準農田施工合同
- 大班語言課件《彩虹色的花》課件
- 施工現場植被清理與臨時土壤管理方案
- 2024年出售鋁廠鋁渣合同范本
評論
0/150
提交評論