




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、26 基于VHDL語(yǔ)言的出租車(chē)計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)基于VHDL語(yǔ)言的出租車(chē)計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)摘 要本文通過(guò)對(duì)VHDL的初步學(xué)習(xí)并掌握了其基本知識(shí)后,以FPGA做主控芯片來(lái)實(shí)現(xiàn)基于VHDL語(yǔ)言的出租車(chē)計(jì)費(fèi)的目的。基于出租車(chē)行業(yè)的需求,傳統(tǒng)的出租車(chē)計(jì)費(fèi)器發(fā)展使用了十幾年,在穩(wěn)定性、成本、以及使用習(xí)慣上都具有一些優(yōu)勢(shì)。本系統(tǒng)由FPGA和一些外圍器件組成,具有操作簡(jiǎn)單,顯示明了,功能強(qiáng)大的特點(diǎn)。使用1602液晶模組作為顯示器,可以顯示數(shù)字、字母、中文、圖片等,使系統(tǒng)信息一目了然。本方案充分發(fā)揮人性化的特點(diǎn)。本系統(tǒng)涉及到的理論知識(shí)有:VHDL知識(shí)、LCD液晶顯示器的工作原理和使用方法,出租車(chē)計(jì)費(fèi)系統(tǒng)的原理和實(shí)現(xiàn)方
2、法等等。關(guān)鍵詞:1602液晶模組;FPGA; VHDL TAXI BILLING BASED ON VHDLABSTRACTBased on FPGA preliminary study and master its basics, in order to achieve the controlling chip FPGA based on VHDL taxi billing purposes.Based on the taxi industry demand, the traditional taxi meter development using ten years, in stabili
3、ty, cost, and the use of custom has some advantages. The system consists of single-chip FPGA and some peripheral devices, has the advantages of simple operation, display clear, powerful features. The use of 1602 LCD module as the display, can display numbers, letters, Chinese, pictures, make the sys
4、tem message stick out a mile. The proposal to give full play to the characteristics of human nature. The system relates to the theory of knowledge: VHDL, LCD liquid crystal display work principle and using method of billing system of a taxi, the principle and the realization method.Key words: 1602 L
5、CD module;FPGA;VHDL目 錄1 前言-12系統(tǒng)設(shè)計(jì)2.1 總體設(shè)計(jì)構(gòu)思-22.2出租車(chē)計(jì)價(jià)器存在的問(wèn)題-22.3問(wèn)題的修改-32.4 設(shè)計(jì)要求-33 硬件部分3.1 FPGA簡(jiǎn)介-43.2 工作原理-43.3 LCD的簡(jiǎn)介-54 軟件部分4.1 VHDL語(yǔ)言的介紹-74.2 VHDL語(yǔ)言的特點(diǎn)-74.3 主程序代碼-84.4 部分仿真-195 總結(jié)-226參考文獻(xiàn)-237 致謝-24 第一章 前言汽車(chē)計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車(chē)行業(yè)發(fā)展的重要標(biāo)志,是出租車(chē)最重要的工具。它關(guān)系著雙方的利益。具有良好的性能的計(jì)價(jià)器無(wú)疑是對(duì)廣大出租車(chē)司機(jī)朋友還是乘客來(lái)說(shuō)都是很重要的。
6、因此,汽車(chē)計(jì)價(jià)器的研究也是十分有應(yīng)用價(jià)值的。隨著生活水平的提高,人們已不再滿(mǎn)足于衣食住的享受,出行的舒適已受到越來(lái)越多人的關(guān)注。于是,出租車(chē)行業(yè)以低價(jià)高質(zhì)的服務(wù)給人們帶來(lái)了出行的享受。但是總存在著買(mǎi)賣(mài)糾紛困擾著行業(yè)的發(fā)展。而在出租車(chē)行業(yè)中解決這一矛盾的最好方法就是改良計(jì)價(jià)器。用更加精良的計(jì)價(jià)器來(lái)為乘客提供更加方便快捷的服務(wù)。我國(guó)在70年代開(kāi)始出現(xiàn)出租車(chē),但那時(shí)的計(jì)費(fèi)系統(tǒng)大都是國(guó)外進(jìn)口的,不但不不夠準(zhǔn)確,而且價(jià)格還十分昂貴。隨著改革開(kāi)放的日益深入,出租車(chē)行業(yè)的發(fā)展勢(shì)頭已十分突出,國(guó)內(nèi)各機(jī)械廠紛紛推出國(guó)產(chǎn)計(jì)價(jià)器。剛開(kāi)始出租車(chē)計(jì)價(jià)器的功能從剛才開(kāi)始的只顯示路程,到能夠自主計(jì)費(fèi),以及現(xiàn)在能夠打印發(fā)票和
7、語(yǔ)音提示、按時(shí)間自主變動(dòng)單價(jià)等功能。隨著旅游業(yè)的發(fā)展,出租車(chē)行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。本設(shè)計(jì)就是采用VHDL硬件描述語(yǔ)言1作為設(shè)計(jì)手段,采用自頂向下的設(shè)計(jì)思路,得到出租車(chē)計(jì)價(jià)系統(tǒng)的硬件結(jié)構(gòu),通過(guò)單片機(jī)FPGA作為主控芯片進(jìn)行設(shè)計(jì)、仿真,具有一定的實(shí)用性。單片機(jī)進(jìn)行的出租車(chē)計(jì)價(jià)器的設(shè)計(jì)時(shí)用數(shù)字電路設(shè)計(jì)的整體電路規(guī)模較大,所用的器件較多,造成故障率高,導(dǎo)致計(jì)價(jià)器不夠準(zhǔn)確;而基于單片機(jī)的設(shè)計(jì),雖然開(kāi)發(fā)成本降低,但其外圍電路較多,而且調(diào)試復(fù)雜,抗干擾能力差,從而也導(dǎo)致計(jì)價(jià)器不夠準(zhǔn)確。而基于VHDL語(yǔ)言的單片機(jī)FPGA芯片穩(wěn)定性好,抗干擾能力強(qiáng),外圍電路少,執(zhí)行速度快,適合像出租車(chē)
8、計(jì)價(jià)器的這種較復(fù)雜的電路設(shè)計(jì)。第二章 系統(tǒng)設(shè)計(jì)2.1 總體設(shè)計(jì)構(gòu)思圖2-1 總的設(shè)計(jì)圖 2.2出租車(chē)計(jì)價(jià)器存在的問(wèn)題隨著我國(guó)國(guó)民經(jīng)濟(jì)的高速發(fā)展,出租汽車(chē)已成為城市公共交通的重要組成部分。近幾年來(lái),出租車(chē)汽車(chē)行業(yè)在各地蓬勃發(fā)展,出租車(chē)經(jīng)營(yíng)也從無(wú)序狀態(tài)逐漸走入正軌。出租車(chē)計(jì)價(jià)器成為出租車(chē)運(yùn)營(yíng)中必配的、可靠的計(jì)量器具,其使用準(zhǔn)確性直接關(guān)系到經(jīng)營(yíng)者與乘客的經(jīng)濟(jì)利益。但在實(shí)際運(yùn)營(yíng)中,總有不少經(jīng)營(yíng)者或乘客反映相同路徑,不同的出租車(chē)的收費(fèi)有較大的出入。目前出租車(chē)計(jì)價(jià)器存在的問(wèn)題主要有:1計(jì)價(jià)器作弊的問(wèn)題,有些出租汽車(chē)司機(jī)在計(jì)價(jià)器上做手腳,多收乘客租金。常見(jiàn)的手段是:輸入非法脈沖,計(jì)價(jià)器主要靠傳感器發(fā)出的脈沖
9、來(lái)計(jì)數(shù),脈沖數(shù)的多少即汽車(chē)行駛里程的少。作弊者利用這一原理,額外向計(jì)價(jià)器輸入脈沖,其方法多種多樣如利用車(chē)內(nèi)收音機(jī)、電動(dòng)剃須刀。2毛刺(競(jìng)爭(zhēng)一冒險(xiǎn))現(xiàn)象。主要影響數(shù)字系統(tǒng)設(shè)計(jì)有效性和可靠性的主要因素,由于毛刺的存在,使得系統(tǒng)存在諸多潛在的不穩(wěn)定因素,尤其是對(duì)尖峰脈沖或脈沖邊沿敏感的電路就更是如此。毛刺通常主要對(duì)電路的觸發(fā)清零端CLR、觸發(fā)復(fù)位端基于VHDL的出租車(chē)計(jì)價(jià)器設(shè)計(jì)RESET、CP端、鎖存器的門(mén)控端和專(zhuān)用芯片的控制端等產(chǎn)生嚴(yán)重的影響,會(huì)使電路發(fā)生誤動(dòng)作,從而造成數(shù)字系統(tǒng)的邏輯混亂。2.3問(wèn)題的修改(1) 在一個(gè)進(jìn)程中只允許一個(gè)信號(hào)上升沿或下降沿作為觸發(fā)條件。(2) 信號(hào)值改變后, 要經(jīng)過(guò)
10、一個(gè)小的延時(shí)才能生效, 同一個(gè)信號(hào)不能在多個(gè)進(jìn)程中賦值 (因多個(gè)信號(hào)源不能同時(shí)對(duì)同一個(gè)信號(hào)驅(qū)動(dòng))。(3) 時(shí)序電路與組合電路最好不要在同一個(gè)進(jìn)程以免浪費(fèi)資源。(4) 一個(gè)功能模塊最好按上升沿信號(hào)分多個(gè)進(jìn)程完成, 各進(jìn)程間用信號(hào)聯(lián)系。(5) 同一個(gè)信號(hào)在進(jìn)程中的值改變后, 要注意該值改變前后, 該進(jìn)程中其他變量的變化, 避免邏輯死鎖。(6) 在順序語(yǔ)句中, 信號(hào)賦值后需一定的延時(shí)才能改變而變量不需要延時(shí)。2.4 設(shè)計(jì)要求設(shè)計(jì)一種出租車(chē)計(jì)價(jià)器,計(jì)費(fèi)標(biāo)準(zhǔn)如下:(1) 起步價(jià)5.00元,起步公里為2公里;(2) 超過(guò)2公里,每公里按1.80元收費(fèi);(3) 等候時(shí)間累積5分鐘,每分鐘1.00元;要求顯示
11、里程、計(jì)費(fèi)及等候時(shí)間。乘客上車(chē)后,按下啟動(dòng)鍵,開(kāi)始計(jì)費(fèi),計(jì)費(fèi)顯示為3位整數(shù),2位小數(shù)。第三章 硬件部分 3.1 FPGA簡(jiǎn)介2FPGA(FieldProgrammable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。以硬件描述語(yǔ)言(Verilog或VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來(lái)實(shí)現(xiàn)一些
12、基本的邏輯門(mén)電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA3內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。FPGA一般來(lái)說(shuō)比ASIC(專(zhuān)用集成芯片)的速度要慢,無(wú)法完成復(fù)雜的設(shè)計(jì),但是功耗較低。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也
13、可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開(kāi)發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類(lèi)似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。3.2 工作原理4FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。 現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門(mén)陣列(如PAL,GAL及CPLD器
14、件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來(lái)實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA4的邏輯是通過(guò)向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來(lái)實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無(wú)限次的編程。1)采用FPGA設(shè)計(jì)ASIC電路(專(zhuān)用集成電路),用戶(hù)不需要投片生產(chǎn),就能得到合用的芯片。
15、2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶(hù)可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中5,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯
16、關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無(wú)須專(zhuān)用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可6。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活3.3 LCD的簡(jiǎn)介7LCD 液晶顯示器是 Liquid Crystal Display 的簡(jiǎn)稱(chēng),LCD 的構(gòu)造是在兩片平行的玻璃基板當(dāng)中放置液晶盒,下基板玻璃上設(shè)置TFT(薄膜晶體管),上基板玻璃上設(shè)置彩色濾光片,通過(guò)TFT上的信號(hào)與電壓改變來(lái)控制液晶分子的轉(zhuǎn)動(dòng)方向,從而達(dá)到控制每個(gè)像素點(diǎn)偏振光出射與否而達(dá)到顯示目的。現(xiàn)在LCD已
17、經(jīng)替代CRT成為主流,價(jià)格也已經(jīng)下降了很多,并已充分的普及。工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符(16行2列),為了表示的方便 ,后文皆以1表示高電平,0表示低電平。1602液晶也叫1602字符型液晶,它是一種專(zhuān)門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩列,每列16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市
18、面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫(xiě)的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。編輯本段管腳功能 1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VCC接5V電源正極第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。第5腳:RW為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。第6腳:E(或EN)端為使能(e
19、nable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。第714腳:D0D7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極 第四章 軟件部分4.1 VHDL語(yǔ)言的介紹VHDL(VHSIC(Very High Speed IC)Hardware Description Language)就是超高速集成電路硬件描述語(yǔ)言。誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言。具有良好的可讀性,即容易被計(jì)算機(jī)接受,也容易被讀者理解。使用期長(zhǎng),不會(huì)因工藝變化而使描述過(guò)時(shí)。因?yàn)閂H
20、DL的硬件描述與工藝無(wú)關(guān),當(dāng)工藝改變時(shí),只需修改相應(yīng)程序中的屬性參數(shù)即可。支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用。一個(gè)大規(guī)模的設(shè)計(jì)不可能由一個(gè)人獨(dú)立完成,必須由多人共同承擔(dān),VHDL為設(shè)計(jì)的分解和設(shè)計(jì)的再利用提供了有力的支持。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可視部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面
21、后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)由于 VHDL 語(yǔ)言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語(yǔ)言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開(kāi)發(fā)周期4.2 VHDL8語(yǔ)言的特點(diǎn)(1) VHDL 語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方式多樣VHDL 語(yǔ)言具有強(qiáng)大的語(yǔ)言結(jié)構(gòu),只需采用簡(jiǎn)單明確的VHDL語(yǔ)言程序就可以描述十分復(fù)雜的硬件電路。同時(shí),它還具有多層次的電路設(shè)計(jì)描述功能。此外,VHDL 語(yǔ)言能夠同時(shí)支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì)實(shí)現(xiàn),這是其他硬件描述語(yǔ)言所不能比
22、擬的。VHDL 語(yǔ)言設(shè)計(jì)方法靈活多樣,既支持自頂向下的設(shè)計(jì)方式,也支持自底向上的設(shè)計(jì)方法;既支持模塊化設(shè)計(jì)方法,也支持層次化設(shè)計(jì)方法。(2) VHDL 語(yǔ)言具有強(qiáng)大的硬件描述能力VHDL 語(yǔ)言具有多層次的電路設(shè)計(jì)描述功能,既可描述系統(tǒng)級(jí)電路,也可以描述門(mén)級(jí)電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采用三者的混合描述方式。同時(shí),VHDL 語(yǔ)言也支持慣性延遲和傳輸延遲,這樣可以準(zhǔn)確地建立硬件電路的模型。VHDL 語(yǔ)言的強(qiáng)大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類(lèi)型。VHDL 語(yǔ)言既支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類(lèi)型,也支持用戶(hù)定義的數(shù)據(jù)類(lèi)型,這樣便會(huì)給硬件描述帶來(lái)較大的自由度。(3) VH
23、DL 語(yǔ)言具有很強(qiáng)的移植能力VHDL 語(yǔ)言很強(qiáng)的移植能力主要體現(xiàn)在: 對(duì)于同一個(gè)硬件電路的 VHDL 語(yǔ)言描述,它可以從一個(gè)模擬器移植到另一個(gè)模擬器上、從一個(gè)綜合器移植到另一個(gè)綜合器上或者從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)上去執(zhí)行。(4) VHDL 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān)采用 VHDL 語(yǔ)言描述硬件電路時(shí),設(shè)計(jì)人員并不需要首先考慮選擇進(jìn)行設(shè)計(jì)的器件。這樣做的好處是可以使設(shè)計(jì)人員集中精力進(jìn)行電路設(shè)計(jì)的優(yōu)化,而不需要考慮其他的問(wèn)題。當(dāng)硬件電路的設(shè)計(jì)描述完成以后,VHDL 語(yǔ)言允許采用多種不同的器件結(jié)構(gòu)來(lái)實(shí)現(xiàn)。(5) VHDL 語(yǔ)言程序易于共享和復(fù)用VHDL 語(yǔ)言采用基于庫(kù) ( library)
24、的設(shè)計(jì)方法。在設(shè)計(jì)過(guò)程中,設(shè)計(jì)人員可以建立各種可再次利用的模塊,一個(gè)大規(guī)模的硬件電路的設(shè)計(jì)不可能從門(mén)級(jí)電路開(kāi)始一步步地進(jìn)行設(shè)計(jì),而是一些模塊的累加。這些模塊可以預(yù)先設(shè)計(jì)或者使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放在庫(kù)中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用。4.3 主程序代碼(1)等待判別模塊VHDL源程序:-DDPB.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDPB ISPORT (START,WCLK:IN STD_
25、LOGIC; -輸入速度傳感器信號(hào)和啟動(dòng)信號(hào) CLK1HZ:IN STD_LOGIC; -輸入1秒時(shí)鐘信號(hào)DDBZ:OUT STD_LOGIC); -輸出等待等待標(biāo)志信號(hào)END ENTITY DDPB;ARCHITECTURE ART OF DDPB IS SIGNAL T60S:STD_LOGIC;-60秒計(jì)時(shí)信號(hào)SIGNAL WCLKCOU:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(START,CLK1HZ)IS -產(chǎn)生60秒周期性信號(hào)跳變進(jìn)程VARIABLE CNT60:STD_LOGIC_VECTOR(7 DOWNTO 0);-每分鐘行駛距離
26、BEGINIF START='1'THEN Cnt60:="00000000"T60s<='0'ELSIF CLK1HZ'EVENT AND CLK1HZ='1'THENIF CNT60="00111100" THEN T60S<='1'CNT60:="00000000" ELSE CNT60:=CNT60+'1'T60S<='0'END IF;END IF;END PROCESS;PROCESS(START,WC
27、LK,T60S) IS -每分鐘行駛距離計(jì)算進(jìn)程BEGIN IF START='1' THEN WCLKCOU<="00000000" ELSIF WCLK'EVENT AND WCLK='1' THEN IF T60S='1' THEN WCLKCOU <="00000000" ELSE WCLKCOU<=WCLKCOU+'1'-距離計(jì)算,單位為米END IF;END IF ;END PROCESS;PROCESS(WCLKCOU,T60S) IS -等待標(biāo)志判別
28、進(jìn)程BEGINIF T60S'EVENT AND T60S='1' THEN IF WCLKCOU<="11001000" THEN DDBZ<='1' -汽車(chē)等待ELSE DDBZ<='0' -汽車(chē)行駛END IF;END IF;END PROCESS;END ARCHITECTURE ART;(2)等待計(jì)時(shí)模塊VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LO
29、GIC_ARITH.ALL;ENTITY DDJS IS PORT(START,DDBZ:IN STD_LOGIC; -啟動(dòng)信號(hào),等待標(biāo)志 CLK1HZ: IN STD_LOGIC; -時(shí)鐘信號(hào) DDSJ:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -等待時(shí)間 XDBZ:OUT STD_LOGIC); -熄燈標(biāo)志 END ENTITY DDJS;ARCHITECTURE ART OF DDJS IS SIGNAL MS,MG,FS,FG:STD_LOGIC_VECTOR(3 DOWNTO 0); -秒個(gè)位,秒十位,分十位,分個(gè)位 SIGNAL XIDENG: STD_
30、LOGIC; -熄燈 BEGIN PROCESS(START,DDBZ,CLK1HZ) IS BEGIN IF START='1'THEN -沒(méi)有啟動(dòng)計(jì)費(fèi) MS<="0000" MS<="0000" FS<="0000" FG<="0000" ELSIF CLK1HZ'EVENT AND CLK1HZ='1' THEN IF DDBZ='1' THEN -汽車(chē)等待 IF MG=9 THEN MG<="0000"
31、 IF MS=5 THEN MS<="0000" IF FG=9 THEN FG<="0000" IF FS=5 THEN XIDENG<='1' -熄燈標(biāo)志為1 FS<="0000" ELSE FS<=FS+'1' -分?jǐn)?shù)十位計(jì)算 END IF; ELSE FG<=FG+'1' -分?jǐn)?shù)個(gè)位計(jì)算 END IF; ELSE MS<=MS+'1' -秒數(shù)十位計(jì)算 END IF; ELSE MG<=MG+'1' -
32、秒數(shù)個(gè)位計(jì)算 END IF; END IF; END IF; END PROCESS; XDBZ<=XIDENG; -送給熄燈標(biāo)志 DDSJ(15 DOWNTO 12) <=FS; DDSJ(11 DOWNTO 8) <=FG; DDSJ(7 DOWNTO 4) <=MS;DDSJ(3 DOWNTO 0)<= MG;-等待時(shí)間 END ARCHITECTURE ART; (3)等待計(jì)費(fèi)模塊VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE
33、.STD_LOGIC_ARITH.ALL;ENTITY DDJF IS -每分鐘等待費(fèi)用定義,單位為分 GENERIC(WDJ1:INTEGER:=20; -單價(jià)1 WDJ2:INTEGER:=33); -單價(jià)2 PORT(START,XDBZ,DDBZ,CLK1HZ:IN STD_LOGIC; -啟動(dòng)信號(hào),熄燈信號(hào),等待標(biāo)志,時(shí)鐘信號(hào) DDFY:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-等待費(fèi)用END ENTITY DDJF;ARCHITECTURE ART OF DDJF IS SIGNAL DDFY1:STD_LOGIC_VECTOR(15 DOWNTO 0)
34、; SIGNAL CNT60:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL T60S: STD_LOGIC; -60秒定時(shí)信號(hào) BEGIN PROCESS(CLK1HZ) IS -產(chǎn)生60秒周期性跳變信號(hào) BEGIN IF CLK1HZ'EVENT AND CLK1HZ='1' THENIF CNT60="00111100"THEN -CNT60=60 T60S<='1' CNT60<="00000000" ELSE CNT60<=CNT60+'1' T
35、60S<='0' END IF; END IF;END PROCESS; -等待費(fèi)用計(jì)算進(jìn)程PROCESS(T60S,XDBZ,DDBZ)IS BEGIN IF START='1' THEN DDFY1<="0000000000000000" ELSIF T60S'EVENT AND T60S='1'THEN IF DDBZ='1'THEN -等待時(shí)間小于1小時(shí) DDFY1<=DDFY1+WDJ1; ELSIF XDBZ='1'THEN -等待時(shí)間大于1小時(shí) DDFY1
36、<=DDFY1+WDJ2; END IF; END IF;END PROCESS;-等待費(fèi)用計(jì)算結(jié)果輸出DDFY<=DDFY1;END ARCHITECTURE ART;library IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity LCJF isGENERIC(SD0:INTEGER:=160; - 06:00-22:00單價(jià),1.8元 SD1:INTEGER:=180; - 其它時(shí)間2元 qibu:INTEGER:=60; -
37、 起步公里數(shù),2公里內(nèi)為固定價(jià)格 qbjg:INTEGER:=1000 -起步價(jià)格,2公里內(nèi)為5元 port ( START,DDBZ: in std_logic; -開(kāi)始,等待標(biāo)志 LCBZ,jfbz,SDBZ: in std_logic; - 里程,計(jì)費(fèi),標(biāo)志 LCFY : out std_logic_vector(15 downto 0) - 行駛產(chǎn)生的費(fèi)用 end entity;architecture arch of LCJF is signal LCFY1: std_logic_vector(15 downto 0); -里程費(fèi)用緩存 begin PROCESS(start,LCB
38、Z,jfbz,SDBZ)BEGINif start='1' then -new cycle,not wait,running LCFY1<="0000000000000000" -CLEAR OLD VALUESelsif JFBZ'event and JFBZ='1' then - 計(jì)費(fèi)了 if ddbz='0' then - 運(yùn)行中 if LCBZ='0' then -6KM 以?xún)?nèi),起步以?xún)?nèi) LCFY1<="0000000000000000" elsif LCBZ=&
39、#39;1' then -6KM 以上,超過(guò)起步 if SDBZ='0' then -時(shí)段0 LCFY1<=LCFY1+SD0; - 相應(yīng)費(fèi)用 elsif SDBZ='1' then -時(shí)段1 LCFY1<=LCFY1+SD1; end if; end if; end if;end if;end process;lcfy<=lcfy1+qbjg; end arch;(4)里程計(jì)算模塊程序:- LCJS.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use ieee.std_logic_unsig
40、ned.all;use ieee.std_logic_arith.all;entity LCJS isGENERIC(-0:INTEGER:=160 ; - 06:00-22:00單價(jià) -1:INTEGER:=180; - 其它時(shí)間 qibu:INTEGER:=60 - 起步公里數(shù),2公里內(nèi)為固定價(jià)格 -jg:INTEGER:=1000 -起步價(jià)格,2公里內(nèi)為5元 ); port ( START,DDBZ,WCLK: in std_logic; XSLC : out std_logic_vector(15 downto 0); LCBZ,jfbz : out std_logic );end e
41、ntity;architecture arch of LCJS is signal bms : std_logic_vector(15 downto 0); -百米數(shù)signal bms1:integer range 0 to 99999;signal jfbz1:std_logic; begin PROCESS(start,wclk)variable sms :std_logic_vector(7 downto 0); - 十米數(shù) BEGINif start='1' then -new cycle,not wait,running sms:="00000000&qu
42、ot; bms<="0000000000000000" - 百米數(shù) lcbz<='0'elsif wclk'event and wclk='1' then if ddbz='0' then - 行駛中 if sms="00001010" then -10次計(jì)數(shù),100m sms:="00000000" bms<=bms+1;- new 100m if bms>=qibu then ->2km大于起步里程, 20 00m lcbz<='1
43、' end if ; else sms:=sms+1; end if; end if; end if;end process;(5)里程計(jì)算結(jié)果輸出 xslc<=bms;- 里程計(jì)算結(jié)果轉(zhuǎn)換BMS1<=CONV_INTEGER(BMS);-generate 計(jì)費(fèi)信號(hào)process(bms1) begin case bms1 is when 10|20|30|40|50|60|70|80|90|100=>jfbz1<='1' when 110|120|130|140|150|160|170|180|190|200=>jfbz1<=
44、9;1' when 210|220|230|240|250|260|270|280|290|300=>jfbz1<='1' when 310|320|330|340|350|360|370|380|390|400=>jfbz1<='1' when 410|420|430|440|450|460|470|480|490|500=>jfbz1<='1' when 510|520|530|540|550|560|570|580|590|600=>jfbz1<='1' when 61
45、0|620|630|640|650|660|670|680|690|700=>jfbz1<='1' when 710|720|730|740|750|760|770|780|790|800=>jfbz1<='1' when 810|820|830|840|850|860|870|880|890|900=>jfbz1<='1' when 910|920|930|940|950|960|970|980|990|1000=>jfbz1<='1' when 1010|1020|1030|10
46、40|1050|1060|1070|1080|1090|1100=>jfbz1<='1' when 1110|1120|1130|1140|1150|1160|1170|1180|1190|1200=>jfbz1<='1' when 1210|1220|1230|1240|1250|1260|1270|1280|1290|1300=>jfbz1<='1' when 1310|13130|1330|1340|1350|1360|1370|1380|1390|1400=>jfbz1<='1
47、9; when 1410|1420|1430|14140|1450|1460|1470|1480|1490|1500=>jfbz1<='1' when 1510|1520|1530|1540|15150|1560|1570|1580|1590|1600=>jfbz1<='1' when 1610|1620|1630|1640|1650|16160|1670|1680|1690|1700=>jfbz1<='1' when 1710|1720|1730|1740|1750|1760|1770|1780|1790|1
48、800=>jfbz1<='1' when 1810|1820|1830|1840|1850|1860|1870|18180|1890|1900=>jfbz1<='1' when 1910|1920|1930|1940|1950|1960|1970|1980|1990|2000=>jfbz1<='1' when 2010|2020|2030|2040|2050|2060|2070|2080|2090|2100=>jfbz1<='1' when 2110|2120|2130|2140|2
49、150|2160|2170|2180|2190|2200=>jfbz1<='1' when 2210|22220|2230|2240|2250|2260|2270|2280|2290|2300=>jfbz1<='1' when 2310|2320|2330|2340|2350|2360|2370|2380|2390|2400=>jfbz1<='1' when 2410|2420|2430|24240|2450|2460|2470|2480|2490|2500=>jfbz1<='1'
50、when 2510|2520|2530|2540|25250|2560|2570|2580|2590|2600=>jfbz1<='1' when 2610|2620|2630|2640|2650|26260|2670|2680|2690|2700=>jfbz1<='1' when 2710|2720|2730|2740|2750|2760|2770|2780|2790|2800=>jfbz1<='1' when 2810|2820|2830|2840|2850|2860|2870|28280|2890|2900
51、=>jfbz1<='1' when2910|2920|2930|2940|2950|2960|2970|2980|2990|3000=>jfbz1<='1'when others =>jfbz1<='0'end case;end process;-計(jì)費(fèi)標(biāo)志去毛刺 process(wclk,jfbz1)begin if wclk'event and wclk='1' then jfbz<=jfbz1;end if ;end process;end arch;(6).輸出數(shù)據(jù)選擇模塊VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCXZ IS PORT(SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);-數(shù)據(jù)傳輸選擇控制信號(hào) XSLC:IN STD_LOGIC_VECTOR(15 DOWNTO 0);-里程顯示 LCFY:IN STD_LOGIC_VECTOR(15 DOWNTO 0);-里程費(fèi)用DD
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程公司財(cái)務(wù)制度
- 咸寧彩色混凝土施工方案
- 磚砌污水井施工方案
- 砼護(hù)欄施工方案
- 南山車(chē)庫(kù)防水施工方案
- 廣西噴泉維修施工方案
- 6mm 650nm 5mw 紅光點(diǎn)狀激光 pd腳作用
- 5年級(jí)下冊(cè)人教版英語(yǔ)詞語(yǔ)表
- 5年級(jí)白鷺第二自然段改寫(xiě)成一段說(shuō)明文
- 橋梁端頭封堵施工方案
- 少兒美術(shù)繪本教案課件-3-6歲 《100層巴士》
- 鋼筋原材質(zhì)量證明書(shū)
- WH/T 42-2011演出場(chǎng)所安全技術(shù)要求第2部分:臨時(shí)搭建演出場(chǎng)所舞臺(tái)、看臺(tái)安全技術(shù)要求
- GB/T 5023.5-2008額定電壓450/750 V及以下聚氯乙烯絕緣電纜第5部分:軟電纜(軟線)
- GB/T 23445-2009聚合物水泥防水涂料
- 瓷貼面教學(xué)課件
- 尺骨冠突骨折課件
- 北師大版七年級(jí)下冊(cè)第一章整式的乘除計(jì)算題專(zhuān)項(xiàng)訓(xùn)練
- 2022年蘇州健雄職業(yè)技術(shù)學(xué)院?jiǎn)握锌荚嚸嬖囋囶}及答案解析
- 乳腺癌改良根治術(shù)
- 新版(七步法案例)PFMEA
評(píng)論
0/150
提交評(píng)論