VHDL語言與EDA課程設(shè)計3_第1頁
VHDL語言與EDA課程設(shè)計3_第2頁
VHDL語言與EDA課程設(shè)計3_第3頁
VHDL語言與EDA課程設(shè)計3_第4頁
VHDL語言與EDA課程設(shè)計3_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VHDL語言與EDA課程設(shè)計VHDL語言與EDA課程設(shè)計/VHDL語言與EDA課程設(shè)計湖南人文科技學院課程設(shè)計報告課程名稱:VHDL語言與EDA課程設(shè)計設(shè)計題目:出租車自動計價器設(shè)計系別:專業(yè):班級:學生姓名:學號:起止日期:2011年6月13日~2011年6月26日指導(dǎo)教師:教研室主任:指導(dǎo)教師評語:指導(dǎo)教師簽名:年月日成績評定項目權(quán)重成績1、設(shè)計過程中出勤、學習態(tài)度等方面0.22、課程設(shè)計質(zhì)量與答辯0.53、設(shè)計報告書寫與圖紙規(guī)范程度0.3總成績教研室審核意見:教研室主任簽字:年月日教學系審核意見:主任簽字:年月日 摘要隨著我國社會經(jīng)濟的全面發(fā)展,各大中小城市的出租車營運事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普遍的交通工具。出租車計價器是出租車營運收費的專用智能化儀表,是出租車市場規(guī)范化、標準化以與減少司機與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備、簡單易用、計量準確的出租車計價器是加強出租車行業(yè)管理、提高服務(wù)質(zhì)量的必備品。根據(jù)預(yù)定的設(shè)計要求和設(shè)計思路,我們使用VHDL硬件描述語言設(shè)計了一個實際的基于AlteraFPGA芯片的出租車自動計價器系統(tǒng),介紹了該系統(tǒng)的電路結(jié)構(gòu)和程序設(shè)計。通過在QuartusII6.0軟件中編譯和下載測試,得到了仿真波形和關(guān)鍵的設(shè)計結(jié)果。經(jīng)過在實驗箱上進行硬件測試,證明該出租車計價系統(tǒng)具有實用出租車計價器的基本功能,如能進一步完善,將可以實用化和市場化。關(guān)鍵詞:出租車自動計價器;VHDL;FPGA;QuartusII6.0目錄設(shè)計要求 11、方案論證與對比 11.1方案一 11.2方案二 21.3兩種方案的對比 22、實驗步驟和設(shè)計過程 22.1計程模塊 22.2等待計時模塊 22.3計費模塊 33、調(diào)試與操作說明 33.1QuartusII中的VHDL程序 33.2程序的編譯與與仿真波形 63.3程序的下載與功能的測試 74、課程設(shè)計心得體會 95、元器件與儀器設(shè)備明細 106、參考文獻 117、致謝 12出租車自動計價器設(shè)計設(shè)計要求設(shè)計一個出租車自動計費器,具有行車里程計費、等候時間計費、與起價三部分,用四位數(shù)碼管顯示總金額,最大值為99.99元,行車里程單價1元/公里,等候時間單價0.5元/10分鐘,起價3元(3公里起價)。設(shè)計的主要技術(shù)指標如下:1) 計價范圍:0~99.99元計價分辨率:0.01元2) 計程范圍:0~99公里計程分辨率:1公里3) 計時范圍:0~59分計時分辨率:1分1、方案論證與對比根據(jù)本課程設(shè)計要求,需要對出租車當行駛公里數(shù)和等待時間兩種情況對應(yīng)進行計數(shù)計費,同時要求顯示出對應(yīng)行駛公里數(shù)、等待時間和出租車費用,我們想到了以下兩種方案。1.1方案一用分頻器將外部時鐘分為三路頻率的信號,用來計時和計程,同時也供整個系統(tǒng)工作,通過設(shè)置使能信號,使系統(tǒng)自動對等待時間計時和對行駛公里數(shù)的計數(shù),最后將所得結(jié)果分別在數(shù)碼管上顯示出來。數(shù)碼管顯示等待時間脈沖公里脈沖數(shù)碼管顯示等待時間脈沖公里脈沖計費/復(fù)位FPGA控制器計程計時計費圖1方案一設(shè)計結(jié)構(gòu)圖1.2方案二各部分主要功能包括:信號輸入模塊對車輪傳感器傳送的脈沖信號進行計數(shù),并以高低脈沖模擬出租汽車啟動、停止按鈕,具有輸入信號作用;數(shù)據(jù)轉(zhuǎn)換模塊將計費模塊輸出的車費和路程轉(zhuǎn)換成十進制數(shù)據(jù);譯碼/動態(tài)掃描模塊將路程與費用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管[5];數(shù)碼管顯示模塊將公里數(shù)和計費金額顯示出來。信號輸入模塊信號輸入模塊片選信號產(chǎn)生模塊數(shù)據(jù)轉(zhuǎn)換模塊數(shù)碼管控制模塊動態(tài)掃描/譯碼/數(shù)碼管顯示模塊圖2方案二設(shè)計結(jié)構(gòu)圖1.3兩種方案的對比經(jīng)分析,兩種方案都要通過模塊組合來實現(xiàn)出租車計價器的功能。方案一模塊數(shù)量比方案二多一些,但思路簡單,各模塊程序也相對簡單,因此較容易實現(xiàn),適合我們初學EDA的編程設(shè)計。方案二模塊較少,但單個模塊功能要求較高,程序復(fù)雜。所以,我們選擇方案一。2、實驗步驟和設(shè)計過程2.1計程模塊計程模塊:根據(jù)提供的里程脈沖信號fin,計算乘客上車后出租車所行駛的里程數(shù)。fin每來一個上升沿,計程模塊實現(xiàn)一次計數(shù),里程數(shù)就加1。當行駛里程大于3Km時,本模塊中en0信號變?yōu)?;進行行駛公里都計費。2.2等待計時模塊等待計時模塊:根據(jù)分頻得到的時鐘信號f_1,計算乘客的等待累計時間。計時器的量程為59min,滿量程歸零。等待時間大于3min時,本模塊中en1信號變?yōu)?;f_1每來一個上升沿,計量模塊實現(xiàn)一次計數(shù),等待時間加1。2.3計費模塊計費模塊:實現(xiàn)計價、計時和計程的數(shù)據(jù)計費。計量模塊實現(xiàn)對于出租車在行駛和等待過程中的里程數(shù)和計時功能:計費時鐘每來一個上升沿,計量模塊實現(xiàn)一次計數(shù),里程數(shù)或者等待時間加1。當行駛里程大于3Km時,本模塊中en0信號變?yōu)?;進行的是行駛公里數(shù)大于3公里以每公里1.6元計費的操作;當?shù)却龝r間大于2min時,本模塊中en1信號變?yōu)?,進行的是等待時間大于2分鐘以每分鐘1.6元計費的操作;最后用cha3,cha2,cha1,cha0來組成的4位數(shù)顯示總費用,最大顯示為999.9元。3、調(diào)試與操作說明3.1QuartusII中的VHDL程序根據(jù)設(shè)計要求我們寫出了VHDL程序:libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitytaxiis

--定義實體[3]

port(clk_256

:instd_logic;

--頻率為256Hz的時鐘

start:instd_logic;

--計價使能信號

stop:instd_logic;

--等待信號

fin:instd_logic;

--公里脈沖信號

cha3,cha2,cha1,cha0:outstd_logic_vector(3downto0);--費用數(shù)據(jù)

km1,km0:outstd_logic_vector(3downto0);

--公里數(shù)據(jù)

min1,min0:outstd_logic_vector(3downto0));

--等待時間

endtaxi;

architecturebehavoftaxiis

signalf_16,f16,f_1:std_logic;

signalq_16:integerrange0to15;

--分頻器

signalq16:integerrange0to15;

--分頻器

signalq_1:integerrange0to255;

--分頻器

signalw:integerrange0to59;

--秒計數(shù)器

signalc3,c2,c1,c0:std_logic_vector(3downto0);

--制費用計數(shù)器

signalk1,k0:std_logic_vector(3downto0);

--公里計數(shù)器

signalm1:std_logic_vector(2downto0);

--分的十位計數(shù)器

signalm0:std_logic_vector(3downto0);

--分的個位計數(shù)器

signalen1,en0,f:std_logic;

--使能信號

beginfenpin:process(clk_256,start)--分頻器模塊begin

ifclk_256'eventandclk_256='1'then

ifstart='0'thenq_16<=0;q16<=0;f_16<='0';f16<='0';f_1<='0';f<='0';

else

ifq_16=15thenq_16<=0;f_16<='1';

--此if語句得到頻率為16Hz的信號

elseq_16<=q_16+1;f_16<='0';

endif;

ifq16=15thenq16<=0;f16<='1';

--此if語句得到另一個頻率為16Hz的信號

elseq16<=q16+1;f16<='0';

endif;

ifq_1=255thenq_1<=0;f_1<='1';

--此if語句得到頻率為1Hz的信號

elseq_1<=q_1+1;f_1<='0';

endif;

ifen1='1'thenf<=f_16;

--此if語句得到計費脈沖f

elsifen0='1'thenf<=f16;

elsef<='0';

endif;

endif;

endif;

endprocess;process(f_1)--等待計時模塊

begin

iff_1'eventandf_1='1'then

ifstart='0'then

w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";

elsifstop='1'then--等待計時模塊

ifw=59thenw<=0;

--此if語句完成等待計時

ifm0="1001"thenm0<="0000";

--此if語句完成分計數(shù)

ifm1<="101"thenm1<="000";

elsem1<=m1+1;

endif;

elsem0<=m0+1;

endif;

ifm1&m0>"0000001"thenen1<='1';

--此if語句得到en1使能信號

elseen1<='0';

endif;

elsew<=w+1;en1<='0';

endif;

elsiffin='1'then--計程模塊

ifk0="1001"thenk0<="0000";

--此if語句完成公里脈沖計數(shù)

ifk1="1001"thenk1<="0000";

elsek1<=k1+1;

endif;

elsek0<=k0+1;

endif;

ifk1&k0>"00000010"thenen0<='1';

--此if語句得到en0使能信號

elseen0<='0';

endif;

elseen1<='0';en0<='0';

endif;

cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;

--費用數(shù)據(jù)輸出

km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;

--公里數(shù)據(jù)、分鐘數(shù)據(jù)輸出

endif;

endprocess;process(f,start)--計費模塊[2]

begin

ifstart='0'thenc3<="0000";c2<="0001";c1<="0000";c0<="0000";

elsiff'eventandf='1'then

ifc0="1001"thenc0<="0000";

--此if語句完成對費用的計數(shù)

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.2程序的編譯與與仿真波形在QuartusII新建項目,將設(shè)計的程序輸入并以實體名為文件名保存[4],然后以保存后的文件taxi.vhd為頂層文件建立工程,編譯通過后新建波形文件,設(shè)置好輸入?yún)?shù)后進行仿真,我們得到的仿真波形如圖3:圖3出租車計價器程序的仿真波形從仿真波形中我們看出,當出租車行駛公里數(shù)(Km1,Km0組成的兩位數(shù))為16即出租車行駛了16公里,等待時間(min1,min0組成的兩位數(shù))為03,即等待3分鐘時,對應(yīng)的出租車計費顯示是1650即16.5元。而理論計算如下:出租車總計費=起步費+(行駛公里數(shù)-3)×1.0+(等待時間-2)×0.5=3+(16-3)×1.0+(3-2)×0.5=16.50,可以看出仿真的結(jié)果與理論值一致。3.3程序的下載與功能的測試編譯通過后,進行引腳鎖定,鎖定方法如圖4:圖4引腳鎖定圖鎖定好引腳后,將編譯產(chǎn)生的SOF格式配置文件配置進FPGA[1],具體操作如下:先將實驗箱下載線連接好,接好電源打開實驗箱電源開關(guān),再選擇實驗箱工作模式0,將實驗箱下載允許開關(guān)打開,最后在QuartusII菜單依次點擊Tools——programer,配置好硬件后點擊startprogramer。這時就可以進行功能測試了。根據(jù)引腳鎖定可知實驗箱上鍵6為等待計時控制鍵,鍵7為計費/復(fù)位控制鍵,鍵8為公里脈沖輸入控制鍵。下載后,按下鍵7,就開始模擬出租車自動計費過程。數(shù)碼管計費顯示為“0100”,即10元起步費,其他數(shù)碼管顯示數(shù)據(jù)都為零。然后模擬出租車處于等待時的計費情況,按下鍵6進入等待計時,發(fā)現(xiàn)顯示計時的數(shù)碼管每等待1分鐘就累加“01”,當?shù)却嫊r對應(yīng)數(shù)碼管顯示大于02時我們發(fā)現(xiàn)顯示計費的數(shù)碼管顯示數(shù)據(jù)每分鐘增加“0050”,符合設(shè)計要求。最后模擬出租車行駛公里的計費,按下鍵8,發(fā)現(xiàn)顯示公里數(shù)的數(shù)碼管數(shù)值按規(guī)律增加,每增加1公里的同時,顯示計費的數(shù)碼管也對應(yīng)增加“0100”,符合實驗要求。因此,經(jīng)過硬件電路個參數(shù)測試可知,本次設(shè)計的出租車自動計價器完全符合設(shè)計要求,達到了預(yù)期的目的。4、課程設(shè)計心得體會通過課程設(shè)計,我們深有體會:一、我們溫故而知新。課程設(shè)計發(fā)端之始,思緒全無,舉步維艱,對于理論知識學習不夠扎實的我們深感“書到用時方恨少”有時間就會拿教材與實驗手冊,對知識系統(tǒng)而全面進行了梳理,遇到難處先是苦思冥想再向同學請教,終于熟練掌握了基本理論知識,而且領(lǐng)悟諸多平時學習難以理解掌握的較難知識,學會了如何思考的思維方式,找到了設(shè)計的靈感。二、我們意識到實踐出真知,從開始設(shè)計到課程設(shè)計基本告成,才切身領(lǐng)悟“實踐是檢驗真理的唯一標準”,才明曉實踐出真知。因為在教材上,計數(shù)器什么應(yīng)用的少,而且例子淺顯,與實際仿真和測試要求有所不同。三、我們要創(chuàng)新求發(fā)展.我們要從小處著手,順應(yīng)時代發(fā)展潮流,在課程設(shè)計中不忘在小處創(chuàng)新,未必是創(chuàng)新技術(shù),但凡創(chuàng)新思維亦可,未必成功,只要實現(xiàn)創(chuàng)新思維培育和鍛煉即可。四、我們覺得過而能改,善莫大焉。至善至美,是人類永恒的追求。但是,我們不曾忘卻“金無足赤,人無完人”,換種思維方式,去惡亦是至善,改錯

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論