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