基于Verilog HDL設(shè)計的出租車計價器_第1頁
基于Verilog HDL設(shè)計的出租車計價器_第2頁
基于Verilog HDL設(shè)計的出租車計價器_第3頁
基于Verilog HDL設(shè)計的出租車計價器_第4頁
基于Verilog HDL設(shè)計的出租車計價器_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

西華大學(xué)課程設(shè)計說明書題 目: 出租車計價器 專 業(yè): 信 息 工 程年 級: 2009級學(xué) 生: 潘 帥 學(xué) 號: 33200908020*指導(dǎo)教師: 林競力 完成日期: 2012 年 6 月 6 日西華大學(xué)課程設(shè)計說明書摘要:本文介紹了一種采用可編程邏輯器件(FPGA/CPLD)進(jìn)行出租車計費(fèi)器的設(shè)計思想以及實(shí)現(xiàn)方法。本設(shè)計實(shí)現(xiàn)了出租車計費(fèi)器所需的一些基本功能,計費(fèi)金額包括起步價、里程計費(fèi)、等待計時計費(fèi)等。該設(shè)計采用模塊化設(shè)計,在Quartus II9.0軟件平臺下,采用Verilog HDL 硬件描述語言描述和模擬仿真了分頻模塊、計程模塊、計費(fèi)模塊、計時模塊,譯碼以及動態(tài)掃描顯示模塊,完成了出租車計費(fèi)器仿真設(shè)計和硬件電路的實(shí)現(xiàn)。關(guān)鍵詞:FPGA,出租車計費(fèi)器,Quartus,Verilog HDLAbstract:This article describes the design ideas and methods of the taximeter, through the programmable logic device (FPGA/CPLD). The design of a taximeter to achieve the required basic functions, The total of billing included the starting price, metered, and wait for time billing. Through the Quartus II 9.0 Software Platform,Using Verilog HDL language completed the description and simulation of frequency module, the meter module, Billing module, timing modules, decoding, dynamic scanning display module. ITIt has completed the taxi meter simulation and the hardware circuit.Keywords: FPGA, Taximeter, Quartus, Verilog HDLIII目錄1.前言12.總體方案設(shè)計22.1 設(shè)計要求22.2 方案論證與選擇22.3 設(shè)計思想及原理33.單元模塊設(shè)計53.1 分頻模塊53.1.1 計數(shù)器分頻模塊53.1.2 計數(shù)器分頻模塊仿真結(jié)果53.1.3 數(shù)碼管分頻模塊63.2 計程模塊63.2.1 計程模塊電路63.2.2 計程模塊仿真結(jié)果73.3 計時模塊73.3.1 計時模塊電路73.3.2 計時模塊的仿真結(jié)果73.4 控制模塊83.4.1 控制模塊電路83.4.2 計時模塊的仿真結(jié)果93.5 計費(fèi)模塊103.5.1 控制模塊電路103.5.2 計費(fèi)模塊的仿真結(jié)果102.6 數(shù)碼管顯示模塊114.整體頂層模塊設(shè)計124.1 整體頂層模塊電路125.系統(tǒng)功能仿真及調(diào)試135.1 系統(tǒng)仿真及調(diào)試136.總結(jié)與體會16致謝17參考文獻(xiàn)17附錄A:單元模塊Verilog HDL源代碼18A.1 計數(shù)器的分頻模塊VerilogHDL源代碼18A.2數(shù)碼管的分頻模塊VerilogHDL源代碼18A.3 計程模塊VerilogHDL源代碼19A.4 計時模塊VerilogHDL源代碼20A.5 控制模塊VerilogHDL源代碼21A.6 計費(fèi)模塊VerilogHDL源代碼21A.7 數(shù)碼管顯示模塊VerilogHDL源代碼21A.8整體頂層模塊VerilogHDL源代碼23附錄B:整體頂層電路圖241.前言隨著出租車行業(yè)的發(fā)展,對出租車計費(fèi)器的要求也越來越高。最近幾年出租車行業(yè)發(fā)展迅速,在全國有幾千萬家出租車公司。因此出租車計費(fèi)器市場是龐大的。而出租車計費(fèi)器成為不可缺少的一部分。出租車計價器是出租車營運(yùn)收費(fèi)的專用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車計價器技術(shù)也在不斷進(jìn)步和提高。國內(nèi)出租車計價器已經(jīng)經(jīng)歷了4 個階段的發(fā)展。從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械式,到半電子式即用電子線路代替部分機(jī)械元器件的出租車計價器;再從集成電路式到目前的單片機(jī)系統(tǒng)設(shè)計的出租車計價器,以及FPGA計價器.出租車計價器計費(fèi)是否準(zhǔn)確,運(yùn)數(shù)據(jù)的管理是否方便都是人們最關(guān)注的。該計價器能實(shí)現(xiàn)按時間和里程綜合計算車價,能顯示時間、里程、單價、總車價等相關(guān)信息顯示。信息社會的現(xiàn)代電子產(chǎn)品,性能越來越高,復(fù)雜度越來越大,更新步伐也越來越快。實(shí)現(xiàn)這種進(jìn)步的主要原因就是微電子技術(shù)和電子技術(shù)的發(fā)展。而電子技術(shù)的發(fā)展后者的核心就是電子設(shè)計自動化技術(shù)。EDA是指以計算機(jī)為工作平臺,融合了應(yīng)用電子技術(shù)、計算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對EDA技術(shù)提出新的要求。本設(shè)計采用Verilog HDL語言來設(shè)計實(shí)現(xiàn)出租車計費(fèi)系統(tǒng),具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計方面,表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。源程序經(jīng)ALTERA的Quartus II 9.0軟件調(diào)試優(yōu)化,通過下載到特定芯片后,可應(yīng)用于實(shí)際的出租車計費(fèi)系統(tǒng)中。本次課程設(shè)計鞏固和運(yùn)用了所學(xué)課程,通過理論聯(lián)系實(shí)際,提高了分析、解決技術(shù)實(shí)際問題的獨(dú)立工作能力,通過對一個出租車計費(fèi)器的設(shè)計,進(jìn)一步熟悉了數(shù)字電路系統(tǒng)設(shè)計、制作與調(diào)試的方法和步驟。第24頁2.總體方案設(shè)計2.1 設(shè)計要求該出租車計價器實(shí)現(xiàn)功能:1、行程4公里,且等待累計時間2分鐘,起步費(fèi)為8.0元。2、行程4公里外,以每公里1.0元,等待累計時間2分鐘外,以每分鐘以1.0元計費(fèi)。3、能顯示行駛公里數(shù)、等待累計時間和最后的總費(fèi)用。4、能通過修改程序來對計費(fèi)要求實(shí)現(xiàn)改變。用Verilog HDL語言設(shè)計符合上述功能要求的出租車計費(fèi)器,并用層次化設(shè)計方法設(shè)計該電路,各計數(shù)器的計數(shù)狀態(tài)用功能仿真的方法驗(yàn)證,并通過有關(guān)波形確認(rèn)電路設(shè)計是否正確。2.2 方案論證與選擇方案一:采用數(shù)字電路控制,其原理圖如圖1-1所示。采用傳感器件,輸出脈沖信號,經(jīng)過放大整形最為移位寄存器的脈沖,實(shí)現(xiàn)計價,但是考慮到這中電路性能不夠穩(wěn)定,故障率高,如要做到很精確多功能則其規(guī)模較大,難調(diào)試。而且電路不實(shí)用。電源電路及保護(hù)電路里程傳感器單價顯示金額顯示移位寄存器電路圖2-1 數(shù)字電路方案方案二:采用單片機(jī)控制,通過單片機(jī)作為主控器,利用1602字符液晶作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié),以下是方案三的系統(tǒng)流程圖,本方案主要通過軟硬結(jié)合可以很容易實(shí)現(xiàn)要求,其靈活性也還不錯,成本也不高。方案原理圖如下圖所示:圖2-2 單片機(jī)控制方案方案三:采用EDA技術(shù),根據(jù)層次化設(shè)計理論,該設(shè)計問題自頂向下可分為分頻模塊,控制模塊 計量模塊、譯碼和動態(tài)掃描顯示模塊,其系統(tǒng)框圖如圖1-3所示:時鐘信號計時脈沖計程脈沖復(fù)位信號控制器分頻器計費(fèi)計程計時譯碼及顯示圖2-3 PFGA控制方案方案總結(jié):通過各個方案的比較,首先數(shù)字電路控制不實(shí)用,不重點(diǎn)考慮,單片機(jī)方案雖有較大的活動空間,能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,雖然還可以方便的對系統(tǒng)進(jìn)行升級,但考慮到單片機(jī)方案軟件設(shè)計調(diào)試較為繁瑣,最大限制還是在與本課程設(shè)計是利用EDA技術(shù)實(shí)現(xiàn),另一方面采用可編程邏輯器件設(shè)計,外圍電路簡單,模塊話設(shè)計方便原理清晰,靈活性強(qiáng),并且完成和擴(kuò)展附加功能性強(qiáng)。綜上,本設(shè)計采用方案三。2.3 設(shè)計思想及原理出租車的一般計費(fèi)過程為:出租車載客后,啟動計費(fèi)器,整個系統(tǒng)開始運(yùn)行,里程計數(shù)器和時間計數(shù)器從0開始計數(shù),費(fèi)用計數(shù)器從8開始計算。再根據(jù)行駛里程或停止等待的時間按以上的標(biāo)準(zhǔn)計費(fèi)。若在行駛狀態(tài),則計程器開始加計數(shù),當(dāng)路程超過四公里后,計費(fèi)器以每公里1元累加。若出租車停止等待狀態(tài),則計時器開始加計數(shù),當(dāng)時間超過兩分鐘后,計費(fèi)器以每分鐘1元累加。出租車到達(dá)目的地停止后,停止計費(fèi)器,顯示總費(fèi)用。根據(jù)課程設(shè)計要求計價器可根據(jù)車輪轉(zhuǎn)數(shù)計算路程,車輪每轉(zhuǎn)一圈送一個脈沖波,假設(shè)每轉(zhuǎn)一圈為2米,車輪每轉(zhuǎn)一圈送一個脈沖波( 可用傳感器檢測送出脈沖),本設(shè)計為了好模擬仿真假設(shè)的是車輪轉(zhuǎn)動100圈才產(chǎn)生一個脈沖,即是一個脈沖是代表200米,則經(jīng)過5分頻器后是每1Km送一個脈沖到里程計算模塊,這樣方便在軟件里面仿真觀察,若要下載到實(shí)物應(yīng)用中去,通過實(shí)際車輪周長自己設(shè)置不同的分頻電路來達(dá)到產(chǎn)生任意精度的計程距離模塊。其主要原理框圖如圖1-3所示。而當(dāng)車停止的時候通過分頻模塊產(chǎn)生秒脈沖,通過計時要求來產(chǎn)生計費(fèi),本設(shè)計重點(diǎn)就在計費(fèi)控制模式模塊和計費(fèi)模塊這兩大模塊的設(shè)計,則根據(jù)出租車計費(fèi)器的工作過程,其主要原理框圖如圖1-3所示。本系統(tǒng)采用分層次、分模塊的方式設(shè)計,其本系統(tǒng)組成框圖如下所示。其中行駛路程計數(shù)模塊、等待時間計數(shù)模塊和計費(fèi)模塊,用來統(tǒng)計路程、等待時間和總費(fèi)用,控制模塊是用來控制計費(fèi)模塊,數(shù)碼管顯示模塊用來顯示行駛的公里數(shù)、等待累計時間和總費(fèi)用等信息。3.單元模塊設(shè)計本系統(tǒng)采用層次化、模塊化的設(shè)計方法,設(shè)計順序?yàn)樽韵孪蛏?。首先?shí)現(xiàn)系統(tǒng)框圖中的各子模塊,然后由頂層模塊調(diào)用各子模塊來完成整個系統(tǒng)。為了便于在數(shù)碼管里顯示,這里的路程、時間和費(fèi)用計數(shù)器均用十六進(jìn)制表示。3.1 分頻模塊將時鐘信號進(jìn)行分頻,分出的頻率供后面的計程模塊和計時模塊用,以及后面的數(shù)碼顯示掃描模塊都會用到。3.1.1 計數(shù)器分頻模塊此模塊的功能是對總的時鐘進(jìn)行分頻,分出的頻率是讓計數(shù)器用的,因?yàn)榭偟臅r鐘是50M的。設(shè)計該模塊的時候用了一個32位的計數(shù)器,當(dāng)計數(shù)器計到25_000000的時候產(chǎn)生時鐘。在仿真的時候?yàn)榱丝焖俚姆奖阌^察,設(shè)計了一個5分頻的電路。在此時假設(shè)車輪每轉(zhuǎn)一圈為2米,則轉(zhuǎn)動100圈送一個脈沖,即是200米,則在經(jīng)5分頻后,每1Km送一個脈沖到里程計算模塊。同理,若知道車輪直徑,即可算出分頻比來設(shè)置合理的分頻電路,當(dāng)下載到實(shí)物時還是用的是2HZ的時鐘圖3-1 計數(shù)器的分頻模塊3.1.2 計數(shù)器分頻模塊仿真結(jié)果圖3-2 計數(shù)器的分頻模塊功能仿真從波形可以看出當(dāng)reset為低電平的時候clk為零,當(dāng)reset為高電平的時候clk的高電平占了clk_50M的5個周期,低電平也占了clk_50M的5個周期。3.1.3 數(shù)碼管分頻模塊此模塊的功能是對總的時鐘進(jìn)行分頻,分出的頻率是讓數(shù)碼管用的,當(dāng)計數(shù)器計到50_000的時候產(chǎn)生時鐘。此模塊在整體仿真時,沒有用到數(shù)碼管顯示,在此不在贅述以及仿真波形,在實(shí)物下載時必不可少,其模塊如下圖:圖3-3 數(shù)碼塊分頻模塊3.2 計程模塊3.2.1 計程模塊電路此模塊的功能是計算出租車行駛的路程。在出租車啟動并行駛的過程中(即復(fù)位/啟動信號reset為1,行駛/停止信號start為1),當(dāng)時鐘clk是上升沿的時候,系統(tǒng)即對路程計數(shù)器distance的里程計數(shù)器進(jìn)行加計數(shù),當(dāng)路程超過三公里時,系統(tǒng)將輸出標(biāo)志正脈沖distance_enable。其模塊如下:圖3-4 計程模塊3.2.2 計程模塊仿真結(jié)果圖3-5 計程模塊功能仿真從波形圖可以看出在時鐘的控制下,當(dāng)reset為高電平且start為高電平的時候distance開始計數(shù),當(dāng)計到大于三的時候輸出了distance_enable為高電平。準(zhǔn)備對第4公里以后的脈沖進(jìn)行加計費(fèi)。3.3 計時模塊3.3.1 計時模塊電路此模塊用于計算停車等待的時間。圖中s代表秒計時,m代表分鐘數(shù)計時。在出租車行進(jìn)中,如果車輛停止等待,計數(shù)器則在1Hz信號clk的上升沿進(jìn)行加計數(shù),每60次產(chǎn)生進(jìn)位脈沖使分鐘計數(shù)器位進(jìn)行加計數(shù),當(dāng)累計等待時間超過2(不包括2分鐘)分鐘時,輸出標(biāo)志time_enable正脈沖信號。其模塊如下圖所示:圖3-6 計時模塊3.3.2 計時模塊的仿真結(jié)果1.兩分鐘之內(nèi)(包括兩分鐘)的仿真結(jié)果如下所示:從波形圖可以看出在clk的控制下當(dāng)start為低電平reset為高電平的時候時間計數(shù),time_enable為低電平。圖3-7 計時模塊功能仿真(2分鐘內(nèi))2.兩分鐘之外(不包括兩分鐘)的仿真結(jié)果如下所示:圖3-8 計時模塊功能仿真(2分鐘外)從波形圖可以看出在clk的控制下當(dāng)start為低電平reset為高電平的時候時間計數(shù),當(dāng)時間大于二分鐘的時候,time_enable為輸出高電平,為超過2分鐘后以每增加一分鐘對計費(fèi)進(jìn)行加計數(shù)。3.4 控制模塊3.4.1 控制模塊電路控制模塊用于為計費(fèi)模塊提供時鐘,當(dāng)start高電平的時候選擇公里計費(fèi),輸出的時鐘信號為distance_enable,當(dāng)start低電平的時候選擇時間計費(fèi),輸出的時鐘信號為time_enable。這樣控制模塊便控制著其計費(fèi)模式。模塊如下圖所示:圖3-9控制模塊3.4.2 計時模塊的仿真結(jié)果1公里計費(fèi)的仿真結(jié)果如下所示:圖3-10 控制模仿真圖(公里計費(fèi))從波形圖可以看出當(dāng)start為高電平的時候輸出的信號是distance_enable。此時控制模塊選出的是distance_enable,即選出距離使能脈沖計費(fèi),則實(shí)現(xiàn)了按公里計費(fèi)。2時間計費(fèi)的仿真結(jié)果如下所示:圖3-11 控制模仿真圖(按時計費(fèi))從波形圖可以看出當(dāng)start為低電平的時候輸出的信號是time_enable。即選擇了按等待時間脈沖計費(fèi)。仿真上的公里脈沖和時間脈沖是為了仿真而簡單的設(shè)置的波形,并非是前面信號組合檢測而成,在后面整體組合電路中為進(jìn)行模塊的組合。這里為了便于功能仿真區(qū)別,沒有設(shè)置過多的脈沖,以影響分辨控制模塊所選擇的計費(fèi)模式。3.5 計費(fèi)模塊3.5.1 控制模塊電路費(fèi)用計數(shù)器模塊用于出租車啟動后,根據(jù)行駛路程和等待時間計算費(fèi)用。當(dāng)出租車停車時,時鐘reset用于將費(fèi)用計數(shù)器復(fù)位為起步價6.0元;當(dāng)車處于行駛狀態(tài)時,select_clk信號選擇distans_enable,若滿4公里后路程每滿1公里,費(fèi)用計數(shù)器加1元;當(dāng)出租車處于停止等待狀態(tài)且時鐘滿2分鐘時,select_clk信號選擇time_enable信號,時間每滿1分鐘,費(fèi)用計數(shù)器加1元。圖3-12 計費(fèi)模塊3.5.2 計費(fèi)模塊的仿真結(jié)果圖3-13 計費(fèi)模塊仿真從波形圖可以看出reset用于將費(fèi)用計數(shù)器復(fù)位為起步價8.0元;由于本仿真select_clk信號并非是系統(tǒng)選擇出來的公里脈沖和計時脈沖,通過認(rèn)為設(shè)定,不影響其觀察功能效果。3.6 數(shù)碼管顯示模塊圖3-14 數(shù)碼管顯示模塊數(shù)碼管有兩種顯示方式動態(tài)顯示與靜態(tài)顯示,由于在本文中用到了八個數(shù)碼管所以選擇了動態(tài)顯示,在時鐘的控制下,當(dāng)reset為高電平的時候把費(fèi)用,公里,時間譯碼輸出。這里沒有數(shù)碼管顯示仿真效果不明顯,即不給予仿真。以上單元模塊設(shè)計完畢,通過每個單元模塊代碼的設(shè)計以及仿真驗(yàn)證每個模塊的真確性,為確保后面整體模塊電路的正確性奠定了基礎(chǔ)。4.整體頂層模塊設(shè)計4.1 整體頂層模塊電路各模塊設(shè)計仿真實(shí)現(xiàn)后,可分別創(chuàng)建成元件符號。頂層就是將各分模塊用Verilog HDL語言或者是圖形方法連接起來,便可實(shí)現(xiàn)系統(tǒng)電路。其Verilog HDL源代碼詳見其附錄。其生成的頂層原理圖如下所示:圖4-1 整體頂層電路原理圖5.系統(tǒng)功能仿真及調(diào)試本設(shè)計采用Quartus II軟件進(jìn)行仿真設(shè)計,Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。5.1 系統(tǒng)仿真及調(diào)試各個單元模塊完成后,即可將分模塊和頂層模塊進(jìn)行仿真測試,同時可根據(jù)設(shè)計要求加入測試輸入條件。仿真后得到的相應(yīng)輸出結(jié)果與預(yù)先的結(jié)果想比較,若不相符,則應(yīng)修改設(shè)計,直到相符為止。為了仿真得到明顯的效果,最好能能下載到帶數(shù)碼管的試驗(yàn)想上進(jìn)行直接的數(shù)字觀察。由于條件有限,為了能使仿真效果明顯,采用了不帶譯碼顯示的波形仿真,其電路原理圖如下:圖5-1 系統(tǒng)仿真調(diào)試電路首先,對以下輸入輸出端作以下解釋和說明,如表4-1:表5-1 測試端口說明輸入輸出端口說明端口類型功能定義Clk_50MInput全局時鐘。在時鐘上升沿,計算費(fèi)用。resetInput整體復(fù)位,在reset=0時,等待計時為0startInput選擇計費(fèi)模式Start=1,計程計費(fèi)Start=0,計時計費(fèi)m7:0Output等待時間的輸入(分)s7:0Output等待計時的輸入(秒)distance7:0Output所行路程的輸入fee7:0Output總費(fèi)用輸出功能仿真結(jié)果驗(yàn)證如下如下所示:a為行駛中未停時的系統(tǒng)電路仿真結(jié)果:圖5-2 系統(tǒng)仿真調(diào)試電路(a)b.為行駛中停止時(在兩分鐘之內(nèi))的系統(tǒng)電路仿真結(jié)果:圖5-3 系統(tǒng)仿真調(diào)試電路(b)c.為行駛中停止時(在兩分鐘之外)的系統(tǒng)電路仿真結(jié)果:圖5-4 系統(tǒng)仿真調(diào)試電路(c)從(a)可以看出當(dāng)reset為1時,費(fèi)用計數(shù)器為8元,系統(tǒng)啟動,start=1表示出租車行駛, distance_enable每產(chǎn)生一個脈沖,路程計數(shù)器加1;路程4公里內(nèi),費(fèi)用保持8不變,超過4公里,費(fèi)用計數(shù)器進(jìn)行加計數(shù),每增加1公里費(fèi)用加1元,此時等待時間計數(shù)器不變。而根據(jù)(b),(c)的仿真波形可知,當(dāng)reset為1時,系統(tǒng)啟動,start=0表示出租車處于停止等待狀態(tài),此時等待時間計數(shù)器計數(shù),在2分鐘等待時間內(nèi),費(fèi)用計數(shù)器不變;等待時間超過2分鐘后,每增加1分鐘,費(fèi)用計數(shù)器增加1元,此時路程計數(shù)器保持不變。從以上仿真可看出該出租車計價器整體功能實(shí)現(xiàn)都能完成,出租車計費(fèi)器系統(tǒng)的設(shè)計已經(jīng)全部完成,能按預(yù)期的效果進(jìn)行模擬汽車起步價格,暫停,停止等功能各種計費(fèi),并能夠通過LCD顯示車費(fèi)數(shù)目。本款出租車計價器包括總價輸出、顯示路程,顯示其等待時間等功能。另外,如果再任意輸入該出租車計價器的計費(fèi)標(biāo)準(zhǔn),那么,它的適用范圍可能就更廣泛了。(個人認(rèn)為可調(diào)的話,會引起駕駛員改價作弊的問題,本設(shè)計沒有外圍可調(diào)電路,只能根據(jù)程序修改,因而防作弊。)6.總結(jié)與體會通過學(xué)習(xí)了數(shù)字?jǐn)?shù)字系統(tǒng)設(shè)計和Verilog HDL語言,對EDA技術(shù)有了一些了解,但那厚厚的一本書講的都是理論的東西。通過這本次課程設(shè)計,我才把學(xué)到的東西與實(shí)踐相結(jié)合。從中對所學(xué)的知識有了更進(jìn)一步的理解。剛開始拿到這題目的時候感覺還是有難度,但著手設(shè)計時,慢慢查詢資料后感覺不是很難,但在設(shè)計時又現(xiàn)了許多細(xì)節(jié)上的問題。對Quartus II 9.0操作流程還不到位,通過自己網(wǎng)上看Quartus軟件基操作視頻,首先把Quartus的功能和各操作用途功能詳細(xì)的了解了一遍,這使我大添信心能把設(shè)計做出來,相信只有細(xì)心、耐性才能把設(shè)計搞好,在這次的出租車計價器設(shè)計中,對Verilog模塊的基本結(jié)構(gòu)和基本語法更為熟悉。在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計的必經(jīng)之路,要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為交流提供了方便,為以后編程打下基礎(chǔ)。為期兩周的EDA課程設(shè)計已經(jīng)結(jié)束,從挑選課設(shè)題目,查閱資料,到研究出總體設(shè)計,詳細(xì)設(shè)計,再到最后的編程上機(jī)調(diào)試,修改程序,完善程序,收獲頗多。鍛煉了自己獨(dú)立發(fā)現(xiàn)問題、分析問題和通過查看相關(guān)資料來解決問題的能力。使自己擴(kuò)大了知識面,提高了知識水平,借助仿真軟件,不僅可以把課堂中所學(xué)到的知識,直接加以運(yùn)用,而且還可以把各個分離的知識組合為一個整體,真正做到理論聯(lián)系實(shí)際的重要性。使自己在專業(yè)知識和動手能力上有了很大的提高。另外通過本次設(shè)計,使我認(rèn)識到自己對Verilog HDL應(yīng)用編程能力有很大的欠缺,需要在以后的學(xué)習(xí)中進(jìn)一步提高。學(xué)校給我們安排課程設(shè)計,大大地加深了我們對理論知識的理解,同時有意識的培養(yǎng)了我們的創(chuàng)新思想。我想這類似的課程設(shè)計是為我們提供了良好的實(shí)踐平臺。致謝由于本次設(shè)計是第一次做關(guān)于EDA課程設(shè)計,不像單片機(jī)那樣順手,感謝老師的指導(dǎo),感謝老師對本次論文的認(rèn)真檢查審閱。由于時間有限和經(jīng)驗(yàn)還尚欠缺,不足之處還望老師予以批評指正。另外,我還要感謝學(xué)校能安排這次課程設(shè)計,為我們學(xué)習(xí)相關(guān)專業(yè)提供了良好的實(shí)踐平臺。參考文獻(xiàn)1 王金明.數(shù)字系統(tǒng)設(shè)計與Verilog HDL M.北京.電子工業(yè)出版社,20112 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程 M北京:北京航天航空大學(xué)出版社,20083 華成英.電子技術(shù)M.北京.中央廣播電視大學(xué)出版社,20064 孫鵬,陳景.數(shù)字電子技術(shù)基礎(chǔ)與設(shè)計.大連:大連理工大學(xué)出版社,2004.4.5 王長宏.VHDL設(shè)計實(shí)例及其仿真與綜合. 北京:北京航天航空大學(xué)出版社,2001附錄A:單元模塊Verilog HDL源代碼A.1 計數(shù)器的分頻模塊VerilogHDL源代碼module div(clk_50M,clk,reset);/ 端口的定義input clk_50M,reset;/ 總的時鐘是50Moutput clk;/分頻后輸出的時鐘 reg clk;reg 31:0 count;/32位的計數(shù)器always (posedge clk_50M or negedge reset)/異步復(fù)位begin if(!reset) begin clk=d0; count=32d0;endelse if(count=3d100)/判斷計時器記到了100嗎? begin count=32d0;/計到100計數(shù)器清零 clk=clk;/輸出的時鐘取反 end/end begin else count=count+1d1;/ 沒計到100計數(shù)器加一end/end alwaysendmodule / 結(jié)束分頻模塊A.2數(shù)碼管的分頻模塊VerilogHDL源代碼module div1(clk_50M,clk1,reset);/ 端口的定義input clk_50M,reset;/ 總的時鐘是50Moutput clk1;/分頻后輸出的時鐘 1KHZreg clk1;reg 31:0 count;/32位的計數(shù)器always (posedge clk_50M or negedge reset)/異步復(fù)位begin if(!reset) begin clk1=d0; count=32d0;endelse if(count=2d50)/ 判斷計時器記到了50嗎 begin count=32d0;/計到50計數(shù)器清零 clk1=clk1;/輸出的時鐘取反 end/end begin else count=count+1d1;/ 沒計到50計數(shù)器加一end/end alwaysendmodule / 結(jié)束分頻模塊A.3 計程模塊VerilogHDL源代碼module distancemokuai(clk,start,reset,distance,distance_enable);/端口的定義input clk,start,reset;output 7:0 distance;/ 輸出的公里reg 7:0 distance;output distance_enable;/ 控制計費(fèi)的公里信號reg distance_enable;always(posedge clk or negedge reset)/異步復(fù)位begin if(!reset)/低電平復(fù)位 begin distance=8d0; end else if(start)/ start 高電平有效 begin if(distance3:0=9)/判斷distance的低四位計到了9沒有 begin distance3:0=4d0;/計到9清零 if(distance7:4=9) /判斷distance的高四位計到了9沒有 distance7:4=4d0;/計到9清零 else distance7:4= distance7:4+1d1;/ distance的高四位沒有計到9的時候加一 end else distance3:0=distance3:0+1d1;/ distance的低四位沒有計到9的時候加一 end/end startend/end always/*產(chǎn)生distance_enable信號*/always(posedge clk or negedge reset)beginif(!reset)begin distance_enable8d2)/ 大于公里三的時候 begin distance_enable=1d1;/輸出distance_enable信號 endend/end alwaysendmodule/結(jié)束計程模塊A.4 計時模塊VerilogHDL源代碼module timemokuai(clk,reset,start,s,m,time_enable);/ 端口的定義input clk,reset,start;output 7:0 s;/輸出的秒output 7:0 m;/輸出的分output time_enable;/輸出的控制計費(fèi)的信號reg 7:0 s;reg 7:0 m;wire time_enable; always(posedge clk or negedge reset)/異步復(fù)位beginif(!reset)/低電平有效begin /復(fù)位s=8d0;m=8d0;endelse if(!start)/start 信號低電平有效beginif(s3:0=9)/ 秒的低四位是9 begin s3:0=4d0;/清零 if(s7:4=5) / 秒的高四位是5 begin s7:4=4d0; /清零 if(m3:0=9) / 分的低四位是9 begin m3:0=4d0; /清零 if(m7:4=9) / 分的高四位是9 m7:4=4d0; /清零 else m7:4=m7:4+1d1; / 分的高四位不是9加一endelse m3:0=m3:0+1d1; /分的低四位不是9加一endelse s7:4=s7:4+1d1; / 秒的高四位不是5加一endelse s3:08d2)&(s7:0=8d0)?1d1:1d0;/產(chǎn)生time_enable信號。endmodule/結(jié)束計時模塊A.5 控制模塊VerilogHDL源代碼module control(start,distance_enable,time_enable,select_clk);input start,distance_enable,time_enable;output select_clk;/輸出選擇的時鐘信號wire select_clk;/*當(dāng)start高電平的時候選擇公里計費(fèi),輸出的時鐘信號為distance_enable,當(dāng)start低電平的時候選擇時間計費(fèi),輸出的時鐘信號為time_enable*/assign select_clk=start?distance_enable:time_enable; endmodule/結(jié)束控制模塊A.6 計費(fèi)模塊VerilogHDL源代碼module feemokuai(select_clk,reset,fee,clk);input select_clk,reset,clk;output7:0 fee; /輸出的費(fèi)用reg 7:0 fee;always(posedge clk or negedge reset)/異步復(fù)位begin if(!reset) /低電平有效 begin fee=8d8; /起步為八元 end else if(select_clk=1d1) begin if(fee3:0=4d9) /費(fèi)用的低四位是不是計到了9 begin fee3:0=4d0;/計到9清零 if(fee7:4=4d9)/ 費(fèi)用的高四位是不是計到了9fee7:4=4d0; /計到9清零 else fee7:4=fee7:4+1d1;/ 費(fèi)用的高四位沒有計到9加1endelse fee3:0=fee3:0+1d1;/ 費(fèi)用的低四位沒有計到9加1end/end beginend/end alwaysendmodule /結(jié)束計費(fèi)模塊A.7 數(shù)碼管顯示模塊VerilogHDL源代碼module scan_led(clk1,dig,seg,distance,s,m,fee);input clk1;input7:0 distance,fee;/輸入的公里,費(fèi)用。input7:0 s;/輸入的秒input7:0 m; / 輸入的分。output7:0 dig; / 譯碼結(jié)果output7:0 seg; / 數(shù)碼管的選擇。reg 7:0 r_dig;/ 譯碼結(jié)果輸出寄存器reg 7:0 r_seg; /數(shù)碼管的選擇寄存器。reg 3:0 disp_dat;reg3:0 a;assign dig=r_dig;assign seg=r_seg;always(posedge clk1)begin a=a+1d1; /數(shù)碼管的選擇endalways(posedge clk1)begincase(a) 4d0: disp_dat=distance7:4;/公里的高四位用第一個數(shù)碼管顯示。4d1: disp_dat=distance3:0;/公里的低四位用第二個數(shù)碼管顯示。4d2: disp_dat=m7:4; /時間分的高四位用第三個數(shù)碼管顯示。4d3: disp_dat=m3:0; /時間分的低四位用第四個數(shù)碼管顯示4d4: disp_dat=s7:4; /時間秒的高四位用第五個數(shù)碼管顯示。4d5: disp_dat=s3:0; /時間秒的低四位用第六個數(shù)碼管顯示。4d6: disp_dat=fee7:4;/費(fèi)用的高四位用第七個數(shù)碼管顯示。4d7: disp_dat=fee3:0; /費(fèi)用的低四位用第八個數(shù)碼管顯示。default: disp_dat=4b1010;endcasecase(a)4d0:r_dig=8b01111111; / 選擇第一個數(shù)碼管4d1:r_dig=8b10111111; / 選擇第二個數(shù)碼管4d2:r_dig=8b11011111; / 選擇第三個數(shù)碼管4d3:r_dig=8b11101111; / 選擇第四個數(shù)碼管4d4:r_dig=8b11110111; / 選擇第五個數(shù)碼管4d5:r_dig=8b1111

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論