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

下載本文檔

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

文檔簡介

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

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

3、p>  Quartus II 是Altera公司的綜合性PLD/FPGA開發(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宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個階段使用熟悉的第三方EDA工具。 </p>&l

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

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

7、s II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。 </p><p><b>  功能</b></p><p>  Quartus II提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(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),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊; </p><p>  功能強(qiáng)大的邏輯綜合工具; </p><p>  完備的電路功能仿真與時序邏輯仿

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

10、  自動定位編譯錯誤; </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語言基礎(chǔ)</p><p&

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

12、;結(jié)構(gòu)體說明用于描述該設(shè)計(jì)實(shí)體內(nèi)部工作的邏輯關(guān)系,是不可視部分。在一個實(shí)體中,允許含有一個或多個結(jié)構(gòu)體,而在每一個結(jié)構(gòu)體中又可以含有一個或多個進(jìn)程以及其他的語句。根據(jù)需要,實(shí)體還可以有配置說明語句。配置說明語句主要用于以層次化的方式對特定的設(shè)計(jì)實(shí)體進(jìn)行元件例化,或是為實(shí)體選定某個特定的結(jié)構(gòu)體。圖4-1顯示出了VHDL程序設(shè)計(jì)中比較全面的組成結(jié)構(gòu)。</p><p>  VHDL語言的總體結(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>  [端口說明];</b></p><p><b>  END 實(shí)體名;</b></p><p>  ARCHITECTURE 構(gòu)造體名 OF 實(shí)體名 IS</p><p>  [定義語句]內(nèi)部信號、常數(shù)、數(shù)據(jù)類型、函數(shù)等的定義;</p><p

15、><b>  BEGIN</b></p><p><b>  [并行處理語句];</b></p><p><b>  END 構(gòu)造體名;</b></p><p>  在程序開始的地方引用了IEEE庫,3個USE語句使得調(diào)用該庫的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ù)類型,及一些數(shù)據(jù)類型的轉(zhuǎn)換函數(shù)。STD_LOGIC_ARITH程序包,其中預(yù)定義的內(nèi)容為有符號和無符號類型,以及基于這些類型的算術(shù)運(yùn)算。STD_LOGIC_UNSIGNED程序包,其中預(yù)定義的內(nèi)容為基于STD_

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

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

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

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

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

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

23、對語句中的所有操作數(shù)的數(shù)據(jù)類型都有嚴(yán)格的規(guī)定。一個實(shí)體通常有一個或多個端口,端口類似于原理圖部件符號上的管腳。實(shí)體與外界交流的信息必須通過端口通道流入或流出。</p><p>  IEEE1076標(biāo)準(zhǔn)包中定義了4種常用的端口模式,各端口模式的功能及符號</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來說明。一般而言,一個完整的結(jié)構(gòu)體由以下兩個基層次組成:</p><p>  1、對數(shù)據(jù)類型、常數(shù)、信號、

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

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

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

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

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

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

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

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

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

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

35、夜:行程1公里之內(nèi),起步價7元,以后每公里2元,超過4公里加收空車費(fèi)8元。再根據(jù)加速旋鈕判斷行駛還是停止。出租車停止乘客下車后,按下復(fù)位信號,則所有計(jì)數(shù)器復(fù)位。</p><p>  3.出租車計(jì)費(fèi)器系統(tǒng)的VHDL程序模塊設(shè)計(jì)</p><p>  根據(jù)出租車計(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>  通過電機(jī)脈沖輸入來控制車輪的運(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>  通過時鐘信號來控制白天費(fèi)用,實(shí)現(xiàn)白天行程1公里之內(nèi),起步價5元,以后每公里1元,超過3公里加收空車費(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>  通過時鐘信號來控制黑夜費(fèi)用,實(shí)現(xiàn)黑夜行程1公里之

63、內(nèi),起步價7元,以后每公里2元,超過4公里加收空車費(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)顯示高四位為路程,第三位顯示價格,同時可顯示小數(shù)點(diǎn)??梢灾庇^的讀出出租車所行駛的公里數(shù)和乘客所需付的費(fèi)用。</p><p>  4.出租車計(jì)費(fèi)器的系統(tǒng)仿真結(jié)果及分析</p><p><b>  4.1 管腳分配圖</b></p><p>  輸入輸出信號解釋說明:</p><p>  輸入信號:C

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

77、0] ,SEG_SEL[1], SEG_SEL[2]片選信號的輸出,用于連接實(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é)論及個人心得體會</p><p>  通過這次緊張而又充實(shí)的EDA課程設(shè)計(jì),我感受到了VHDL語言和普通軟件語言之間的區(qū)別,也能夠更加熟練地運(yùn)用VHDL語言進(jìn)行邏輯電路的設(shè)計(jì)了,受益匪淺。我們所做的課題是出租車計(jì)費(fèi)器的設(shè)計(jì)。老師給了我們?nèi)蝿?wù)書和簡單的程序

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

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

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

82、</p><p>  [3] 孫鵬,陳景. 數(shù)字電子技術(shù)基礎(chǔ)與設(shè)計(jì). 大連:大連理工大學(xué)出版社,2004.4.</p><p>  [4] 王長宏,陳朝陽,鄒雪城,應(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í)踐》,國防工業(yè)出版社,2006</p><p>  [8]譚會生,《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 出租車計(jì)費(fèi)器仿真結(jié)果</p><p><b>  白天起始價五元</b><

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

86、B 出租車計(jì)費(fèi)器的完整程序</p><p>  Title:出租車計(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; --時鐘輸入</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ū)動</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是顯示基價</p><p>  Money100<=0;</p><p>  Money10<=5; --起步價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是顯示基價</p><p>  Money100<=0;</p><p>  Money

111、10<=7; --起步價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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論