eda課程設(shè)計(jì)——出租車(chē)計(jì)費(fèi)器設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  1 緒論</b></p><p><b>  1.1 課題任務(wù)</b></p><p>  隨著我國(guó)社會(huì)經(jīng)濟(jì)的全面發(fā)展,各大中小城市的出租車(chē)營(yíng)運(yùn)事業(yè)發(fā)展迅速,出租車(chē)已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普通的交通工具。出租車(chē)計(jì)費(fèi)器是出租車(chē)營(yíng)運(yùn)收費(fèi)的專(zhuān)用智能化儀表室出租車(chē)市場(chǎng)規(guī)范化,標(biāo)準(zhǔn)化以及減少司機(jī)與乘客之間發(fā)生糾紛的重要設(shè)

2、備。一種功能完備,簡(jiǎn)單易用,計(jì)量準(zhǔn)確的出租車(chē)計(jì)費(fèi)器是加強(qiáng)出租車(chē)行業(yè)管理,提高服務(wù)質(zhì)量的必需品。本設(shè)計(jì)就是采用VHDL硬件描述語(yǔ)言作為設(shè)計(jì)手段,采用自己的設(shè)計(jì)思路,得到一種出租車(chē)計(jì)價(jià)系統(tǒng)的軟件結(jié)構(gòu),通過(guò)Quartus II 8.1軟件下進(jìn)行仿真,證明所設(shè)計(jì)的電路系統(tǒng)完成了出租車(chē)計(jì)價(jià)的功能,各項(xiàng)指標(biāo)符合設(shè)計(jì)要求,具有一定的實(shí)用性。</p><p>  1.2 Quartus II 簡(jiǎn)介</p><

3、p>  Quartus II 是Altera公司的綜合性PLD/FPGA開(kāi)發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。 </p><p>  Quartus II可以在XP、Linux以及Unix上使用,除了可以使用T

4、cl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。 </p><p>  Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方EDA工具。 </p>&l

5、t;p>  此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。 </p><p>  Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Alter

6、a已經(jīng)停止了對(duì)Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類(lèi)型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和HardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡(jiǎn)便的使用方法。 </p><p>  Altera Quartu

7、s II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。 </p><p><b>  功能</b></p><p>  Quartus II提供了完全集成且與電路結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括: </p><p>  可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、

8、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件; </p><p>  芯片(電路)平面布局連線編輯; </p><p>  LogicLock增量設(shè)計(jì)方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對(duì)原始系統(tǒng)的性能影響較小或無(wú)影響的后續(xù)模塊; </p><p>  功能強(qiáng)大的邏輯綜合工具; </p><p>  完備的電路功能仿真與時(shí)序邏輯仿

9、真工具; </p><p>  定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析; </p><p>  可使用SignalTap II邏輯分析工具進(jìn)行嵌入式的邏輯分析; </p><p>  支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來(lái)生成編程文件; </p><p>  使用組合編譯方式可一次完成整體設(shè)計(jì)流程; </p><p>

10、  自動(dòng)定位編譯錯(cuò)誤; </p><p>  高效的期間編程與驗(yàn)證工具; </p><p>  可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件; </p><p>  能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。</p><p>  1.3 VHDL語(yǔ)言基礎(chǔ)</p><p&

11、gt;  1.3.1 VHDL程序的總體結(jié)構(gòu)</p><p>  一般而言,一個(gè)相對(duì)完整的VHDL語(yǔ)言程序(或稱(chēng)為設(shè)計(jì)實(shí)體)至少應(yīng)三個(gè)基本組成部分:①庫(kù)(Library)、程序包(Package)使用說(shuō)明;②實(shí)體(Entity)說(shuō)明;③實(shí)體對(duì)應(yīng)的結(jié)構(gòu)體(Architecture)說(shuō)明。其中,庫(kù)、程序包使用說(shuō)明用于打開(kāi)(調(diào)用)本設(shè)計(jì)實(shí)體將要用到的庫(kù)、程序包;實(shí)體說(shuō)明用于描述該設(shè)計(jì)實(shí)體與外界的接口信號(hào)說(shuō)明,是可視部分

12、;結(jié)構(gòu)體說(shuō)明用于描述該設(shè)計(jì)實(shí)體內(nèi)部工作的邏輯關(guān)系,是不可視部分。在一個(gè)實(shí)體中,允許含有一個(gè)或多個(gè)結(jié)構(gòu)體,而在每一個(gè)結(jié)構(gòu)體中又可以含有一個(gè)或多個(gè)進(jìn)程以及其他的語(yǔ)句。根據(jù)需要,實(shí)體還可以有配置說(shuō)明語(yǔ)句。配置說(shuō)明語(yǔ)句主要用于以層次化的方式對(duì)特定的設(shè)計(jì)實(shí)體進(jìn)行元件例化,或是為實(shí)體選定某個(gè)特定的結(jié)構(gòu)體。圖4-1顯示出了VHDL程序設(shè)計(jì)中比較全面的組成結(jié)構(gòu)。</p><p>  VHDL語(yǔ)言的總體結(jié)構(gòu)一般是:</p&g

13、t;<p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGN.ALL;</p><p>  ENTITY 實(shí)體名 I

14、S </p><p><b>  [端口說(shuō)明];</b></p><p><b>  END 實(shí)體名;</b></p><p>  ARCHITECTURE 構(gòu)造體名 OF 實(shí)體名 IS</p><p>  [定義語(yǔ)句]內(nèi)部信號(hào)、常數(shù)、數(shù)據(jù)類(lèi)型、函數(shù)等的定義;</p><p

15、><b>  BEGIN</b></p><p><b>  [并行處理語(yǔ)句];</b></p><p><b>  END 構(gòu)造體名;</b></p><p>  在程序開(kāi)始的地方引用了IEEE庫(kù),3個(gè)USE語(yǔ)句使得調(diào)用該庫(kù)的VHDL設(shè)計(jì)可以使用程序包STD_LOGIC_1164、STD_LO

16、GIC_ARITH和STD_LOGIC_UNSIGNED中預(yù)定義的內(nèi)容。</p><p>  STD_LOGIC_1164程序包,其中預(yù)定義的內(nèi)容為STD_LOGIC,STD_LOGIC_VECTOR等數(shù)據(jù)類(lèi)型,及一些數(shù)據(jù)類(lèi)型的轉(zhuǎn)換函數(shù)。STD_LOGIC_ARITH程序包,其中預(yù)定義的內(nèi)容為有符號(hào)和無(wú)符號(hào)類(lèi)型,以及基于這些類(lèi)型的算術(shù)運(yùn)算。STD_LOGIC_UNSIGNED程序包,其中預(yù)定義的內(nèi)容為基于STD_

17、LOGIC和STD_LOGIC_VECTOR的無(wú)符號(hào)的算術(shù)運(yùn)算。由于在程序中最常用到的數(shù)據(jù)類(lèi)型就是標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型,所以一般都將以上的引用語(yǔ)句寫(xiě)在程序的最前面。這樣在程序中就可以方便地對(duì)標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型進(jìn)行操作。</p><p>  1.3.2 實(shí)體設(shè)計(jì)概述</p><p>  實(shí)體(entity)是一個(gè)設(shè)計(jì)實(shí)體的表層設(shè)計(jì)單元,其功能是對(duì)這個(gè)設(shè)計(jì)實(shí)體與外部電路進(jìn)行接口描述它規(guī)定了設(shè)計(jì)單元的輸入輸出

18、接口信號(hào)和引腳,是設(shè)計(jì)實(shí)體與外界的一個(gè)通信界面。</p><p><b> ?。?)實(shí)體語(yǔ)句結(jié)構(gòu)</b></p><p>  實(shí)體說(shuō)明單元的常用語(yǔ)句結(jié)構(gòu)如下:</p><p>  entity 實(shí)體名 is</p><p>  [generic(類(lèi)屬表);]</p><p>  [port(端口表

19、);]</p><p>  end entity 實(shí)體名;</p><p>  實(shí)體說(shuō)明單元必須以語(yǔ)句“entity 實(shí)體名is”開(kāi)始,以語(yǔ)句“end entity 實(shí)體名;”結(jié)束,其中的實(shí)體名是設(shè)計(jì)者自己給設(shè)計(jì)實(shí)體的命名,可供其他設(shè)計(jì)實(shí)體對(duì)其進(jìn)行調(diào)用時(shí)使用(考慮到MAX+PLUSII要求源程序文件的名字與實(shí)體名必須一致,因此建議各個(gè)源程序文件的命名均與實(shí)體名一致)。中間在方括號(hào)內(nèi)的語(yǔ)句描

20、述,在特定的情況下并非時(shí)必須的。例如構(gòu)建在VHDL仿真測(cè)試平臺(tái)時(shí)就不需要方括號(hào)中的語(yǔ)句。</p><p><b> ?。?)類(lèi)屬說(shuō)明語(yǔ)句</b></p><p>  類(lèi)屬(generic)參量是一種端口界面常數(shù),通常以一種說(shuō)明的形式放在實(shí)體或塊結(jié)構(gòu)體前的說(shuō)明部分。類(lèi)屬為所說(shuō)明的環(huán)境提供了一種靜態(tài)信息通道,類(lèi)屬的值可以由設(shè)計(jì)實(shí)體外部提供。因此,設(shè)計(jì)者可以從外面通過(guò)類(lèi)屬參

21、量的重新設(shè)定而方便地改變一個(gè)設(shè)計(jì)實(shí)體或一個(gè)元件的內(nèi)部電路結(jié)構(gòu)和規(guī)模,而不需要修改實(shí)體內(nèi)部程序。</p><p>  類(lèi)屬說(shuō)明的一般書(shū)寫(xiě)格式如下:</p><p>  generic([常數(shù)名;數(shù)據(jù)類(lèi)型[:設(shè)定值]]{;常數(shù)名;數(shù)據(jù)類(lèi)型[:設(shè)定值]});</p><p><b> ?。?) 端口說(shuō)明</b></p><p>

22、;  由port引導(dǎo)的端口說(shuō)明語(yǔ)句是對(duì)于一個(gè)設(shè)計(jì)實(shí)體界面的說(shuō)明。實(shí)體端口說(shuō)明的一般書(shū)寫(xiě)格式如下:</p><p>  port(端口名:端口模式 數(shù)據(jù)類(lèi)型;{端口名:端口模式 數(shù)據(jù)類(lèi)型});</p><p>  其中,端口名是設(shè)計(jì)者為實(shí)體的每一個(gè)對(duì)外通道所取得名字;端口模式是指這些通道上的數(shù)據(jù)流動(dòng)方式,如輸入或輸出等;數(shù)據(jù)類(lèi)型是指端口上流動(dòng)的數(shù)據(jù)的表達(dá)格式。由于VHDL是一種強(qiáng)類(lèi)型語(yǔ)言,它

23、對(duì)語(yǔ)句中的所有操作數(shù)的數(shù)據(jù)類(lèi)型都有嚴(yán)格的規(guī)定。一個(gè)實(shí)體通常有一個(gè)或多個(gè)端口,端口類(lèi)似于原理圖部件符號(hào)上的管腳。實(shí)體與外界交流的信息必須通過(guò)端口通道流入或流出。</p><p>  IEEE1076標(biāo)準(zhǔn)包中定義了4種常用的端口模式,各端口模式的功能及符號(hào)</p><p>  在實(shí)際的數(shù)字集成電路中,in相當(dāng)于只允許輸入的引腳,out相當(dāng)于只允許輸出的引腳,buffer相當(dāng)于帶輸出緩沖器并可以

24、回讀的引腳(與三態(tài)引腳不同),而inout相當(dāng)于雙向引腳。</p><p>  1.3.3 結(jié)構(gòu)體設(shè)計(jì)概述</p><p>  結(jié)構(gòu)體(architecture)是用于描述設(shè)計(jì)實(shí)體的內(nèi)部結(jié)構(gòu)及實(shí)體端口間的邏輯關(guān)系。結(jié)構(gòu)體內(nèi)部構(gòu)造的描述層次和描述內(nèi)容可以用圖4-3來(lái)說(shuō)明。一般而言,一個(gè)完整的結(jié)構(gòu)體由以下兩個(gè)基層次組成:</p><p>  1、對(duì)數(shù)據(jù)類(lèi)型、常數(shù)、信號(hào)、

25、子程序和元件等元素的說(shuō)明部分。</p><p>  2、以行為、數(shù)據(jù)流、結(jié)構(gòu)描述方式表達(dá)實(shí)體邏輯行為或功能的描述語(yǔ)句</p><p>  結(jié)構(gòu)體將具體實(shí)現(xiàn)一個(gè)實(shí)體。每個(gè)實(shí)體可以由多個(gè)機(jī)構(gòu)體,每個(gè)結(jié)構(gòu)體對(duì)應(yīng)著實(shí)體的不同結(jié)構(gòu)和算法的實(shí)現(xiàn)方案,其間的各個(gè)結(jié)構(gòu)的地位是同等的,但同一結(jié)構(gòu)體不能為不同的實(shí)體所擁有。結(jié)構(gòu)體不能單獨(dú)存在,它必須有一個(gè)界面說(shuō)明,即對(duì)應(yīng)著一個(gè)實(shí)體。對(duì)于具有多個(gè)結(jié)構(gòu)體的實(shí)體,必

26、須用配置(configuration)語(yǔ)句指明實(shí)際用于綜合的結(jié)構(gòu)體和用于仿真的結(jié)構(gòu)體。在電路中,如果實(shí)體代表一個(gè)器件符號(hào),則結(jié)構(gòu)體描述了這個(gè)符號(hào)的內(nèi)部行為。當(dāng)把這個(gè)符號(hào)例化成一個(gè)實(shí)際的器件安裝到電路上時(shí),則需配置語(yǔ)句為這個(gè)例化的器件指定一個(gè)結(jié)構(gòu)體(即指定一種實(shí)現(xiàn)方案),或由編譯器自動(dòng)選定一個(gè)默認(rèn)的結(jié)構(gòu)體。</p><p>  (1)結(jié)構(gòu)體的一般語(yǔ)句格式</p><p>  結(jié)構(gòu)體的語(yǔ)句格式

27、如下:</p><p>  architecture 結(jié)構(gòu)體名 of 實(shí)體名 is </p><p><b>  [說(shuō)明語(yǔ)句]</b></p><p><b>  begin</b></p><p><b>  [功能描述語(yǔ)句]</b></p><

28、p>  end architecture 結(jié)構(gòu)體名;</p><p>  其中,實(shí)體名必須與設(shè)計(jì)實(shí)體名一致,而結(jié)構(gòu)體名可以由設(shè)計(jì)者自己選擇,但當(dāng)一個(gè)實(shí)體具有多個(gè)結(jié)構(gòu)體時(shí),結(jié)構(gòu)體的取名不可重復(fù)。</p><p> ?。?)結(jié)構(gòu)體說(shuō)明語(yǔ)句</p><p>  結(jié)構(gòu)體中的說(shuō)明語(yǔ)句是對(duì)結(jié)構(gòu)體的功能描述語(yǔ)句中將要用到的信號(hào)(signal)、數(shù)據(jù)類(lèi)型(type)、常數(shù)(c

29、onstant)、元件(component)、函數(shù)()、和過(guò)程()等加以說(shuō)明的語(yǔ)句。但在一個(gè)結(jié)構(gòu)體中說(shuō)明和定義的數(shù)據(jù)類(lèi)型、常數(shù)、元件、函數(shù)和過(guò)程只能用于這個(gè)結(jié)構(gòu)體中,若希望其能用于其他的實(shí)體或結(jié)構(gòu)體中,則需要專(zhuān)門(mén)的程序包來(lái)處理。</p><p> ?。?)功能描述語(yǔ)句結(jié)構(gòu)</p><p>  結(jié)構(gòu)體功能描述可以含有五種不同類(lèi)型的,且是以并行方式工作的語(yǔ)句結(jié)構(gòu)。而在每一語(yǔ)句結(jié)構(gòu)內(nèi)部可能含有并

30、行運(yùn)行的邏輯描述語(yǔ)句或順序運(yùn)行的邏輯描述語(yǔ)句。各語(yǔ)句結(jié)構(gòu)的基本組成和功能分別是:</p><p> ?、賶K語(yǔ)句是由一系列并行執(zhí)行語(yǔ)句構(gòu)成的組合體,它的功能是將結(jié)構(gòu)體中的并行語(yǔ)句組成一個(gè)或多個(gè)模塊從而使程序結(jié)構(gòu)清晰易讀。</p><p> ?、谶M(jìn)程語(yǔ)句定義順序語(yǔ)句模塊,用以將從外部獲得的信號(hào)值,或內(nèi)部的運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值。</p><p> ?、坌盘?hào)賦值語(yǔ)句

31、將設(shè)計(jì)實(shí)體內(nèi)的處理結(jié)果向定義的信號(hào)或界面端口進(jìn)行賦值。</p><p>  ④子程序調(diào)用語(yǔ)句用于調(diào)用一個(gè)已設(shè)計(jì)好的子程序。</p><p> ?、菰Z(yǔ)句對(duì)其他的設(shè)計(jì)實(shí)體進(jìn)行元件的調(diào)用說(shuō)明,并將此元件的端口與其他的元件、信號(hào)或高層次實(shí)體的界面端口進(jìn)行連接。</p><p>  2出租車(chē)計(jì)費(fèi)器的總體設(shè)計(jì)</p><p>  2.1 系統(tǒng)總體

32、設(shè)計(jì)要求</p><p>  本文將利用VHDL語(yǔ)言設(shè)計(jì)一個(gè)出租車(chē)計(jì)費(fèi)器的計(jì)費(fèi)系統(tǒng),具體要求如下:</p><p>  白天:行程1公里之內(nèi),起步價(jià)5元,以后每公里1元,超過(guò)3公里加收空車(chē)費(fèi)6元。</p><p>  黑夜:行程1公里之內(nèi),起步價(jià)7元,以后每公里2元,超過(guò)4公里加收空車(chē)費(fèi)8元。</p><p>  能顯示行駛公里數(shù),計(jì)費(fèi)器費(fèi)用

33、;</p><p>  可以實(shí)現(xiàn)加速,停車(chē),費(fèi)用路程隨之變化;</p><p>  可以實(shí)現(xiàn)白天黑夜由按鍵轉(zhuǎn)換;</p><p>  可以任意時(shí)刻復(fù)位為路程為零,而計(jì)費(fèi)為起始值。</p><p>  計(jì)價(jià)范圍0—99.9元,計(jì)價(jià)分辨率為0.1元,行程范圍為0——9.999公里,分辨率為0.001公里。</p><p>

34、  2.2 出租車(chē)計(jì)費(fèi)器系統(tǒng)工作流程圖</p><p>  對(duì)出租車(chē)計(jì)費(fèi)器系統(tǒng)的工作進(jìn)行分析,即出租車(chē)計(jì)費(fèi)器工作流程圖如下圖所示</p><p>  出租車(chē)載客后,啟動(dòng)計(jì)費(fèi)器,整個(gè)系統(tǒng)開(kāi)始工作,進(jìn)入初始化狀態(tài),即計(jì)程從0開(kāi)始,</p><p>  若按鍵為1,則為白天。按鍵為0,則為黑夜。白天:行程1公里之內(nèi),起步價(jià)5元,以后每公里1元,超過(guò)3公里加收空車(chē)費(fèi)6元。黑

35、夜:行程1公里之內(nèi),起步價(jià)7元,以后每公里2元,超過(guò)4公里加收空車(chē)費(fèi)8元。再根據(jù)加速旋鈕判斷行駛還是停止。出租車(chē)停止乘客下車(chē)后,按下復(fù)位信號(hào),則所有計(jì)數(shù)器復(fù)位。</p><p>  3.出租車(chē)計(jì)費(fèi)器系統(tǒng)的VHDL程序模塊設(shè)計(jì)</p><p>  根據(jù)出租車(chē)計(jì)費(fèi)器工作流程圖可劃分為4大模塊:計(jì)程模塊、白天計(jì)費(fèi)模塊、黑夜計(jì)費(fèi)模塊、顯示模塊。</p><p><b&

36、gt; ?。?)計(jì)程模塊:</b></p><p>  process(Motor)</p><p><b>  begin</b></p><p>  if(Rst='0') then</p><p>  Meter1<=0;</p><p>  Meter1K

37、<=0;</p><p>  Meter10<=0;</p><p>  Meter100<=0;</p><p>  elsif(Motor'event and Motor='1') then</p><p>  if(Meter1=9) then</p><p>  Met

38、er1<=0;</p><p>  if(Meter10=9) then</p><p>  Meter10<=0;</p><p>  if(Meter100=9) then</p><p>  Meter100<=0;</p><p>  if(Meter1K=9) then</p>

39、<p>  Meter1K<=0;</p><p><b>  else </b></p><p>  Meter1K<=Meter1K+1;</p><p><b>  end if;</b></p><p><b>  else</b></p&

40、gt;<p>  Meter100<=Meter100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Meter10<=Meter10+1;</p><p><b>  end if;&

41、lt;/b></p><p><b>  else </b></p><p>  Meter1<=Meter1+1;</p><p><b>  end if;</b></p><p><b>  end if; </b></p><p> 

42、 end process;</p><p>  通過(guò)電機(jī)脈沖輸入來(lái)控制車(chē)輪的運(yùn)行。運(yùn)行多少模擬多少路程。</p><p> ?。?)白天計(jì)費(fèi)模塊:</p><p>  process(Clk)</p><p><b>  begin</b></p><p>  if(Rst='0'

43、) then</p><p>  Money1<=0;</p><p>  Money10<=0;</p><p>  Money100<=0;</p><p>  elsif(Clk'event and Clk='1') then</p><p>  if daytime =

44、'0' then --bai tian</p><p>  if(Meter1K<1) then </p><p>  Money100<=0;</p><p>  Money10<=5; </p><p>  Money1<=0;</p><p>  Old_Mon

45、ey1<=0;</p><p><b>  else</b></p><p>  Money1<=Meter100;</p><p>  Old_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p&g

46、t;  if(Money10=9) then</p><p>  Money10<=0;</p><p>  if(Money100=9) then</p><p>  Money100<=0;</p><p><b>  else </b></p><p>  Money100<

47、;=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Money10<=Money10+1;</p><p><b>  end if;</b></p><p&

48、gt;  end if; </p><p>  if (Meter1K=3) then</p><p>  Money100<=1;</p><p>  Money10<=3; </p><p>  Money1<=0;</p><p>  Old_Money1<=0;&l

49、t;/p><p>  --end if ;</p><p>  -------------</p><p>  if (Meter1K >2 )then</p><p>  Money1<=Meter100;</p><p>  Old_Money1<=Money1;</p><p&g

50、t;  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p><p>  Money10<=0;</p><p>  if(Money100=9) then</p><p>  Money100<=0;</p><p><

51、;b>  else </b></p><p>  Money100<=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Money10<=Money10+1;</p>

52、<p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if ;</b></p><p><b>  end if;</b></p><p><b>  e

53、nd if;</b></p><p>  通過(guò)時(shí)鐘信號(hào)來(lái)控制白天費(fèi)用,實(shí)現(xiàn)白天行程1公里之內(nèi),起步價(jià)5元,以后每公里1元,超過(guò)3公里加收空車(chē)費(fèi)6元。</p><p> ?。?)黑夜計(jì)費(fèi)模塊:</p><p>  if(Meter1K<1) then </p><p>  Money100<=0;</p>

54、<p>  Money10<=7; </p><p>  Money1<=0;</p><p>  Old_Money1<=0;</p><p><b>  else</b></p><p>  Money1<=Meter100;</p><p>  Ol

55、d_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p><p>  Money10<=1;</p><p>  if(Money100=9) then</p><p>  

56、Money100<=0;</p><p><b>  else </b></p><p>  Money100<=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><

57、p>  Money10<=Money10+2;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  ----------------</

58、p><p>  if (Meter1K=4) then</p><p>  Money100<=2;</p><p>  Money10<=1; </p><p>  Money1<=0;</p><p>  Old_Money1<=0;</p><p>  if (Met

59、er1K>3) then </p><p>  Money1<=Meter100;</p><p>  Old_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p><p&

60、gt;  Money10<=1;</p><p>  if(Money100=9) then</p><p>  Money100<=0;</p><p><b>  else </b></p><p>  Money100<=Money100+1;</p><p><b&

61、gt;  end if;</b></p><p><b>  else</b></p><p>  Money10<=Money10+2;</p><p><b>  end if;</b></p><p>  end if; </p><

62、;p>  end if; </p><p><b>  end if ;</b></p><p><b>  end if ;</b></p><p><b>  end if ;</b></p><p>  通過(guò)時(shí)鐘信號(hào)來(lái)控制黑夜費(fèi)用,實(shí)現(xiàn)黑夜行程1公里之

63、內(nèi),起步價(jià)7元,以后每公里2元,超過(guò)4公里加收空車(chē)費(fèi)8元。</p><p><b> ?。?)顯示模塊:</b></p><p>  process(SEG_SEL) </p><p><b>  begin</b></p><p>  case (SEG_SEL+1) is</p&

64、gt;<p>  when "000"=>Disp_Temp<=Meter1K;dp<='0';</p><p>  when "001"=>Disp_Temp<=Meter100;dp<='1';</p><p>  when "010"=>

65、Disp_Temp<=Meter10;dp<='0';</p><p>  when "011"=>Disp_Temp<=Meter1;dp<='0';</p><p>  when "100"=>Disp_Temp<=10;dp<='0';</p&

66、gt;<p>  when "101"=>Disp_Temp<=Money100;dp<='0';</p><p>  when "110"=>Disp_Temp<=Money10;dp<='0';</p><p>  when "111"=>

67、Disp_Temp<=Money1;dp<='1';</p><p>  end case; </p><p>  end process;</p><p>  process(Clk)</p><p><b>  begin</b></p><p>  

68、if(Clk'event and Clk='1') then </p><p>  SEG_SEL<=SEG_SEL+1;</p><p>  if (SEG_SEL=9) then SEG_SEL<="000";</p><p><b>  else </b></p>

69、<p>  Display<=Disp_Decode;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(Disp_Temp) <

70、/p><p><b>  begin</b></p><p>  case Disp_Temp is</p><p>  when 0=>Disp_Decode<="0111111"; --0</p><p>  when 1=>Disp_Decode<="00001

71、10"; --1</p><p>  when 2=>Disp_Decode<="1011011"; --2</p><p>  when 3=>Disp_Decode<="1001111"; --3</p><p>  when 4=>Disp_Decode<=&qu

72、ot;1100110"; --4</p><p>  when 5=>Disp_Decode<="1101101"; --5</p><p>  when 6=>Disp_Decode<="1111101"; --6</p><p>  when 7=>Disp_Decode

73、<="0000111"; --7</p><p>  when 8=>Disp_Decode<="1111111"; --8</p><p>  when 9=>Disp_Decode<="1101111"; --9</p><p>  when 10=>Di

74、sp_Decode<="1000000"; ---</p><p>  when others=>Disp_Decode<="0000000"; </p><p><b>  end case;</b></p><p>  end process; </p>&l

75、t;p>  可實(shí)現(xiàn)顯示高四位為路程,第三位顯示價(jià)格,同時(shí)可顯示小數(shù)點(diǎn)。可以直觀的讀出出租車(chē)所行駛的公里數(shù)和乘客所需付的費(fèi)用。</p><p>  4.出租車(chē)計(jì)費(fèi)器的系統(tǒng)仿真結(jié)果及分析</p><p><b>  4.1 管腳分配圖</b></p><p>  輸入輸出信號(hào)解釋說(shuō)明:</p><p>  輸入信號(hào):C

76、LK, 系統(tǒng)時(shí)鐘信號(hào),頻率1kHZ;</p><p>  daytime,啟動(dòng)信號(hào),當(dāng)為1時(shí),是黑夜,當(dāng)為0時(shí),是白天 </p><p><b>  Rst,復(fù)位信號(hào),</b></p><p>  Motor,電機(jī)脈沖輸入 </p><p>  輸出信號(hào):SEG_SEL[

77、0] ,SEG_SEL[1], SEG_SEL[2]片選信號(hào)的輸出,用于連接實(shí)驗(yàn)向上的74LS138芯片的管腳,在實(shí)驗(yàn)鎖管腳步驟中確定。起到控制數(shù)碼管顯示的作用。</p><p>  Display[0],Display[1],Display[2],Display[3],Display[4],Displa-y[5],Display[6],用于數(shù)碼管顯示。</p><p>  dp,用于控制

78、小數(shù)點(diǎn),與實(shí)驗(yàn)箱上數(shù)碼管的小數(shù)點(diǎn)端H相連。</p><p>  4.2 仿真波形圖分析</p><p>  5.結(jié)論及個(gè)人心得體會(huì)</p><p>  通過(guò)這次緊張而又充實(shí)的EDA課程設(shè)計(jì),我感受到了VHDL語(yǔ)言和普通軟件語(yǔ)言之間的區(qū)別,也能夠更加熟練地運(yùn)用VHDL語(yǔ)言進(jìn)行邏輯電路的設(shè)計(jì)了,受益匪淺。我們所做的課題是出租車(chē)計(jì)費(fèi)器的設(shè)計(jì)。老師給了我們?nèi)蝿?wù)書(shū)和簡(jiǎn)單的程序

79、模塊,在這十多天的實(shí)驗(yàn)操作中,我和我的組員馬翔不斷的完善自己的設(shè)計(jì)要求,將自己的想法融入到實(shí)驗(yàn)的程序中去。最終通過(guò)仿真達(dá)到了自己預(yù)想的效果。有種先苦后甜的成就感。</p><p>  同時(shí)在本次試驗(yàn)中,我們熟練的掌握了Quartus II軟件的使用。學(xué)會(huì)了如何把自己所設(shè)計(jì)的程序,通過(guò)軟件用波形仿真出來(lái),再通過(guò)試驗(yàn)箱仿真出來(lái)。</p><p>  在這次課程設(shè)計(jì)過(guò)程中,得到了很多人的幫助。首

80、先要感謝我的指導(dǎo)老師,包括肖鴻老師,賀科學(xué)老師,謝文彪老師以及吳一帆老師等。在課程設(shè)計(jì)上給予我的幫助,提供給我的支持與建議,特別是幫助我解決了我半個(gè)多月來(lái)一直沒(méi)有循環(huán)出來(lái)的計(jì)費(fèi)循環(huán)程序,這是我能順利完成這次報(bào)告的主要原因,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學(xué)到了許多新知識(shí),而且也開(kāi)闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過(guò)我的同學(xué)們,他們也為我解決了不少難題,同時(shí)也感謝學(xué)院為我提供了良好的做課程設(shè)計(jì)的環(huán)境。這些東西是無(wú)

81、法再平時(shí)上課的過(guò)程中學(xué)到的,實(shí)踐出真知,只有在實(shí)驗(yàn)中我們才能更好的學(xué)到東西,不用紙上談兵,做無(wú)用功。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 汪金愛(ài),劉達(dá). EDA技術(shù)與CPLD應(yīng)用. 今日電子,2004,</p><p>  [2] 朱彩蓮,楊洋. EDA技術(shù)的發(fā)展與應(yīng)用. 萍鄉(xiāng)高等專(zhuān)科學(xué)校學(xué)報(bào),2004,4

82、</p><p>  [3] 孫鵬,陳景. 數(shù)字電子技術(shù)基礎(chǔ)與設(shè)計(jì). 大連:大連理工大學(xué)出版社,2004.4.</p><p>  [4] 王長(zhǎng)宏,陳朝陽(yáng),鄒雪城,應(yīng)建華. VHDL設(shè)計(jì)實(shí)例及其仿真與綜合. 電子工程師,2001,11:</p><p>  [5] 趙立民,于海雁,胡慶,龐杰. 可編程邏輯器件與數(shù)字系統(tǒng)設(shè)計(jì). 北京:機(jī)械工業(yè)出版社,2003.5. 4

83、</p><p>  [6]潘松,黃繼業(yè),《EDA技術(shù)實(shí)用教程》,科學(xué)出版社,2002</p><p>  [7]劉昌華,《數(shù)字邏輯EDA設(shè)計(jì)與實(shí)踐》,國(guó)防工業(yè)出版社,2006</p><p>  [8]譚會(huì)生,《EDA技術(shù)綜合應(yīng)用實(shí)力與分析》,西安電子科技大學(xué)出版社,2004</p><p>  [9]王振紅,張常年,《綜合電子設(shè)計(jì)與實(shí)踐》

84、,清華大學(xué)出版社,2005</p><p>  [10]李宗伯,《VHDL設(shè)計(jì)表示與綜合》,機(jī)械工業(yè)出版社,2002</p><p>  [11]邊計(jì)年,薛宏熙,《VHDL設(shè)計(jì)電子線路》,清華大學(xué)出版社,2002</p><p>  附錄A 出租車(chē)計(jì)費(fèi)器仿真結(jié)果</p><p><b>  白天起始價(jià)五元</b><

85、/p><p>  白天超過(guò)一公里,每公里1元</p><p>  白天超過(guò)三公里,加6元空車(chē)返回費(fèi)</p><p><b>  黑夜起始價(jià)七元</b></p><p>  黑夜超過(guò)一公里,每公里2元</p><p>  黑夜超過(guò)三公里,加8元空車(chē)返回費(fèi)</p><p>  附錄

86、B 出租車(chē)計(jì)費(fèi)器的完整程序</p><p>  Title:出租車(chē)計(jì)費(fèi)器</p><p>  Author:lijie and maxiang </p><p>  Data: 2012-6-6 </p><p>  library ieee;</p><p>  u

87、se ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  ---------------------------------------------------------------

88、-----</p><p>  entity taxi is</p><p>  port( Clk : in std_logic; --時(shí)鐘輸入</p><p>  daytime : in std_logic; --baitian yu hei ye control</p><p>  Rst

89、 : in std_logic; --復(fù)位輸入</p><p>  Motor : in std_logic; --電機(jī)脈沖輸入</p><p>  Display : out std_logic_vector(6 downto 0); --七段碼管顯示輸出</p><p>  dp : out std_lo

90、gic; --xiaoshudianshuchu</p><p>  SEG_SEL : buffer std_logic_vector(2 downto 0) --七段碼管掃描驅(qū)動(dòng)</p><p><b>  ); </b></p><p><b>  end taxi;</b></p>

91、<p>  --------------------------------------------------------------------</p><p>  architecture one of taxi is</p><p>  signal Disp_Temp : integer range 0 to 15;</p><p>  si

92、gnal Disp_Decode: std_logic_vector(6 downto 0);</p><p>  signal Meter1,Meter10,Meter100,Meter1K : integer range 0 to 9; </p><p>  signal Money1,Money10,Money100 : integer range 0 to 9;</p

93、><p>  signal Old_Money1 : integer range 0 to 9;</p><p><b>  begin</b></p><p>  process(Motor)</p><p><b>  begin</b></p><p>  if(Rst

94、='0') then</p><p>  Meter1<=0;</p><p>  Meter1K<=0;</p><p>  Meter10<=0;</p><p>  Meter100<=0;</p><p>  elsif(Motor'event and Motor

95、='1') then</p><p>  if(Meter1=9) then</p><p>  Meter1<=0;</p><p>  if(Meter10=9) then</p><p>  Meter10<=0;</p><p>  if(Meter100=9) then</p

96、><p>  Meter100<=0;</p><p>  if(Meter1K=9) then</p><p>  Meter1K<=0;</p><p><b>  else </b></p><p>  Meter1K<=Meter1K+1;</p><p&

97、gt;<b>  end if;</b></p><p><b>  else</b></p><p>  Meter100<=Meter100+1;</p><p><b>  end if;</b></p><p><b>  else</b>&

98、lt;/p><p>  Meter10<=Meter10+1;</p><p><b>  end if;</b></p><p><b>  else </b></p><p>  Meter1<=Meter1+1;</p><p><b>  end i

99、f;</b></p><p><b>  end if; </b></p><p>  end process;</p><p>  process(Clk)</p><p><b>  begin</b></p><p>  if(Rst='0'

100、) then</p><p>  Money1<=0;</p><p>  Money10<=0;</p><p>  Money100<=0;</p><p>  elsif(Clk'event and Clk='1') then</p><p>  if daytime =

101、'0' then --bai tian</p><p>  if(Meter1K<1) then --里程小于1Km是顯示基價(jià)</p><p>  Money100<=0;</p><p>  Money10<=5; --起步價(jià)5元</p><p>  Money1<=0;</p>

102、;<p>  Old_Money1<=0;</p><p><b>  else</b></p><p>  Money1<=Meter100;</p><p>  Old_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) th

103、en</p><p>  if(Money10=9) then</p><p>  Money10<=0;</p><p>  if(Money100=9) then</p><p>  Money100<=0;</p><p><b>  else </b></p>&

104、lt;p>  Money100<=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Money10<=Money10+1;</p><p><b>  end if;</b&

105、gt;</p><p>  end if; </p><p>  if (Meter1K=3) then</p><p>  Money100<=1;</p><p>  Money10<=3; --duo shou 6 yuan </p><p>  Money1<=0;<

106、;/p><p>  Old_Money1<=0;</p><p>  --end if ;</p><p>  -------------</p><p>  if (Meter1K >2 )then</p><p>  Money1<=Meter100;</p><p>  Ol

107、d_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p><p>  Money10<=0;</p><p>  if(Money100=9) then</p><p>  

108、Money100<=0;</p><p><b>  else </b></p><p>  Money100<=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><

109、p>  Money10<=Money10+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if ;</b></p><p><b>  end if;<

110、/b></p><p><b>  end if;</b></p><p>  else --hei ye </p><p>  if(Meter1K<1) then --里程小于1Km是顯示基價(jià)</p><p>  Money100<=0;</p><p>  Money

111、10<=7; --起步價(jià)7元</p><p>  Money1<=0;</p><p>  Old_Money1<=0;</p><p><b>  else</b></p><p>  Money1<=Meter100;</p><p>  Old_Money1&l

112、t;=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p><p>  Money10<=1;</p><p>  if(Money100=9) then</p><p>  Money100&l

113、t;=0;</p><p><b>  else </b></p><p>  Money100<=Money100+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  Mon

114、ey10<=Money10+2;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  ----------------</p><

115、;p>  if (Meter1K=4) then</p><p>  Money100<=2;</p><p>  Money10<=1; --duo shou 8 yuan </p><p>  Money1<=0;</p><p>  Old_Money1<=0;</p><p>

116、;  if (Meter1K>3) then </p><p>  Money1<=Meter100;</p><p>  Old_Money1<=Money1;</p><p>  if(Old_Money1=9 and Money1=0) then</p><p>  if(Money10=9) then</p&g

117、t;<p>  Money10<=1;</p><p>  if(Money100=9) then</p><p>  Money100<=0;</p><p><b>  else </b></p><p>  Money100<=Money100+1;</p><p

118、><b>  end if;</b></p><p><b>  else</b></p><p>  Money10<=Money10+2;</p><p><b>  end if;</b></p><p>  end if; </

119、p><p>  end if; </p><p><b>  end if ;</b></p><p><b>  end if ;</b></p><p><b>  end if ;</b></p><p>  end process;&l

120、t;/p><p>  process(SEG_SEL) </p><p><b>  begin</b></p><p>  case (SEG_SEL+1) is</p><p>  when "000"=>Disp_Temp<=Meter1K;dp<='0'

121、;</p><p>  when "001"=>Disp_Temp<=Meter100;dp<='1';</p><p>  when "010"=>Disp_Temp<=Meter10;dp<='0';</p><p>  when "011&qu

122、ot;=>Disp_Temp<=Meter1;dp<='0';</p><p>  when "100"=>Disp_Temp<=10;dp<='0';</p><p>  when "101"=>Disp_Temp<=Money100;dp<='0'

123、;;</p><p>  when "110"=>Disp_Temp<=Money10;dp<='0';</p><p>  when "111"=>Disp_Temp<=Money1;dp<='1';</p><p>  end case; &

124、lt;/p><p>  end process;</p><p>  process(Clk)</p><p><b>  begin</b></p><p>  if(Clk'event and Clk='1') then --掃描累加 </p><p>  SEG_S

125、EL<=SEG_SEL+1;</p><p>  if (SEG_SEL=9) then SEG_SEL<="000";</p><p><b>  else </b></p><p>  Display<=Disp_Decode;</p><p><b>  end if

126、;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(Disp_Temp) --顯示轉(zhuǎn)換</p><p><b>  begin</b></p><p>  ca

127、se Disp_Temp is</p><p>  when 0=>Disp_Decode<="0111111"; --0</p><p>  when 1=>Disp_Decode<="0000110"; --1</p><p>  when 2=>Disp_Decode<=&qu

128、ot;1011011"; --2</p><p>  when 3=>Disp_Decode<="1001111"; --3</p><p>  when 4=>Disp_Decode<="1100110"; --4</p><p>  when 5=>Disp_Decode

129、<="1101101"; --5</p><p>  when 6=>Disp_Decode<="1111101"; --6</p><p>  when 7=>Disp_Decode<="0000111"; --7</p><p>  when 8=>Dis

130、p_Decode<="1111111"; --8</p><p>  when 9=>Disp_Decode<="1101111"; --9</p><p>  when 10=>Disp_Decode<="1000000"; ---</p><p>  when

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論