




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于vhdl的地鐵自動(dòng)售票系統(tǒng)設(shè)計(jì) 班級(jí):xxxxxxx姓名:xxxxxx 學(xué)號(hào):xxxxxxxxx 班內(nèi)序號(hào):15 日期:2012.11.11 1、 實(shí)驗(yàn)要求1.地鐵票價(jià)統(tǒng)一為每張兩元,可以投入幣值為1元、5元和10元三種幣種進(jìn)行購(gòu)票。2.能夠開(kāi)機(jī)自檢,檢驗(yàn)顯示器件正常。3.通過(guò)按鍵開(kāi)關(guān)btn輸入購(gòu)票張數(shù)和投入的人民幣張數(shù)并恰當(dāng)顯示相應(yīng)信息。4.設(shè)置適當(dāng)?shù)穆曇籼崾净蝻@示提示表示取票和找零。5.一次購(gòu)票成功后系統(tǒng)能夠恰當(dāng)?shù)剞D(zhuǎn)入下一次購(gòu)票等待狀態(tài)。6.系統(tǒng)能夠復(fù)位。二、系統(tǒng)設(shè)計(jì)3、 仿真波形及分析售票系統(tǒng)上電后首先進(jìn)行復(fù)位(reset=1),然后等待乘客選擇票數(shù)(tn=0-7) 。在選票完成后,
2、 系統(tǒng)輸出報(bào)警信號(hào) (moneyinputalarm=1), 提醒乘客進(jìn)行投幣。之后系統(tǒng)對(duì)于乘客投入的紙幣進(jìn)行識(shí)別,識(shí)別范圍是1元,5元,10元(money10,money5,money1),乘客可以連續(xù)多次投入錢(qián)幣,系統(tǒng)自動(dòng)進(jìn)行累加。當(dāng)投入的錢(qián)幣未達(dá)到所需金額時(shí),報(bào)警信號(hào)仍然繼續(xù)維持(moneyinputalarm=1),提醒錢(qián)不夠,需要繼續(xù)投入錢(qián)幣。當(dāng)投入的錢(qián)幣達(dá)到所需金額時(shí),報(bào)警信號(hào)取消(moneyinputalarm=0),售票機(jī)自動(dòng)出票(tout=1) 。如果投入的錢(qián)幣有余, 系統(tǒng)自動(dòng)計(jì)算余額 (rmoney) 。本次交易結(jié)束,系統(tǒng)自動(dòng)進(jìn)入選站狀態(tài)等待下一次的交易。在投幣期間,如果乘
3、客按復(fù)位鍵(reset=1)取消本次操作,錢(qián)幣自動(dòng)退出。4、 源程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adddiv is port( bt:out std_logic_vector(5 downto 0); reset:in std_logic; - 系統(tǒng)復(fù)位信號(hào) clk:in std_logic; - 系統(tǒng)時(shí)鐘 tn:in std_logic_vector(6 downto 0); - 所購(gòu)票數(shù) money10:in std_logic; - 投幣10元 mone
4、y5:in std_logic; - 投幣5元 money1:in std_logic; -投幣1元 moneyinputalarm:out std_logic; - 投幣不足報(bào)警信號(hào) tout : out std_logic;- 出票 led:out std_logic_vector(6 downto 0); state:out std_logic_vector(2 downto 0) - 系統(tǒng)狀態(tài)指示 ); end adddiv;architecture behave of adddiv iscomponent div_2k - 2000分頻器,用來(lái)使7段數(shù)碼管閃爍port(clk_in:
5、 in std_logic; clk_out: out std_logic);end component;component div_50m -50分頻器,用來(lái)處理投幣按鍵port(clk_in_50m: in std_logic; clk_out_50m: out std_logic);end component; signal cnt6:integer range 0 to 5; - 掃頻使6個(gè)七段數(shù)碼管輪流亮的信號(hào) signal tmplight:integer range 0 to 9; - 控制所有數(shù)碼管顯示的信號(hào) constant numh:integer:=0; - 票數(shù)顯示高位
6、 signal numl:integer range 0 to 9; - 票數(shù)顯示低位 signal pmoneyh:integer range 0 to 2; - 所付錢(qián)數(shù)顯示高位 signal pmoneyl:integer range 0 to 9; - 所付錢(qián)數(shù)顯示低位 constant rmoneyh:integer:=0; - 找錢(qián)顯示高位 signal rmoneyl:integer range 0 to 9; - 找錢(qián)顯示低位 signal clk_tmp: std_logic; 2000m分頻輸出 signal clk_money: std_logic;type ff is
7、(selticket,inputcoin,givechange) ; - 定義系統(tǒng)轉(zhuǎn)換狀態(tài) (選站, 選票, 投幣, 出票, 找零) begin u1:div_2k port map(clk_in=clk,clk_out=clk_tmp); u2:div_50m port map(clk_in_50m=clk,clk_out_50m=clk_money);main: process(reset,clk_money) variable next_state: ff:=selticket; variable tmoney,pmoney,rmoney,num: integer range 0 to
8、20; - 車(chē)票總額,投幣總額,找零總額 begin if clk_moneyevent and clk_money= 1 then case next_state is when selticket = - 選擇票數(shù) tout=0; moneyinputalarm=0; numl=0; pmoneyh=0; pmoneyl=0; rmoneyl=0; num:=0; tmoney:=0; pmoney:=0; rmoney:=0; - 初始化清零 state tmoney :=2; - 計(jì)算票價(jià) num:=1; when 0100000 = tmoney :=4; - 計(jì)算票價(jià) num:=2
9、; when 0010000 = tmoney :=6; - 計(jì)算票價(jià) num:=3; when 0001000 = tmoney :=8; - 計(jì)算票價(jià) num:=4; when 0000100 = tmoney :=10; - 計(jì)算票價(jià) num:=5; when 0000010 = tmoney :=12; - 計(jì)算票價(jià) num:=6; when 0000001 = tmoney :=14; - 計(jì)算票價(jià) num:=7; when others =null; end case; numl0) then next_state := inputcoin; - 選票結(jié)束,進(jìn)入投幣狀態(tài) else
10、next_state := selticket; - 未選票,停留在選票狀態(tài) end if ; end if; when inputcoin = - 進(jìn)行投幣 state=010; if (money10=1) then pmoney:=pmoney+10; -計(jì)算已付的款 end if; if (money5=1) then pmoney:=pmoney+5; end if; if (money1=1) then pmoney:=pmoney+1; end if; if pmoney10 then -把已付的款轉(zhuǎn)換成七段數(shù)碼管顯示的高低位 pmoneyh = 0; pmoneyl =pmon
11、ey; elsif pmoney20 then pmoneyh = 1; pmoneyl =pmoney-10; else pmoneyh = 2; pmoneyl =pmoney-20; end if; if (pmoneytmoney)then - 比較投幣總額與車(chē)票總額 moneyinputalarm =1; -缺錢(qián)警告 next_state :=inputcoin; - 投幣不足,繼續(xù)進(jìn)入投幣狀態(tài) else moneyinputalarm - 余額找出 state0)then tout=1; rmoney :=pmoney-tmoney; else tout=0; end if ; r
12、moneyl - 其他任何情況,均回到選站狀態(tài) next_state := selticket; end case ; end if; end process main; show: process(clk_tmp) begin if clk_tmpevent and clk_tmp= 1 then -實(shí)現(xiàn)模6計(jì)數(shù)器 if cnt6 = 5 thencnt6 = 0;elsecnt6 bt = 011111 ; tmplight bt = 101111 ; tmplight bt = 110111 ; tmplight bt = 111011 ; tmplight bt = 111101 ;
13、tmplight bt = 111110 ; tmplight null ; end case ; -用6個(gè)數(shù)碼管輪流輸出 case tmplight is when 0 = led led led led ledledledled led led= 1111011;end case; end if; end process show;end behave;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div_2k isport(clk_in:in std_logic; clk_o
14、ut:out std_logic);end div_2k; architecture a of div_2k issignal temp:integer range 0 to 1999;begin p1:process(clk_in)begin if clk_inevent and clk_in=1 then if temp=999 then clk_out=1; temp=temp+1; elsif temp=1999 then temp=0; clk_out=0; else temp=temp+1; clk_out=0; end if;end if;end process p1;end a
15、;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div_50m isport(clk_in_50m:in std_logic; clk_out_50m:out std_logic);end div_50m; architecture b of div_50m issignal temp:integer range 0 to 49999999;begin p1:process(clk_in_50m)begin if clk_in_50mevent and clk_in_50m=1 t
16、hen if temp=24999999 then clk_out_50m=1; temp=temp+1; elsif temp=49999999 then temp=0; clk_out_50m=0; else temp=temp+1; clk_out_50m=0; end if;end if;end process p1;end b;5、 功能說(shuō)明 本自動(dòng)售票機(jī)系統(tǒng)共分3個(gè)狀態(tài):選票狀態(tài),付款狀態(tài),出票找零狀態(tài)。在選票狀態(tài),用7個(gè)撥碼開(kāi)關(guān)分別表示17張票,選中后自動(dòng)進(jìn)入付款狀態(tài);用3個(gè)按鍵分別控制投幣10元、5元、1元,且控制按鍵進(jìn)程的時(shí)鐘為25m分頻,即每按鍵0.5s投入一張紙幣。當(dāng)投幣
17、數(shù)小于應(yīng)付票款數(shù)時(shí),警報(bào)燈亮,當(dāng)投幣數(shù)大于應(yīng)付票款數(shù)時(shí)自動(dòng)進(jìn)入出票找零狀態(tài),燈亮顯示出票,系統(tǒng)自動(dòng)計(jì)算找零數(shù)。當(dāng)復(fù)位鍵按下時(shí)系統(tǒng)回到選票狀態(tài)。與此同時(shí),六個(gè)七段數(shù)碼管分別顯示票數(shù)、付款數(shù)、找零數(shù)。6、 元器件清單硬件:max ii epm1270t144c5軟件:quartus ii 9.07、 故障及問(wèn)題分析1.本實(shí)驗(yàn)處理的最關(guān)鍵問(wèn)題是如何使6個(gè)七段數(shù)碼管在同一掃頻周期里顯示不同狀態(tài)里的變量值。經(jīng)仔細(xì)研究七段數(shù)碼管掃描靜態(tài)顯示實(shí)驗(yàn)發(fā)現(xiàn),可以把所有需要顯示的信號(hào)用一個(gè)中間變量tmplignt表示,并對(duì)掃描顯示的進(jìn)程“show”中的每個(gè)掃頻脈沖分別把6個(gè)需要顯示的變量賦予tmplight。2.起初處理按鍵時(shí)由于main進(jìn)程和show進(jìn)程用同一個(gè)時(shí)鐘,造成當(dāng)時(shí)鐘頻率過(guò)高是按鍵無(wú)法一次一次輸入;而當(dāng)時(shí)鐘頻率過(guò)低時(shí)又不能是數(shù)碼管掃描顯示達(dá)到視覺(jué)殘留的效果。故最終分頻兩次,一個(gè)25m分頻用以處理按鍵,一個(gè)2000
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南省建水縣高三質(zhì)量監(jiān)測(cè)(三)物理試題試卷含解析
- 周口職業(yè)技術(shù)學(xué)院《生物工程設(shè)備與設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海歐華職業(yè)技術(shù)學(xué)院《幼兒園一日活動(dòng)設(shè)計(jì)與組織》2023-2024學(xué)年第二學(xué)期期末試卷
- 臨夏現(xiàn)代職業(yè)學(xué)院《小學(xué)教育科學(xué)研究方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省東營(yíng)市2024-2025學(xué)年六年級(jí)數(shù)學(xué)小升初摸底考試含解析
- 公車(chē)加油卡管理使用制度
- 汕尾排水帶施工方案
- 內(nèi)蒙古赤峰市名校2024-2025學(xué)年高一上學(xué)期期末聯(lián)考英語(yǔ)試題(含聽(tīng)力)
- 安徽省智學(xué)大聯(lián)考2024-2025學(xué)年高二上學(xué)期1月期末英語(yǔ)試題【含答案】
- 沈陽(yáng)彩色混凝土施工方案
- 2025年企業(yè)資金授權(quán)管理協(xié)議范本
- 2024-2025學(xué)年山東省濟(jì)南市九年級(jí)(上)期末語(yǔ)文試卷(含答案)
- 鄧宗良《煤油燈》閱讀答案
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 中華人民共和國(guó)學(xué)前教育法-知識(shí)培訓(xùn)
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- 寶石花鑫盛油服公司考試題
- 員工考勤表(通用版)
- 3號(hào)鋼筋加工場(chǎng)桁吊安裝方案
- 關(guān)于加快駱家莊城中村改造專題報(bào)告(第四稿)
- 公司外派人員申請(qǐng)審批表
評(píng)論
0/150
提交評(píng)論