EDA課程設(shè)計-出租車計費器_第1頁
EDA課程設(shè)計-出租車計費器_第2頁
EDA課程設(shè)計-出租車計費器_第3頁
EDA課程設(shè)計-出租車計費器_第4頁
EDA課程設(shè)計-出租車計費器_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

EDA技術(shù)課程設(shè)計題目:出租車自動計費器班級:電子xxx班姓名:xxx學(xué)號:12345678成績:[目錄]Ⅰ、緒論前言電子系統(tǒng)設(shè)計任務(wù)書題目分析及構(gòu)思Ⅱ、方案論證2.1總體方框圖2.2功能描述及方案選擇Ⅲ、系統(tǒng)設(shè)計詳述3.1各模塊設(shè)計原理及仿真3.2整個系統(tǒng)的原理圖及仿真Ⅳ、程序設(shè)計歷程4.1系統(tǒng)設(shè)計工作進程4.2仿真實現(xiàn)過程中遇到的問題及排除措施4.3設(shè)計收獲和體會Ⅴ、附錄:參考文獻Ⅰ、緒論古人云:“百尺竿頭,更進一步。〞也就是說:我們不要滿足于已取得的成就,還要繼續(xù)努力,不斷勇往直前。但高中的時候,高考這塊敲門磚就是你的指明燈。而進入大學(xué),我一下子被什么協(xié)會、什么學(xué)生會、什么球隊、學(xué)習(xí)上的難題……沖昏了頭腦,我甚至不知道什么時候該干些什么了。有時候更會發(fā)自內(nèi)心的支持“讀書無用論〞,因為高中學(xué)的是根本知識,而大學(xué)學(xué)的是理論,因此,對學(xué)習(xí)的興趣也就隨著變淡了。但深知大學(xué)四年不能就這樣孤獨、寂寞、迷惘、恐懼地度過,所以,還一直端正自己的態(tài)度,努力地做好一切事。而課程設(shè)計正好彌補大學(xué)這種純理論學(xué)習(xí)的弊端,也是適應(yīng)社會主義建設(shè)人才的一項重要的實踐環(huán)節(jié),是理論聯(lián)系實際的有效方式。高校是工程師的搖籃,要培養(yǎng)德才兼?zhèn)涞暮细窆こ處?,必須進行理論知識和實踐動手能力的正規(guī)會培訓(xùn)。課程設(shè)計是我們必須參與的一項實踐教學(xué)環(huán)節(jié)。通過課程設(shè)計,學(xué)生可以綜合運用所學(xué)的電子設(shè)計的理論知識和方法,掌握設(shè)計的一般規(guī)律,培養(yǎng)解決電子工程中實際問題的能力。還可以學(xué)會從機器的功能要求出發(fā),合理選擇系統(tǒng)或零件的類型,制定設(shè)計方案,正確計算零件的工作能力,工作要求,并考慮制造工藝、使用、維護、經(jīng)濟、平安等問題,訓(xùn)練設(shè)計能力。另外,在課程設(shè)計的過程當(dāng)中,學(xué)生可以通過查閱、分析、計算、繪圖等過程,學(xué)習(xí)正確運用標(biāo)準(zhǔn)、標(biāo)準(zhǔn)、手冊、圖冊等技術(shù)資料,訓(xùn)練設(shè)計的根本技能。同時,把在理論教學(xué)中學(xué)到的知識具體運用到實際工作中,提高學(xué)生的綜合素質(zhì),從而到達電子工程師根本培訓(xùn)的目的,使學(xué)生成為既有理論知識,又有實際動手能力的工程技術(shù)管理人才。雖然課程設(shè)計已經(jīng)結(jié)束,但作為一名大學(xué)生對設(shè)計中任務(wù)要求做出正確的方案以及自己的一些感想做一次總結(jié)也很有必要。由于時間倉促和水平有限,課程設(shè)計報告書中難免有不當(dāng)和欠妥之處,敬請老師不吝批評指正。1.2電子系統(tǒng)設(shè)計任務(wù)書1.設(shè)計一個出租車自動計費器,元.2.,起價8元〔3公里起價〕均能通過人工輸入。3.行車?yán)锍痰挠嬞M電路將汽車行駛的里程數(shù)轉(zhuǎn)換成與之成正比的脈沖數(shù),然后由計數(shù)譯碼電路轉(zhuǎn)換成收費金額,實驗中以一個脈沖模擬汽車前進十米,那么每100個脈沖表示1公里,然后用BCD碼比例乘法器將里程脈沖乘以每公里單價的比例系數(shù),比例系數(shù)可由開關(guān)設(shè)置。例如單價是1.0元/公里,那么脈沖當(dāng)量為0.01元/脈沖。4.用LED顯示行駛公里數(shù),兩個數(shù)碼管顯示收費金額。1.等候時間計費需要時間轉(zhuǎn)換成脈沖個數(shù),用每個脈沖表示的金額與脈沖數(shù)相乘即得計費數(shù),例如100個脈沖表示10分鐘。而10分鐘收費0.5元,那么脈沖當(dāng)量0.05元/脈沖,如果將脈沖當(dāng)量設(shè)置成與行車?yán)锍逃嬞M相同〔0.01元/脈沖〕,那么10分鐘內(nèi)的脈沖數(shù)應(yīng)為500個。2.用LED顯示等候時間,兩個數(shù)碼管顯示等候時間收費金額。3.用加法器幾項收費相加:P=P1+P2+P31為起價,P2為行車?yán)锍逃嬞M,P3為等候時間計費,用兩個數(shù)碼管表示結(jié)。5.8選1選擇器將計費數(shù)據(jù)〔4位BCD碼〕、計時數(shù)據(jù)〔2位BCD碼〕、計程數(shù)據(jù)〔2位BCD碼〕動態(tài)選擇輸出。6.利用MAX+PLUSⅡ軟件在計算機上完成設(shè)計、編程測試、波形仿真最后并下載到器件中,進行調(diào)試。Ⅱ、方案論證2.1總體方框圖圖1-1總體功能原理圖2.2功能描述及方案選擇該設(shè)計問題自頂向下可分為分頻模塊、計量模塊、計費模塊、控制模塊、譯碼和動態(tài)掃描顯示模塊?!?〕分頻模塊分頻模塊對頻率為240Hz的輸入脈沖進行分頻,得到的頻率為16Hz,15Hz和1Hz的三種頻率。該模塊產(chǎn)生頻率信號用于計費,15HZ信號為元的計費控制,16Hz信號為1元計費控制?!?〕計量控制模塊計量控制模塊是出租車自動計費器系統(tǒng)的主體局部,該模塊主要完成等待計時功能、計價功能、計程功能,同時產(chǎn)生3分種的等待計時使能控制信號en1,行程3公里外的使能控制信號en0。其中計價功能主要完成的任務(wù)是:行程3公里內(nèi),起步費為8元;3公里外以每公里1.0元計費,等待累計時間以每分鐘元計費;計時功能主要完成的任務(wù)是:計算乘客的等待累計時間,計時器的量程為59分,滿量程自動歸零;計程功能主要完成的任務(wù)是:計算乘客所行駛的公里數(shù)。計程器的量程為〔3〕譯碼顯示模塊該模塊經(jīng)過8選1選擇器將計費數(shù)據(jù)〔4位BCD碼〕、計時數(shù)據(jù)〔2位BCD碼〕、計程數(shù)據(jù)〔2位BCD碼〕動態(tài)選擇輸出。其中計費數(shù)據(jù)送入顯示譯碼模塊進行譯碼,最后送至十元、元、角、分為單位對應(yīng)的數(shù)碼管上顯示,最大顯示為99.99元;計時數(shù)據(jù)送入顯示譯碼模塊進行譯碼,最后送至分為單位對應(yīng)的數(shù)碼管上顯示,最大顯示為59秒;計程數(shù)據(jù)送入顯示譯碼模塊進行譯碼,最后送至以公里為單位的數(shù)碼管上顯示,最大顯示為99公里。Ⅲ、系統(tǒng)設(shè)計詳述3.1分頻功能實現(xiàn)的源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfpisport(clk_240:instd_logic;q15:outstd_logic;q16:outstd_logic;q1:outstd_logic);endfp;architectureqqoffpisbeginprocess(clk_240)variablecout15:integerrange0to15;variablecout16:integerrange0to14;variablecout1:integerrange0to239; beginifclk_240'eventandclk_240='1'thenifcout15=15thencout15:=0;q15<='1';elsecout15:=cout15+1;q15<='0';endif;ifcout16=14thencout16:=0;q16<='1';elsecout16:=cout16+1;q16<='0';endif;ifcout1=239thencout15:=0;q1<='1';elsecout1:=cout1+1;q1<='0';endif;endif;endprocess;endqq;3.1分頻模塊波形仿真圖圖3-1分頻模塊仿真波形圖由圖3-1可知:當(dāng)輸入240HZ的clk脈沖信號時,clk每出現(xiàn)240個脈沖時q1、q15、q16分別出現(xiàn)1、15、16個,相當(dāng)于計費0.01元、元、1.0元,幫助計費。3.2計量功能模塊實現(xiàn)的源代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityjiliangisport(start:instd_logic;fin:instd_logic;stop:instd_logic;clk_240:instd_logic;en1,en0:bufferstd_logic;k1,k0:bufferstd_logic_vector(3downto0);m1,m0:bufferstd_logic_vector(3downto0));endjiliang;architecturert2ofjiliangissignalw:integerrange0to59;beginprocess(clk_240)beginifclk_240'eventandclk_240='1'thenifstart='0'thenw<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";k0<="0000";elsifstop='1'thenifw=59thenw<=0;ifm0="1001"thenm0<="0000";ifm1="0101"thenm1<="0000";elsem1<=m1+1;endif;elsem0<=m0+1;endif;ifm1&m0>"00000001"thenen1<='1';elseen1<='0';endif;elsew<=w+1;en1<='0';endif;elsiffin='1'thenifk0="1001"thenk0<="0000";ifk1="1001"thenk1<="0000";elsek1<=k1+1;endif;elsek0<=k0+1;endif;ifk1&k0>"00000010"thenen0<='1';elseen0<='0';endif;elseen1<='0';en0<='0';endif;endif;endprocess;endrt2;計量模塊波形仿真圖圖3-2計量模塊波形仿真圖由圖3-2可知:由于講輸入?yún)?shù)fin一直設(shè)為高,將stop一直設(shè)為低。所以k1、k0記錄路程的輸出量有值,而m1、m0記錄等待時間的輸出量沒有值。3.3計費功能實現(xiàn)的源代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityjifeiisport(clk2:instd_logic;start:instd_logic;c0,c1,c2,c3:bufferstd_logic_vector(3downto0));endjifei;architecturert3ofjifeiisbeginprocess(clk2,start)beginifstart='0'thenc3<="0000";c2<="0000";c1<="1000";c0<="0000";elsifclk2'eventandclk2='1'thenifc0="1001"thenc0<="0000";ifc1="1001"thenc1<="0000";ifc2="1001"thenc2<="0000";ifc3="1001"thenc3<="0000";elsec3<=c3+1;endif;elsec2<=c2+1;endif;elsec1<=c1+1;endif;elsec0<=c0+1;endif;endif;endprocess;endrt3;計費模塊波形仿真圖圖3-3計費模塊波形仿真圖由圖3-3可知:輸入一個脈沖信號,同時當(dāng)start為高時開始計價;c0、c1、c2、c3為價格的顯示信號,逢9后一位將進1。3.4實現(xiàn)控制功能源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitykongzhiisport(ent0,ent1:instd_logic;clk_in1:instd_logic;clk_in2:instd_logic;clk_out:outstd_logic);endkongzhi;architecturert4ofkongzhiisbeginprocess(ent0,ent1)beginifent0='1'thenclk_out<=clk_in1;elsifent1='1'thenclk_out<=clk_in2;endif;endprocess;endrt4;控制模塊波形仿真圖圖3-4控制模塊波形仿真圖由圖3-4可知:本模塊主要是通過兩個不同的輸入使能信號,對兩個輸入脈沖進行選擇輸出,使能信號是計量模塊中的輸出,兩個輸入脈沖是分頻模塊輸出的16HZ、15HZ的脈沖。3.5實現(xiàn)譯碼和動態(tài)掃描功能源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityyimaisport(clk:instd_logic;m1,m0,k1,k0,c3,c2,c1,c0:instd_logic_vector(3downto0);sg:outstd_logic_vector(7downto0);bt:outstd_logic_vector(7downto0));end;architecturebehavofyimaissignalcnt8:std_logic_vector(2downto0);signala:std_logic_vector(3downto0);signalb:std_logic_vector(7downto0);signalc:std_logic_vector(7downto0);begin process(clk) begin ifclk'eventandclk='1'thencnt8<=cnt8+1; endif; endprocess; process(cnt8) begin casecnt8is when"000"=>a<=k0;c<="00000001";b(7)<='0'; when"001"=>a<=k1;c<="00000010";b(7)<='0'; when"010"=>a<=m0;c<="00000100";b(7)<='0'; when"011"=>a<=m1;c<="00001000";b(7)<='0'; when"100"=>a<=c0;c<="00010000";b(7)<='0'; when"101"=>a<=c1;c<="00100000";b(7)<='1'; when"110"=>a<=c2;c<="01000000";b(7)<='0'; when"111"=>a<=c3;c<="10000000";b(7)<='0'; whenothers=>null; endcase; endprocess; process(a) begin caseais when"0000"=>b(6downto0)<="0111111"; when"0001"=>b(6downto0)<="0000110"; when"0010"=>b(6downto0)<="1011011"; when"0011"=>b(6downto0)<="1001111"; when"0100"=>b(6downto0)<="1100110"; when"0101"=>b(6downto0)<="1101101"; when"0110"=>b(6downto0)<="1111101"; when"0111"=>b(6downto0)<="0000111"; when"1000"=>b(6downto0)<="1111111"; when"1001"=>b(6downto0)<="1101111"; whenothers=>null; endcase; endprocess; sg<=b;bt<=c;end;譯碼顯示模塊波形仿真圖圖3-5譯碼模塊波形仿真圖由圖3-5可知:首先以一個case語句進行通道的選擇,以8為二進制表示。當(dāng)某一位為1時,表示選擇該通道接著。接著又以一個case語句對所選的通道進行動態(tài)掃描,由于時間極小,因此在我們用肉眼感覺是同時顯示出來的。程序如下libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;eatitytaxiisport(clk_240:instd_logic;start:instd_logic;stop:instd_logic;fin:instd_logic;cha3,cha2,cha1,cha0:outstd_logic_vector(3downto0)kn1,kn0:outstd_logic_verctor(3downto0);min1,min0:outstd_logic_vector(3downto0));endtaxi;architecturebehaveoftaxiissignalf_15,f_16,f_1:outstd_logic;signalq_15:integerrange0to15;signalq_16:integerrange0to14;signalq_1:integerrange0to239;signalw:integerrange0to59;signalc3,c2,c1,c0:std_logicvector(3downto0)signalk1,k0:std_logicvector(3downto0)signalm1:std_logicvector(2downto0)signalm0:std_logicvector(3downto0)signalen1,en0,f:std_logic;feipin:process(clk_240,start)beginifclk_240'eventandclk_240='1'thenifstart='0'thenq_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0';elseifq_15=15thenq_15<=0;f_15<='1'elseq_15<=q_15+1;f_15<='0';endif;ifq_16=14thenq_16<=0;f_16<='1';elseq_16<=q_16+1;f_16<='0';endif;ifq_1=239thenq_1<=0;f_1<='1';elseq_1<q_1+1;f_1='0';endif;ifen1='1'thenf<=f_16;elseen0='1'thenf<=f_16;elsef<='0';endif;endif;endif;endprocess;process(f_1)beginiff_1'eventandf_1='1'thenifstart='0'thenw<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";elseifstop='1'thenifw=59thenw<=0;ifm0="1001"thenm0<="0000";ifm1="101"thenm1<="0000";elsem1<=m1+1;endif;elsem0<m0+1;endif;ifm1&m0>"0000001"thenen1<='1';elseen1<='0';endif;elsew<w+1;en1<='0';endif;elsiffin='1'thenifk0="1001"thenk0<="0000";ifk1="1001"thenk1<="0000";elsek1<=k1+1;endif;elsek0<=k0+1;endif;ifk1&k0>"00000010"thenen0<='1';elseen0<='0';endif;elseen1<='0';en0<='0';endif;cha3<=c3;cha2<=2;cha1<=c1;cha0<=c0;km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;endif;endprocess;process(f,start)beginifstart='0'thenc3<="0000";c2<="0001";c1<="0000";c0<="0000";elseiff'eventandf='1'thenifc0="1001"thenc0<="0000";ifc1="1001"thenc1<="0000";ifc2="1001"thenc2<="0000";ifc3="1001"thenc3<="0000";elsec3<=c3+1;endif;elsec2<=c2+1;endif;elsec1<=c1+1;endif;elsec0<=c0+1;endif;endif;endprocess;endbehav;總模塊的波形仿真圖圖3-6總模塊的波形仿真圖Ⅳ、程序設(shè)計歷程出租車計費器顯示系統(tǒng)的設(shè)計共由五個小模塊組成,在前期的設(shè)計中,我們每個組員負責(zé)一個模塊的設(shè)計與仿真及其硬件下載的測試。到了中期,每個組員對于自己負責(zé)的工作都或多或少存在一些問題和疑問,因此在這一時期,我們組內(nèi)會加強交流,共同來解決問題。如果還有問題,我們就去向老師請教。到了后期,我們將各個小的模塊組合起來,形成一個系統(tǒng),進行軟件測試和仿真,對于出現(xiàn)的問題及時的進行解決。最后形成課程設(shè)計報告。在前期我負責(zé)的是分頻器的設(shè)計這一模塊,中期時我也幫助組內(nèi)成員解決一些問題,后期對各模塊進行組裝形成了系統(tǒng)??偟膩碚f,對于各個階段的任務(wù),我都按時的完成了。4.2仿真實現(xiàn)過程中遇到的問題及排除措施1.在編譯程序的時候,會出現(xiàn)好多錯誤,無法編譯成功。2.編譯通過后,仿真之后,發(fā)現(xiàn)仿真并沒有預(yù)期的效果。如無法正常顯示出波形等等,當(dāng)參加適當(dāng)?shù)倪x通信號或者脈沖后發(fā)現(xiàn)問題得到了解決。所以必須在實踐中不斷地修改以得到正確的結(jié)論。3.高電平有效還是低電平有效,這是一個非常容易無視的問題,有時就知道這個端口要控制信號但不考慮好什么電平有效,造成錯誤,使得使能端或者清零端的出現(xiàn)錯誤控制信號。并且到底是脈沖控制,還是邊沿控制一定要清楚。在實驗時候可以防止一些不必要的麻煩。4.引腳重復(fù)使用也是一個問題,有時候輸出信號必須輸出到一個特定的引腳。而輸出來自兩路信號,這時候必須參加一個選擇器件選擇輸出信號輸出。在實際調(diào)試的時候我們必須耐心思考,遇到問題針對問題出現(xiàn)的原因認(rèn)真思考以解決問題。.收獲和體會這是一次綜合性很強的實驗,從最初的模塊規(guī)劃,VHDL程序的編寫,再到檢驗程序的正確性,然后到調(diào)試仿真,直至最后的編程下載調(diào)試,每一個環(huán)節(jié)都讓我加深了對實際問題的思考,同時也讓我動手能力有了很大的提高。這次最大的收獲就是學(xué)會了很系統(tǒng)地去解決一個實際問題,學(xué)會了巧妙運用模塊化的思想。在整個程序設(shè)計與實現(xiàn)中,最成功的地方就是有條理地將功能細化,分成一個一個小的模塊來實現(xiàn)。每做好一個小模塊實現(xiàn)的電路,對其進行調(diào)試找出錯誤并更正,全部無誤后進行仿真,仿真時總是無法到達百分百的效果,就會回頭讀程序,讀懂了程序后,在進行仿真,一步步的修正,做到百分百的正確。在這個過程中,我更深刻地體會將每個模塊集合起來實現(xiàn)一個整體功能的過程。同時也更加深入地了解了MAX+plus2這一軟件的更多的功能。更重要的是在此過程中,我學(xué)會了獨立思考,遇到問題一步一步去研究與解決解決,對于仿真出現(xiàn)的問題不急不躁,而是一局部一局部地對其應(yīng)有的功能進行調(diào)試,對問題進行各個擊破。遇到不懂的向老師請教,去圖書館或上網(wǎng)查找相關(guān)資料。總而言之,這次實驗讓我覺得受益匪淺,不再覺得學(xué)無所用。實驗所解決的問題與生活緊密相連,從而將平時學(xué)書本上的理論與實踐很好地結(jié)合起來,最終當(dāng)做出成品時,有很大的成就感。在實際調(diào)試的時候我們必須耐心思考,遇到問題針對問題出現(xiàn)的原因認(rèn)真思考以解決問題。這次的課程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論