電子綜合設(shè)計EDA課程設(shè)計-自動售票機(jī).doc
《電子綜合設(shè)計EDA課程設(shè)計-自動售票機(jī).doc》由會員分享,可在線閱讀,更多相關(guān)《電子綜合設(shè)計EDA課程設(shè)計-自動售票機(jī).doc(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
自動售票機(jī)課程設(shè)計 23課程設(shè)計報告2015-2016學(xué)年第2學(xué)期課程設(shè)計名稱: 電子綜合設(shè)計EDA課程設(shè)計 院 (系): 電子信息學(xué)院 專業(yè): 電子信息工程 班級: 電子1313 學(xué)生姓名: 吳限 學(xué)號: 26 綜合實驗時間: 2016/7/11-2016/7/15 指導(dǎo)教師: 鐘 旭 提交時間: 2016/7/15 上海電機(jī)學(xué)院課程設(shè)計任務(wù)書課程名稱電子綜合設(shè)計EDA課程設(shè)計課程代碼033117P1課程設(shè)計課題清單1、數(shù)字式競賽搶答器 2、自動售票機(jī)3、乒乓球比賽游戲機(jī) 4、電子密碼鎖5、出租車自動計費器 6、洗衣機(jī)控制器7、交通信號燈控制器 8、電梯控制器設(shè)計時間2016 年 7 月 11 日 2016 年 7 月 15 日一、課程設(shè)計任務(wù)匯總設(shè)計任務(wù):自動售票機(jī)功能要求:1、 設(shè)計一個自動售票機(jī),用開關(guān)電平信號模擬投幣過程,每次投一枚硬幣,但可以連續(xù)投入數(shù)枚硬幣;2、 機(jī)器能自動識別硬幣金額,最大為 1 元,最小為 5 角。設(shè)定票價為 2.5 元,每次售一張票; 3、 購票時先投入硬幣,當(dāng)投入的硬幣總金額達(dá)到或超過票的面值時,機(jī)器發(fā)出指示,這時可以按取票鍵取出票;4、 如果所投硬幣超過票的面值則會提示找零錢,取完票以后按找零鍵則可以取出零錢,并顯示零錢數(shù);使用數(shù)碼管顯示當(dāng)前投入的金額。二、對課程設(shè)計成果的要求(包括課程設(shè)計報告、圖紙、圖表、實物等軟硬件要求)1課程設(shè)計基本要求 課題分析、查閱資料、方案論證、方案實現(xiàn)、系統(tǒng)聯(lián)調(diào)、撰寫課程設(shè)計報告2成果要求(1)系統(tǒng)方案 (2)電路RTL原理圖(3)Verilog源程序和流程圖(或狀態(tài)機(jī)轉(zhuǎn)移圖)(4)Verilog測試程序 (5)設(shè)計說明書(課程設(shè)計報告)三、課程設(shè)計工作進(jìn)度計劃: 時間安排內(nèi)容星期一下達(dá)任務(wù)星期二程序設(shè)計星期三程序調(diào)試星期四撰寫報告星期五考核答辯四、主要參考資料:指 導(dǎo) 書:Verilog數(shù)字系統(tǒng)設(shè)計教程 夏宇聞編著 北京航空航天大學(xué)出版社參考資料:EDA設(shè)計實驗教程 艾明晶編著 清華大學(xué)出版社目錄一、題目名稱1二、內(nèi)容摘要1三、設(shè)計任務(wù)和要求1四、系統(tǒng)方案2五、設(shè)計方法硬件設(shè)計3六、設(shè)計方法軟件設(shè)計4七、系統(tǒng)調(diào)試57.1使用的主要儀器和儀表57.2調(diào)試電路的方法和技巧57.3整理性能測試數(shù)據(jù)和波形,并與計算結(jié)果比較分析57.4調(diào)試中出現(xiàn)的故障、原因及排除方法5八、設(shè)計成果6九、設(shè)計結(jié)論10十、收獲和體會11附件(源程序)12參考文獻(xiàn)22一、 題目名稱自動售票機(jī)二、 內(nèi)容摘要自動售票機(jī)是為了實現(xiàn)機(jī)器根據(jù)輸入指令進(jìn)行全自動出售票的目的。本設(shè)計是采用了幣值輸入相加模塊、主控模塊和幣值顯示這三個模塊實現(xiàn)的。在幣值輸入相加模塊中, 用兩個開關(guān)電平輸入按鈕分別代表 2 種硬幣輸入,每按一次,表示投入一枚硬幣。并設(shè)置控制電路,硬幣輸入的次數(shù)控制十進(jìn)制加法器的加數(shù) A 和被加數(shù) B,使輸入的幣值實時相加。用兩位數(shù)碼管顯示當(dāng)前的投入幣值,在主控模塊中設(shè)置一個復(fù)位信號reset,用于中止交易(系統(tǒng)復(fù)位)。設(shè)置一個取票信號ok,一個票給出信號tout,tout 接 LED 顯示,燈亮則表示可以取票,否則取票鍵無效,按ok 鍵取票,燈滅。設(shè)置一個取零錢信號 charge,一個零錢輸出信號 mout,mout 接 LED 顯示,燈亮則表示有零錢,按 charge 取零錢,燈滅。主控模塊中是一個狀態(tài)機(jī),當(dāng)幣值不同時分別實現(xiàn)不同的結(jié)果。三、 設(shè)計任務(wù)和要求設(shè)計一個自動售票機(jī),用開關(guān)電平信號模擬投幣過程,每次投一枚硬幣,但可以連續(xù)投入數(shù)枚硬幣。機(jī)器能自動識別硬幣金額,最大為1元,最小為 5 角。設(shè)定票價為2.5元,每次售一張票。 購票時先投入硬幣,當(dāng)投入的硬幣總金額達(dá)到或超過票的面值時,機(jī)器發(fā)出指示,這時可以按取票鍵取出票。如果所投硬幣超過票的面值則會提示找零錢,取完票以后按找零鍵則可以取出零錢。四、 系統(tǒng)方案圖4-1 自動售票機(jī)系統(tǒng)框圖表4-1 幣值相加模塊輸入狀態(tài)表五、 設(shè)計方法硬件設(shè)計圖5-1 自動售票機(jī)硬件系統(tǒng)框圖六、 設(shè)計方法軟件設(shè)計圖6-1 幣值判斷流程圖圖6-2 系統(tǒng)流程圖七、 系統(tǒng)調(diào)試7.1使用的主要儀器和儀表計算機(jī)一臺、ISE仿真設(shè)計軟件。7.2調(diào)試電路的方法和技巧分別運行每個模塊的程序,觀察是否通過檢測,最后通過仿真出來的測試波形圖,仔細(xì)的進(jìn)行一步步運行,觀察運行結(jié)果是否和課題的設(shè)計要求相對應(yīng)。7.3整理性能測試數(shù)據(jù)和波形,并與計算結(jié)果比較分析實際的仿真結(jié)果圖能夠完美的實現(xiàn)課題的各項要求,最終的仿真測試圖如下圖8-4。7.4調(diào)試中出現(xiàn)的故障、原因及排除方法數(shù)碼管顯示不正確,原因是管腳的配置不對。八、 設(shè)計成果圖8-1 頂層模塊clk:時鐘信號;reset:系統(tǒng)復(fù)位清零;half:5角硬幣模擬信號,為1時表示投幣5角,為0表示未投入;one:1元硬幣模擬信號,為1時表示投幣1元,為0表示未投入;mout:可找零錢輸出顯示,置1表示有零可找,置0表示無零錢可找;tout:有票輸出信號,置1表示有票可出,置0表示不能出票;charge:取零錢信號,置1檢查是否能出零錢;ok:取票,置1檢查是否可取票;ms1,ms2:輸出數(shù)碼管片選信號,01選中第2位數(shù)碼管,10選中第1位數(shù)碼管;a,b,c,d,e,f,g:數(shù)碼管輸出譯碼信號,分別驅(qū)動數(shù)碼管7個引腳。圖8-2 主控模塊mh:投入金額數(shù)碼顯示的高4位;ml: 投入金額數(shù)碼顯示的低4位。圖8-3 數(shù)碼管模塊in1,in2:分別表示高低位輸入金額;ms1,ms2:輸出數(shù)碼管片選信號。a,b,c,d,e,f,g:數(shù)碼管輸出譯碼信號,分別驅(qū)動數(shù)碼管7個引腳。圖8-4 模擬仿真圖圖8-5圖8-5為第一次交易此時投入一枚硬幣,此時金額顯示為10,譯碼后也就是1001111,0000001;此時按下ok鍵,由于金額不足,沒有任何反應(yīng)。隨后投入第二枚硬幣,金額顯示20,金額不足,依舊沒有反應(yīng)。圖8-6圖8-6表示此時又投入1元,此時總共已經(jīng)投入3元,數(shù)碼管顯示30,譯碼后就是0000110,0000001;此時,tout為1。按下ok,出票,tout為0。圖8-7圖8-7表示由于還有余額5毛,所以mout為1,按下charge,找零,mout清零,找零。圖8-8圖8-8為第二次交易,先按下half,金額為5毛,顯示05,譯碼后為0000001,0100100。由于金額不足按下ok后,沒有反應(yīng)。圖8-9圖8-9表示隨后按下one,再按one,此時金額達(dá)到2.5元,金額已滿,tout=1。然后按下ok,出票并且tout清零。九、 設(shè)計結(jié)論本自動售票機(jī)較好地采用了自頂向下的設(shè)計理念,利用層次化結(jié)構(gòu)化的方法將售票機(jī)系統(tǒng)分為三個模塊。自動售票機(jī)系統(tǒng)是由頂層模塊負(fù)責(zé)連接各子模塊,主控模塊設(shè)置各輸入輸出信號、時鐘信號及復(fù)位信號,并控制幣值的累加,數(shù)碼管顯示模塊負(fù)責(zé)數(shù)碼管的動態(tài)顯示幣值組成。設(shè)計合理,層次清晰,仿真時能夠分別測試各個模塊從而盡早地排除錯誤。在程序設(shè)計上頂層模塊調(diào)用主模塊及數(shù)碼管顯示模塊,實現(xiàn)對主控與數(shù)碼管的連接;主控模塊采用Mealy狀態(tài)機(jī)結(jié)構(gòu)主要對投幣情況及出票進(jìn)行控制并送數(shù)碼管顯示;數(shù)碼管模塊采用動態(tài)掃描方法結(jié)合片選信號實現(xiàn)兩位數(shù)碼顯示。通過對著三個大模塊的設(shè)計,成功實現(xiàn)了自動售票的功能并進(jìn)行仿真測試,即當(dāng)幣值等于 2.5 元時,tout指示燈亮,ok鍵有票給出,mout燈不亮,不找零錢;當(dāng)幣值為 3.0 元時,tout指示燈亮,ok鍵有票給出,mout指示燈亮,有零錢給出,charge鍵找零錢;其余情況下,既無票給出也不找零錢。測試結(jié)果顯示設(shè)計符合要求。十、 收獲和體會通過本次課程設(shè)計,我對Verilog HDL語言有了更深刻的了解,能夠比較靈活地運用它來實現(xiàn)我們所想要要其實現(xiàn)的功能。在實驗中,我也遇到了很多挫折,不過我都和同伴一一克服了,大家齊心協(xié)力解決了問題,使我明白了和他人共同合作的重要性。在以后的道路上我們也必須深刻認(rèn)識到團(tuán)隊合作的精神,投入今后的發(fā)展之中。 日常生活中有很多各種不同的自動售票機(jī),通過本次課程設(shè)計我終于了解到自動售票是如何實現(xiàn)的了,雖然我們設(shè)計的知識很簡單的一種售票機(jī),但是原理是大同小異的,相信如果讓我設(shè)計更復(fù)雜點的功能,我也會研究出來。成功就是在不斷摸索著前進(jìn)中實現(xiàn)的,遇到問題我們不能灰心、煩躁,甚至放棄,而要靜下心來仔細(xì)思考,分部檢查,找出最終的原因進(jìn)行改正,這樣才會有進(jìn)步,才會一步步向自己的目標(biāo)靠近,才會取得自己所要追求的成功。附件(源程序)頂層模塊程序:module top(one,half,reset,clk,ok,charge,tout,mout,ms1,ms2,a,b,c,d,e,f,g); /頂層模塊,進(jìn)行子模塊的連接 input one,half,reset,clk,ok,charge; output tout,mout,ms1,ms2,a,b,c,d,e,f,g; wire 3:0mh,ml; ticket u1( /子模塊連接 .one(one), .half(half), .mh(mh), .ml(ml), .tout(tout), .mout(mout), .reset(reset), .clk(clk), .ok(ok), .charge(charge) ); sel u2( .in1(ml), .in2(mh), .clk(clk), .ms1(ms1), .ms2(ms2), .a(a), .b(b), .c(c), .d(d), .e(e), .f(f), .g(g) );endmodule/主控模塊程序:/自動售票機(jī)/*信號定義:clk:時鐘信號;reset:系統(tǒng)復(fù)位清零;half:5角硬幣模擬信號;one:1元硬幣模擬信號;mout:有找零錢輸出顯示;tout:有票輸出信號;charge:取零錢;ok:取票;mh:投入金額數(shù)碼顯示的高4位;ml: 投入金額數(shù)碼顯示的低4位。*/module ticket(one,half,mh,ml,tout,mout,reset,clk,ok,charge);parameter a=0,b=1,c=2,d=3,e=4; /定義5個狀態(tài)input one,half,reset,clk,ok,charge;output tout,mout,mh,ml;reg mout,tout;reg3:0 money;reg3:0 mh;reg3:0 ml;always(posedge clk) begin if(reset) begin tout=0; mout=0; money=a; mh,ml=8b00000000; end case(money) a:if(half) begin money=b; mh,ml=8b00000101; end else if(one) begin money=c; mh,ml=8b00010000; end b:if(half) begin money=c; mh,ml=8b00010000; end else if(one) begin money=d;mh,ml=8b00010101;end c:if(half) begin money=d; mh,ml=8b00010101; end else if(one) begin money=e; mh,ml=8b00100000; end d:if(half) begin money=e; mh,ml=8b00100000; end else if(one) begin money=a; mh,ml=8b00100101; mout=0; tout=1; /sell end e:if(half) begin money=a; mh,ml=8b00100101; tout=1; /sell end else if(one) begin money=a; mh,ml=8b00110000; tout=1; end endcase if(mh,ml=8b00100101) begin if(ok) begin tout=0; mout=0; mh,ml=8b00000000; end end if(mh,ml=8b00110000) begin if(ok) begin tout=0; mout=1; mh,ml=8b00000101;end end if(charge&mout=1) begin mh,ml=8b00000000; mout=0;end endendmodule/數(shù)碼管模塊:module sel(in1,in2,clk,ms1,ms2,a,b,c,d,e,f,g); input 3:0in1,in2; /輸入金額 input clk; output reg ms1,ms2; /輸出數(shù)碼管片選信號 output reg a,b,c,d,e,f,g; /輸出譯碼信號 reg i=0; always(posedge clk) begin case(i) 1d0:begin ms1,ms2=2b10; /對數(shù)碼管進(jìn)行動態(tài)顯示 i=i+1b1; case(in1) 4d0:a,b,c,d,e,f,g=7b0000001; /進(jìn)行數(shù)碼管譯碼輸出 4d1:a,b,c,d,e,f,g=7b1001111; 4d2:a,b,c,d,e,f,g=7b0010010; 4d3:a,b,c,d,e,f,g=7b0000110; 4d4:a,b,c,d,e,f,g=7b1001100; 4d5:a,b,c,d,e,f,g=7b0100100; 4d6:a,b,c,d,e,f,g=7b0100000; 4d7:a,b,c,d,e,f,g=7b0001111; 4d8:a,b,c,d,e,f,g=7b0000000; 4d9:a,b,c,d,e,f,g=7b0000100; endcase end 1d1:begin ms1,ms2=2b01; /對數(shù)碼管進(jìn)行動態(tài)掃描 i=i+1b1; case(in2) 4d0:a,b,c,d,e,f,g=7b0000001; /進(jìn)行數(shù)碼管譯碼輸出 4d1:a,b,c,d,e,f,g=7b1001111; 4d2:a,b,c,d,e,f,g=7b0010010; 4d3:a,b,c,d,e,f,g=7b0000110; 4d4:a,b,c,d,e,f,g=7b1001100; 4d5:a,b,c,d,e,f,g=7b0100100; 4d6:a,b,c,d,e,f,g=7b0100000; 4d7:a,b,c,d,e,f,g=7b0001111; 4d8:a,b,c,d,e,f,g=7b0000000; 4d9:a,b,c,d,e,f,g=7b0000100; endcase end endcase endendmodule測試程序:module test_top;/ Inputsreg one;reg half;reg reset;reg clk;reg ok;reg charge;/ Outputswire tout;wire mout;wire ms1;wire ms2;wire a;wire b;wire c;wire d;wire e;wire f;wire g;/ Instantiate the Unit Under Test (UUT)top uut (.one(one), .half(half), .reset(reset), .clk(clk), .ok(ok), .charge(charge), .tout(tout), .mout(mout), .ms1(ms1), .ms2(ms2), .a(a), .b(b), .c(c), .d(d), .e(e), .f(f), .g(g);initial begin/ Initialize Inputsone = 0;half = 0;reset = 1;clk = 0;ok = 0;charge = 0;/ Wait 100 ns for global reset to finish#100; reset=0; /系統(tǒng)開始運行#2 /投入一枚1元硬幣one=1; #2one=0;#6 /按下ok鍵,取票,金額為1元,無效ok=1;#2 ok=0;#6one=1; /再投入一枚一元硬幣#2one=0;#6one=1; /再投入一枚一元硬幣#2one=0;#6 /按下ok鍵,取票,金額為3元,可以取票ok=1;#2 ok=0;#6 /按下charge鍵,找零,找零5角charge=1;#2charge=0;/第二次交易#10 /投入一枚5角硬幣half=1; #2half=0;#6 /按下ok鍵,取票,金額為0.5元,無效ok=1;#2 ok=0;#6one=1; /再投入一枚一元硬幣#2one=0;#6one=1; /再投入一枚一元硬幣#2one=0;#6 /按下ok鍵,取票,金額為2.5元,取票成功ok=1;#2 ok=0;end always #1clk=clk; /產(chǎn)生時鐘信號 endmodule參考文獻(xiàn)1.夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程.北京:北京航空航天大學(xué)出版社,20132.艾明晶.EDA設(shè)計實驗教程.北京:清華大學(xué)出版社,2010 小組分工資料搜集與整理朱佳俊Verilog HDL程序及仿真測試吳限Verilog HDL程序及仿真測試謝煜撰寫報告及PPT蘇嘉明23- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 電子 綜合 設(shè)計 EDA 課程設(shè)計 自動 售票
鏈接地址:http://m.appdesigncorp.com/p-6723889.html