版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(完整word版)基于FPGA的出租車計(jì)費(fèi)器(完整word版)基于FPGA的出租車計(jì)費(fèi)器PAGE1(完整word版)基于FPGA的出租車計(jì)費(fèi)器目錄TOC\o"1—3”\h\u28635摘要 123854Abstract 130988第一章引言 2176321.1課題背景 2251621.2本文的主要工作 210698第二章FPGA、VHDL介紹 4196472。1FPGA現(xiàn)狀及發(fā)展 4116342。2FPGA的結(jié)構(gòu)與特點(diǎn) 4196662.2.1FPGA基本結(jié)構(gòu) 540192.2。2FPGA的特點(diǎn) 6296342。3VHDL設(shè)計(jì)優(yōu)點(diǎn) 621109第三章出租車計(jì)費(fèi)器的設(shè)計(jì) 789343。1出租車計(jì)費(fèi)器的總體設(shè)計(jì) 711223。1。1出租車計(jì)費(fèi)標(biāo)準(zhǔn) 7241163。1。2總體框架設(shè)計(jì) 7127633。2出租車計(jì)費(fèi)器主要模塊設(shè)計(jì) 8163193.2.1速度模塊 9140753.2。2計(jì)程模塊 9318083。2。3計(jì)時(shí)模塊 10170143。2。4計(jì)費(fèi)模塊 1010483第四章整體電路設(shè)計(jì) 1162834.1整體電路圖 11136444.2電源電路 12241604.3啟動/停止按鍵電路 12243934。4自動清零部分 1314733第五章系統(tǒng)仿真與下載實(shí)現(xiàn) 13244355.1QuartusⅡ軟件介紹 14114185。1。1軟件特點(diǎn) 14127485.1.2QuartusⅡ設(shè)計(jì)流程: 1483725.2仿真結(jié)果 15192545.2.1 整體仿真 15199555.2.2速度模塊仿真 15182065。2。3計(jì)程模塊仿真 16324845。2.4計(jì)時(shí)模塊仿真 16141905。2。5計(jì)費(fèi)模塊仿真 17207805。3設(shè)計(jì)測試 1720751第六章總結(jié)及展望 1825729·致謝 1916773·主要參考文獻(xiàn) 19
基于FPGA的出租車計(jì)費(fèi)器設(shè)計(jì)摘要:隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計(jì)技術(shù)和工具發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷﨏PLD/FPGA的出現(xiàn),給設(shè)計(jì)人員帶來了很多方便。利用它進(jìn)行產(chǎn)品開發(fā),可以降低研發(fā)成本,縮短研發(fā)周期。本文介紹了一種采用FPGA芯片進(jìn)行出租車計(jì)費(fèi)器的設(shè)計(jì)方法,描述了研究該課題的意義和應(yīng)用價(jià)值;說明了Altera公司的FPGA結(jié)構(gòu)原理及其主要運(yùn)用;介紹了超高速集成電路硬件描述語言的主要功能和設(shè)計(jì);講解了出租車計(jì)費(fèi)器的系統(tǒng)原理和功能。本文主要采用了Altera公司的可編程邏輯芯片EPC2C35F672C8為核心控制,并附加一定外圍電路組成出租車計(jì)費(fèi)器,使用目前流行的VHDL語言進(jìn)行設(shè)計(jì),具有移植性強(qiáng)的特點(diǎn),便于升級及可重復(fù)使用。利用QuartusⅡ6.0對所設(shè)計(jì)的出租車計(jì)費(fèi)器的VHDL代碼進(jìn)行仿真,并在FPGA數(shù)字實(shí)驗(yàn)系統(tǒng)上實(shí)現(xiàn)了該控制。關(guān)鍵字:FPGA, VHDL, QuartusⅡ, 出租車計(jì)費(fèi)器DesignofTaxiMeterBasedonFPGAABSTRACT:WiththerapiddevelopmentofEDAtechnology,thedesignandtoolsofelectronicsystemhavedeeplychanged。Andthelarge—scaleprogrammablelogicdeviceCPLD/FPGAappearancetomakeconveniencefordesigner。Byusingittoresearchanddevelop,itwillhelpdevisertoreducecost,shortencycle.ThisessayintroducesadesignoftaximeterbyusingFPGAchip,describesthesignificanceandimportancetoresearchthis,explainmakeupelementsofFPGAwhichismadebyAlteraCompany,introducethemainfunctionanddesignofVery-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,interpretthetaximeterprincipleandfunctionsofthesystem。ThisessaymainlyusetheEPC2C35F672C8forcorecontrol,andaddsomeoutsidecircuittomakeataximeter。ItisdesignedwithVHDLLanguageanditcanbemigratedeasier。Thismaketheproductmuchmoreconveniencetorepeatuse。ByusingQuartusⅡ6。0toemulatetaximeterVHDLcode,thePFGAdigitalexperimentsystemcanbecontrolled。KeyWords: FPGA, VHDL, QuartusⅡ, TaxifareRegisters第一章引言1。1課題背景幾年來,出租車行業(yè)發(fā)展迅速,全國大大小小的出租車公司已有數(shù)千家,基于出租車的附屬品市場前景也是十分廣闊。傳統(tǒng)的出租車計(jì)費(fèi)器大多是由單片機(jī)實(shí)現(xiàn)的,發(fā)展使用也是十幾年了,在穩(wěn)定性、成本、制造工藝、使用習(xí)慣等方面都具有一些優(yōu)勢,但在運(yùn)營過程中系統(tǒng)不是很穩(wěn)定,容易造成死機(jī)的現(xiàn)象。傳統(tǒng)計(jì)費(fèi)器的不足點(diǎn):產(chǎn)品更新周期長:傳統(tǒng)的計(jì)費(fèi)器利用微控器,大部分功能依靠單片機(jī)實(shí)現(xiàn)。但單片機(jī)的程序不通用,不同芯片指令集不相同,因此設(shè)計(jì)研發(fā)比較困難,周期很長。計(jì)價(jià)方式不靈活:每次計(jì)價(jià)標(biāo)準(zhǔn)修改都需要重新燒錄芯片,使得每次價(jià)格調(diào)整都成為很費(fèi)力的事情,很難適應(yīng)社會發(fā)展的需要。本設(shè)計(jì)基于FPGA的出租車計(jì)費(fèi)器主要由Altera公司的CycloneⅡ型系列芯片EPC2C35F672C8及一些外部控制電路組成.使用軟件QuartusⅡ和超高速硬件描述語言VHDL來實(shí)現(xiàn)計(jì)價(jià)標(biāo)準(zhǔn)靈活設(shè)定.FPGA在電子設(shè)計(jì)領(lǐng)域中價(jià)格低廉,有良好的發(fā)展趨勢,它的出現(xiàn)必定會占領(lǐng)大部分?jǐn)?shù)字器件市場.1.2本文的主要工作面對出租車行業(yè)日益迅猛的發(fā)展趨勢及對計(jì)費(fèi)器更高的靈活性的要求,本設(shè)計(jì)希望嘗試一些新的方法來予以解決。(1).利用FPGA取代傳統(tǒng)微控器隨著FPGA等數(shù)字可編程器件的出現(xiàn)解決了傳統(tǒng)電子設(shè)計(jì)不能完成的任務(wù),利用FPGA來實(shí)現(xiàn)出租車計(jì)費(fèi)器,可行性很高,而且電路簡單,大大減少外圍器件,可以用軟件完全仿真,靈活度高,可以設(shè)計(jì)一些復(fù)雜的系統(tǒng),而且編好的系統(tǒng)可以在不同的FPGA或CPLD芯片上通用。FPGA能完成任何數(shù)字器件的功能,使用FPGA來開發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。同時(shí)由于FPGA的功能完全取決于VHDL語言編寫的程序,不拘泥于某種芯片的特殊指令,更加提高了產(chǎn)品的更新?lián)Q代能力。(2).完成基于FPGA的出租車計(jì)費(fèi)器的設(shè)計(jì)出租車計(jì)費(fèi)器系統(tǒng)是VHDL語言的實(shí)際應(yīng)用,利用VHDL語言設(shè)計(jì)出來的出租車計(jì)費(fèi)器系統(tǒng)將實(shí)現(xiàn)計(jì)程模塊、計(jì)時(shí)模塊以及動態(tài)掃描模塊等設(shè)計(jì)方法與技巧。計(jì)程模塊將用計(jì)數(shù)器來完成,計(jì)數(shù)器對脈沖數(shù)計(jì)數(shù),然后提供給程序數(shù)據(jù).通過不同的信號,然后用比較器可以讓我們確定出租車是在車行計(jì)程還是車停計(jì)時(shí)。再將數(shù)據(jù)傳輸?shù)接?jì)費(fèi)模塊,通過多種條件判定,最后確定輸出值,然后相加確定最后的費(fèi)用,并顯示出來.第二章FPGA、VHDL介紹2。1FPGA現(xiàn)狀及發(fā)展FPGA是現(xiàn)場可編程門陣列(FieldProgrammableGateArray)的簡稱。它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA起源于美國的Xilinx公司,該公司于1985年推出了世界上第一塊FPGA芯片。在這二十年的發(fā)展過程中,F(xiàn)PGA的硬件體系結(jié)構(gòu)和軟件開發(fā)工具都在不斷的完善,日趨成熟。從最初的1200個(gè)可用門,90年代時(shí)幾十萬個(gè)可用門,發(fā)展到目前數(shù)百萬門至上千萬門的單片F(xiàn)PGA芯片,Xilinx、Altera等世界頂級廠商已經(jīng)將FPGA器件的集成度提高到一個(gè)新的水平。FPGA結(jié)合了微電子技術(shù)、電路技術(shù)、EDA技術(shù),使設(shè)計(jì)者可以集中精力進(jìn)行所需邏輯功能的設(shè)計(jì),縮短設(shè)計(jì)周期,提高設(shè)計(jì)質(zhì)量。目前世界上有十幾家生產(chǎn)CPLD/FPGA的公司,最重要的幾家是Altera、Xilinx、Lattice和Actel。Actel公司生產(chǎn)的FPGA廣泛應(yīng)用于通信等領(lǐng)域,該公司的部分FPGA系列采用了繁榮死結(jié)構(gòu),可以應(yīng)用于航空航天、軍事領(lǐng)域。另外一些FPGA采用了Flash工藝制造。Xilinx公司目前有8款FPGA的DSP.其中Sparten-3ADSP為低端產(chǎn)品,高端的Virtex—DSP分為兩個(gè)產(chǎn)品線:Virtex—4SX,采用了65nm工藝的Virtex-5SXT.所以Xilinx的產(chǎn)品從21最多到352個(gè)GMAC/s(千兆乘加/秒),以提供不同范圍的性能,同時(shí)也增大在存儲器方面的帶寬。因此最低速產(chǎn)品可以運(yùn)行到250MHz,告訴產(chǎn)品運(yùn)行到550MHz;MAC單元從84到640.Altera公司的高密度StratixⅢ器件拓展FPGA的DSP性能。嵌入式DPS模塊運(yùn)行在550Hz,這些器件可達(dá)每秒492千兆乘加(GMAC)的性能,并結(jié)合良好的邏輯結(jié)構(gòu)于速度優(yōu)化的互聯(lián)。StratixⅡ器件可以引腳完全兼容地移植到HardCopyⅡ結(jié)構(gòu)化ASIC,從而保證客戶的設(shè)計(jì)功能沒有任何改變。Altera的新一代結(jié)構(gòu)化ASIC芯片,邏輯相當(dāng)于多達(dá)220萬ASIC門,DSP模塊相當(dāng)于額外的140萬門,還有集成超過8Mbits的嵌入式存儲器。2.2FPGA的結(jié)構(gòu)與特點(diǎn)2。2。1FPGA基本結(jié)構(gòu)目前生產(chǎn)FPGA的主要公司有Altera、Xilinx、Lattice和Actel,生產(chǎn)的FPGA品種和型號繁多,盡管這些FPGA的集體結(jié)構(gòu)和性能指標(biāo)各有特色,但它們都有一個(gè)共同之處,即由邏輯功能塊排成陣列,并有可編程的互連資源連接這些邏輯功能塊,從而實(shí)現(xiàn)不同的設(shè)計(jì)。典型的FPGA通常包含三類基本資源:可編程邏輯功能塊、可編程輸入/輸出塊和可編程互聯(lián)資源,基本結(jié)構(gòu)如圖2-1所示。圖2-1FPGA基本結(jié)構(gòu)2。2.2FPGA的特點(diǎn)FPGA使用的是可編程的查找表(LookUpTable,LUT)結(jié)構(gòu),LUT是可編程的最小邏輯結(jié)構(gòu)單元.大部分FPGA采用基于SRAM的查找表邏輯形成結(jié)構(gòu),就是用SRAM(靜態(tài)隨機(jī)存儲器)來構(gòu)成邏輯函數(shù)發(fā)生器.一個(gè)N輸入查找表(LUT)可以實(shí)現(xiàn)N個(gè)輸入變量的任何邏輯功能。目前市場上有三種基本FPGA編程技術(shù):SRAM、反熔絲、Flash。其中SRAM是迄今為止應(yīng)用范圍最廣的架構(gòu),主要因?yàn)樗俣瓤烨揖哂锌芍鼐幊棠芰?,而繁榮死FPGA只具有一次可編程(OneTimeProgrammable,OTP)能力?;贔lash的FPGA是FPGA領(lǐng)域比較新的技術(shù),也能提供重編程功能。2。3VHDL設(shè)計(jì)優(yōu)點(diǎn)利用VHDL語言設(shè)計(jì)數(shù)字邏輯硬件系統(tǒng)具有多方面的優(yōu)點(diǎn)。VHDL可以用來描述邏輯設(shè)計(jì)的結(jié)構(gòu),比如邏輯設(shè)計(jì)中有多少個(gè)子邏輯,而這些子邏輯是如何連接的。VHDL并不十分關(guān)心一個(gè)具體邏輯是靠何種電路實(shí)現(xiàn)的,設(shè)計(jì)者主要把精力集中電路所能實(shí)現(xiàn)的功能上。VHDL采用類似于高級語言的語句格式完成對硬件行為的描述,所以我們稱VHDL為行為描述語言.VHDL所給出的邏輯的模擬與調(diào)試為設(shè)計(jì)者提供了最大的空間,用戶甚至不必編寫任何測試向量便可進(jìn)行源代碼級的調(diào)試。設(shè)計(jì)者可以非常方便地比較各種方案的可行性和優(yōu)劣,大大降低了設(shè)計(jì)的難度。并且設(shè)計(jì)者的原始描述是非常簡練的硬件描述,經(jīng)過EDA工具處理最終生成付諸生產(chǎn)的電路描述或版圖參數(shù)描述的工藝文件。VHDL語言具有良好的可讀性,VHDL語言中的設(shè)計(jì)尸體(DesignEntity)、程序包(Package)、設(shè)計(jì)庫(Library)為設(shè)計(jì)人員重復(fù)利用別人的設(shè)計(jì)成果提供了技術(shù)手段。第三章出租車計(jì)費(fèi)器的設(shè)計(jì)3。1出租車計(jì)費(fèi)器的總體設(shè)計(jì)3。1.1出租車計(jì)費(fèi)標(biāo)準(zhǔn)車起步開始計(jì)費(fèi),首先顯示起步價(jià),起步費(fèi)為3.00元,車在行駛3km以內(nèi),只收起步價(jià)。車行駛超過3km后,每公里2元,車費(fèi)依次累加.當(dāng)總費(fèi)用達(dá)到或超過40元時(shí),每公里收費(fèi)4元。當(dāng)遇到紅燈或客戶需要停車等待時(shí),則按時(shí)間計(jì)費(fèi),計(jì)費(fèi)單價(jià)為每20秒收費(fèi)1元。3。1。2總體框架設(shè)計(jì)系統(tǒng)流程介紹:分析系統(tǒng)設(shè)計(jì)要求不難得知,整個(gè)出租車計(jì)費(fèi)系統(tǒng)按功能主要分為速度模塊、計(jì)程模塊、計(jì)時(shí)模塊和計(jì)費(fèi)模塊,其系統(tǒng)結(jié)構(gòu)圖如圖3—1所示。圖3—1出租車計(jì)費(fèi)器系統(tǒng)結(jié)構(gòu)圖系統(tǒng)接收到reset信號后,總費(fèi)用變?yōu)?元,同時(shí)其他計(jì)數(shù)器、寄存器等全部清零。系統(tǒng)接收到start信號后,首先把部分寄存器賦值,總費(fèi)用不變,單價(jià)price寄存器通過對總費(fèi)用的判斷后賦為2元。其他寄存器和計(jì)數(shù)器等繼續(xù)保持為0。速度模塊:通過對速度信號sp的判斷,決定變量kinside的值。Kinside即是行進(jìn)100m所需要的時(shí)鐘周期數(shù),然后每行進(jìn)100m,則產(chǎn)生一個(gè)脈沖clkout。計(jì)程模塊:由于一個(gè)clkout信號代表行進(jìn)100m,故通過對clkout計(jì)數(shù),可以獲得共行進(jìn)的距離kmcount。計(jì)時(shí)模塊:在汽車啟動后,當(dāng)遇到顧客等人或紅燈時(shí),出租車采用計(jì)時(shí)收費(fèi)的方式。通過對速度信號sp的判斷決定是否開始記錄時(shí)間。當(dāng)sp=0時(shí),開始記錄時(shí)間.當(dāng)時(shí)間達(dá)到足夠長時(shí)產(chǎn)生timecount脈沖,并重新計(jì)時(shí).一個(gè)timecount脈沖相當(dāng)于等待的時(shí)間達(dá)到了時(shí)間計(jì)費(fèi)的長度。這里選擇系統(tǒng)時(shí)鐘頻率為500Hz,20s即計(jì)數(shù)值為1000。計(jì)費(fèi)模塊由兩個(gè)進(jìn)程組成。其中,一個(gè)進(jìn)程根據(jù)條件對enable和price賦值:當(dāng)記錄的距離達(dá)到3公里后enable變?yōu)?,開始進(jìn)行每公里收費(fèi),當(dāng)總費(fèi)用大于40元后,則單價(jià)price由原來的2元每公里編程4元每公里;第二個(gè)進(jìn)程在每個(gè)時(shí)鐘周期判斷timeout和clkout的值.當(dāng)其為1時(shí),則在總費(fèi)用上加上相應(yīng)的費(fèi)用。3。2出租車計(jì)費(fèi)器主要模塊設(shè)計(jì)從上述設(shè)計(jì)方案中我們可以大致得到出租車計(jì)費(fèi)器的系統(tǒng)框圖,如圖3—2所示。其中clk為輸入時(shí)鐘脈沖,時(shí)鐘上升沿有效;reset為復(fù)位信號,start為開始計(jì)費(fèi)信號,stop為停止計(jì)費(fèi)信號,均高電平有效;SP[2。。0]表示出租車狀態(tài)(停止或不同形式速度);kmcnt和count信號則分別輸出出租車行駛的里程和花費(fèi)。圖3-2出租車計(jì)費(fèi)器系統(tǒng)框圖3。2。1速度模塊速度模塊首先根據(jù)start信號判斷是否開始計(jì)費(fèi),然后根據(jù)輸入的速度檔位sp[2。。0]的判斷,確定行駛100m所需要的時(shí)鐘數(shù),每前進(jìn)100m,輸出一個(gè)clkout信號。同時(shí)由cnt對clk進(jìn)行計(jì)數(shù),當(dāng)cnt等于kinside時(shí),把clkout信號置1,cnt清0。其模塊框圖如圖3—3。圖3-3速度模塊框圖3.2.2計(jì)程模塊此模塊主要用于記錄行進(jìn)的距離,其模塊框圖如圖3-4所示.通過對clkout信號的計(jì)數(shù),可以計(jì)算行駛的距離kmcount。一個(gè)clkout脈沖相當(dāng)于行進(jìn)100m所以只要記錄clkout的脈沖數(shù)目即可確定共行進(jìn)的距離。Kmcount1為十分位,kmcount2為個(gè)位,kmcount3為十位,分別為十進(jìn)制數(shù)。圖3—4計(jì)程模塊框圖3.2.3計(jì)時(shí)模塊速度模塊主要用于計(jì)時(shí)收費(fèi),記錄計(jì)程車速度為0的時(shí)間(如等待紅燈),其模塊框圖如圖3—5所示.通過對sp信號的判斷,當(dāng)sp=0,開始記錄時(shí)間.當(dāng)時(shí)間達(dá)到足夠長時(shí),產(chǎn)生timecount脈沖,并重新計(jì)時(shí)。圖3-5計(jì)時(shí)模塊框圖3。2.4計(jì)費(fèi)模塊計(jì)費(fèi)模塊如圖3-6所示,可分為kmmoney1和kmmoney2兩個(gè)進(jìn)程.Kmmoney1用于產(chǎn)生enable和price信號.當(dāng)記錄距離達(dá)到3km后,enable信號為1,開始進(jìn)行每公里收費(fèi)。當(dāng)總費(fèi)用大于40元后,單價(jià)price由原來的2元變成4元,用作計(jì)時(shí)收費(fèi)。通過對sp信號的判斷,當(dāng)sp=0,開始記錄時(shí)間。當(dāng)時(shí)間達(dá)到足夠長時(shí),產(chǎn)生timecount脈沖,并重新計(jì)時(shí)。Kmmoney2用于判斷timecount和clkout的值,當(dāng)其為1時(shí),總費(fèi)用加1.最終輸出為總費(fèi)用。圖3—6計(jì)費(fèi)模塊框圖第四章整體電路設(shè)計(jì)4。1整體電路圖整體RTL電路如圖4-1.硬件電路由CycloneⅡ電路板組成,clk為時(shí)鐘周期信號,由試驗(yàn)箱產(chǎn)生,start/stop是啟動停止按鍵電路,reset為自動清零電路。電源又AD—DC開關(guān)電源供電。圖4—1整體RTL門電路4。2電源電路電源采用了是比較流行的開關(guān)電源,AD—DC開關(guān)電源,輸入115VAC到230VAC,輸出+5V(4A)。使用開關(guān)電源的好處就是比較節(jié)省能源,它的轉(zhuǎn)換效率很高,可達(dá)85%以上,穩(wěn)壓范圍寬,除此之外,還具有穩(wěn)壓精度高、不使用電源變壓器等特點(diǎn).4.3啟動/停止按鍵電路如圖4—2所示,采用雙刀雙路開關(guān),一路開關(guān)用于清零部分,由于顯示部分特殊要求,即計(jì)費(fèi)停止后屏幕上荏苒要保持計(jì)費(fèi)的所有信息,只有當(dāng)下次計(jì)費(fèi)啟動時(shí)才清零從新開始計(jì)費(fèi)。另外兩路開關(guān),其中一路用于啟動指示和啟動/停止輸出信號給FPGA芯片的I/O口。當(dāng)按下鍵后,清零部分和啟動計(jì)費(fèi)部分同時(shí)進(jìn)行,但清零只是瞬間的,計(jì)費(fèi)指示燈兩起.再次按下鍵后,開關(guān)換到另外的兩路,空車指示燈亮起。圖4—2啟動/停止按鍵電路4.4自動清零部分由于顯示部分的特殊要求,即計(jì)費(fèi)停止后屏幕上仍然要保持計(jì)費(fèi)的所有信息,只有當(dāng)下次計(jì)費(fèi)啟動時(shí)才清零從新開始計(jì)費(fèi).VHDL語言的特殊性,不能在一個(gè)結(jié)構(gòu)中用兩個(gè)不同的動作使其賦值。所以必須要有一個(gè)瞬間清零的信號,當(dāng)FPGA的清零I/O端口為“1”時(shí)就自動清零。使用電容的充放電功能來實(shí)現(xiàn),按鍵斷開時(shí)清零輸出端為接地,按鍵閉合時(shí)電容充電清零端為高電平,充完電后清零端輸出又為低電平,當(dāng)按鍵斷開后,通過一個(gè)2k歐姆的電阻放電,為下次充電做好準(zhǔn)備.如圖4-3所示。圖4-3自動清零電路第五章系統(tǒng)仿真與下載實(shí)現(xiàn)5.1QuartusⅡ軟件介紹5。1.1軟件特點(diǎn)QuartusⅡ是Altera公司自行設(shè)計(jì)的一個(gè)完全集成化、易學(xué)易用的可編程邏輯設(shè)計(jì)環(huán)境,它提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;芯片(電路)平面布局連線編輯;LogicLock增量設(shè)計(jì)方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用SignalTapⅡ邏輯分析工具進(jìn)行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們連接起來生成編程文件;使用組合編譯方法可一次完成整體設(shè)計(jì)流程;自動定位編譯錯誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件、和Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;5.1.2QuartusⅡ設(shè)計(jì)流程:設(shè)計(jì)輸入:完成器件的硬件描述,包括文本編輯器、塊與符號編輯器、MegaWizard插件管理器、約束編輯器和布局編輯器等工具;綜合:包括分析和綜合器、輔助工具和RTL查看器等工具;不懼連線:將設(shè)計(jì)綜合后的網(wǎng)表文件映射到實(shí)體器件的過程,包括Fitter工具、約束編輯器、布局圖編輯器、芯片編輯器和增量布局連線工具;時(shí)序分析;5。2仿真結(jié)果 5.2。1 整體仿真 對電路整體進(jìn)行仿真,得出如下仿真波形圖5—1。圖中,當(dāng)復(fù)位信號reset為高電平時(shí),系統(tǒng)所有寄存器、計(jì)數(shù)器都清零;當(dāng)開始計(jì)費(fèi)信號start信號有效時(shí),計(jì)費(fèi)器開始計(jì)費(fèi),根據(jù)出租車行駛的速度sp[2。.0]的取值計(jì)算所用花費(fèi)和行駛里程;當(dāng)停止計(jì)費(fèi)信號有效時(shí),計(jì)費(fèi)器停止工作。 圖5—1出租車計(jì)費(fèi)器仿真波形圖 5.2.2速度模塊仿真 速度模塊的仿真波形圖如圖5-2所示。該模塊根據(jù)出租車所處的運(yùn)行狀態(tài)和不同的形式速度,對相應(yīng)數(shù)目的時(shí)鐘周期進(jìn)行計(jì)數(shù),車每行駛100m時(shí)輸出信號clkout輸出高電平。 圖5-2速度模塊仿真波形圖 5。2。3計(jì)程模塊仿真 計(jì)程模塊的仿真波形如圖5-3所示。圖中,當(dāng)reset信號有效時(shí),系統(tǒng)復(fù)位清零;否則,對輸入信號clkout進(jìn)行十進(jìn)制計(jì)數(shù)。 圖5—3計(jì)程模塊仿真波形圖 5。2。4計(jì)時(shí)模塊仿真 計(jì)時(shí)模塊的仿真波形圖如圖5-4所示。預(yù)設(shè)1000個(gè)時(shí)鐘周期為20s,對時(shí)鐘周期進(jìn)行計(jì)數(shù),每計(jì)1000個(gè)時(shí)鐘周期輸出高電平,指示計(jì)時(shí)20秒。 圖5—4計(jì)時(shí)模塊仿真波形圖5.2.5計(jì)費(fèi)模塊仿真 計(jì)費(fèi)模塊的仿真波形圖如圖5-5所示。當(dāng)reset信號有效時(shí),系統(tǒng)復(fù)位清零;否則,當(dāng)計(jì)時(shí)計(jì)費(fèi)信號timecount和計(jì)程計(jì)費(fèi)信號clkout為高電平時(shí),按照一定計(jì)費(fèi)規(guī)則進(jìn)行計(jì)費(fèi)。 圖5—5計(jì)費(fèi)模塊仿真功能圖 綜上所述,本設(shè)計(jì)的出租車計(jì)費(fèi)器完全符合系統(tǒng)設(shè)計(jì)的要求,實(shí)現(xiàn)了出租車計(jì)費(fèi)器所需的各項(xiàng)基本功能。5.3設(shè)計(jì)測試?yán)肣uartusⅡ6.0對所設(shè)計(jì)出租車計(jì)費(fèi)器的VHDL代碼進(jìn)行了仿真,并在CycloneⅡ型可編程數(shù)字實(shí)現(xiàn)系統(tǒng)上實(shí)現(xiàn)了該控制。該數(shù)字實(shí)現(xiàn)系統(tǒng)分成兩部分,一是FPGA的下載板,它主要包括所使用的芯片、RS—232接頭、接腳轉(zhuǎn)換插槽等;另一部分是I/O實(shí)驗(yàn)板,它主要包括顯示、脈沖輸出等。出租車計(jì)費(fèi)器的各部分利用數(shù)字實(shí)驗(yàn)系統(tǒng)所附的RS—232連接線將計(jì)算機(jī)中的VHDL代碼設(shè)計(jì)的內(nèi)容燒錄到該實(shí)驗(yàn)系統(tǒng)的EPC2C35F672C8芯片中進(jìn)行測試,測試結(jié)果基本實(shí)現(xiàn)了總費(fèi)用=起費(fèi)用+(里程-3km)×里程單價(jià)+等待時(shí)間×等待單價(jià)的出租車計(jì)費(fèi)模式.第六章總結(jié)及展望本文論述了基于FPGA的出租車計(jì)費(fèi)器設(shè)計(jì),分別介紹了整個(gè)系統(tǒng)和各個(gè)模塊的設(shè)計(jì),使用FPGA芯片、VHDL硬件描述語言作為設(shè)計(jì)手段,利用自頂向下的模塊化設(shè)計(jì)思路,通過在QuartusⅡ軟件下進(jìn)行的模擬仿真,并進(jìn)行相應(yīng)的硬件下載調(diào)試,證明所設(shè)計(jì)的系統(tǒng)完成了出租車計(jì)費(fèi)器的功能,各項(xiàng)技術(shù)指標(biāo)符合預(yù)定標(biāo)準(zhǔn),具有一定實(shí)用性。由于本人在經(jīng)驗(yàn)水平上的欠缺,設(shè)計(jì)中可能存在很多不足,請各位老師予以指證!近年來,FPGA在通信、控制、數(shù)據(jù)計(jì)算等領(lǐng)域得到了廣泛的應(yīng)用,利用FPGA來設(shè)計(jì)電子產(chǎn)品可減少電子系統(tǒng)的開發(fā)風(fēng)險(xiǎn)和開發(fā)成本;縮短了上市時(shí)間;通過在系統(tǒng)編程、遠(yuǎn)程在線重構(gòu)等技術(shù)降低維護(hù)升級成本。并且,F(xiàn)PGA器件的成本越來越低,Actel公司發(fā)布第三代的基于Flash的可編程邏輯方案,這些新的FPGA芯片最低價(jià)將達(dá)到1.5美元,代表全球最低成本的FPGA。這些都說明可編程器件已成為現(xiàn)在及未來很長一段時(shí)間的主流,用它來實(shí)現(xiàn)的出租車計(jì)費(fèi)器省去很多外圍電路,穩(wěn)定,簡單有效,將來必然可以設(shè)計(jì)出更多更強(qiáng)大的功能,提高產(chǎn)品競爭力。未來基于FPGA平臺的出租車計(jì)費(fèi)器將會有更低的成本、更小的體積、更安全、更精確和更多功能.·致謝本次設(shè)計(jì)從選題到最后完成,都得到了指導(dǎo)老師付敏老師的悉心指導(dǎo)。付老師淵博的知識、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和誨人不倦的精神永遠(yuǎn)是我學(xué)習(xí)的榜樣.同時(shí),感謝論文指導(dǎo)組的劉海力老師和郭仟老師對選題的分析。在系統(tǒng)設(shè)計(jì)過程中,我也遇到了較多的困難,我十分感謝我的朋友和老師給與我的幫助和支持,使我能順利完成本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)?!ぶ饕獏⒖嘉墨I(xiàn)[1]劉韜,樓興華.《FPGA數(shù)字電子系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例導(dǎo)航》[M].北京:人民郵電出版社,2005.6,27~36.[2]王輝,殷穎,陳婷,俞一鳴。MAX+plusⅡ和QuartusⅡ應(yīng)用于開發(fā)技巧[M].北京:機(jī)械工業(yè)出版社,2007。1,293~316。[3]焦敏.FPGA在出租車計(jì)費(fèi)器上的應(yīng)用研究[J];中國科技信息,2009(9):145~146.[4]茅豐。基于FPGA的出租車計(jì)費(fèi)器[J];電子技術(shù)應(yīng)用,2007.3。[5]廖艷秋。FPGA的出租車計(jì)費(fèi)器[J];電子科技大學(xué),2008。10。[6]吳冬梅,吳延海,鄧玉玖.基于CPLD/FPGA的出租車計(jì)費(fèi)器[J];電子技術(shù)應(yīng)用,2004(11):71~73。[7]黃智偉。FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐[M].,北京:電子工業(yè)出版社,2005,200~217.[8]黃建新,劉邁,譚克俊?;贔PGA芯片設(shè)計(jì)出租車計(jì)費(fèi)器的研究[J]。吉林化工學(xué)院學(xué)報(bào),2003(03):52~55。[9]候伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2000.[10]姜雪松,VHDL設(shè)計(jì)實(shí)例與仿真[M]。北京:機(jī)械工業(yè)出版社,2007.1,91~103.[11]王彥芳,王小平,王彥永等。用可編程邏輯器件實(shí)現(xiàn)專用數(shù)字集成電路的功能設(shè)計(jì)[J].半導(dǎo)體情報(bào),2000,37(5)48~51。[12]張立,張光新,柴磊等.FPGA在多功能計(jì)費(fèi)器系統(tǒng)中的應(yīng)用[J].儀器儀表學(xué)報(bào),2005,26(8):7352737.[13]林愿?;贑PLD/FPGA的出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)[J].國外電子元器件,2007(07):26~29.[14]周潤景,圖雅,張麗敏。基于QuartusII的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例[J]。北京:電子工業(yè)出版社,2007。[15]劉欲曉,方強(qiáng),黃宛寧。EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實(shí)踐[M];北京:電子工業(yè)出版社,2009(4),175~186。[16][英]JoneWulenskl。VHDLDigtalSystemDesign[M],北京:電子工業(yè)出版社,2004,10~105.[17]SanJose.MAX+PLUSIIIntroductionUSA[M]:AlteraCorporation,2004,52~69.附錄VHDL程序Speed模塊libraryieee; —-加載庫文件useieee。std_logic_1164.all;useieee.std_logic_unsigned。all;entityspeedis port( -—定義輸入輸出端口 clk:instd_logic; reset:instd_logic; start:instd_logic; stop:instd_logic; sp:instd_logic_vector(2downto0); clkout:outstd_logic );endspeed;architecturertlofspeedisbegin process(clk,reset,start,stop,sp)--敏感信號發(fā)生變化時(shí),啟動進(jìn)程 typestate_typeis(s0,s1);——枚舉類型; variables_state:state_type; variablecnt:integerrange0to28; variablekinside:integerrange0to30;begin casespis --速度選擇 when"000”=〉kinside:=0; --停止?fàn)顟B(tài)或空檔 when"001"=〉kinside:=28; —-第一檔 when"010"=〉kinside:=24; —-第二檔 when"011"=>kinside:=20; -—第三檔 when"100”=〉kinside:=16; -—第四檔 when”101”=〉kinside:=12; --第五檔 when"110"=>kinside:=8; ——第六檔 when"111"=〉kinside:=4; ——第七檔 endcase; ifreset=’1'then -—復(fù)位清零 s_state:=s0; elsifclk’eventandclk='1'then —-時(shí)鐘上升沿到達(dá)時(shí),狀態(tài)轉(zhuǎn)換 cases_stateis whens0=> cnt:=0; clkout<=’0’; ifstart=’1'then s_state:=s1; else s_state:=s0; endif; whens1=〉 clkout<=’0'; ifstop=’1’then s_state:=s0; -—相當(dāng)于無客上車 elsifsp="000"then s_state:=s1; --有客上車但車速為0,即剛上車還未起步 elsifcnt=kinsidethen cnt:=0; clkout〈='1’; s_state:=s1; else cnt:=cnt+1; s_state:=s1; endif; endcase; endif;endprocess;endrtl;Times模塊libraryieee; ——加載庫文件useieee.std_logic_1164。all;useieee.std_logic_unsigned.all;entitytimesis port( --定義輸入輸出端口 clk:instd_logic; reset:instd_logic; start:instd_logic; stop:instd_logic; sp:instd_logic_vector(2downto0); timecount:outstd_logic );endtimes;architecturertloftimesisbeginprocess(reset,clk,sp,stop,start) ——啟動進(jìn)程 type state_typeis(t0,t1,t2); variablet_state:state_type; variablewaittime:integerrange0to1000;begin ifreset='1’then —-復(fù)位清零 t_state:=t0; elsif(clk'eventandclk='1')then —-時(shí)鐘上升沿到達(dá) caset_stateis --根據(jù)條件完成狀態(tài)轉(zhuǎn)換 whent0=> waittime:=0; timecount<='0'; ifstart='1’then t_state:=t1; else t_state:=t0; endif; whent1=> ifsp=”000”then t_state:=t2; else waittime:=0; t_state:=t1; endif; whent2=> waittime:=waittime+1; ——等待時(shí)間加1 timecount<=’0'; ifwaittime=1000then timecount〈='1'; —-產(chǎn)生一個(gè)時(shí)間計(jì)費(fèi)脈沖 waittime:=0; elsifstop='1'then t_state:=t0; elsifsp=”000"then t_state:=t2; else timecount<=’0’; t_state:=t1; endif; endcase; endif;endprocess;endrtl;Kilometers模塊libraryieee; —-加載庫文件useieee.std_logic_1164.all;useieee。std_logic_unsigned.all;entitykilometersis port( ——定義輸入輸出端口 clkout,reset:instd_logic; kmcnt1:outstd_logic_vector(3downto0); kmcnt2:outstd_logic_vector(3downto0); kmcnt3:outstd_logic_vector(3downto0) );endkilometers;architecturertlofkilometersisbegin process(clkout,reset) --啟動進(jìn)程 variable km_reg:std_logic_vector(11downto0);begin ifreset=’1'then ——復(fù)位清零 km_reg:=”000000000000"; elsifclkout’eventandclkout=’1’then —-時(shí)鐘上升沿到達(dá)時(shí)進(jìn)行計(jì)程 ifkm_reg(3downto0)=”1001”then --對應(yīng)里程十分位 km_reg:=km_reg+"0111”; --十分位向個(gè)分位進(jìn)位 else km_reg(3downto0):=km_reg(3downto0)+"0001"; endif; endif; kmcnt1<=km_reg(3downto0); kmcnt2<=km_reg(7downto4); kmcnt3<=km_reg(11downto8);endprocess;endrtl;Kmmoney模塊libraryieee; ——加載庫文件useieee。std_logic_1164。all;useieee.std_logic_unsigned.all;entitykmmoneyis port( -—定義輸入輸出端口 clk :instd_logic; reset :instd_logic; timecount:instd_logic; clkout:instd_logic; kmcnt2 :instd_logic_vector(3downto0); kmcnt3 :instd_logic_vector(3downto0); count1 :outstd_logic_vector(3downto0); count2 :outstd_logic_vector(3downto0); count3 :outstd_logic_vector(3downto0) );endkmmoney;architecturertlofkmmoneyissignalcash:std_logic_vector(11downto0);signalprice:std_logic_vector(3downto0);signalenable:std_logic;beginkmmoney1:PROCESS(cash,kmcnt2) —-此進(jìn)程產(chǎn)生下一進(jìn)程的敏感信號 begin ifcash>=”000001000000"then price〈="0100”; else price<="0100”; endif; if(kmcnt2>="0011")OR(kmcnt3〉="0001”)then enable〈=’1'; else enable<=’0'; endif; endprocess; kmmoney2:process(reset,clkout,clk,enable,price,kmcnt2) variablereg2:std_logic_vector(11downto0); variableclkout_cnt:integerrange0to10; begin if reset='1'then cash<="000000000011”; --起步費(fèi)用設(shè)為3元 elsifclk'eventandclk=’1'then —-判斷是否需要時(shí)間計(jì)費(fèi),每20s加一元 iftimecount=’1’then reg2:=cash; ifreg2(3downto0)+"0001”〉"1001"then --產(chǎn)生進(jìn)位 reg2(7downto0):=reg2(7downto0)+"00000111”; ifreg2(7downto4)〉”1001”then cash〈=reg2+"000001100000"; else cash<=reg2; endif; else cash〈=reg2+"0001"; endif; -—里程計(jì)費(fèi) elsifclkout='1'andenable=’1’then ifclkout_cnt=9then clkout_cnt:=0; reg2:=cash; if”0000"®2(3downto0)+price(3downto0)>"00001001”then reg2(7downto0):= —-十位進(jìn)位 reg2(7downto0)+”00000110”+price; ifreg2(7downto4)〉"1001"then --百位進(jìn)位 cash<=reg2+"000001100000”; else cash〈=reg2; endif; else cash<=reg2+price; endif; else --對時(shí)鐘計(jì)數(shù) clkout_cnt:=clkout_cnt+1; endif; endif; endif; endprocess; count1〈=cash(3downto0); —-總費(fèi)用的個(gè)位 count2<=cash(7downto4); ——總費(fèi)用的十位 count3〈=cash(11downto8); -—總費(fèi)用的百位endrtl; TOP模塊libraryieee;useieee.std_logic_1164.all;entitytopis port( --定義整個(gè)系統(tǒng)的輸入輸出端口 clk:instd_logic; reset: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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026大唐(內(nèi)蒙古)能源開發(fā)有限公司畢業(yè)生招聘備考題庫及一套完整答案詳解
- 跨境電商獨(dú)立站客服服務(wù)協(xié)議2025
- 初一上生物考試題及答案
- 《飛行汽車用電機(jī)控制系統(tǒng)技術(shù)規(guī)范》(征求意見稿)
- 腸易激綜合征腸黏膜免疫調(diào)節(jié)策略
- 肝臟脂肪變性與纖維化的關(guān)聯(lián)研究
- 肝膽胰手術(shù)ERAS的營養(yǎng)支持新策略
- 衛(wèi)生院外購藥品管理制度
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院基建工程制度
- 衛(wèi)生院廉政教育制度
- 2025年購房合同模板 樣本電子版
- 10S505 柔性接口給水管道支墩
- 2024年廣東粵電湛江風(fēng)力發(fā)電限公司社會公開招聘21人公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 依庫珠單抗注射液-臨床用藥解讀
- 罷免物業(yè)申請書
- 高血壓的急癥與處理
- 表面粗糙度與檢測(新國標(biāo))課件
- 人工智能在系統(tǒng)集成中的應(yīng)用
- 大九九乘法口訣表(可下載打印)
- 金屬非金屬礦山安全操作規(guī)程
- 壓鑄鋁合金熔煉改善
評論
0/150
提交評論