




已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄第1章總體設(shè)計思路11.1系統(tǒng)總體結(jié)構(gòu)11.2 各模塊設(shè)計功能及設(shè)計思路2第二章 各模塊功能32.1 jifei模塊32.2 x模塊62.3 sel模塊102.4 xxx1模塊122.5 di模塊142.6 div模塊152.7 decode3_8模塊17第3章 總體電路圖183.1、模塊連接:183.2、硬件連接:193.3、結(jié)果分析:19第4章 硬件實現(xiàn)22第5章 總結(jié)23第6章 參考文獻(xiàn)24第1章總體設(shè)計思路1.1系統(tǒng)總體結(jié)構(gòu)動態(tài)掃描/譯碼/數(shù)碼管顯示模塊片選信號產(chǎn)生模塊數(shù)據(jù)轉(zhuǎn)換模塊數(shù)碼管控制模塊信號輸入模塊圖1.1 系統(tǒng)總體框圖出租車計費(fèi)器的組成如上圖所示,各部分主要功能包括輸入信號模塊對車輪傳感器傳送的脈沖信號進(jìn)行計數(shù),并以高低脈沖模擬出租汽車啟動,停止,暫停,速度按鈕,具有輸入信號作用;數(shù)據(jù)轉(zhuǎn)換器模塊將計費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)據(jù);譯碼/動態(tài)掃描模塊將路程與費(fèi)用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管;數(shù)碼管顯示模塊將公里數(shù)和計費(fèi)金額均用4位LED數(shù)碼管顯示 。1.2 各模塊設(shè)計功能及設(shè)計思路信號輸入模塊實現(xiàn)計費(fèi)功能和現(xiàn)場模擬功能。計費(fèi)標(biāo)準(zhǔn)為:按行駛里程計費(fèi),起步價為7.00元,并在車行3 km后按2.20元km計費(fèi),當(dāng)計費(fèi)器達(dá)到或超過20元時,每公里加收50的車費(fèi),車停止不計費(fèi)。并以高低脈沖模擬出租汽車啟動、停止、暫停、速度按鈕,具有輸入信號的作用。數(shù)據(jù)轉(zhuǎn)換模塊數(shù)據(jù)轉(zhuǎn)換模塊是一個模為10的加法計數(shù)器,可將計費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)。顯示模塊顯示模塊是由七段LED數(shù)碼管譯碼和動態(tài)掃描顯示兩部分組成。采用的是共陰極七段數(shù)碼管,根據(jù)十六進(jìn)制數(shù)和七段顯示段碼表的對應(yīng)關(guān)系,其中要求路程和車費(fèi)都要用2位小數(shù)點來表示,所以須設(shè)置一個控制小數(shù)點的變量,即程序中的dp。這段程序所示的是在數(shù)碼管的第二、第六個后面顯示小數(shù)點,實現(xiàn)了路程和車費(fèi)都用2位小數(shù)點表示的功能。數(shù)碼管控制及譯碼顯示模塊將十進(jìn)制的輸入信號用七段數(shù)碼管顯示,由七段發(fā)光二極管組成數(shù)碼顯示器,利用字段的不同組合。可分別顯示09十個數(shù)字。片選信號產(chǎn)生模塊片選信號產(chǎn)生模塊是對數(shù)碼管進(jìn)行片選并讓其能夠按照要求顯示數(shù)據(jù)的模塊第二章 各模塊功能2.1 jifei模塊 此模塊為計費(fèi)模塊(即總體結(jié)構(gòu)中的信號輸入模塊),實現(xiàn)計費(fèi)功能,計費(fèi)標(biāo)準(zhǔn)為:按行駛里程計費(fèi),起步價為7.00元,并在車行3公里后按2.20元/km計費(fèi),當(dāng)計數(shù)器達(dá)到或超過20元時,每公里加收50%的車費(fèi),即按3.30元/km計費(fèi)。CLK、START、STOP、PAUSE、speed為輸入信號,分別代表汽車的起動、停止、暫停和速度,CLK為掃描時鐘,硬件實現(xiàn)時加入時鐘信號,另有兩個輸出,即MONEY和RUN,分別代表車費(fèi)和路程,當(dāng)車處于行駛狀態(tài)時,此模塊會自動記錄下路程與車費(fèi)狀況并作為轉(zhuǎn)換模塊的輸入。jifei模塊源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jfmk is port(clk,start,stop,pause,speed:in std_logic; money,run:out integer range 0 to 8000);end jfmk;architecture one of jfmk isbegin process(clk,start,stop,pause,speed) variable a,b:std_logic; variable aa:integer range 0 to 100; variable chf,lc:integer range 0 to 8000; variable num:integer range 0 to 9; begin if(clkevent and clk=1)then if(stop=0) then chf:=0; num:=0; b:=1; aa:=0; lc:=0; elsif(start=0) then b:=0; chf:=700; lc:=0; elsif(start=1 and speed=1 and pause=1) then if(b=0)then num:=num+1; end if; if(num=9)then lc:=lc+5; num:=0; aa:=aa+5; end if; elsif(start=1 and speed=0 and pause=1)then lc:=lc+1; aa:=aa+1; end if; if(aa=100)then a:=1; aa:=0; else a:=0; end if; if(lc300)then null; elsif(chf=2000 and a=1)then chf:=chf+330; end if; end if; money=chf; run=100則a:=1,aa:=0,否則a:=0,如果chf2000 and a=1則chf:=chf+330;以上各狀態(tài)表示汽車在三公里以外車費(fèi)在二十元以內(nèi)的狀態(tài)、車費(fèi)在二十元以外的狀態(tài)。結(jié)束進(jìn)程,結(jié)束結(jié)構(gòu)體。jifei模塊的時序仿真圖:時序仿真圖分析: 圖中的stop為汽車停止輸入端,上升沿有效;start為汽車啟動輸入端,上升沿有效;pause為汽車暫停輸入端,上升沿有效;speed為汽車速度輸入端,上升沿有效。CLK為時鐘源信號;money為汽車車費(fèi)輸出端,run為汽車路程輸出端。由圖可知:當(dāng)stop,Start,pause,speed全為高電平時路程按5的速度增加,車費(fèi)為700.當(dāng)路程增加到300時,車費(fèi)變?yōu)?20,以后路程每增加100,車費(fèi)增加220。2.2 x模塊此模塊為數(shù)據(jù)轉(zhuǎn)換模塊,功能是將計費(fèi)模塊產(chǎn)生的車費(fèi)與路程的模擬量轉(zhuǎn)換成數(shù)字量并輸出,它是一個模為10的加法計數(shù)器,可將計費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)。其中DACLK為時鐘信號,ASCORE、BSCORE連接計費(fèi)模塊的MONEY和run,輸出為2個4位的十進(jìn)制數(shù),可以分別表示路程和車費(fèi)情況。當(dāng)車運(yùn)行于不同狀況時,此模塊會將不同的車費(fèi)與路程狀況轉(zhuǎn)換為數(shù)字量并輸出。x模塊的源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity x is port(daclk:in std_logic; ascore,bscore:in integer range 0 to 8000; age,ashi,abai,aqian,bge,bshi,bbai,bqian:out std_logic_vector(3 downto 0);end x;architecture rt1 of x isbegin process(daclk,ascore) variable comb1:integer range 0 to 8000; variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0); begin if (daclkevent and daclk=1)then if(comb1ascore)then if(comb1a=9 and comb1b=9 and comb1c=9)then comb1a:=0000; comb1b:=0000; comb1c:=0000; comb1d:=comb1d+1; comb1:=comb1+1; elsif(comb1a=9 and comb1b=9)then comb1a:=0000; comb1b:=0000; comb1:=comb1+1; comb1c:=comb1c+1; elsif(comb1a=9)then comb1a:=0000; comb1b:=comb1b+1; comb1:=comb1+1; else comb1a:=comb1a+1; comb1:=comb1+1; end if; else ashi=comb1b; age=comb1a; abai=comb1c; aqian=comb1d; comb1:=0; comb1a:=0000; comb1b:=0000; comb1c:=0000; comb1d:=0000; end if; end if; end process; process(daclk,bscore) variable comb2:integer range 0 to 8000; variable comb2a,comb2b,comb2c,comb2d:std_logic_vector(3 downto 0); begin if(daclkevent and daclk=1)then if(comb2bscore)then if(comb2a=9 and comb2b=9 and comb2c=9)then comb2a:=0000; comb2b:=0000; comb2c:=0000; comb2d:=comb2d+1; comb2:=comb2+1; elsif(comb2a=9 and comb2b=9)then comb2a:=0000; comb2b:=0000; comb2:=comb2+1; comb2c:=comb2c+1; elsif(comb2a=9)then comb2a:=0000; comb2b:=comb2b+1; comb2:=comb2+1; else comb2a:=comb2a+1; comb2:=comb2+1; end if; else bshi=comb2b; bge=comb2a; bbai=comb2c; bqian=comb2d; comb2:=0; comb2a:=0000; comb2b:=0000; comb2c:=0000; comb2d:=0000; end if; end if; end process;end rt1;程序分析:首先打開ieee庫,用use語句聲明使用std_logic_1164和std_logic_unsigned程序包。定義實體,daclk、ascore、bscore為輸入,age、ashi、abai、aqian、bge、bshi、bbai、bqian為輸出位矢量。然后定義結(jié)構(gòu)體,daclk、ascore、bscore為敏感信號,定義變量comb1a,comb1b,comb1c,comb1d為位矢量,變量comb1為0到7000范圍。當(dāng)時鐘上升沿到來時,各個變量分別實現(xiàn)個、十、百、千的進(jìn)位。然后實現(xiàn)一個循環(huán)。然后再將各個變量付給各個位矢量。X模塊的時序仿真圖時序仿真圖的分析轉(zhuǎn)換模塊的時序仿真圖如下圖所示:可見能將路程和車費(fèi)轉(zhuǎn)換為4位的十進(jìn)制數(shù),便于8位數(shù)碼管顯示。由圖可知:當(dāng)ascore,bscore為13位二進(jìn)制數(shù),當(dāng)ascore為0-9時age從0到9變化,當(dāng)ascore為10時age等于0,ashi等于1。 當(dāng)bscore為0-9時bge從0到9變化,當(dāng)bscore為10時bge等于0,bshi等于1。2.3 sel模塊此模塊為片選信號產(chǎn)生模塊,功能是選擇八段數(shù)碼管按照設(shè)計要求進(jìn)行正確的顯示。其具體的對應(yīng)關(guān)系如下表所示:接口序號數(shù)碼管SEL2SEL1SEL0狀態(tài)111第1位亮110第2位亮101第3位亮100第4位亮011第5位亮010第6位亮001第7位亮0XX第8位亮在該模塊中CLK為時鐘信號,A2.0為片選輸出,用于選擇數(shù)碼管,連接譯碼顯示模塊的片選端C2.0。se模塊的源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel is port(clk:in std_logic; a:out std_logic_vector(2 downto 0);end sel;architecture rt1 of sel isbegin process(clk) variable b:std_logic_vector(2 downto 0); begin if(clkevent and clk=1)then if(b=111)then b:=000; else b:=b+1; end if; end if; ad=a1;dpd=a2;dpd=a3;dpd=a4;dpd=b1;dpd=b2;dpd=b3;dpd=b4;dpnull;end case;end process;end rtl;xxx1模塊的時序仿真圖:由上圖可知,輸入信號C為3位片選信號其變化范圍為0到7,輸入信號c從0到7逐個變化時,輸出d逐個輸a1,a2,a3,a4,b1,b2,b3,b4的輸入信號。2.5 di模塊 此模塊為數(shù)碼管控制模塊,功能是控制七段數(shù)碼管對轉(zhuǎn)換后的數(shù)字量進(jìn)行顯示,使其完成路程和車費(fèi)的顯示。其中D3.0連接動態(tài)掃描/譯碼/數(shù)碼管顯示模塊的D3.0端,Q6.0連接七段數(shù)碼管,利用其控制特性在數(shù)碼管上顯示出車費(fèi)和路程。di模塊的源程序:library ieee;use ieee.std_logic_1164.all;entity di isport(d:in std_logic _vector(3 downto 0); q:out std_logic_vector(6 downto 0);end di;architecture rtl of di isbegin process(d) begin case d is when0000=qqqqqqqqqq=99999 thencnt:=0;tmp:=not tmp;else cnt:=cnt+1;end if;end if;clkout=tmp;end process;end one;div模塊時序仿真波形:div將時鐘信號分頻,使頻率減小。2.7 decode3_8模塊 sel通過decode3_8模塊選擇數(shù)碼管decode3_8模塊源程序: LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY decode3_8 IS PORT(SEL:IN std_logic_vector(2 downto 0); Q:OUT std_logic_vector(7 downto 0);END decode3_8;ARCHITECTURE a OF decode3_8 ISBEGIN Q=11111110when sel=0 else 11111101when sel=1 else 11111011when sel=2 else 11110111when sel=3 else 11101111when sel=4 else 11011111when sel=5 else 10111111when sel=6 else 01111111when sel=7 else 11111111; END a;decode3_8模塊時序仿真波形圖:decode3_8模塊選擇數(shù)碼管,當(dāng)sel信號從0-7變化時,依次選擇1-8八個數(shù)碼管。第3章 總體電路圖整體工作情況:3.1、模塊連接:計費(fèi)模塊的clk、start、stop、pause和speed端連接輸入,money12.0和run12.0連接轉(zhuǎn)換模塊的ascore12.0與bscore12.0;轉(zhuǎn)換模塊的daclk端連接輸入,age3.0至bqian3.0連接動態(tài)掃描/譯碼/數(shù)碼管顯示模塊的a13.0至b43.0;動態(tài)掃描/譯碼/數(shù)碼管顯示模塊的C2.0連接片選輸出SEL2.0,DP端連接輸出DP,D3.0連接數(shù)碼管控制模塊的D3.0;片選信號產(chǎn)生模塊的CLK端與輸入信號相連,并連接轉(zhuǎn)換模塊的DACLK端,A2.0連接片選輸出SEL2.0,并與動態(tài)掃描/譯碼/數(shù)碼管顯示模塊的C2.0相連;數(shù)碼管控制模塊的D3.0端與動態(tài)掃描/譯碼/數(shù)碼管顯示模塊的D3.0端相連,Q6.0端連接八段數(shù)碼管輸出Q6.0。3.2、硬件連接:CLK接pin-28 輸入為1hz的脈沖;daclk是實驗箱上50Mhz固定晶振START、STOP、PAUSE、SPEED分別連接按鍵開關(guān),用于控制車的啟動、停止、暫停和速度;DP和Q6.0分別連接八段碼顯示單元的a到dp;W7.0接數(shù)據(jù)線。3.3、結(jié)果分析:該電路的仿真波形圖如下:clk為jifei模塊時鐘信號,daclk為時鐘信號,stop為汽車停止輸入端;start為汽車啟動輸入端;pause為汽車暫停輸入端;speed為汽車速度輸入端。DP表示小數(shù)點。該電路的總體管腳分配圖:clk:pin-28;daclk:pin-153;start:pin-4;stop:pin-5;pause:pin-6; speed:pin-7;dp:pin-82;q6.0:pin-105;pin-104;pin-101;pin-100; pin-85;pin-84;pin-83;W7.0:pin-86;pin-87;pin-88;pin-93;pin-94;pin-95;pin-98;pin-99;vga3.0:pin-162;pin-161;pin-164;pin-163;第4章 硬件實現(xiàn)通過硬件下載,該電路可以完成硬件實現(xiàn),芯片管腳定義可以直接用編輯pin文件。完成管腳定義后選擇器件,編譯后生成sof、pof文件。選擇sof文件進(jìn)行下載。通過對每一模塊的仿真和下載,可以實現(xiàn)各個模塊的邏輯功能,驗證了各個模塊的正確性。在出租車計費(fèi)系統(tǒng)的5個模塊中 ,重點在于jifei模塊,x(轉(zhuǎn)化)模塊,顯示模塊。jifei模塊主要有汽車的啟動、停止、暫停、速度按鍵;轉(zhuǎn)化模塊主要是把車費(fèi)和路程轉(zhuǎn)化為4位十進(jìn)制;顯示模塊是將車費(fèi)和路程顯示出來。各模塊完成后,在將它們組合成完整的出租車系統(tǒng),在設(shè)計過程中還需要改進(jìn)的是控制系統(tǒng)的糾錯功能。出租車計費(fèi)器系統(tǒng)的設(shè)計已全部完成,能按預(yù)期的效果進(jìn)行模擬汽車啟動、停止、暫停等功能,并設(shè)計動態(tài)掃描電路顯示車費(fèi)數(shù)目,由動態(tài)掃描電路來完成。車暫時停止不計費(fèi)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省初三上冊數(shù)學(xué)試卷
- 肝病病人護(hù)理
- 二三級數(shù)學(xué)試卷
- 德威七年級數(shù)學(xué)試卷
- 肛門癌術(shù)后護(hù)理課件
- 二升四三數(shù)學(xué)試卷
- 肌理畫課件背景介紹
- 2025年天津市衛(wèi)生健康委員會所屬天津市海河醫(yī)院招聘99人筆試歷年專業(yè)考點(難、易錯點)附帶答案詳解
- 高血壓的并發(fā)癥及控制策略
- 給外國人做數(shù)學(xué)試卷
- 紡織廠承包轉(zhuǎn)讓協(xié)議書范文范本
- 蘆笛艾青詩選課件
- 2噸超純水技術(shù)方案
- 道路交通安全知識講座課件
- 江蘇省環(huán)保集團(tuán)有限公司招聘筆試題庫2024
- 鐵路貨車轉(zhuǎn)向架檢修新技術(shù)
- 電鍍環(huán)評評估投標(biāo)方案技術(shù)標(biāo)
- 山東省濟(jì)南市市中區(qū)2023-2024學(xué)年八年級下學(xué)期期末數(shù)學(xué)試題
- 光伏土地征地合同
- 竹類樹種識別與應(yīng)用-剛竹類
- 五年級上冊閱讀理解題20套(帶答案)
評論
0/150
提交評論