版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> EDA基礎(chǔ)課程設(shè)計(jì)</b></p><p> 題目: 出租車計(jì)費(fèi)器設(shè)計(jì)</p><p> 學(xué)生姓名: ******</p><p> 學(xué) 號(hào): 2009*********</p><p> 班 級(jí): 電子信息工程09-02班&l
2、t;/p><p> 專 業(yè): 電子信息工程</p><p> 所在院系: 電氣與信息工程學(xué)院 </p><p><b> 出租車計(jì)費(fèi)器設(shè)計(jì)</b></p><p><b> 摘要</b></p><p> 隨著我國(guó)社會(huì)經(jīng)濟(jì)的全面發(fā)展,各大
3、中小城市的出租車營(yíng)運(yùn)事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普遍的交通工具。出租車計(jì)費(fèi)器是出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表,是出租車市場(chǎng)規(guī)范化 、標(biāo)準(zhǔn)化以及減少司機(jī)與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備、簡(jiǎn)單易用、計(jì)量準(zhǔn)確的出租車計(jì)費(fèi)器是加強(qiáng)出租車行業(yè)管理、提高服務(wù)質(zhì)量的必備品。</p><p> 本文介紹了出租車計(jì)費(fèi)器系統(tǒng)在實(shí)際生產(chǎn)生活中的重要性,根據(jù)預(yù)定的設(shè)計(jì)要求和設(shè)計(jì)思路,采用VHDL硬件描述語(yǔ)
4、言作為設(shè)計(jì)手段,采用自頂向下的設(shè)計(jì)思路設(shè)計(jì)了一個(gè)實(shí)際的基于EP3C80F780C8N芯片的出租車計(jì)費(fèi)系統(tǒng),通過(guò)在QuartusⅡ8.1軟件下進(jìn)行模擬仿真,并進(jìn)行相應(yīng)的硬件下載調(diào)試,證明該出租車計(jì)費(fèi)系統(tǒng)具有實(shí)用出租車計(jì)費(fèi)器的基本功能,各技術(shù)指標(biāo)符合預(yù)定標(biāo)準(zhǔn),如能進(jìn)一步完善,將可以實(shí)用化和市場(chǎng)化,具有一定實(shí)用性。</p><p> 關(guān)鍵詞:出租車計(jì)費(fèi)器;現(xiàn)場(chǎng)可編程門陣列;仿真 </p><p&g
5、t;<b> 目 錄</b></p><p><b> 1 設(shè)計(jì)目的1</b></p><p><b> 2 設(shè)計(jì)指標(biāo)2</b></p><p><b> 2.1 課題2</b></p><p><b> 2.2技術(shù)指標(biāo)2&l
6、t;/b></p><p> 3 VHDL簡(jiǎn)介2</p><p> 4 出租車計(jì)費(fèi)器功能設(shè)計(jì)4</p><p> 4.1出租車計(jì)費(fèi)器功能設(shè)計(jì)4</p><p> 4.2出租車計(jì)費(fèi)器原理5</p><p><b> 4.3模塊設(shè)計(jì)5</b></p><p
7、> 4.3.1點(diǎn)陣動(dòng)態(tài)顯示模塊5</p><p> 4.3.2里程動(dòng)態(tài)顯示模塊6</p><p> 4.3.3計(jì)費(fèi)動(dòng)態(tài)顯示模塊6</p><p> 5 出租車計(jì)費(fèi)器的實(shí)現(xiàn)6</p><p> 5.1出租車計(jì)費(fèi)器功能設(shè)計(jì)6</p><p> 5.2出租車計(jì)費(fèi)器原理7</p>&
8、lt;p> 5.3模塊設(shè)計(jì)10</p><p> 6 出租車計(jì)費(fèi)器的仿真結(jié)果18</p><p> 6.1管腳分配18</p><p> 6.2顯示模塊仿真結(jié)果19</p><p><b> 7 設(shè)計(jì)總結(jié)21</b></p><p><b> 參考文獻(xiàn)22&
9、lt;/b></p><p> 附錄 出租車計(jì)費(fèi)器VHDL源程序23</p><p><b> 1 設(shè)計(jì)目的</b></p><p> 隨著我國(guó)社會(huì)經(jīng)濟(jì)的全面發(fā)展,各大中小城市的出租車營(yíng)運(yùn)事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普遍的交通工具。出租車計(jì)費(fèi)器是出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表,是出租車市場(chǎng)規(guī)范化 、標(biāo)準(zhǔn)化以及減
10、少司機(jī)與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備、簡(jiǎn)單易用、計(jì)量準(zhǔn)確的出租車計(jì)費(fèi)器是加強(qiáng)出租車行業(yè)管理、提高服務(wù)質(zhì)量的必備品。本文介紹了出租車計(jì)費(fèi)器系統(tǒng)在實(shí)際生產(chǎn)生活中的重要性,根據(jù)預(yù)定的設(shè)計(jì)要求和設(shè)計(jì)思路,采用VHDL硬件描述語(yǔ)言作為設(shè)計(jì)手段,采用自頂向下的設(shè)計(jì)思路設(shè)計(jì)了一個(gè)實(shí)際的基于AheraFPGA芯片的出租車計(jì)費(fèi)系統(tǒng),通過(guò)在QuartusⅡ8.1軟件下進(jìn)行模擬仿真,并進(jìn)行相應(yīng)的硬件下載調(diào)試,證明該出租車計(jì)費(fèi)系統(tǒng)具有實(shí)用出租車計(jì)費(fèi)
11、器的基本功能,各技術(shù)指標(biāo)符合預(yù)定標(biāo)準(zhǔn),如能進(jìn)一步完善,將可以實(shí)用化和市場(chǎng)化,具有一定實(shí)用性。</p><p> 傳統(tǒng)出租車計(jì)費(fèi)器多數(shù)由單片機(jī)實(shí)現(xiàn),可擴(kuò)展的資源有限,硬件電路復(fù)雜,不利于系統(tǒng)功能升級(jí),容易在運(yùn)營(yíng)過(guò)程中產(chǎn)生干擾,影響系統(tǒng)的使用。并且由于分立器件多,造成電源功耗大,影響芯片的使用壽命。而基于FPGA的出租車計(jì)費(fèi)器可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,具有非常重要的實(shí)際意義。</p>
12、;<p><b> 2 設(shè)計(jì)指標(biāo)</b></p><p><b> 2.1 課題</b></p><p><b> 出租車計(jì)費(fèi)器設(shè)計(jì)</b></p><p><b> 2.2技術(shù)指標(biāo)</b></p><p> 1.用直流電動(dòng)機(jī)模擬出
13、租車輪子,通過(guò)8個(gè)七段碼管的前四個(gè)顯示里程,后四個(gè)顯示費(fèi)用。</p><p> 2.利用16*16點(diǎn)陣顯示每公里費(fèi)用。</p><p> 3.白天黑夜出租車不同費(fèi)用價(jià)格。</p><p> 4.計(jì)算超出一定里程的返程費(fèi)用。</p><p><b> 3 VHDL簡(jiǎn)介</b></p><p>
14、; VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,翻譯成中文就是超高速集成電路硬件描述語(yǔ)言,因此它的應(yīng)用主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。1987年底,VHDL被IEEE和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡(jiǎn)稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的
15、設(shè)計(jì)工具可以和VHDL接口。</p><p> 此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的認(rèn)可,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡(jiǎn)稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域
16、,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專家認(rèn)為,在新的世紀(jì)中,VHDL與Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。VHDL語(yǔ)言是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言 。 </p><p> VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形
17、式、描述風(fēng)格以及語(yǔ)法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p><p> 由
18、于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)范的硬件描述語(yǔ)言,目前大多數(shù)EDA工具幾乎都支持VHDL,這為VHDL的進(jìn)一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計(jì)過(guò)程中,主要的設(shè)計(jì)文件是用VHDL編寫的源代碼,因?yàn)閂HDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計(jì)。</p><p> VHDL具有多層次的設(shè)計(jì)描述功能,既可以描述系統(tǒng)級(jí)電路,又可以描述門級(jí)電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混
19、合級(jí)描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準(zhǔn)確地建立硬件電路模型。VHDL支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來(lái)較大的自由度,使設(shè)計(jì)人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。</p><p><b> 4 設(shè)計(jì)過(guò)程</b></p><p> 4.1 出租車計(jì)費(fèi)器功能設(shè)計(jì)</p><p> 該系統(tǒng)的設(shè)計(jì)可以采用分立元件來(lái)搭建,
20、也可以通過(guò)單片機(jī)來(lái)設(shè)計(jì),而使用可編程FPGA來(lái)設(shè)計(jì),具有設(shè)計(jì)周期短、易于修改等明顯特點(diǎn),而且隨著可編程邏輯器件和EDA軟件的飛速發(fā)展,越來(lái)越多的電子系統(tǒng)采用FPGA來(lái)設(shè)計(jì),一旦該系統(tǒng)達(dá)到一定的量產(chǎn)規(guī)模,也比較容易轉(zhuǎn)化為ASIC芯片設(shè)計(jì)。因此,基于FPGA來(lái)設(shè)計(jì)一個(gè)出租車的計(jì)費(fèi)器。本系統(tǒng)在EDA工具軟件QuartusⅡ8.1中,采用硬件描述語(yǔ)言和原理圖設(shè)計(jì)相結(jié)合的方法,進(jìn)行各個(gè)模塊的設(shè)計(jì),最終將各個(gè)模塊組成整個(gè)系統(tǒng)。</p>
21、<p> FPGA設(shè)計(jì)劃分為以下幾個(gè)功能模塊,它們分別是:點(diǎn)陣顯示模塊、計(jì)程模塊、輸出數(shù)據(jù)顯示模塊,將每個(gè)模塊的功能實(shí)現(xiàn)后,通過(guò)合理連接和協(xié)調(diào)各相關(guān)端口,得到整個(gè)電路系統(tǒng)。下面分別是各主要模塊的簡(jiǎn)單描述。</p><p> ①點(diǎn)陣顯示模塊:采用一種16路動(dòng)態(tài)分時(shí)掃描技術(shù)來(lái)實(shí)現(xiàn)16*16點(diǎn)陣動(dòng)態(tài)顯示白天和夜間不同的每公里費(fèi)用。具體方法是,將16×16數(shù)組的顯示模塊的行輸入端與FPGA內(nèi)的只
22、讀存儲(chǔ)器ROM的16位數(shù)據(jù)輸出端口相連,16個(gè)列控制端與一個(gè)4-16譯碼器的輸出相連,而譯碼器的輸入端和片選信號(hào)又與FPGA內(nèi)的列掃描控制模塊的輸出端口相連。</p><p> ②計(jì)程模塊:出租車能夠顯示行駛的里程,可以通過(guò)直流電動(dòng)機(jī)的轉(zhuǎn)動(dòng)產(chǎn)生脈沖,然后通過(guò)計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)來(lái)實(shí)現(xiàn)。本次設(shè)計(jì)中里程數(shù)精確到O.1 km,也就是100m,由電動(dòng)機(jī)給出的脈沖信號(hào)作為里程計(jì)數(shù)器的時(shí)鐘信號(hào),里程計(jì)數(shù)器每計(jì)數(shù)1 km還會(huì)
23、周期性地輸出一個(gè)脈沖信號(hào),稱為1 km脈沖信號(hào),可以通過(guò)一定的組合電路來(lái)實(shí)現(xiàn)。里程計(jì)數(shù)器可以用一個(gè)四位BCD碼計(jì)數(shù)器來(lái)實(shí)現(xiàn),最大能顯示到9999,根據(jù)設(shè)計(jì)的要求和條件限制,這里前三位為整數(shù)部分,最后一位為小數(shù)部分,即最大能顯示里程999.9 km。</p><p> ③數(shù)據(jù)顯示模塊:系統(tǒng)最核心的部分就是計(jì)費(fèi)如何實(shí)現(xiàn)。這里就需要設(shè)計(jì)一個(gè)BCD碼的加法器,在起步價(jià)的基礎(chǔ)上,根據(jù)行駛里程的不同,依據(jù)計(jì)費(fèi)標(biāo)準(zhǔn),每增加1
24、 km加上一個(gè)單價(jià)。系統(tǒng)中用到了四位BCD碼加法器,可以實(shí)現(xiàn)四位十進(jìn)制數(shù)的加法運(yùn)算。加法器輸出的結(jié)果就是乘客應(yīng)付的費(fèi)用,這里以元為單位,最大能顯示9999元。四位BCD碼加法器由四個(gè)一位BCD碼加法器級(jí)聯(lián)而成。四位BCD碼加法器輸出的結(jié)果通過(guò)緩沖器以后,反饋到輸入端重新作為一個(gè)加數(shù),在脈沖信號(hào)的作用下,每來(lái)一個(gè)脈沖就和單價(jià)相加,形成連續(xù)累加的功能。</p><p> 4.2 出租車計(jì)費(fèi)器原理</p>
25、<p> 圖1 出租車計(jì)費(fèi)器原理框圖</p><p><b> 4.3 模塊設(shè)計(jì)</b></p><p> 4.3.1 點(diǎn)陣動(dòng)態(tài)顯示模塊</p><p> 當(dāng)白天、夜間轉(zhuǎn)換開關(guān)K1置于關(guān)狀態(tài)(低電平)時(shí),16*16點(diǎn)陣顯示文字“白天每公里2元”,文字逐個(gè)顯示,不斷循環(huán)以告知乘客出租價(jià)格;當(dāng)K1置于開狀態(tài)(高電平)時(shí),顯
26、示“夜間每公里3元”。其原理結(jié)構(gòu)圖如下:</p><p> 圖2 點(diǎn)陣顯示原理結(jié)構(gòu)圖</p><p> 4.3.2 里程動(dòng)態(tài)顯示模塊</p><p> 其包括直流電動(dòng)機(jī)發(fā)出的脈沖以及將計(jì)數(shù)顯示動(dòng)態(tài)顯示在前四個(gè)七段數(shù)碼管,每來(lái)一個(gè)脈沖里程值加0.1(控制器每發(fā)一個(gè)脈沖代表運(yùn)行了0.1公里)。當(dāng)S1按鍵按下進(jìn)行復(fù)位后數(shù)值歸零,重新開始計(jì)數(shù)。</p>
27、<p> 4.3.3 計(jì)費(fèi)動(dòng)態(tài)顯示模塊</p><p> 其初值為6元,當(dāng)里程超過(guò)2公里后才接受直流電動(dòng)機(jī)發(fā)出的脈沖的驅(qū)動(dòng),并且計(jì)數(shù)顯示動(dòng)態(tài)顯示出來(lái),白天期間每來(lái)10個(gè)脈沖(代表運(yùn)行了1公里)其數(shù)值加2元,當(dāng)里程超過(guò)20km時(shí)加收50%的返程費(fèi),即數(shù)值加3元;夜間20km以內(nèi)單價(jià)3元,當(dāng)超過(guò)20km時(shí)加收返程費(fèi)。當(dāng)S1按鍵按下進(jìn)行復(fù)位后數(shù)值歸零,重新開始計(jì)費(fèi)。</p><p>
28、; 5 出租車計(jì)費(fèi)器的實(shí)現(xiàn)</p><p> 5.1 計(jì)程模塊程序設(shè)計(jì)</p><p> 計(jì)程模塊的VHDL源程序如下:</p><p> process(Motor,Rst) --計(jì)里程</p><p><b> begin</b></p><p> if(Rst='0&
29、#39;) then</p><p> Meter1<=0;</p><p> Meter10<=0;</p><p> Meter100<=0;</p><p> Meter1K<=0;</p><p> elsif(Motor'event and Motor='1&
30、#39;) then</p><p> if(Meter1=9) then Meter1<=0;</p><p> if(Meter10=9) then Meter10<=0;</p><p> if(Meter100=9) then Meter100<=0;</p><p> if(Mete
31、r1K=9) then Meter1K<=0;</p><p><b> else </b></p><p> Meter1K<=Meter1K+1;</p><p><b> end if;</b></p><p><b> else</b>&l
32、t;/p><p> Meter100<=Meter100+1;</p><p><b> end if;</b></p><p><b> else</b></p><p> Meter10<=Meter10+1;</p><p><b> end
33、 if;</b></p><p><b> else </b></p><p> Meter1<=Meter1+1;</p><p><b> end if;</b></p><p><b> end if; </b></p><p
34、> end process;</p><p> 出租車能夠顯示行駛的里程,可以通過(guò)直流電動(dòng)機(jī)的轉(zhuǎn)動(dòng)產(chǎn)生脈沖,然后通過(guò)計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)來(lái)實(shí)現(xiàn)。本次設(shè)計(jì)中里程數(shù)精確到O.1 km,也就是100m,由電動(dòng)機(jī)給出的脈沖信號(hào)作為里程計(jì)數(shù)器的時(shí)鐘信號(hào),里程計(jì)數(shù)器每計(jì)數(shù)1 km還會(huì)周期性地輸出一個(gè)脈沖信號(hào),稱為1 km脈沖信號(hào),可以通過(guò)一定的組合電路來(lái)實(shí)現(xiàn)。里程計(jì)數(shù)器可以用一個(gè)四位BCD碼計(jì)數(shù)器來(lái)實(shí)現(xiàn),最大能顯示
35、到9999,根據(jù)設(shè)計(jì)的要求和條件限制,這里前三位為整數(shù)部分,最后一位為小數(shù)部分,即最大能顯示里程999.9 km。</p><p> 5.1 計(jì)費(fèi)模塊程序設(shè)計(jì)</p><p> 計(jì)費(fèi)模塊的VHDL源程序如下:</p><p> process(Clk,Rst,dn) --計(jì)費(fèi)模塊</p><p><b> begin&
36、lt;/b></p><p> if(Rst='0') then</p><p> Money1<=0;</p><p> Money10<=0;</p><p> Money100<=0;</p><p> elsif(Motor'event and Moto
37、r='1') then</p><p> if( Meter10<2 and Meter100<1 and Meter1k<1) then --里程小于2Km時(shí)顯示起步價(jià)</p><p> Money100<=0;</p><p> Money10<=0; </p><p>
38、Money1<=6; --起步價(jià)6元</p><p> Old_Money1<=0;</p><p><b> else</b></p><p> if (dn='0' and Meter100<2 and Meter1k<0) then</p><p> i
39、f (Old_Money1=9) then Old_Money1<=0; ---白天</p><p> if (Money1=9) then Money1<=0;</p><p> if(Money10=9) then Money10<=0;</p><p> if(Money100=9) t
40、hen Money100<=0;</p><p> else Money100<=Money100+1;</p><p><b> end if;</b></p><p> else Money10<=Money10 +1;</p><p><b> end if;</b&
41、gt;</p><p> else Money1<=Money1 +1;</p><p> end if; </p><p><b> else </b></p><p> Old_Money1<= Old_Money1 +2; --- 續(xù)程單價(jià)每公里2元</p><p
42、><b> end if;</b></p><p><b> end if;</b></p><p> if (dn=’0’ and (Meter100>1 or Meter1k>0)) then ---白天超過(guò)20km加收返程費(fèi)</p><p> if (Old_Money1=9) then
43、 Old_Money1<=0; </p><p> if (Money1=9) then Money1<=0;</p><p> if(Money10=9) then Money10<=0;</p><p> if(Money100=9) then Money100<=0;</p>&l
44、t;p> else Money100<=Money100+1;</p><p><b> end if;</b></p><p> else Money10<=Money10 +1;</p><p><b> end if;</b></p><p> else Mon
45、ey1<=Money1 +1;</p><p> end if; </p><p><b> else </b></p><p> Old_Money1<= Old_Money1 +3; ---加收返程費(fèi)</p><p><b> end if;</b><
46、/p><p><b> end if;</b></p><p> if (dn='1' and Meter100<2 and Meter1k<0) then</p><p> if (Old_Money1=9) then Old_Money1<=0; ---夜間</p>
47、<p> if (Money1=9) then Money1<=0;</p><p> if(Money10=9) then Money10<=0;</p><p> if(Money100=9) then Money100<=0;</p><p> else Money100<=Money
48、100+1;</p><p><b> end if;</b></p><p> else Money10<=Money10 +1;</p><p><b> end if;</b></p><p> else Money1<=Money1 +1;</p><
49、;p> end if; </p><p><b> else </b></p><p> Old_Money1<= Old_Money1 +3; --- 續(xù)程單價(jià)每公里3元</p><p><b> end if;</b></p><p><b> end
50、 if;</b></p><p> if (dn='1' and (Meter100>1 or Meter1k>0)) then ---夜間超過(guò)20km加收返程費(fèi)</p><p> if (Old_Money1=9) then Old_Money1<=0; </p><p> if (Money1=
51、9) then Money1<=0;</p><p> if(Money10=9) then Money10<=0;</p><p> if(Money100=9) then Money100<=0;</p><p> else Money100<=Money100+1;</p><p&
52、gt;<b> end if;</b></p><p> else Money10<=Money10 +1;</p><p><b> end if;</b></p><p> else Money1<=Money1 +1;</p><p> end if; <
53、/p><p><b> else </b></p><p> Old_Money1<= Old_Money1 +4; ---加收的返程費(fèi)</p><p><b> end if;</b></p><p><b> end if;</b></p>
54、<p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(SEG_SEL) --- 顯示 </p><p><b> begin</b>
55、</p><p> case (SEG_SEL+1) is</p><p> when "000"=>Disp_Temp<=Meter1K;</p><p> when "001"=>Disp_Temp<=Meter100;</p><p> when "010
56、"=>Disp_Temp<=Meter10;</p><p> when "011"=>Disp_Temp<=Meter1;</p><p> when "100"=>Disp_Temp<=10;</p><p> when "101"=>Disp_
57、Temp<=Money100;</p><p> when "110"=>Disp_Temp<=Money10;</p><p> when "111"=>Disp_Temp<=Money1;</p><p> end case; </p><p> end pr
58、ocess;</p><p> process(Clk)</p><p><b> begin</b></p><p> if(Clk'event and Clk='1') then --掃描累加 </p><p> SEG_SEL<=SEG_SEL+1;</p>
59、<p> if(SEG_SEL=3) then</p><p> Display<=Disp_Decode or "1000000";</p><p><b> else </b></p><p> Display<=Disp_Decode;</p><p><b
60、> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(Disp_Temp) --顯示轉(zhuǎn)換</p><p><b> begin</b></p>&
61、lt;p> case Disp_Temp is</p><p> when 0=>Disp_Decode<="00111111"; --0</p><p> when 1=>Disp_Decode<="00000110"; --1</p><p> when 2=>Disp_
62、Decode<="01011011"; --2</p><p> when 3=>Disp_Decode<="01001111"; --3</p><p> when 4=>Disp_Decode<="01100110"; --4</p><p> when
63、5=>Disp_Decode<="01101101"; --5</p><p> when 6=>Disp_Decode<="01111101"; --6</p><p> when 7=>Disp_Decode<="00000111"; --7</p><p
64、> when 8=>Disp_Decode<="01111111"; --8</p><p> when 9=>Disp_Decode<="01101111"; --9</p><p> when 10=>Disp_Decode<="01000000"; </p&g
65、t;<p> when others=>Disp_Decode<="00000000"; --全滅</p><p><b> end case;</b></p><p> end process; </p><p> 在起步價(jià)的基礎(chǔ)上,根據(jù)行駛里程的不同,依據(jù)計(jì)費(fèi)標(biāo)準(zhǔn),每增加1 km
66、加上一個(gè)單價(jià)。系統(tǒng)中用到了四位BCD碼加法器,可以實(shí)現(xiàn)四位十進(jìn)制數(shù)的加法運(yùn)算。加法器輸出的結(jié)果就是乘客應(yīng)付的費(fèi)用,這里以元為單位,最大能顯示9999元。四位BCD碼加法器由四個(gè)一位BCD碼加法器級(jí)聯(lián)而成。四位BCD碼加法器輸出的結(jié)果通過(guò)緩沖器以后,反饋到輸入端重新作為一個(gè)加數(shù),在脈沖信號(hào)的作用下,每來(lái)一個(gè)脈沖就和單價(jià)相加,形成連續(xù)累加的功能。此設(shè)計(jì)中2km以內(nèi)起步價(jià)為6元,白天續(xù)程單價(jià)2元,超過(guò)20km為3元;夜間續(xù)程單價(jià)3元,超過(guò)20
67、km為4元。</p><p> 5.3 點(diǎn)陣顯示模塊程序</p><p> 點(diǎn)陣顯示模塊的VHDL源程序如下:</p><p> process(clk) ---顯示時(shí)序控制 </p><p><b> begin</b></p><p> if clk&
68、#39;event and clk='1' then</p><p> dount<=dount+1;</p><p> if dount=255 then</p><p> if S=15 then</p><p> S<="0000";</p><
69、;p><b> else</b></p><p><b> s<=S+1;</b></p><p><b> end if;</b></p><p><b> s<=s+1;</b></p><p><b> els
70、e</b></p><p><b> s<=S;</b></p><p><b> end if;</b></p><p> if cdount<15 then</p><p> cdount<=cdount+1;</p><p>
71、;<b> else</b></p><p> cdount<="0000";</p><p><b> end if;</b></p><p><b> end if;</b></p><p> keyc<=cdount;<
72、/p><p> end process;</p><p> process(cdount,s,dn)</p><p><b> begin</b></p><p> if(dn='0') then</p><p> if s="0000" then&
73、lt;/p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111"; --點(diǎn)陣顯示 白 </p><p> when "0001"=>keyr<="1111111111111111"
74、;;</p><p> when "0010"=>keyr<="1100000000000111";</p><p> when "0011"=>keyr<="1101111011110111";</p><p> when "0100"
75、=>keyr<="1101111011110011";</p><p> when "0101"=>keyr<="1101111011110101";</p><p> when "0110"=>keyr<="1101111011110110";<
76、;/p><p> when "0111"=>keyr<="1101111011110111";</p><p> when "1000"=>keyr<="1101111011110111";</p><p> when "1001"=>
77、keyr<="1101111011110111";</p><p> when "1010"=>keyr<="1101111011110111";</p><p> when "1011"=>keyr<="1101111011110111";</p&g
78、t;<p> when "1100"=>keyr<="1110111011101001";</p><p> when "1101"=>keyr<="1100000000000111";</p><p> when "1110"=>keyr&
79、lt;="1111111111111111";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p>
80、end case; </p><p> elsif s="0001" then </p><p> case cdount is</p><p> when "0000"=>keyr<="0111111110111111"; --點(diǎn)陣顯示 天</p><p>
81、 when "0001"=>keyr<="0111111110111101";</p><p> when "0010"=>keyr<="1011111110111101";</p><p> when "0011"=>keyr<="110
82、1111110111101";</p><p> when "0100"=>keyr<="1110111110111101";</p><p> when "0101"=>keyr<="1111001110111101";</p><p> whe
83、n "0110"=>keyr<="1111110010111101";</p><p> when "0111"=>keyr<="1111111100000001";</p><p> when "1000"=>keyr<="11111100
84、10111101";</p><p> when "1001"=>keyr<="1111001110111101";</p><p> when "1010"=>keyr<="1110111110111101";</p><p> when &qu
85、ot;1011"=>keyr<="1101111110111101";</p><p> when "1100"=>keyr<="1011111110111100";</p><p> when "1101"=>keyr<="0011111110011
86、101";</p><p> when "1110"=>keyr<="1011111110111111";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when others=&
87、gt;keyr<="1111111111111111";</p><p><b> end case;</b></p><p> elsif s="0010" then </p><p> case cdount is</p><p> when "0
88、000"=>keyr<="1111111011111111"; --點(diǎn)陣顯示 每</p><p> when "0001"=>keyr<="1111111011101111";</p><p> when "0010"=>keyr<="11100010
89、11110111";</p><p> when "0011"=>keyr<="1110110000001000";</p><p> when "0100"=>keyr<="1110111011101011";</p><p> when &qu
90、ot;0101"=>keyr<="1110111011101011";</p><p> when "0110"=>keyr<="1110110011001011";</p><p> when "0111"=>keyr<="1110101010101
91、011";</p><p> when "1000"=>keyr<="1010111011101011";</p><p> when "1001"=>keyr<="0110111011101011";</p><p> when "10
92、10"=>keyr<="1000111011101011";</p><p> when "1011"=>keyr<="1110000000000011";</p><p> when "1100"=>keyr<="1110111011101001&q
93、uot;;</p><p> when "1101"=>keyr<="1111111001111011";</p><p> when "1110"=>keyr<="1111111011111111";</p><p> when "1111&qu
94、ot;=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p> end case; </p><p> elsif s="0011" then </p&g
95、t;<p> case cdount is</p><p> when "0000"=>keyr<="1111111011111111"; --點(diǎn)陣顯示 公</p><p> when "0001"=>keyr<="1111111011111111";</p&g
96、t;<p> when "0010"=>keyr<="1111111101111111";</p><p> when "0011"=>keyr<="1100111110111111";</p><p> when "0100"=>keyr&
97、lt;="1101011111001111";</p><p> when "0101"=>keyr<="1101101111110011";</p><p> when "0110"=>keyr<="1101110011111111";</p>&
98、lt;p> when "0111"=>keyr<="1101111100111111";</p><p> when "1000"=>keyr<="1101111111111001";</p><p> when "1001"=>keyr<=&
99、quot;1101111111111001";</p><p> when "1010"=>keyr<="1100011111100111";</p><p> when "1011"=>keyr<="1100111111011111";</p><p&
100、gt; when "1100"=>keyr<="1001111110111111";</p><p> when "1101"=>keyr<="1111111101111111";</p><p> when "1110"=>keyr<="
101、1111111001111111";</p><p> when "1111"=>keyr<="1111111101111111";</p><p> when others=>keyr<="1111111111111111";</p><p><b> e
102、nd case;</b></p><p> elsif s="0100" then</p><p> case cdount is</p><p> when "0000"=>keyr<="1011111111111111"; --點(diǎn)陣顯示 里</p><
103、;p> when "0001"=>keyr<="1011111111111111";</p><p> when "0010"=>keyr<="1011011000000001";</p><p> when "0011"=>keyr<=&qu
104、ot;1011011011101101";</p><p> when "0100"=>keyr<="1011011011101101";</p><p> when "0101"=>keyr<="1011011011101101";</p><p>
105、; when "0110"=>keyr<="1011011011101101";</p><p> when "0111"=>keyr<="1000000000000001";</p><p> when "1000"=>keyr<="10
106、11011011101101";</p><p> when "1001"=>keyr<="1011011011101101";</p><p> when "1010"=>keyr<="1011011011101101";</p><p> wh
107、en "1011"=>keyr<="1011011011101101";</p><p> when "1100"=>keyr<="1011011000000001";</p><p> when "1101"=>keyr<="1011111
108、111111111";</p><p> when "1110"=>keyr<="1011111111111111";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when ot
109、hers=>keyr<="1111111111111111";</p><p><b> end case;</b></p><p> elsif s="0101" then</p><p> case cdount is</p><p> when &q
110、uot;0000"=>eyr<="1111111111111111"; --點(diǎn)陣顯示 2</p><p> when "0001"=>keyr<="1111111111111111";</p><p> when "0010"=>keyr<="1100
111、111110011111";</p><p> when "0011"=>keyr<="1100111110001111";</p><p> when "0100"=>keyr<="1100011110000111";</p><p> when
112、 "0101"=>keyr<="1100001111110011";</p><p> when "0110"=>keyr<="1100101111110011";</p><p> when "0111"=>keyr<="110010011
113、1110011";</p><p> when "1000"=>keyr<="1100110111110011";</p><p> when "1001"=>keyr<="1100110011110011";</p><p> when &quo
114、t;1010"=>keyr<="1100111001110011";</p><p> when "1011"=>keyr<="1100111000000111";</p><p> when "1100"=>keyr<="11001111000011
115、11";</p><p> when "1101"=>keyr<="1100011110011111";</p><p> when "1110"=>keyr<="1111111111111111";</p><p> when "111
116、1"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p><b> end case;</b></p><p> elsif s>5 the
117、n</p><p> case cdount is</p><p> when "0000"=>keyr<="0111111111011111"; --點(diǎn)陣顯示 元</p><p> when "0001"=>keyr<="0111111111011111"
118、;</p><p> when "0010"=>keyr<="1011111111011101";</p><p> when "0011"=>keyr<="1101111111011101";</p><p> when "0100"=
119、>keyr<="1110011111011101";</p><p> when "0101"=>keyr<="1111100000011101";</p><p> when "0110"=>keyr<="1111111111011101";<
120、/p><p> when "0111"=>keyr<="1111111111011101";</p><p> when "1000"=>keyr<="1111111111011101";</p><p> when "1001"=>k
121、eyr<="1100000000011101";</p><p> when "1010"=>keyr<="1011111111011101";</p><p> when "1011"=>keyr<="1011111111011101";</p>
122、;<p> when "1100"=>keyr<="1011111111011101";</p><p> when "1101"=>keyr<="1011111111011101";</p><p> when "1110"=>keyr&l
123、t;="1011111111011111";</p><p> when "1111"=>keyr<="1000111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p><
124、;b> end case;</b></p><p><b> end if;</b></p><p><b> elsif</b></p><p> s="0000" then</p><p> case cdount is</p>&
125、lt;p> when "0000"=>keyr<="1111110111111011"; --點(diǎn)陣顯示 夜</p><p> when "0001"=>keyr<="1111111011111011";</p><p> when "0010"=>k
126、eyr<="1111111101111011";</p><p> when "0011"=>keyr<="0000000000011011";</p><p> when "0100"=>keyr<="0111110111100011";</p>
127、;<p> when "0101"=>keyr<="0111111011111011";</p><p> when "0110"=>keyr<="1011111001111010";</p><p> when "0111"=>keyr&l
128、t;="1101110110111001";</p><p> when "1000"=>keyr<="1110101101000011";</p><p> when "1001"=>keyr<="1111011011011011";</p>&l
129、t;p> when "1010"=>keyr<="1110101111011011";</p><p> when "1011"=>keyr<="1101110011011011";</p><p> when "1100"=>keyr<=&q
130、uot;1011111100011011";</p><p> when "1101"=>keyr<="0011111111111001";</p><p> when "1110"=>keyr<="1011111111111011";</p><p&g
131、t; when "1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p><p> end case; </p><p> elsif s="0001
132、" then </p><p> case cdount is</p><p> when "0000"=>keyr<="1111111111111111"; --點(diǎn)陣顯示 間</p><p> when "0001"=>keyr<="000000000
133、0000111";</p><p> when "0010"=>keyr<="1111111111111110";</p><p> when "0011"=>keyr<="1111111111111101";</p><p> when &quo
134、t;0100"=>keyr<="1100000000001001";</p><p> when "0101"=>keyr<="1110111011101111";</p><p> when "0110"=>keyr<="11101110111011
135、01";</p><p> when "0111"=>keyr<="1110111011101101";</p><p> when "1000"=>keyr<="1110111011101101";</p><p> when "100
136、1"=>keyr<="1110111011101101";</p><p> when "1010"=>keyr<="1100000000000101";</p><p> when "1011"=>keyr<="1011111111101101&qu
137、ot;;</p><p> when "1100"=>keyr<="0111111111111101";</p><p> when "1101"=>keyr<="1000000000000000";</p><p> when "1110&quo
138、t;=>keyr<="1111111111111101";</p><p> when "1111"=>keyr<="1111111111111111";</p><p> when others=>keyr<="1111111111111111";</p>
139、<p><b> end case;</b></p><p> elsif s="0010" then </p><p> case cdount is</p><p> when "0000"=>keyr<="1111111011111111";
140、 --點(diǎn)陣顯示 每</p><p> when "0001"=>keyr<="1111111011101111";</p><p> when "0010"=>keyr<="1110001011110111";</p><p> when "001
141、1"=>keyr<="1110110000001000";</p><p> when "0100"=>keyr<="1110111011101011";</p><p> when "0101"=>keyr<="1110111011101011&qu
142、ot;;</p><p> when "0110"=>keyr<="1110110011001011";</p><p> when "0111"=>keyr<="1110101010101011";</p><p> when "1000&quo
143、t;=>keyr<="1010111011101011";</p><p> when "1001"=>keyr<="0110111011101011";</p><p> when "1010"=>keyr<="1000111011101011";&
144、lt;/p><p> when "1011"=>keyr<="1110000000000011";</p><p> when "1100"=>keyr<="1110111011101001";</p><p> when "1101"=&g
145、t;keyr<="1111111001111011";</p><p> when "1110"=>keyr<="1111111011111111";</p><p> when "1111"=>keyr<="1111111111111111";</p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器設(shè)計(jì)
- eda 課程設(shè)計(jì)--出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)--- 出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)——出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車自動(dòng)計(jì)費(fèi)器
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器系統(tǒng)
- eda技術(shù)課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- eda出租車計(jì)費(fèi)器
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器課程設(shè)計(jì)
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 出租車計(jì)費(fèi)器數(shù)字電子課程設(shè)計(jì)
- 基于eda技術(shù)出租車計(jì)費(fèi)器設(shè)計(jì)樣本
- 數(shù)電課程設(shè)計(jì)-出租車自動(dòng)計(jì)費(fèi)器
評(píng)論
0/150
提交評(píng)論