![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/2f61b659-66ce-4fc1-8022-e348e3d28ae4/2f61b659-66ce-4fc1-8022-e348e3d28ae4pic.jpg)
![eda課程設(shè)計---出租車計價器的設(shè)計_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/2f61b659-66ce-4fc1-8022-e348e3d28ae4/2f61b659-66ce-4fc1-8022-e348e3d28ae41.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計</b></p><p> 學生姓名: 專業(yè)班級: </p><p> 指導教師: 工作單位: </p><p> 題
2、 目: 出租車計價器的設(shè)計 </p><p><b> 初始條件:</b></p><p> 本設(shè)計利用QuartusⅡ軟件編寫VHDL代碼,運用EDA實驗箱上的FPGA、數(shù)碼管、LED燈、撥碼開關(guān)、3/8譯碼器、系統(tǒng)20MHz時鐘等硬件資源,實現(xiàn)簡易的出租車計價器的相關(guān)功能。</p&
3、gt;<p> 要求完成的主要任務: (包括課程設(shè)計工作量及技術(shù)要求,以及說明書撰寫等具體要求)</p><p> 1、課程設(shè)計工作量:2周。</p><p><b> 2、技術(shù)要求:</b></p><p> ?、?設(shè)計一個出租車計價器。要求顯示行駛里程、停車時間和計費值。</p><p> ?、诔?/p>
4、租車的起步價為3元,當里程行駛到1km后,費用為4元;當里程行駛到1.5km后,費用為5元;,當里程行駛到2km后,費用為6元;當里程行駛到2.5km后,費用為7元;當里程行駛到3km后,費用為8元;此后每公里計費為0.7元。當計費達到20元后,每公里加收50%的車費。停車每達3分鐘,增加0.7元。</p><p> 3、查閱至少5篇參考文獻。按《武漢理工大學課程設(shè)計工作規(guī)范》要求撰寫設(shè)計報告書。全文用A4紙打
5、印,圖紙應符合繪圖規(guī)范。</p><p><b> 時間安排:</b></p><p> 2011 年 1 月 10 日集中,作課設(shè)具體實施計劃與課程設(shè)計報告格式的要求說明。</p><p> 2011 年 1 月 11 日,查閱相關(guān)資料,學習電路的工作原理。</p><p> 2011 年 1 月 12 日
6、至 2011 年 1 月 16 日,方案選擇和程序設(shè)計設(shè)計。</p><p> 2011 年 1 月 17 日 至 2011 年 1 月 20 日,電路調(diào)試和設(shè)計說明書撰寫。</p><p> 2011 年 1 月 21 日上交課程設(shè)計成果及報告,同時進行答辯。</p><p> 課設(shè)答疑地點:鑒主13樓電子科學與技術(shù)實驗室。</p>
7、<p> 指導教師簽名: 年 月 日</p><p> 系主任(或責任教師)簽名: 年 月 日</p><p><b> 摘 要</b></p><p> 本文介紹了一種采用單片F(xiàn)PGA芯片進行出租車計費器的設(shè)計方法
8、,主要闡述如何使用新興的EDA器件取代傳統(tǒng)的電子設(shè)計方法,利用FPGA的可編程性,簡潔而又多變的設(shè)計方法,縮短了研發(fā)周期,同時使出租車計費器體積更小功能更強大。本設(shè)計實現(xiàn)了出租車計費器所需的一些基本功能,計費包括起步價、行車里程計費、等待時間計費,同時考慮到出租車行業(yè)的一些特殊性,更注重了把一些新的思路加入到設(shè)計中。主要包括采用了FPGA芯片,使用VHDL語言進行編程,使其具有了更強的移植性,更加利于產(chǎn)品升級。</p>&
9、lt;p> 關(guān)鍵詞:VHDL;計費器;QuartusⅡ;FPGA</p><p><b> Abstract</b></p><p> This paper describes the use of a single chip FPGA for the design of accounting-fee machine, mainly on how to u
10、se the emerging EDA electronic devices designed to replace traditional methods, using the programmable FPGA, concise and changing the design Ways to shorten the development cycle, so that taxi accounting-fee machine in a
11、 smaller more powerful. The design and implementation of the taxi accounting-fee machine for some basic functions, including billing starting price, driving metered, the</p><p> Key words: VHDL, accounting-
12、fee machine , Quartus Ⅱ, FPGA</p><p><b> 目 錄</b></p><p><b> 摘 要2</b></p><p> Abstract3</p><p><b> 目 錄4</b></p><p&g
13、t;<b> 1.緒論5</b></p><p> 2.設(shè)計內(nèi)容及要求6</p><p> 2.1.設(shè)計的目的及主要任務6</p><p> 2.2.設(shè)計思想6</p><p><b> 3.設(shè)計原理7</b></p><p> 3.1.設(shè)計原理及方法
14、7</p><p> 3.2.單元模塊設(shè)計8</p><p> 4.代碼仿真結(jié)果10</p><p> 4.1.有限次數(shù)脈沖發(fā)生模塊仿真結(jié)果10</p><p> 4.2.計數(shù)器模塊仿真結(jié)果11</p><p> 4.3.七段數(shù)碼管模塊仿真結(jié)果11</p><p> 4
15、.4.分頻器模塊仿真結(jié)果12</p><p> 5.硬件調(diào)試13</p><p> 6.心得體會14</p><p> 7.參考文獻15</p><p><b> 8.附錄16</b></p><p> 8.1.程序源代碼16</p><p>
16、 8.2.綜合網(wǎng)絡(luò)圖30</p><p><b> 緒論</b></p><p> 人類社會已經(jīng)進入信息化時代,信息社會的發(fā)展離不開電子產(chǎn)品的進步?,F(xiàn)代電子產(chǎn)品在性能提高、復雜度降低的同時,價格卻一直呈下降趨勢,而且產(chǎn)品更新?lián)Q代的步伐也越來越快,實現(xiàn)這種進步的主要原因就是生產(chǎn)制造技術(shù)和電子設(shè)計技術(shù)的發(fā)展。前者以微細加工技術(shù)為代表,目前已進展到深亞微米階段,可以
17、在幾平方厘米的芯片上集成數(shù)萬個晶體管;后者的核心就是EDA技術(shù)[1]。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計制造是不可想象的,反過來,生產(chǎn)制造技術(shù)的不斷進步又必須對EDA技術(shù)提出新要求。EDA代表了當今電子設(shè)計技術(shù)的最新發(fā)展方向,它的基本特征是:設(shè)計人員按照“自頂向下”的設(shè)計方法,對整個系統(tǒng)進行方案設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實現(xiàn),然后采用硬件描述語言(VHDL)完成系統(tǒng)行為級設(shè)計,最
18、后通過綜合器和適配器生成最終的目標器件[2]。</p><p> 可編程邏輯器件自20世紀70年代以來,經(jīng)歷了PAL、GAL、CPLD、FPGA幾個發(fā)展階段,其中CPLD、FPGA屬高密度可編程邏輯器件,目前集成度以高達200萬門/片,它將掩膜ASIC集成度高的優(yōu)點和可編程邏輯器件設(shè)計生產(chǎn)方便的特點結(jié)合在一起,特別適合于樣品研制和小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當市場擴大時,它可以和容易地轉(zhuǎn)由ASI
19、C實現(xiàn),因此開發(fā)風險也大為降低。CPLD/FPGA器件已成為現(xiàn)代高層次電子設(shè)計方法的實現(xiàn)載體[3]。</p><p> VHDL是一種全方位的硬件描述語言,包括系統(tǒng)行為級、寄存器傳輸級和邏輯門級多個設(shè)計層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為3種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能,整個自頂向下或自底向上的電路設(shè)計過程都可以用VHDL來完成[4]。另外,VHDL還有以下優(yōu)點:VHDL的寬范圍
20、描述能力使它成為高層次設(shè)計的核心,將設(shè)計人員的工作重心轉(zhuǎn)移到了系統(tǒng)功能的實現(xiàn)和調(diào)試上,只需要花較少的精力用于物理實現(xiàn);VHDL可以用簡潔明確的代碼描述來進行復雜控制邏輯的設(shè)計,靈活且方便,而且也便于設(shè)計結(jié)果的交流、保存和重用;VHDL的設(shè)計不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。VHDL是一個標準語言,為眾多的EDA場上支持,因此移植性好[5]。</p><p><b> 設(shè)計內(nèi)容及要求</b&g
21、t;</p><p> 設(shè)計的目的及主要任務</p><p><b> 設(shè)計的目的</b></p><p> ?、賹W會在QuartusⅡ環(huán)境中運用VHDL語言設(shè)計方法構(gòu)建具有一定邏輯功能的模塊,并能運用圖形設(shè)計方法完成頂層原理圖的設(shè)計。</p><p> ②掌握出租車自動計費器的主要功能與在FPGA中的實現(xiàn)方法。&
22、lt;/p><p> 設(shè)計任務及主要技術(shù)指標</p><p> ① 設(shè)計一個出租車計價器。要求顯示行駛里程、停車時間和計費值:</p><p> 出租車的起步價為3元,當里程行駛到1km后,費用為4元;當里程行駛到1.5km后,費用為5元;,當里程行駛到2km后,費用為6元;當里程行駛到2.5km后,費用為7元;當里程行駛到3km后,費用為8元;此后每公里計費為0
23、.7元/0.5km。停車每到3分鐘,增加0.7元。</p><p> 通過開關(guān)讀入停車信號,在停車時進行計時,顯示格式為時分秒XX-XX-XX,每3分鐘,計價0.7元;按照輪胎轉(zhuǎn)動1圈為1m計算,計算并顯示行駛的里程結(jié)果(單位:Km),格式為:“000.0”。能顯示乘車費用(單位:元),格式為:“000.0”。</p><p> ?、?運用QuartusⅡ軟件中的仿真功能對所設(shè)計的出租車
24、自動計費器的各個模塊及頂層電路的功能進行仿真分析。</p><p> ③ 將所設(shè)計的整個系統(tǒng)寫入FPGA器件中,加上需要的外圍電路在實驗箱上實現(xiàn)整個系統(tǒng)的硬件搭建。</p><p><b> 設(shè)計思想</b></p><p> 本次設(shè)計首先在QuartusⅡ環(huán)境中對出租車自動計費器的各個部分利用VHDL這一硬件描述語言予以設(shè)計,生成模塊。
25、主要有:運算控制模塊、分頻器、顯示模塊這三大部分組成。由頂層模塊協(xié)調(diào)控制完成設(shè)計任務。</p><p><b> 設(shè)計原理</b></p><p><b> 設(shè)計原理及方法</b></p><p> 本設(shè)計包含運算控制模塊、分頻器、顯示模塊這三大部分。</p><p> 圖1 出租車自動計費
26、器系統(tǒng)框圖</p><p> 運算控制器模塊將其他兩個進行連接,是本次設(shè)計的核心。它包含計程器、計時器、計價器,同時還有讀取外部的撥碼開關(guān)控制信號,提供當前顯示信號與顯示位選信號,從而周期性交替顯示計價/計時信息、等時信息。</p><p> 計程器在非停車狀態(tài)完成計程功能并產(chǎn)生里程計價信號,計時器在停車狀態(tài)完成計時功能并產(chǎn)生等時計價信號。計價器是設(shè)計的核心與難點,涉及到多種時鐘信號,
27、并有多種計費標準。擬使用有限次高速脈沖發(fā)生器向一組級聯(lián)的十進制計數(shù)器提供不同費率的計價脈沖,根據(jù)里程計價信號、等時計價信號、停車開關(guān)狀態(tài)、當前計費結(jié)果等信號,綜合考慮,挑選適合次數(shù)的計價脈沖,從而實現(xiàn)不同條件的不同計費。</p><p> 計程器、計時器、計價器根據(jù)位選信號,輸出相應數(shù)據(jù)的當前選中數(shù)字,由頂層模塊根據(jù)顯示數(shù)據(jù)類型變換信號進行選擇,傳輸給顯示模塊。</p><p> 實驗
28、箱的時鐘信號為20MHz方波,由分頻器分為10Hz的計時信號(一個周期代表現(xiàn)實中的1s)、10Hz的計程信號(一個周期代表現(xiàn)實中的10m)、500Hz的數(shù)碼管掃描信號(掃描頻率62.5Hz)、0.2Hz的顯示數(shù)據(jù)類型變換信號(變化周期5s)。</p><p> 顯示模塊由實驗箱上的3/8譯碼器、五個LED燈構(gòu)成狀態(tài)的指示燈、程序編寫的一個七段數(shù)碼管譯碼器(因顯示需要,原有字形“E”征用改為“—”,字形"
29、;F"改為“ ”)組成。</p><p> 本次設(shè)計首先在QuartusⅡ環(huán)境中對出租車自動計費器的各個部分利用VHDL這一硬件描述語言予以設(shè)計,進行仿真,然后編寫頂層模塊將各個模塊連接,并對相互之間的信號進行必要處理,從而實現(xiàn)整機功能,最后在實驗箱上進行物理測試,尋找漏洞、調(diào)整參數(shù),最終確定設(shè)計。</p><p><b> 單元模塊設(shè)計</b><
30、/p><p> 分頻器TAXI_FP模塊設(shè)計</p><p> 本設(shè)計中分頻器模塊使用了一個通用的分頻器元件例化fp。該模塊從外部讀入系統(tǒng)時鐘方波信號clk,向外輸出計時信號clk_time,計程信號clk_mil,數(shù)碼管掃描信號clk_scan,顯示數(shù)據(jù)類型變換信號clk_v。具體程序代碼詳見附錄。</p><p> 計程器MIL模塊設(shè)計</p>
31、<p> 計程器的核心為一個4位十進制數(shù)計數(shù)單元cnt10,它由四個十進制計數(shù)器級聯(lián)構(gòu)成。在得到停車信號時,計程信號不輸入計數(shù)單元,在沒有停車信號stop時,每有10個脈沖clk(100m)才進行計數(shù)1次。每當成功計數(shù)5次,即500m,產(chǎn)生一個里程計費信號p_mil。在得到復位信號rst時,計程器內(nèi)部所有計數(shù)器和計數(shù)信號清零復位,里程計費信號輸出'0'。根據(jù)讀入的位選信號wx決定當前輸出的數(shù)值datain。具
32、體程序代碼詳見附錄。</p><p> 計時器TIM模塊設(shè)計</p><p> 計時器有一個24進制cnt24、兩個60進制的計數(shù)器cnt60級聯(lián)構(gòu)成計時單元。當停車信號stop為'1',進行計時。計時器中還有一個3進制計數(shù)器cnt3,每當代表分鐘的60進制計數(shù)器計數(shù)3次,產(chǎn)生一個等時計費信號p_up。當有復位信號rst時,所有計數(shù)單元清零,等時計數(shù)信號輸出'0
33、'。根據(jù)讀入的位選信號wx決定當前輸出的數(shù)值datain。具體程序代碼詳見附錄。</p><p> 計價器PRICE模塊設(shè)計</p><p> 因為在計費過程中存在1.05元的計費情況,故計價精度精確到分,共有五個計數(shù)器。因此計價器的計數(shù)單元有四個10進制計數(shù)器cnt10,一個10進制計數(shù)器cnt10_d。前者復位值為0;后者復位值為3,為價格的第三位計數(shù)。它的內(nèi)部還有一個指定
34、個數(shù)脈沖產(chǎn)生器price_s。根據(jù)停車信號stop的選擇里程計費信號p_mil或p_t,當計費信號為'1'時,輸入適當個脈沖,當計費信號為'0',脈沖發(fā)生器price_s復位。當計費開關(guān)switch或復位信號rst為'1',計價器所有模塊復位。根據(jù)讀入的位選信號wx決定當前輸出的數(shù)值datain。具體程序代碼詳見附錄。</p><p><b> 顯示模塊
35、設(shè)計</b></p><p> 顯示模塊包含一個8進制計數(shù)器cnt8,七段數(shù)碼管譯碼器decl7s,實驗箱上的3/8譯碼器。還有五個狀態(tài)顯示燈,分別為停車狀態(tài)指示stop_s,計費狀態(tài)指示switch_s,3個當前顯示內(nèi)容標志燈sta(2..0)。當系統(tǒng)復位時,數(shù)碼管一起顯示相同的任意數(shù),五個狀態(tài)顯示燈一起被點亮。正常顯示時,等時信息與計價/計程信號以5s為周期交替顯示。具體程序代碼詳見附錄。<
36、;/p><p> 運算控制模塊TAXI設(shè)計</p><p> 運算控制模塊將以上各模塊進行連接,綜合,構(gòu)成出租車計價器。其輸入端有系統(tǒng)時鐘輸入端clk、系統(tǒng)復位信號輸入端rst、停車信號輸入端stop、計費開關(guān)switch。輸出端有數(shù)碼管字形輸入端segout、point、位選信號輸出端wx、狀態(tài)燈控制端stop_s、switch_s、sta。具體程序代碼詳見附錄。</p>
37、<p><b> 代碼仿真結(jié)果</b></p><p> 上文中提到的六個模塊中還運用了一些更小的例化模塊。這些小模塊被上面的設(shè)計多次調(diào)用,它們雖然小,功能簡單、單一,但是它們功能的正確是調(diào)用模塊乃至整個設(shè)計功能的保證,它們是整個設(shè)計的基石,因此在此著重對小模塊的邏輯功能與仿真結(jié)果進行了說明。仿真結(jié)果分為功能仿真與邏輯仿真兩幅圖進行呈現(xiàn)。我們會發(fā)現(xiàn)時序仿真與功能仿真的波形有差異
38、,這是因為在實際門電路的運行中,電平的處理過程造成了信號的延時。</p><p> 有限次數(shù)脈沖發(fā)生模塊仿真結(jié)果</p><p> 該模塊的任務是當使能信號rst為'1'時產(chǎn)生規(guī)定個方波信號,之后輸出結(jié)果為'0'。此處產(chǎn)生兩個脈沖。</p><p> 圖2.有限次數(shù)脈沖發(fā)生模塊功能仿真圖</p><p>
39、 圖3.有限次數(shù)脈沖發(fā)生模塊時序仿真圖</p><p><b> 計數(shù)器模塊仿真結(jié)果</b></p><p> 該模塊的任務是當輸入脈沖時,進行計數(shù),當有復位信號時,計數(shù)器復位。當計數(shù)器計滿后,產(chǎn)生進位信號。此處設(shè)定計數(shù)器的模制為10,復位初始值為0.</p><p> 圖4.計數(shù)器模塊功能仿真圖</p><p>
40、; 圖5計數(shù)器模塊時序仿真圖</p><p> 七段數(shù)碼管模塊仿真結(jié)果</p><p> 該模塊的任務是根據(jù)輸入的十六進制信號,輸出數(shù)碼管顯示其字形的電平信號。</p><p> 圖6.七段數(shù)碼管模塊功能仿真圖</p><p> 圖7.七段數(shù)碼管模塊時序仿真圖</p><p><b> 分頻器模塊
41、仿真結(jié)果</b></p><p> 該模塊的任務是將輸入的時鐘信號,進行偶數(shù)次分頻,此處選為4分頻進行仿真。</p><p> 圖8.分頻器模塊功能仿真圖</p><p> 圖9.分頻器模塊時序仿真圖</p><p><b> 硬件調(diào)試</b></p><p> 在完成程序綜
42、合后,進行硬件調(diào)試之前,先要對芯片進行定義。具體操作如下:</p><p> 首先點擊Assignments—Device,選擇實驗箱所用芯片型號EP1C3T144C8。點選Device and Pin Options。在這里選擇Unused Pins選項卡,將Reserve all unused pins選為As input tri-stated。</p><p> 然后開始進行管腳
43、設(shè)定,根據(jù)實驗箱的資源配置設(shè)置如下:</p><p> 表1.芯片管腳分配表</p><p> 再次進行綜合,正確后就可將文件下載到芯片中。連接下載線,調(diào)整實驗箱的跳線后,打開電源,經(jīng)QuartusⅡ中的“PROGRAMMER”菜單,調(diào)出編程器窗口。按下編程器窗口中的“START”按鈕,設(shè)計的內(nèi)容就開始下載到FPGA芯片中。</p><p> 進行多組功能組合
44、測試,顯示結(jié)果符合設(shè)計要求,證明設(shè)計成功。</p><p><b> 心得體會</b></p><p> 本次課程設(shè)計至此已經(jīng)接近尾聲,兩周的時間雖然很短暫,但在這兩個星期的設(shè)計過程中收獲頗豐。設(shè)計的核心內(nèi)容就是QuartusⅡ環(huán)境中,利用VHDL語言設(shè)計出基于FPGA的出租車計費器。整個設(shè)計過程中首先對EDA(電子設(shè)計自動化)這門課程有了更深的了解,因為課程設(shè)計
45、本身要求將以前所學的理論知識運用到實際的電路設(shè)計當中去,在電路的設(shè)計過程中,無形中便加深了對VHDL語言的了解及運用能力,對課本以及以前學過的知識有了一個更好的總結(jié)與理解;以前的EDA實驗只是針對某一個小的功能設(shè)計,而此次得EDA課程設(shè)計對我們的總體電路的設(shè)計的要求更嚴格,需要通過翻閱復習以前學過的知識確立了實驗總體設(shè)計方案,然后逐步細化進行各模塊的設(shè)計;其次,在電路仿真的過程中總會出現(xiàn)一些問題,需要我們細心解決,所以這兩周下來,我對電
46、路故障的排查能力有了很大的提高;再次,通過此次課程設(shè)計,我對設(shè)計所用到的軟件有了更加深刻地了解,這對我們以后的工作和學習的幫助都很有用處。</p><p> 感謝學校給我們這次機會,鍛煉了我們的動手能力。通過這次課設(shè)讓我明白了理論和實際操作之間差距,而且也讓我很明確得意識到自己在VHDL語言的語法理解上有很多的知識漏洞,以后應該多鉆研一下。同時也感謝指導老師在設(shè)計過程中的輔導以及同學的幫助。</p>
47、<p><b> 參考文獻</b></p><p> [1]潘松,黃繼業(yè).EDA技術(shù)與VHDL.北京:清華大學出版社,2007.1.</p><p> [2]宋嘉玉,孫麗霞.EDA實用技術(shù).北京:人民郵電出版社,2006.12. </p><p> [3]齊洪喜,陸穎.VHDL電路設(shè)計實用技術(shù).北京:清華大學出版社,200
48、4.5.</p><p> [4]劉艷萍,高振斌,李志軍.EDA實用技術(shù)及應用.北京:國防工業(yè)出版社,2006.1.</p><p> [5]章彬宏.EDA應用技術(shù).北京:北京理工大學出版社,2007.7.</p><p><b> 附錄</b></p><p><b> 程序源代碼</b>
49、</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ---
50、------------------------------------------------------------------------------------------------------------------</p><p> ENTITY TAXI IS--頂層文件</p><p> PORT(clk,rst,stop,switch:IN S
51、TD_LOGIC;--時鐘;復位、停車、計費開關(guān)</p><p> point,stop_s,switch_s:OUT STD_LOGIC;--小數(shù)點、停車、計費狀態(tài)</p><p> segout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--數(shù)碼管輸出端</p><p> wx:OUT STD_LOGIC_VE
52、CTOR(2 DOWNTO 0);--位選端</p><p> sta:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--顯示狀態(tài)</p><p> END ENTITY TAXI;</p><p> ARCHITECTURE one OF TAXI IS</p><p><b> --調(diào)用例
53、化元件</b></p><p> COMPONENT TAXI_FP IS--系統(tǒng)分頻器 </p><p> PORT(clk:IN STD_LOGIC;--系統(tǒng)時鐘</p><p> clk_time,clk_mil,--計時時鐘、計程時鐘</p><p> clk_scan
54、,clk_v:OUT STD_LOGIC);--掃描時鐘、顯示切換時鐘</p><p> END COMPONENT;</p><p> COMPONENT MIL IS--計程器</p><p> PORT(clk,rst,stop:IN STD_LOGIC;--計程時鐘、復位、停車信號</p><p>
55、; wx:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--位選信號</p><p> p_mil:OUT STD_LOGIC;--里程計費信號</p><p> datain:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--輸出里程數(shù)據(jù)</p><p> END COMPONENT;</p
56、><p> COMPONENT PRICE IS--計價器</p><p> PORT(clk_sys,p_t,p_mil:IN STD_LOGIC;--系統(tǒng)時鐘、等時計費、里程計費信號</p><p> rst,stop:IN STD_LOGIC;--復位、停車信號</p><p> wx:IN STD_
57、LOGIC_VECTOR(2 DOWNTO 0);--位選信號</p><p> datain:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--輸出計價數(shù)據(jù)</p><p> END COMPONENT;</p><p> COMPONENT TIM IS--計時器</p><p> P
58、ORT(clk_time,rst,stop:IN STD_LOGIC;--計時時鐘、復位、停車信號</p><p> wx:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--位選信號</p><p> p_up:OUT STD_LOGIC;--等時計費信號</p><p> datain:OUT STD_LOGIC
59、_VECTOR(3 DOWNTO 0));--輸出等時數(shù)據(jù)</p><p> END COMPONENT;</p><p> COMPONENT decl7s IS--七段數(shù)碼管譯碼器</p><p> PORT(data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--輸出數(shù)據(jù)</p><p>
60、; led7s:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--輸出電平信號</p><p> END COMPONENT;</p><p> COMPONENT cnt8 IS--8進制計數(shù)器</p><p> PORT (clk:IN STD_LOGIC;--掃描時鐘</p>&
61、lt;p> q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--輸出結(jié)果</p><p> END COMPONENT;</p><p><b> --信號定義</b></p><p> SIGNAL clk_time,clk_mil,--計時時鐘、計程時鐘</p><
62、p> clk_scan,clk_v:STD_LOGIC;--掃描時鐘、顯示切換時鐘</p><p> SIGNAL p_mil,p_t,rst_s:STD_LOGIC;--里程等時計費信號、復位信號</p><p> SIGNAL datain,datain_mil,datain_time,--輸出數(shù)據(jù)相關(guān)信號</p><p>
63、; datain_price:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SIGNAL wx_signal:STD_LOGIC_VECTOR(2 DOWNTO 0);--位選信號</p><p><b> BEGIN</b></p><p> --例化元件連線定義</p>
64、<p> u1:TAXI_FP PORT MAP(clk,clk_time,clk_mil,clk_scan,clk_v);</p><p> u2:MILPORT MAP(clk_mil,rst_s,stop,wx_signal,p_mil,datain_mil);</p><p> u3:PRICEPORT MAP(clk,p_t,p_mil,rst_
65、s,stop,wx_signal,datain_price);</p><p> u4:TIMPORT MAP(clk_time,rst_s,stop,wx_signal,p_t,datain_time);</p><p> u5:decl7sPORT MAP(datain,segout);</p><p> u6:cnt8PORT MAP
66、(clk_scan,wx_signal);</p><p><b> --信號賦值</b></p><p> rst_s<=(not switch) OR rst;</p><p> stop_s<=stop OR rst;</p><p> switch_s<=switch OR rs
67、t;</p><p> wx<=wx_signal;</p><p> --顯示數(shù)據(jù)選擇進程</p><p> PROCESS(rst,clk,wx_signal)</p><p><b> BEGIN</b></p><p> IF rst='1' THEN
68、</p><p> sta <="111";</p><p> point <='0';</p><p> ELSIF rising_edge(clk) THEN</p><p> CASE clk_v IS</p><p> WHEN '0'
69、;=></p><p> IF wx_signal>3 THEN</p><p> datain<=datain_price;</p><p> ELSE datain<=datain_mil;</p><p><b> END IF;</b></p><p>
70、sta<="110";</p><p> IF wx_signal="101" OR wx_signal="001" THEN </p><p> point<='1';</p><p> ELSE point<='0';</p><
71、;p><b> END IF;</b></p><p> WHEN '1'=></p><p> datain<=datain_time;</p><p> sta<="001";</p><p> point<='0';<
72、;/p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE;</p><p> -----------------------
73、----------------------------------------------------------------------------------------------</p><p> ENTITY cnt3 IS--三進制計數(shù)器</p><p> PORT (clk,rst:IN STD_LOGIC;</p><p>
74、 q:out STD_LOGIC);</p><p> END ENTITY;</p><p> ARCHITECTURE bhv OF cnt3 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p> VARIABLE cn
75、ter :STD_LOGIC_VECTOR (1 DOWNTO 0);</p><p><b> BEGIN</b></p><p> IF (rst='1') </p><p><b> THEN</b></p><p> cnter:="00&
76、quot;;</p><p> q<='0';</p><p><b> ELSE</b></p><p> IF rising_edge(clk) THEN </p><p> if cnter="10" then cnter :="00&
77、quot;;q<='1';</p><p> elsecnter:=cnter+1;q<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END
78、IF;</b></p><p> END PROCESS;</p><p><b> END bhv;</b></p><p> ---------------------------------------------------------------------------------------------------
79、------------------</p><p> ENTITY cnt8 IS--八進制計數(shù)器</p><p> PORT (clk:IN STD_LOGIC;</p><p> q:out STD_LOGIC_VECTOR(2 DOWNTO 0));</p><p> END ENTITY;</p
80、><p> ARCHITECTURE bhv OF cnt8 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p> VARIABLE cnter :STD_LOGIC_VECTOR (2 DOWNTO 0);</p><p><
81、b> BEGIN</b></p><p> IF rising_edge(clk) THEN </p><p> if cnter="111" then cnter :="000";</p><p> elsecnter:=cnter+1;</p><p><b>
82、 END IF;</b></p><p><b> end if;</b></p><p><b> q<=cnter;</b></p><p> END PROCESS;</p><p><b> END bhv;</b></p>
83、<p> ---------------------------------------------------------------------------------------------------------------------</p><p> ENTITY cnt10 IS--十進制計數(shù)器</p><p> PORT(clk,rst:I
84、N STD_LOGIC;</p><p> co:OUT STD_LOGIC;</p><p> q:buffer STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END ENTITY;</p><p> ARCHITECTURE bhv OF cnt10 IS</p><
85、p> SIGNAL cnter :STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(clk,rst) </p><p><b> BEGIN</b></p><p> IF (rst='
86、;1') </p><p><b> THEN</b></p><p> cnter<="0000";</p><p> co<='0';</p><p><b> ELSE</b></p&g
87、t;<p> IF rising_edge(clk) THEN </p><p> IF cnter="1001" THEN cnter <="0000";co<='1';</p><p> ELSEcnter<=cnter+1;co<='0';</p>&l
88、t;p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> q<=cnter;</b></p><p> END PROC
89、ESS;</p><p><b> END bhv;</b></p><p> ---------------------------------------------------------------------------------------------------------------------</p><p> ENT
90、ITY cnt10_d IS--初值為“3”的十進制計數(shù)器</p><p> PORT(clk,rst:IN STD_LOGIC;</p><p> co:OUT STD_LOGIC;</p><p> q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END EN
91、TITY;</p><p> ARCHITECTURE bhv OF cnt10_d IS</p><p> SIGNAL cnter :STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(clk,rst)</p>
92、;<p><b> BEGIN</b></p><p> IF (rst='1') </p><p><b> THEN</b></p><p> cnter<="0011";</p><p> co<=
93、9;0';</p><p><b> ELSE</b></p><p> IF rising_edge(clk) THEN </p><p> IF cnter="1001" THEN cnter <="0000";co<='1';</p&
94、gt;<p> ELSEcnter<=cnter+1;co<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p>&
95、lt;p><b> q<=cnter;</b></p><p> END PROCESS;</p><p><b> END bhv;</b></p><p> -----------------------------------------------------------------------
96、----------------------------------------------</p><p> ENTITY cnt24 IS--24進制計數(shù)器</p><p> PORT (clk,rst:IN STD_LOGIC;</p><p> c1,c0:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0))
97、;</p><p> END ENTITY;</p><p> ARCHITECTURE bhv OF cnt24 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk,rst)</p><p> VARIABLE cnter :INTEGER:=
98、0 ;</p><p><b> BEGIN</b></p><p> IF (rst='1') THEN</p><p> c1<="0000";</p><p> c0<="0000";</p><p><
99、;b> ELSE</b></p><p> IF rising_edge(clk) THEN </p><p> IF (c0="1001" OR (c0="0011" AND c1="0010"))</p><p><b> THEN </b><
100、/p><p> c0<="0000";</p><p> IF c1="0010"</p><p><b> THEN</b></p><p> c1<="0000";</p><p><b> ELSE<
101、;/b></p><p><b> c1<=c1+1;</b></p><p><b> END IF;</b></p><p><b> ELSE</b></p><p><b> c0<=c0+1;</b></p>
102、<p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END bhv;</b&
103、gt;</p><p> ---------------------------------------------------------------------------------------------------------------------</p><p> ENTITY cnt60 IS--60進制計數(shù)器</p><p>
104、 PORT (clk,rst:IN STD_LOGIC;</p><p> co:OUT STD_LOGIC;</p><p> c1,c0:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END ENTITY;</p><p> ARCHITECTURE bhv OF cnt
105、60 IS</p><p><b> BEGIN</b></p><p> PROCESS(clk,rst)</p><p> VARIABLE cnter :INTEGER:=0 ;</p><p><b> BEGIN</b></p><p> IF (rst=
106、'1') </p><p><b> THEN</b></p><p> c1<="0000";</p><p> c0<="0000";</p><p> co<='0';</
107、p><p><b> ELSE</b></p><p> IF rising_edge(clk) THEN </p><p> IF (c0="1001") </p><p><b> THEN </b></p><p> c0<="
108、;0000";</p><p> IF c1="0101"</p><p><b> THEN</b></p><p> c1<="0000";</p><p> co<='1';</p><p>
109、;<b> ELSE</b></p><p><b> c1<=c1+1;</b></p><p><b> co<='0';</b></p><p><b> END IF;</b></p><p><b>
110、 ELSE</b></p><p><b> c0<=c0+1;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b><
111、;/p><p> END PROCESS;</p><p><b> END bhv;</b></p><p> ENTITY decl7s IS--七段數(shù)碼管譯碼器</p><p> PORT( data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p>&
112、lt;p> led7s:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b> END;</b></p><p> ARCHITECTURE one OF decl7s IS</p><p><b> BEGIN</b></p><p> P
113、ROCESS(data)</p><p><b> BEGIN</b></p><p> CASE data IS</p><p> WHEN "0000" => led7s <="0111111" ;</p><p> WHEN "0001"
114、; => led7s <="0000110" ;</p><p> WHEN "0010" => led7s <="1011011" ;</p><p> WHEN "0011" => led7s <="1001111" ;</p>
115、<p> WHEN "0100" => led7s <="1100110" ;</p><p> WHEN "0101" => led7s <="1101101" ;</p><p> WHEN "0110" => led7s <=
116、"1111101" ;</p><p> WHEN "0111" => led7s <="0000111" ;</p><p> WHEN "1000" => led7s <="1111111" ;</p><p> WHEN "
117、;1001" => led7s <="1101111" ;</p><p> WHEN "1010" => led7s <="1110111" ;</p><p> WHEN "1011" => led7s <="1111100" ;<
118、/p><p> WHEN "1100" => led7s <="0111001" ;</p><p> WHEN "1101" => led7s <="1011110" ;</p><p> WHEN "1110" => led7s &
119、lt;="0000000" ;</p><p> WHEN "1111" => led7s <="1000000" ;</p><p> WHEN OTHERS => NULL;</p><p><b> END CASE;</b></p><
120、;p> END PROCESS;</p><p><b> END one;</b></p><p> ---------------------------------------------------------------------------------------------------------------------</p>
121、<p> ENTITY fp IS--通用分頻器</p><p> GENERIC (N:integer); </p><p> PORT ( clk:IN STD_LOGIC;</p><p> fpq:BUFFER STD_LOGIC);</p><p> END
122、 ENTITY;</p><p> ARCHITECTURE bhv OF fp IS</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p> VARIABLE cnter :INTEGER:=0;</p><p><b>
123、BEGIN</b></p><p> IF rising_edge(clk) THEN </p><p> IF cnter=N-1 then cnter :=0;fpq<=not fpq;</p><p> else cnter:=cnter+1;</p><p><b> END IF;</b&g
124、t;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END bhv;</b></p><p> ------------------------------------------------------------
125、---------------------------------------------------------</p><p> ENTITY MIL IS--計程器</p><p> PORT(clk,rst,stop:IN STD_LOGIC;</p><p> wx:IN STD_LOGIC_VECTOR(2
126、DOWNTO 0);</p><p> p_mil:OUT STD_LOGIC;</p><p> datain:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END ENTITY MIL;</p><p> ARCHITECTURE one OF MIL IS</p
127、><p> COMPONENT fp IS </p><p> GENERIC (N:integer);</p><p> PORT (clk:IN STD_LOGIC;</p><p> fpq:out STD_LOGIC);</p><p> END COMPONENT
128、;</p><p> COMPONENT cnt10 IS</p><p> PORT(clk,rst:IN STD_LOGIC;</p><p> co:OUT STD_LOGIC;</p><p> q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計--出租車計價器
- eda課程設(shè)計---出租車計價器的設(shè)計
- eda課程設(shè)計報告---出租車計價器
- eda課程設(shè)計報告--出租車計價器
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 課程設(shè)計--出租車計價器設(shè)計
- 出租車計價器設(shè)計課程設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 課程設(shè)計---出租車計價器的設(shè)計
- 課程設(shè)計--出租車計價器的設(shè)計
- 出租車計價器課程設(shè)計報告
- 硬件課程設(shè)計----出租車計價器
- 出租車計價器課程設(shè)計論文
- 接口課程設(shè)計---出租車計價器
- 課程設(shè)計---出租車計程計價器的設(shè)計
- 硬件課程設(shè)計--出租車計價器系統(tǒng)
評論
0/150
提交評論