版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
./電子信息科學與技術專業(yè)課程設計任務書學生專業(yè)班級學號題目自動售貨機的設計課題性質工程設計課題來源自擬課題指導教師同組主要容設計制作一個自動售貨機,該自動售貨機能完成貨物信息存儲、進程控制、硬幣處理、余額計算、顯示等功能。自動售貨機可以售2種貨物,每種貨物的數(shù)量和單價在初始化時設入,在存儲器中存儲。用戶可以用硬幣進行購物,按鍵進行選擇。系統(tǒng)根據(jù)用戶輸入的貨幣,判斷錢幣是否夠,錢幣足夠則根據(jù)顧客要求自動售貨;錢幣不夠則給出提示并退出。系統(tǒng)自動地計算出應找錢幣余額、庫存數(shù)量并顯示?!蔡崾荆哄X數(shù)以5角為單位。任務要求①根據(jù)設計題目要求編寫相應程序代碼②對編寫的VHDL程序代碼進行編譯和仿真③總結設計容,完成課程設計說明書參考文獻[1]焦素敏.EDA課程設計指導書.:工業(yè)大學,2008[2]松,黃繼業(yè).EDA技術實用教程.:科學,2002[3]王國棟,松等.VHDL實用教程.:電子科技大學,2000[4]亦華,延明.數(shù)字電路EDA入門.:電子工業(yè),2003[5].ele-diy./中國電子制作網(wǎng)審查意見指導教師簽字教研室主任簽字20XX2月20日一.設計說明根據(jù)要求可自動出售兩種貨物,本文設計的自動售貨機可銷售cola和pepsi兩種飲料:售貨機可識別1元和0.5元的兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會自動計算所需錢數(shù)和找零的錢數(shù)并自動找零。另外有3個發(fā)光二極管、6個LCD數(shù)碼管:兩個用來顯示所需金額,兩個用來顯示已付金額,兩個用來顯示找零數(shù)。1.1.1流程說明本文設計的自動售貨機當通電時,表示一次銷售的開始。顧客選擇一種商品或多種商品后就進入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。若投幣夠,則出貨并找零。若投幣不夠,如果顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣銷售流程圖如圖所示:退幣清零退幣清零結束出貨找零繼續(xù)投幣綜合〉物價計算金額投幣選擇開始1.1.2各模塊說明 本文設計的自動售貨機總體分三個模塊:總控模塊,二進制譯碼模塊、BCD碼譯碼模塊??偪啬K:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1〔投入一元貨幣、coin5〔投入0.5元貨幣、cola〔選擇cola、pepsi<選擇pepsi>,輸出端口有paid〔已投入多少錢、needed〔還需多少錢moneyout〔找零、success〔燈亮表示交易成功、failure〔燈亮表示交易失敗、showmoneyout〔燈亮表示正在找零。該模塊實現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣,計算剩余金額,找零出貨等。二進制譯碼模塊:該模塊有一個輸入端口和兩個輸出端口。輸入端口是一個8位的二進制數(shù)輸出端口bcd0、bcd1是兩個4位的BCD碼。該模塊的主要的功能是實現(xiàn)將主控模塊輸出的二進制數(shù)〔paid、needed、moneyout轉換成BCD碼,以便輸出到七段數(shù)碼管上顯示出來。該模塊的原理是將一個8位的二進制轉換成2個4位的BCD碼,分為高四位和低四位。BCD碼譯碼模塊:該模塊有一個輸入端口和一個輸出端口1.1.3程序設計主控模塊完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshouhuojiisport<clk:instd_logic;coin1:instd_logic;coin5:instd_logic;cola:instd_logic;pepsi:instd_logic;paid:outstd_logic_vector<7downto0>;needed:outstd_logic_vector<7downto0>;success:outstd_logic;failure:outstd_logic;showmoneyout:outstd_logic;moneyout:outstd_logic_vector<7downto0>>;endshouhuoji;architecturebehavofshouhuojiistypestate_typeis<qa,qb,qe,qc,qg,qd,qf>;--定義七個狀態(tài)signalcurrent_state:state_type:=qa;signalq:integerrange0to100;beginprocess<clk>variablepaidtemp:std_logic_vector<7downto0>;--定義變量variableneededtemp:std_logic_vector<7downto0>;variablebackmoney:std_logic_vector<7downto0>;variablepricetemp:std_logic_vector<7downto0>;beginifclk'eventandclk='1'thencasecurrent_stateiswhenqa=>paidtemp:="00000000";neededtemp:="00000000";backmoney:="00000000";pricetemp:="00000000";q<=0;showmoneyout<='0';moneyout<="00000000";paid<="00000000";needed<="00000000";failure<='0';success<='0';ifcola='1'orpepsi='1'thencurrent_state<=qb;ifcola='1'thenpricetemp:=pricetemp+"00001111";neededtemp:=pricetemp;Elsepricetemp:=pricetemp+"00010100";neededtemp:=pricetemp;endif;endif;paid<=paidtemp;needed<=neededtemp;whenqb=>ifcoin1='1'orcoin5='1'thenifcoin1='1'thenpaidtemp:=paidtemp+"00001010";elsepaidtemp:=paidtemp+"00000101";endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="00000000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="00000000";current_state<=qc;q<=0;endif;paid<=paidtemp;needed<=neededtemp;endif;ifq<8thenq<=q+1;ifcola='1'orpepsi='1'thenq<=0;ifcola='1'thenpricetemp:=pricetemp+"00001111";neededtemp:=neededtemp+"00001111";elsepricetemp:=pricetemp+"00010100";neededtemp:=neededtemp+"00010100";endif;paid<=paidtemp;needed<=neededtemp;endif;elsecurrent_state<=qe;q<=0;endif;whenqe=>failure<='1';ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;whenqc=>ifcoin1='1'orcoin5='1'thenifcoin1='1'thenpaidtemp:=paidtemp+"00001010";elsepaidtemp:=paidtemp+"00000101";endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="00000000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="00000000";current_state<=qc;endif;paid<=paidtemp;needed<=neededtemp;endif;ifcoin1/='1'andcoin5/='1'thenifq<10thenq<=q+1;elsecurrent_state<=qg;endif;elseq<=0;endif;whenqg=>failure<='1';showmoneyout<='1';moneyout<=paidtemp;current_state<=qf;q<=0;success<='0';whenqd=>success<='1';ifbackmoney>"00000000"thenshowmoneyout<='1';moneyout<=backmoney;endif;current_state<=qf;q<=0;whenqf=>ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;endcase;elseendif;endprocess;endbehav;BCD譯碼模塊完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode1isport<b:instd_logic_vector<7downto0>;bcd0:outstd_logic_vector<3downto0>;bcd1:outstd_logic_vector<3downto0>>;endcode1;architectureoneofcode1isbeginprocess<b>begincasebiswhen"00000000"=>bcd0<="0000";bcd1<="0000";--譯碼"0";when"00000001"=>bcd0<="0001";bcd1<="0000";--譯碼"1";when"00000010"=>bcd0<="0010";bcd1<="0000";--譯碼"2";when"00000011"=>bcd0<="0011";bcd1<="0000";--譯碼"3";when"00000100"=>bcd0<="0100";bcd1<="0000";--譯碼"4";when"00000101"=>bcd0<="0101";bcd1<="0000";--譯碼"5";when"00000110"=>bcd0<="0110";bcd1<="0000";when"00000111"=>bcd0<="0111";bcd1<="0000";when"00001000"=>bcd0<="1000";bcd1<="0000";when"00001001"=>bcd0<="1001";bcd1<="0000";when"00001010"=>bcd0<="0000";bcd1<="0001";when"00001011"=>bcd0<="0001";bcd1<="0001";when"00001100"=>bcd0<="0010";bcd1<="0001";when"00001101"=>bcd0<="0011";bcd1<="0001";when"00001110"=>bcd0<="0100";bcd1<="0001";when"00001111"=>bcd0<="0101";bcd1<="0001";when"00010000"=>bcd0<="0110";bcd1<="0001";when"00010001"=>bcd0<="0111";bcd1<="0001";when"00010010"=>bcd0<="1000";bcd1<="0001";when"00010011"=>bcd0<="1001";bcd1<="0001";when"00010100"=>bcd0<="0000";bcd1<="0010";譯碼"20"whenothers=>null;endcase;endprocess;endone;頂層模塊完整程序如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisPort<clk1:instd_logic;C1,C5,P1_5,P2:instd_logic;paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:outstd_logic_vector<3downto0>;s,f,showout:outstd_logic>;endtop;architectureoneoftopiscomponentshouhuojiport<clk:instd_logic;coin1:instd_logic;coin5:instd_logic;cola:instd_logic;pepsi:instd_logic;paid:outstd_logic_vector<7downto0>;needed:outstd_logic_vector<7downto0>;success:outstd_logic;failure:outstd_logic;showmoneyout:outstd_logic;moneyout:outstd_logic_vector<7downto0>>;endcomponent;componentcode1port<b:instd_logic_vector<7downto0>;bcd0:outstd_logic_vector<3downto0>;bcd1:outstd_logic_vector<3downto0>>;endcomponent;signalp,n,mo:std_logic_vector<7downto0>;--signals1,s2,s3,s4,s5,s6:std_logic_vector<3downto0>;beginu0:shouhuoji--各模塊連接portmap<clk=>clk1,coin1=>C1,coin5=>C5,cola=>P1_5,pepsi=>P2,success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=>mo>;u1:code1portmap<b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1>;u2:code1portmap<b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1>;u3:code1portmap<b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1>;endone;1.1.4各模塊的連接 各模塊的連接如圖所示:售貨機主控系統(tǒng)和譯碼器模塊圖售貨機頂層模塊2、1主控模塊的仿真上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣。Success為高電平,代表售貨機有飲料售出。且余額為0.上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的硬幣。failure為高電平,代表售貨機無飲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版微粒貸逾期8萬元債權清收合同3篇
- 2025年度木工工藝技術專利授權使用合同4篇
- 2025年度個人助學貸款質押擔保合同書4篇
- 四川省瀘州市納溪區(qū)納溪中學集團校聯(lián)考2024-2025學年九年級上學期1月期末道德與法治試題(含答案)
- 2025版小學校租賃合同附加文化活動舉辦協(xié)議2篇
- 二零二五年度木結構建筑清包施工合同書7篇
- 安徽省黃山市高三年級第二次質量檢測語文試題(含答案)
- 2025版新型環(huán)保材料木材采購合同模板4篇
- 2025年度個人合同糾紛解決欠款合同模板4篇
- 第三節(jié)預防策略與措施流行病學16課件講解
- 二零二五年度無人駕駛車輛測試合同免責協(xié)議書
- 2025年湖北華中科技大學招聘實驗技術人員52名歷年高頻重點提升(共500題)附帶答案詳解
- 高三日語一輪復習助詞「と」的用法課件
- 毛渣采購合同范例
- 2023中華護理學會團體標準-注射相關感染預防與控制
- 五年級上冊小數(shù)遞等式計算200道及答案
- 2024年廣東高考政治真題考點分布匯 總- 高考政治一輪復習
- 燃氣管道年度檢驗報告
- GB/T 44052-2024液壓傳動過濾器性能特性的標識
- 國際市場營銷環(huán)境案例分析
- 滑雪指導員理論考試復習題庫(含答案)
評論
0/150
提交評論