2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)小型化、低功耗、高可靠性等問(wèn)題,具有非常重要的實(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ó)防部開(kāi)發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(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)部開(kā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)換開(kāi)關(guān)K1置于關(guān)狀態(tài)(低電平)時(shí),16*16點(diǎn)陣顯示文字“白天每公里2元”,文字逐個(gè)顯示,不斷循環(huán)以告知乘客出租價(jià)格;當(dāng)K1置于開(kāi)狀態(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ù)值歸零,重新開(kāi)始計(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ù)值歸零,重新開(kāi)始計(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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論