EDA課程設(shè)計出租車計價器_第1頁
EDA課程設(shè)計出租車計價器_第2頁
EDA課程設(shè)計出租車計價器_第3頁
EDA課程設(shè)計出租車計價器_第4頁
EDA課程設(shè)計出租車計價器_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 數(shù)字電路課程設(shè)計報告出租車計費器 學(xué)院名稱: 電氣信息工程學(xué)院 專 業(yè): 通信工程 班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師姓名: 2009 年 12 月摘 要隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計技術(shù)和工具發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷﨏PLDFPGA的出現(xiàn),給設(shè)計人員帶來了諸多方便。利用它進行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。利用VHDL語言設(shè)計出租車計費系統(tǒng),使其實現(xiàn)計費以及預(yù)置和模擬汽車啟動、停止、暫停等功能,并設(shè)計動態(tài)掃描電路顯示車費數(shù)目,突出了其作為硬件描述語

2、言的良好的可讀性、可移植性和易讀性等優(yōu)點。此程序通過下載到特定芯片后,可應(yīng)用于實際的出租車計費系統(tǒng)中。本文基于FPGA開發(fā)系統(tǒng),在Quartus II 9.0軟件平臺上,完成了出租車自動計費電路的設(shè)計和硬件實現(xiàn)。首先,論文介紹了Quartus II 9.0軟件的基本使用方法和FPGA硬件描述語言的特點,采用VHDL 硬件描述語言描述出租車自動計費電路,完成對電路的功能仿真。在設(shè)計過程中,重點探討了出租車自動計費電路的設(shè)計思路和功能模塊劃分。然后,初步探討了電路邏輯綜合的原理,該軟件對出租車自動計費電路進行了邏輯綜合。最后,使用EDA實驗開發(fā)系統(tǒng)進行電路的下載和驗證。驗證結(jié)果表明設(shè)計的出租車自動

3、計費電路完成了預(yù)期的功能。 關(guān)鍵詞 超高速集成電路硬件描述語言,計數(shù)器,Quartus II 9.0,高速集成電路  Abstract With the rapid development of EDA technology, electronic system design techniques and tools have been profound changes in large-scale programmable logic device CPLD / FPGA emergence of designers to bring a lot of conv

4、enience. Use it for product development, not only low cost, short cycle, high reliability and full intellectual property rights. Design using VHDL language taxi billing system, billing, as well as to achieve the preset and simulated vehicle to start, stop, pause and other functions, and circuit desi

5、gn of dynamic scan showed that the number of fare, highlighted as a hardware description language can be a good Reading, the portability and readability advantages. By downloading the program to a specific chip, the taxi can be applied to the actual billing system. Based on FPGA development system,

6、in the Quartus II 9.0 software platform, automatic billing taxi completed the circuit design and hardware implementation. First of all, the paper introduced the Quartus II 9.0 the basic use of software and hardware description language FPGA features, the use of VHDL hardware description language des

7、cription of the taxi circuit automatic billing, complete function simulation of the circuit. In the design process, focus on the taxi automatic billing and circuit design divided into functional modules. Then, a preliminary study of the principles of integrated circuit logic, the software automatica

8、lly billing for a taxi to the logic integrated circuit. Finally, the use of experimental development of EDA system to download and verify the circuit. Validation results show that the automatic billing taxi designed to complete the desired circuit function.  Key words ultra-high-speed integrate

9、d circuit hardware description language, counters, Quartus II 9.0, high-speed integrated circuits 目錄 摘要2序言5第一章EDA與QuartusII開發(fā)系統(tǒng)介61.1 EDA發(fā)展況61.2 硬件描述語VHDL.7 VHDL的簡介.7 VHDL的流程設(shè)計.71.3 QuartusII 軟件操作流程8第二章 課題概述10 2.1 出租車計費系統(tǒng)的實驗任務(wù)及求10 2.2、出租車計費系統(tǒng)的原理和方案計10 2.3、具體的方案計11硬件電路方案設(shè)計.11軟件方案方計12第三章 硬件路133.1 時鐘電路1

10、3 555電路133.2下載路143.3按鈕電路153.4動態(tài)顯示路15第四章 計費系統(tǒng)的VHDL計154.1 分頻器164.2 標志模塊174.3 等待模塊194.4 計程模塊214.5 計費模塊244.6 譯碼模塊28第五章 總程序的設(shè)計及其實現(xiàn)的結(jié)果305.1 實物圖285.2 輸入、輸出信號說明305.3 波形仿真315.4 設(shè)計中需要注意的問題32總結(jié)32致謝33參考文獻33附錄一34附錄二35出租車計費器序 言隨著當代電子信息技術(shù)的發(fā)展,自動計費器被廣泛的用于各個系統(tǒng),例如上網(wǎng)自動計費系統(tǒng)、電話計費器、出租車計費器等等??梢娮詣佑嬞M系統(tǒng)在我們的生活中是越來越重要,本次課程設(shè)計是圍繞

11、出租車計費器來深入了解計費器是怎樣實現(xiàn)計費的。本課題是利用VHDL語言來實現(xiàn)計費功能的,VHDL具有與具體硬件電路無關(guān)和與設(shè)計平臺無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計方面,表現(xiàn)了強大的生命力和應(yīng)用潛力,因此選用VHDL語言進行編程。本次課程設(shè)計鞏固和運用了所學(xué)課程,通過理論聯(lián)系實際,提高了分析、解決計算機技術(shù)實際問題的獨立工作能力,通過對一個出租車計費器的設(shè)計,進一步加深了對計算機原理以及數(shù)字電路應(yīng)用技術(shù)方面的了解與認識,進一步熟悉了數(shù)字電路系統(tǒng)設(shè)計、制作與調(diào)試的方法和步驟。進一步了解了計算機組成原理與系統(tǒng)結(jié)構(gòu),使自己對EDA技術(shù)的學(xué)習(xí)更深

12、入,學(xué)會用VHDL語言去控制將會使我們對本專業(yè)知識可以更好地掌握。出租車計費器就是對車輪傳感器送來的脈沖進行計數(shù)(每轉(zhuǎn)一圈送一個脈沖),本課程設(shè)計利用555觸發(fā)電路產(chǎn)生的脈沖代替車輪傳感器送來的脈沖。當計費系統(tǒng)接收到一個脈沖信號, 它將會實現(xiàn)計數(shù)的功能,并且通過外圍的電路把所實現(xiàn)的功能實現(xiàn)出來。本論文共分5章和2個附錄,第1章介紹了EDA與QuartusII開發(fā)系統(tǒng)。第2章介紹出租車計費系統(tǒng)的原理和方案設(shè)計第3章介紹了軟件設(shè)計。第4章介紹了硬件設(shè)計。第5章介紹了總的設(shè)計以及其結(jié)果。本課題的主要設(shè)計工作內(nèi)容是能夠顯示出租車的車費和里程并完成安裝與調(diào)試。第一章 EDA與QuartusII開發(fā)系統(tǒng)簡

13、介1.1 EDA發(fā)展概況電子設(shè)計技術(shù)的核心就是EDA技術(shù),EDA是指以計算機為工作臺,融合應(yīng)用電子技術(shù)、計算機技術(shù)、智能化技術(shù)最新成果而研制成的電子CAD通用軟件包,主要能輔助進行三方面的設(shè)計工作,即IC設(shè)計、電子電路設(shè)計和PCB設(shè)計。EDA技術(shù)已有30年的發(fā)展歷程,大致可分為三個階段。70年代為計算機輔助設(shè)計(CAD)階段,人們開始用計算機輔助進行IC版圖編輯、PCB布局布線,取代了手工操作。80年代為計算機輔助工程(CAE)階段。與CAD相比,CAE除了有純粹的圖形繪制功能外,又增加了電路功能設(shè)計和結(jié)構(gòu)設(shè)計,并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實現(xiàn)了工程設(shè)計。CAE的主要功能是:原理圖

14、輸入,邏輯仿真,電路分析,自動布局布線,PCB后分析。90年代為電子系統(tǒng)設(shè)計自動化(EDA)階段。 中國EDA市場已漸趨成熟,不過大部分設(shè)計工程師面向的是PC主板和小型ASIC領(lǐng)域,僅有小部分(約11%)的設(shè)計人員開發(fā)復(fù)雜的片上系統(tǒng)器件。為了與臺灣和美國的設(shè)計工程師形成更有力的競爭,中國的設(shè)計隊伍有必要購入一些最新的EDA技術(shù)。 在EDA軟件開發(fā)方面,目前主要集中在美國。但各國也正在努力開發(fā)相應(yīng)的工具。日本、韓國都有ASIC設(shè)計工具,但不對外開放 。中國華大集成電路設(shè)計中心,也提供IC設(shè)計軟件,但性能不是很強。相信在不久的將來會有更多更好的設(shè)計工具有各地開花并結(jié)果。據(jù)最新統(tǒng)計顯示,中國和印度正

15、在成為電子設(shè)計自動化領(lǐng)域發(fā)展最快的兩個市場,年復(fù)合增長率分別達到了50%和30%。 EDA技術(shù)發(fā)展迅猛,完全可以用日新月異來描述。EDA技術(shù)的應(yīng)用廣泛,現(xiàn)在已涉及到各行各業(yè)。EDA水平不斷提高,設(shè)計工具趨于完美的地步。EDA市場日趨成熟,但我國的研發(fā)水平還很有限,需迎頭趕上。1.2 硬件描述語言VHDL VHDL簡介是一種全方位的硬件描述語言,包括系統(tǒng)行為級。寄存器傳輸級和邏輯門多個設(shè)計層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此幾乎覆蓋了以往各種硬件俄語言的功能,整個自頂向下或由下向上的電路設(shè)計過程都可以用來完成。還具有以下優(yōu)點:()的寬范圍描述能力使它成為高層進設(shè)計的核心,將設(shè)

16、計人員的工作重心提高到了系統(tǒng)功能的實現(xiàn)與調(diào)試,而花較少的精力于物理實現(xiàn)??梢杂煤啙嵜鞔_的代碼描述來進行復(fù)雜控制邏輯設(shè)計,靈活且方便,而且也便于設(shè)計結(jié)果的交流、保存和重用。()的設(shè)計不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。()是一個標準語言,為眾多的廠商支持,因此移植性好。 VHDL的設(shè)計流程從系統(tǒng)總體要求出發(fā),自上而下地逐步將設(shè)計的內(nèi)容細化,最后完成系統(tǒng)硬件的整體設(shè)計。在設(shè)計的過程中,對系統(tǒng)自上而下分成三個層次進行設(shè)計:第一層次是行為描述。所謂行為描述,實質(zhì)上就是對整個系統(tǒng)的數(shù)學(xué)模型的描述。一般來說,對系統(tǒng)進行行為描述的目的是試圖在系統(tǒng)設(shè)計的初始階段,通過對系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計中存在的問

17、題。在行為描述階段,并不真正考慮其實際的操作和算法用何種方法來實現(xiàn),而是考慮系統(tǒng)的結(jié)構(gòu)及其工作的過程是否能到達系統(tǒng)設(shè)計的要求。第二層次是RTL方式描述。這一層次稱為寄存器傳輸描述(又稱數(shù)據(jù)流描述)。如前所述,用行為方式描述的系統(tǒng)結(jié)構(gòu)的程序,其抽象程度高,是很難直接映射到具體邏輯元件結(jié)構(gòu)的。要想得到硬件的具體實現(xiàn),必須將行為方式描述的VHDL語言程序改寫為RTL方式描述的VHDL語言程序。也就是說,系統(tǒng)采用RTL方式描述,才能導(dǎo)出系統(tǒng)的邏輯表達式,才能進行邏輯綜合。第三層次是邏輯綜合。即利用邏輯綜合工具,將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級網(wǎng)絡(luò)表)。此時,如果需要,可將邏輯

18、綜合的結(jié)果以邏輯原理圖的方式輸出。此后可對綜合的結(jié)果在門電路級上進行仿真,并檢查其時序關(guān)系。應(yīng)用邏輯綜合工具產(chǎn)生的門網(wǎng)絡(luò)表,將其轉(zhuǎn)換成PLD的編程碼,即可利用PLD實現(xiàn)硬件電路的設(shè)計。由自上而下的設(shè)計過程可知,從總體行為設(shè)計開始到最終的邏輯綜合,每一步都要進行仿真檢查,這樣有利于盡早發(fā)現(xiàn)設(shè)計中存在的問題,從而可以大大縮短系統(tǒng)的設(shè)計周期。 1.3 Quartus 的軟件操作流程雙擊桌面上,打開Quartus軟件。(1) 新建VHDL文件 ,開始編寫VHDL程序。(2) 保存VHDL文件,文件取名要與程序?qū)嶓w名要一致。(3) 創(chuàng)建新工程按下“保存”按紐后會出現(xiàn)如下提示。提示是否為此文件建立一個工程

19、,這很重要。然后點擊“是”,出現(xiàn)以下窗口,點“Next >”。(4) 器件的選擇繼續(xù)點“Next >”。然后選擇FPGA或CPLD的有關(guān)參數(shù),這些參數(shù)都是根據(jù)目標芯片來選擇的。一直到“Finish”完成器件選擇(5) 編譯編譯:選擇processing菜單中的start compilation命令。編譯完成的提示如下,點擊確定即可。(6) 仿真這時可以進行仿真,首先要建立波形文件,點“File-New-”,出現(xiàn)如下窗口:選擇“Other Files”最下面的“Vector waveform File”點“OK”。出現(xiàn)以下窗口。雙擊左邊的空白處,設(shè)定輸入輸出信號。設(shè)定好波形后,保存波

20、形。之后點進行仿真。(7) 鎖定引腳引腳鎖定,如下圖操作:引腳的鎖定是根據(jù)不同的電路和不同功能來確定的,不是一層不變的。選擇Assignments菜單下的Pins命令,出現(xiàn)以下窗口,如果是下載到實驗箱上則需連續(xù)按“模式選擇”按鈕選擇模式5,再按“系統(tǒng)復(fù)位”按鈕。進行引腳鎖定,查閱附表,分別點“l(fā)ocation”選擇引腳號。引腳鎖定后再編譯。如同此前進行過的。編譯成功后點確定。(8) 下載選擇Tools菜單下的Programmer命令,然后在Program/Configure下打上鉤選中,點“start”按鈕開始下載,“Progress”進度條顯示下載進度。成功下載后如圖所示:下載完后就可以在實

21、驗箱查看結(jié)果。 通過上面的步驟分別下載到實驗箱中和FPGA中,驗證了在仿真中的結(jié)果是正確的。第二章 課題概述2.1 出租車計費系統(tǒng)的實驗任務(wù)及要求1. 能實現(xiàn)計費功能,計費標準為:按行駛里程收費,分為白天和黑夜。白天收費標準:起步費為9.00元,超過3公里按3元/公里,車暫停超過三分鐘按2元/分鐘計算。黑夜收費標準:起步費為12.00元,超過3公里按4元/公里,車暫停超過三分鐘按1元/分鐘計算。2. 實現(xiàn)預(yù)置功能:能預(yù)置起步費、每公里收費、車行加費里程、等待加費時間。3. 實現(xiàn)模擬功能:能模擬汽車啟動、停止/白天、黑夜/等待、行駛狀態(tài)。4. 設(shè)計動態(tài)掃描電路:將車費、里程、等待時間動態(tài)的顯示出

22、來。5. 用VHDL語言設(shè)計符合上述功能要求的出租車計費器,并用層次化設(shè)計方法設(shè)計該電路。6. 各計數(shù)器的計數(shù)狀態(tài)用功能仿真的方法驗證,并通過有關(guān)波形確認電路設(shè)計是否正確。2.2、出租車計費系統(tǒng)的原理和方案設(shè)計系統(tǒng)的頂層框圖:動態(tài)顯示模塊控制芯片信號輸入 信號輸入:各種控制信號經(jīng)輸入端給控制芯片??刂菩酒翰捎玫挠蠧PLD或者FPGA等。動態(tài)顯示電路:采用的是數(shù)碼管來實現(xiàn)功能的輸出。2.3、具體的方案設(shè)計、硬件電路方案設(shè)計以下為硬件電路的結(jié)構(gòu)簡圖: CPLD 模塊動態(tài)顯示電路時鐘控制模塊PC機開關(guān)電路下載電路各模塊的組成和原理:(1)時鐘控制模塊此模塊是555電路所構(gòu)成的。(2)下載電路模塊此

23、模塊主要由下載線組成。作用:使PC機中編寫的VHDL語言的程序下載到CPLD芯片中,使電路實現(xiàn)所需的功能。(3)開關(guān)模塊:該模塊的作用是用于電路的輸入的信號。主要有三個開關(guān)以及三個限流電阻,電源構(gòu)成。(4)動態(tài)顯示模塊: 此模塊由六個數(shù)碼管和三個二極管所構(gòu)成,三個二極管起到限制電流的作用,使得流到數(shù)碼管的電流適當,防止數(shù)碼管中的電流過大,而使得數(shù)碼管損壞。數(shù)碼管將計費、等待時間和里程動態(tài)的顯示出來。 軟件方案設(shè)計以下為軟件結(jié)構(gòu)簡圖:輸入信號分頻器里程計數(shù)模塊車費計數(shù)模塊車行駛狀態(tài) 譯碼模塊各模塊的功能:1)由555觸發(fā)電路產(chǎn)生時鐘信號并輸入。2)分頻器:將時鐘信號進行分頻。3)標志模塊:將按鈕

24、產(chǎn)生的脈沖轉(zhuǎn)化為一種標志信號。4)計程模塊:在等待信號未作用時,來一個時鐘脈沖信號,里程值加1。該模塊還包含一個路程計費標志的小模塊,輸出一個路程計費的信號。5)等待狀態(tài)模塊:等待信號作用時,該模塊可以記錄等待的時間,并產(chǎn)生等待計費的信號。6)車費計數(shù)模塊:按行駛里程收費,分為白天和黑夜。白天收費標準:起步費為9.00元,超過3公里按3元/公里,車暫停超過三分鐘按2元/分鐘計算。黑夜收費標準:起步費為12.00元,超過3公里按4元/公里,車暫停超過三分鐘按1元/分鐘計算。7)譯碼模塊:實現(xiàn)將車費計數(shù)模塊、等待狀態(tài)模塊和里程計數(shù)模塊輸出的BCD碼轉(zhuǎn)換成七段碼輸出。第三章 硬件電路根據(jù)前面第一章所

25、提到的硬件電路的方案設(shè)計,這章介紹各模塊的具體設(shè)計。3.1時鐘電路555電路在數(shù)字系統(tǒng)中,為了使各部分在時間上協(xié)調(diào)動作,需要有一個統(tǒng)一的時間基準。用來產(chǎn)生時間基準信號的電路稱為時基電路。時基集成電路555就是其中的一種。它是一種由模擬電路與數(shù)字電路組合而成的多功能的中規(guī)模集成組件,只要配少量的外部器件,便可很方便的組成觸發(fā)器、振蕩器等多種功能電路。因此其獲得迅速發(fā)展和廣泛應(yīng)用。下圖為由555定時器所構(gòu)成的多諧振蕩器,該電路可以用于脈沖輸出、音響告警、家電控制、電子玩具、檢測儀器、電源變換、定時器等。 圖 555電路的接法該電路的特點是“RA7RB6.2C”,RA與VCC相連。公式是:T1=0.

26、693(RA+RB)*C, T2=0.693RB*C,F(xiàn)=1.443/(RA+2RB)*C 為了滿足我的設(shè)計要求,因此取RA=RB其阻值為10K,取電容C的取值為10uf,電容C1的取值0.01uF。3.2下載電路PC機和CPLD之間采用的是并行接口的通信方法,如圖3-2所示。ByteBlaster與PC機并口相連的一端是25針插座頭, 與CPLD板插座相連的是10針插座頭。圖3-2 電纜3.3按鈕電路它的作用是提供輸入信號。撥碼開關(guān)的3個引腳CPLD芯片的引腳上。根據(jù)撥碼開關(guān)的高低電平來實現(xiàn)模擬汽車的相應(yīng)的轉(zhuǎn)態(tài),如清零、停止。SS:開始、停止開關(guān)。當按下SS按鈕時,計費器開始工作,再次按下后

27、清零等待時間、路程和費用。DN:白天、黑夜開關(guān)。初始狀態(tài)為白天的計費規(guī)則,當按下DN后變?yōu)楹谝沟挠嬞M規(guī)則,再次按下重復(fù)以上規(guī)則。 WR:等待、行駛開關(guān)。當按下WR按鈕后,進入等待狀態(tài),再次按下,計費器又恢復(fù)行駛狀態(tài),重復(fù)按此按鈕,重復(fù)以上功能。3.4動態(tài)顯示電路 該電路用六個數(shù)碼管所組成,其中兩個數(shù)碼管實現(xiàn)將車費動態(tài)的顯示出來。其動態(tài)的顯示范圍為0到99元;還有兩個數(shù)碼管實現(xiàn)將汽車行駛的里程動態(tài)的顯示出來,其動態(tài)的顯示范圍為0到99公里;最后兩個數(shù)碼管講汽車的等待時間顯示出來,其動態(tài)顯示范圍為0到99公里。第四章 計費系統(tǒng)的VHDL設(shè)計在本設(shè)計中采用的是自頂向下的設(shè)計方法,首先從系統(tǒng)功能設(shè)計開

28、始,對系統(tǒng)高層模塊進行行為描述和功能仿真.系統(tǒng)的功能驗證完成后,將抽象的高層設(shè)計自頂向下逐級細化,直到與所用可編程邏輯器件相對應(yīng)的邏輯描述。在本設(shè)計中,具有5個模塊:1)分頻器:將時鐘信號進行分頻。2)標志模塊:將按鈕產(chǎn)生的脈沖轉(zhuǎn)化為一種標志信號。3)計程模塊:在等待信號未作用時,來一個時鐘脈沖信號,里程值加1。該模塊還包含一個路程計費標志的小模塊,輸出一個路程計費的信號。4)等待狀態(tài)模塊:等待信號作用時,該模塊可以記錄等待的時間,并產(chǎn)生等待計費的信號。5)車費計數(shù)模塊:按行駛里程收費,分為白天和黑夜。白天收費標準:起步費為9.00元,超過3公里按3元/公里,車暫停超過三分鐘按2元/分鐘計算。

29、黑夜收費標準:起步費為12.00元,超過3公里按4元/公里,車暫停超過三分鐘按1元/分鐘計算。6)譯碼模塊:實現(xiàn)將車費計數(shù)模塊、等待狀態(tài)模塊和里程計數(shù)模塊輸出的BCD碼轉(zhuǎn)換成七段碼輸出。下面具體介紹各個部分的設(shè)計。4.1分頻器(1)實物圖圖4.1分頻器的實體圖CLK0:輸入555脈沖信號FOUT:輸出脈沖(2)分頻器的VHDL設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PULSE IS PORT(CLK0:IN STD_LOGIC; FOUT:OUT STD_LOGIC);E

30、ND PULSE;ARCHITECTURE ONE OF PULSE ISBEGIN PROCESS(CLK0) VARIABLE CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); VARIABLE FULL :STD_LOGIC; BEGIN IF CLK0'EVENT AND CLK0='1' THEN IF CNT="100" THEN CNT:="000" ; FULL:='1' ELSE CNT:=CNT+1; FULL:='0' END IF; END IF;FOUT&

31、lt;=FULL;END PROCESS;END ONE;(3)波形仿真從該波形圖可以看出輸入脈沖的頻率是輸出脈沖的頻率的五倍。4.2標志模塊(1)實物圖圖4.2標志模塊的實體圖AJ:輸入的按鍵信號BZ:輸出的標志信號(2)標志模塊的VHDL設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BZ IS PORT(AJ:IN STD_LOGIC; BZ:OUT STD_LOGIC);END BZ;ARCHITECTURE TWO OF BZ IS BEGIN PROCESS(AJ)

32、VARIABLE CNT:STD_LOGIC_VECTOR(9 DOWNTO 0); BEGIN IF AJ='0' AND AJ'EVENT THEN IF CNT="1111111111" THEN CNT:="0000000000" ELSE CNT:=CNT+'1' END IF; END IF; BZ<=CNT(0); END PROCESS;END TWO;(3)波形仿真從該波形圖可以看出在輸入的按鍵信號下降沿來臨時輸出的標志信號取反,且剛開始為低電平。4.3等待狀態(tài)模塊(1)實物圖圖4.3等待狀

33、態(tài)模塊的實體圖(2)等待狀態(tài)模塊的VHDL設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDZT IS PORT(CLK,SS:IN STD_LOGIC; DDBZ:IN STD_LOGIC; DDJFBZ:OUT STD_LOGIC; DDSJ:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY DDZT;ARCHITECTURE ONE OF DDZT ISBEGIN PROCESS(CLK,SS,DDBZ) VARIABLE Q1,Q0

34、: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF SS='0' THEN Q1:="0000"Q0:="0000"DDJFBZ<='0' ELSIF DDBZ='1' THEN IF CLK='1' AND CLK'EVENT THEN IF Q1=9 AND Q0=9 THEN Q1:="0000"Q0:="0000" ELSIF Q0=9 THEN Q1:=Q1+1;Q0:="0000&quo

35、t; ELSE Q1:=Q1;Q0:=Q0+1; END IF; IF(Q1>0 OR Q0>3) THEN DDJFBZ<='1' END IF; END IF; END IF; DDSJ(7 DOWNTO 4)<=Q1;DDSJ(3 DOWNTO 0)<=Q0;END PROCESS;END ONE;(3)波形仿真等待標志有效時,等待時間開始計數(shù)。等待時間超過3時等待計費標志置高電平。由于設(shè)計時只用兩個數(shù)碼管顯示,所以只能顯示到99,在程序中設(shè)置了讓等待時間到達99后變?yōu)?。從上面的說明可以看出程序達到了所設(shè)計的功能。4.4計程模塊(1)實物圖

36、圖4.4.1計程模塊的實體圖圖4.4.2路程計費標志的實物圖(2)計程模塊的VHDL設(shè)計library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity JC is port(clks,SS,WR:in std_logic; LC:BUFFER std_logic_vector(7 downto 0); end entity JC;architecture one of JC is SIGNAL Q1,Q0:std_logic_vector(3 downto 0);beginprocess(clks,

37、SS,WR,LC) VARIABLE SW:STD_LOGIC_VECTOR(1 DOWNTO 0); begin SW:=SS&WR; IF SW="00" OR SW="01" THEN Q1<="0000"Q0<="0000" ELSIF SW="11" THEN Q1<=Q1;Q0<=Q0; ELSIF CLKS'EVENT AND CLKS='1' THEN IF Q1=9 AND Q0=9 THEN Q1<="0

38、000"Q0<="0000" ELSIF Q0=9 THEN Q1<=Q1+1;Q0<="0000" ELSE Q1<=Q1;Q0<=Q0+1; END IF; END IF;END PROCESS;LC(7 DOWNTO 4)<=Q1;LC(3 DOWNTO 0)<=Q0;END one;路程計費標志模塊的VHDL設(shè)計library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity LCJFBZ is por

39、t(SS:in std_logic; LC:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LCJFBZ:OUT std_logic); end entity LCJFBZ;architecture TWO of LCJFBZ is BEGIN PROCESS(SS,LC) BEGIN IF SS='0' OR (LC(7 DOWNTO 4)="0000" AND LC(3 DOWNTO 0)<4) THEN LCJFBZ<='0' ELSE LCJFBZ<='1' END IF; END

40、PROCESS;END TWO;(3)波形仿真可以看出在SS有效時,LC開始計數(shù),在WR高電平時LC等待計數(shù),直至WR為低電平時再次計數(shù)。從下圖可以看出LC大于3時,LCJFBZ置高電平。綜合以上兩副仿真圖可以看出本程序滿足設(shè)計要求。4.5計費模塊(1)實物圖圖4.5計費模塊的實物圖(2)計程模塊的VHDL設(shè)計Library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;PACKAGE PACKEXP1 IS FUNCTION bcd_add8(AIN,BIN : in std_logic_vector) RE

41、TURN std_logic_vector;END;PACKAGE BODY PACKEXP1 IS FUNCTION bcd_add8(AIN,BIN : std_logic_vector) RETURN std_logic_vector IS type type_bcdx4 is array(3 downto 0) of std_logic_vector(4 downto 0); VARIABLE SA,SB : type_bcdx4; VARIABLE CI : std_logic_vector(4 downto 0); VARIABLE SOUT : std_logic_vector(

42、11 downto 0); BEGIN CI:=(others=>'0'); SOUT:=(others=>'0'); for i in 0 to 1 loop SA(i) := ('0' & AIN(i*4+3 downto i*4)+('0' & BIN(i*4+3 downto i*4)+("0000" & CI(i); if (SA(i)(4)='1') or (SA(i)(3 downto 0)>9) then SB(i) := SA(i) +

43、 "00110" else SB(i) := SA(i); end if; CI(i+1) := SB(i)(4); SOUT(i*4+4 downto i*4):=SB(i); end loop; RETURN SOUT;END FUNCTION bcd_add8;END;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;USE WORK.PACKEXP1.ALL;ENTITY JF is PORT( SS:IN STD_LOGIC; DN:IN STD_LOGIC; LC:I

44、N std_logic_vector(7 downto 0); DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LCJFBZ:IN STD_LOGIC; DDJFBZ:IN STD_LOGIC; FY:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY JF;architecture ONE of JF is BEGIN PROCESS(SS,DN,LC,DDSJ,DDJFBZ,LCJFBZ) VARIABLE FY1 :STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN IF SS='0'

45、 THEN FY1:="000000000000" ELSIF DN='0' THEN IF LCJFBZ='0' THEN FY1(11 DOWNTO 4):=(OTHERS=>'0'); FY1(3 DOWNTO 0):="1001" ELSE FY1:=bcd_add8(LC,LC); FY1:=bcd_add8(FY1,LC); END IF; ELSIF LCJFBZ='0' THEN FY1(11 DOWNTO 5):=(OTHERS=>'0'); F

46、Y1(4 DOWNTO 0):="10010" ELSE FY1:=bcd_add8(LC,LC); FY1:=bcd_add8(FY1,LC); FY1:=bcd_add8(FY1,LC); END IF; IF DN='0' THEN IF DDJFBZ='0' THEN FY1:=FY1; ELSE FY1:=bcd_add8(FY1,DDSJ); FY1:=bcd_add8(FY1,DDSJ); END IF; ELSIF DDJFBZ='0' THEN FY1:=FY1; ELSE FY1:=bcd_add8(FY1

47、,DDSJ); END IF; FY<=FY1(7 DOWNTO 0); END PROCESS;END ONE;(3)波形仿真黑夜時候的仿真白天時的仿真符合設(shè)計要求。4.6譯碼模塊(1)實體圖圖4.6譯碼模塊的實體圖(2)譯碼模塊的VHDL設(shè)計library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity YMQ isport(din:in std_logic_vector(7 downto 0); dout1:out std_log

48、ic_vector(6 downto 0); dout0:out std_logic_vector(6 downto 0);end entity YMQ;architecture one of YMQ isbeginprocess(din)begin case din(7 downto 4) is when "0000" =>dout1<="0000001" when "0001" =>dout1<="1001111" when "0010" =>dout1<

49、="0010010" when "0011" =>dout1<="0000110" when "0100" =>dout1<="1001100" when "0101" =>dout1<="0100100" when "0110" =>dout1<="0100000" when "0111" =>dout1<="0001111&

50、quot; when "1000" =>dout1<="0000000" when "1001" =>dout1<="0000100" when others =>dout1<="ZZZZZZZ"end case; case din(3 downto 0) is when "0000" =>dout0<="0000001" when "0001" =>dout0<="

51、1001111" when "0010" =>dout0<="0010010" when "0011" =>dout0<="0000110" when "0100" =>dout0<="1001100" when "0101" =>dout0<="0100100" when "0110" =>dout0<="0100000" when "0111" =>dout0<="0001111" when "1000" =>dout0<="0000000" when "1001" =>dout0<="0000100" when others =>dout0<="ZZZZZZZ"end case;end process;end one;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論