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

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 設(shè)計(jì)背景1</p><p>  1.2 QUARTUS II簡介1</p><p>  1.3 VHDL語言基礎(chǔ)2</p><p>

2、  2 出租車計(jì)費(fèi)器總體設(shè)計(jì)結(jié)構(gòu)2</p><p>  2.1 系統(tǒng)設(shè)計(jì)要求和目的2</p><p>  2.2.1 系統(tǒng)設(shè)計(jì)要求2</p><p>  2.2.1 系統(tǒng)設(shè)計(jì)目的2</p><p>  2.2 設(shè)計(jì)思路3</p><p>  2.3 系統(tǒng)總體結(jié)構(gòu)3</p><

3、p>  2.4 出租車計(jì)費(fèi)器系統(tǒng)工作流程圖4</p><p>  3 出租車計(jì)費(fèi)器的實(shí)現(xiàn)5</p><p>  3.1 出租車計(jì)費(fèi)器的頂層原理圖5</p><p>  3.2 系統(tǒng)各功能模塊的實(shí)現(xiàn)5</p><p>  3.2.1 計(jì)費(fèi)模塊JIFEI5</p><p>  3.2.2 計(jì)量模

4、塊JILIANG6</p><p>  3.2.3 顯示控制模塊SELTIME7</p><p>  3.2.4 顯示模塊DELED7</p><p>  4 出租車計(jì)費(fèi)器系統(tǒng)仿真及分析8</p><p>  4.1 計(jì)費(fèi)系統(tǒng)的仿真8</p><p>  4.2 單元模塊的仿真及分析10</

5、p><p>  4.2.1 譯碼顯示模塊的仿真及分析10</p><p>  4.2.2 顯示控制模塊的仿真及分析12</p><p>  4.2.3 計(jì)量模塊的仿真及分析13</p><p>  4.2.4 計(jì)費(fèi)模塊的仿真及分析13</p><p>  5 鎖定管腳及硬件實(shí)現(xiàn)14</p>

6、<p>  5.1 鎖定管腳圖14</p><p>  5.2 硬件實(shí)現(xiàn)14</p><p>  5.2.1 顯示結(jié)果的幾種情況15</p><p>  5.2.2 硬件實(shí)現(xiàn)總結(jié)16</p><p>  6 設(shè)計(jì)體會與總結(jié)17</p><p><b>  參考文獻(xiàn)18<

7、/b></p><p><b>  附 錄19</b></p><p>  1 JILIANG模塊的VHDL編程19</p><p>  2 JIFEI模塊的VHDL編程21</p><p>  3 SELTIME控制模塊的VHDL編程22</p><p>  4 DE

8、LED模塊的VHDL編程23</p><p><b>  1 緒論</b></p><p><b>  1.1 設(shè)計(jì)背景</b></p><p>  隨著我國社會經(jīng)濟(jì)的全面發(fā)展,各大中小城市的出租車營運(yùn)事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普通的交通工具。于是,出租車行業(yè)以低價高質(zhì)的服務(wù)給人們帶來了出行的享

9、受。但是總存在著買賣糾紛困擾著行業(yè)的發(fā)展。而在出租車行業(yè)中解決這一矛盾的最好方法就是改良計(jì)價器。汽車計(jì)價器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具,它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價器無論是對廣大出租車司機(jī)朋友還是乘客來說都是很必要的。因此,汽車計(jì)價器的研究也是具有一定意義的。出租車計(jì)費(fèi)器是出租車營運(yùn)收費(fèi)的專用智能化儀表,是出租車市場規(guī)范化,標(biāo)準(zhǔn)化以及減少司機(jī)與乘客之間發(fā)生糾紛的重要設(shè)備。

10、一種功能完備,簡單易用,計(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 6.0軟件下進(jìn)行仿真,證明所設(shè)計(jì)的電路系統(tǒng)完成了出租車計(jì)價的功能,各項(xiàng)指標(biāo)符合設(shè)計(jì)要求,具有一定的實(shí)用性。</p><p>  1.2 QUARTUS II簡介</p><p&

11、gt;  QUARTUS II 是Altera公司的綜合性CPLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整CPLD設(shè)計(jì)流程。QUARTUS II 支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺。Altera QUARTUS II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境

12、, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。</p><p>  1.3 VHDL語言基礎(chǔ)</p><p>  一般而言,一個相對完整的VHDL語言程序至少應(yīng)三個基本組成部分:①庫(Library)、程序包(Package)使用說明;②實(shí)體(Entity)說明;③實(shí)體對應(yīng)的結(jié)構(gòu)體(Architecture)說明。其中,庫、程序包使用說明用于打開(調(diào)用)本設(shè)計(jì)

13、實(shí)體將要用到的庫、程序包;實(shí)體說明用于描述該設(shè)計(jì)實(shí)體與外界的接口信號說明,是可視部分;結(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)體。</p><p>  2 出租車計(jì)費(fèi)

14、器總體設(shè)計(jì)結(jié)構(gòu)</p><p>  2.1 系統(tǒng)設(shè)計(jì)要求和目的</p><p>  2.2.1 系統(tǒng)設(shè)計(jì)要求</p><p>  1.起步價為5.0元,起步公里為3公里;</p><p>  2.超過3公里,每公里按1元收費(fèi),也可每0.1公里按0.1元收費(fèi);</p><p>  3.等候時間累計(jì)1分鐘,按每分鐘0.

15、1元收費(fèi);</p><p>  4.用三個數(shù)碼管顯示總金額,最大值為99.9元;用三個數(shù)碼管顯示總里程,最大值99.9公里;用兩個數(shù)碼管顯示等待時間,最大值99分鐘。</p><p>  2.2.1 系統(tǒng)設(shè)計(jì)目的</p><p>  1.通過這次實(shí)驗(yàn)設(shè)計(jì)使我們加深對EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)相關(guān)理論和概念的理解,培養(yǎng)我們的理論聯(lián)系實(shí)際的能力,特別是實(shí)際動手能力。&l

16、t;/p><p>  2.學(xué)習(xí)使用QUARTUS II軟件設(shè)計(jì)。 </p><p>  3.根據(jù)原理圖學(xué)會用VHDL語言設(shè)計(jì)時序電路。</p><p>  4.學(xué)會繪制功能仿真波形圖。</p><p><b>  2.2 設(shè)計(jì)思路</b></p><p>  根據(jù)設(shè)計(jì)要求,電路具有計(jì)時、計(jì)

17、程、計(jì)費(fèi)功能,用數(shù)碼管顯示行駛公里數(shù)、等待時間、收費(fèi)金額,行車?yán)锍毯偷却龝r間的處理電路將汽車行駛的里程數(shù)、轉(zhuǎn)換成與之成正比的計(jì)費(fèi)脈沖,然后由計(jì)費(fèi)電路轉(zhuǎn)換成收費(fèi)金額,實(shí)驗(yàn)中以一個脈沖模擬汽車前進(jìn)十米,則每100個脈沖表示1公里,3公里以后每0.1公里產(chǎn)生一個計(jì)費(fèi)脈沖,一個1HZ的脈沖用來表示等待時間,60個脈沖代表1分鐘,1分鐘即60個脈沖產(chǎn)生一個等待計(jì)費(fèi)脈沖,然后用計(jì)費(fèi)電路對計(jì)費(fèi)脈沖進(jìn)行計(jì)費(fèi)。</p><p> 

18、 2.3 系統(tǒng)總體結(jié)構(gòu)</p><p>  圖2-1 系統(tǒng)總體結(jié)構(gòu)圖</p><p>  出租車計(jì)費(fèi)器的組成如上圖所示,通過控制模塊以高低脈沖模擬出租汽車啟動、行駛、暫停,具有控制作用;通過控制模塊控制出租車的狀態(tài)來選擇出租車是計(jì)里程還是計(jì)等待時間,相應(yīng)產(chǎn)生的時間計(jì)費(fèi)脈沖信號和里程脈沖信號來計(jì)費(fèi),譯碼/動態(tài)掃描模塊將等待時間、路程與費(fèi)用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管;數(shù)碼管顯示

19、模塊將里程數(shù)、等待時間和計(jì)費(fèi)金額用數(shù)碼管顯示。</p><p>  2.4 出租車計(jì)費(fèi)器系統(tǒng)工作流程圖</p><p>  圖2-2 出租車計(jì)費(fèi)系統(tǒng)工作流程圖</p><p>  出租車載客后,啟動計(jì)費(fèi)器,整個系統(tǒng)開始工作,進(jìn)入初始化狀態(tài),即計(jì)程從0開始,計(jì)費(fèi)從5.0元開始。再根據(jù)BREAK信號判斷行駛還是暫停。若是行駛狀態(tài),計(jì)費(fèi)器開始進(jìn)行里程計(jì)數(shù),當(dāng)里程超過3

20、公里時,計(jì)費(fèi)器開始累加,按每0.1公里收費(fèi)0.1元計(jì)算,計(jì)程器則繼續(xù),否則計(jì)費(fèi)器不變。若是暫停狀態(tài),計(jì)費(fèi)器開始進(jìn)行等候時間計(jì)數(shù),當(dāng)?shù)群驎r間累計(jì)1分鐘,則每分鐘0.1元計(jì)費(fèi)。最后將等候時間、里程、計(jì)費(fèi)都顯示出來。</p><p>  3 出租車計(jì)費(fèi)器的實(shí)現(xiàn)</p><p>  3.1 出租車計(jì)費(fèi)器的頂層原理圖</p><p>  圖3-1 出租車計(jì)費(fèi)器頂層原理圖

21、</p><p>  原理圖中輸入部分分別是CLK:秒脈沖信號,1個脈沖代表1秒,則60個脈沖表示1分鐘。CLK1:10米脈沖信號,1個脈沖代表10米,則10個脈沖表示100米,100個脈沖代表1公里。START:計(jì)程車開啟信號;DRIVE:計(jì)費(fèi)器啟動信號;BREAK:等待信號,SEL為計(jì)數(shù)控制信號輸出端。</p><p>  3.2 系統(tǒng)各功能模塊的實(shí)現(xiàn)</p><

22、p>  3.2.1 計(jì)費(fèi)模塊JIFEI</p><p>  計(jì)費(fèi)(JIFEI)模塊也是本系統(tǒng)的核心,完成起步價計(jì)費(fèi),等待時間計(jì)費(fèi),里程計(jì)費(fèi)功能。計(jì)費(fèi)器啟動,顯示起步價5.0元,之后每來一個行駛里程計(jì)費(fèi)脈沖或者等待時間計(jì)費(fèi)脈沖,計(jì)費(fèi)金額自動加0.1元。計(jì)費(fèi)顯示用3位數(shù)碼管,所以計(jì)費(fèi)最大值為99.9元。其中CH2表示費(fèi)用的十位,CHI表示費(fèi)用的個位,CH0表示費(fèi)用的十分位。B為等待時間計(jì)費(fèi)脈沖信號或里程計(jì)費(fèi)脈

23、沖信號。</p><p>  圖3-2 JIFEI模塊圖</p><p>  3.2.2 計(jì)量模塊JILIANG</p><p>  圖3-3 JILIANG模塊圖</p><p>  本模塊是系統(tǒng)的核心模塊之一,能夠?qū)ν獠康男旭偩嚯x脈沖、等待時間脈沖進(jìn)行計(jì)數(shù)。因?yàn)樾旭偩嚯x每脈沖代表10米,所以計(jì)滿100個數(shù)就輸出一個行駛距離計(jì)費(fèi)脈沖,

24、因?yàn)?公里之內(nèi)屬于起步價,所以前3公里內(nèi)不輸出行駛距離計(jì)費(fèi)脈沖,因?yàn)橛?位數(shù)碼管來顯示行駛距離,其中兩位整數(shù),一位小數(shù),所以行駛距離最小分辨率為0.1公里,行駛距離脈沖每計(jì)10個數(shù),行駛距離輸出加0.1,行駛距離最大值為99.9公里。其中KM2為里程的十位,KM1為里程的個位,KM0為里程的十分位。等待時間脈沖頻率為1HZ,所以一個脈沖代表1秒,60個等待脈沖是1分鐘,輸出等待時間加1,等待時間滿1分鐘計(jì)一次費(fèi),所以對等待時間脈沖計(jì)數(shù),

25、計(jì)滿60個數(shù)就輸出一個等待計(jì)費(fèi)脈沖。等待時間最大值為99分鐘。MIN1為等待時間的十位,MIN0為等待時間的個位。將行駛距離、等待時間送到SELTIME模塊,時間與里程計(jì)費(fèi)脈沖送到計(jì)費(fèi)模塊完成里程、等待時間的計(jì)費(fèi)功能。B1為超過3公里后,每0.1公里產(chǎn)生的計(jì)費(fèi)脈沖。B2為每等待一分鐘產(chǎn)生的計(jì)費(fèi)脈沖。</p><p>  3.2.3 顯示控制模塊SELTIME</p><p>  圖3-4

26、 SELTIME模塊圖</p><p>  SELTIME模塊起顯示控制作用,控制等待時間、行駛里程、費(fèi)用在數(shù)碼管上的顯示位置。sel為計(jì)數(shù)控制信號輸出端,功能主要是利用其計(jì)數(shù)的八個狀態(tài),使daout在其每個狀態(tài)下選擇某一輸入數(shù)據(jù),進(jìn)而將選擇的的數(shù)據(jù)送入到DELED模塊。dp為小數(shù)點(diǎn)脈沖控制信號,當(dāng)該模塊輸出的值為里程的個位、費(fèi)用的個位時,需要考慮小數(shù)點(diǎn)的存在,即此時dp=‘1’,在其他不需要小數(shù)點(diǎn)的情況下,d

27、p=‘0’,最后dp將信號輸出到DELED模塊。</p><p>  3.2.4 顯示模塊DELED</p><p>  圖3-5 DELED模塊圖</p><p>  DELED模塊把送入的每個四位數(shù)據(jù)轉(zhuǎn)換為7段碼送出顯示,能夠使數(shù)碼管正常顯示送入的數(shù)據(jù)。其中DP為小數(shù)點(diǎn)輸入信號。</p><p>  4 出租車計(jì)費(fèi)器系統(tǒng)仿真及分析&

28、lt;/p><p>  4.1 計(jì)費(fèi)系統(tǒng)的仿真</p><p>  圖4-1 出租車啟動時計(jì)費(fèi)系統(tǒng)功能仿真圖</p><p>  由圖4-1 可知,當(dāng)出租車未啟動時,里程、等待時間、費(fèi)用均為0。出租車剛啟動時,里程、等待時間為0,費(fèi)用為出租車起步價5元。</p><p>  圖4-2 出租車等待時計(jì)費(fèi)系統(tǒng)功能仿真圖</p>&

29、lt;p>  由圖4-2可知,當(dāng)出租車在等待過程中,行駛里程16.2公里,等待時間為32分鐘時,出租車的費(fèi)用為:5+(16.2-3)×1+32×0.1=21.4元,與仿真結(jié)果一致。</p><p>  圖4-3 出租車行駛時計(jì)費(fèi)系統(tǒng)功能仿真圖</p><p>  由圖4-3可知,當(dāng)出租車行駛到66.6千米,等待時間60分鐘時,由仿真結(jié)果可得出費(fèi)用為74.6元;根

30、據(jù)設(shè)計(jì)要求計(jì)算可得費(fèi)用為:5+(66.6-3)×1+60×0.1=74.6元。仿真結(jié)果與計(jì)算值一致,驗(yàn)證了設(shè)計(jì)的正確性。</p><p>  圖4-4 出租車停車時計(jì)費(fèi)系統(tǒng)功能仿真圖</p><p>  當(dāng)出租車停車時,出租車上的時間、里程和費(fèi)用清零,為下次計(jì)費(fèi)的開始做準(zhǔn)備。</p><p>  4.2 單元模塊的仿真及分析</p>

31、;<p>  4.2.1 譯碼顯示模塊的仿真及分析</p><p>  圖4-5 譯碼顯示模塊的功能仿真圖</p><p>  圖4-5為譯碼顯示模塊的功能仿真波形圖,DP、S為信號輸入端,也是顯示控制模塊的信號輸出端口,ABCDEFGH八個端口為八位二進(jìn)制的輸出端口。假設(shè)DOUT=“HGFEDCBA”,由上圖可以看出:</p><p><b

32、>  1. DP=0時:</b></p><p>  當(dāng)S(3 downto 0)=”0000”,則DOUT=”00111111”;</p><p>  當(dāng)S(3 downto 0)=”0001”,則DOUT=”00000110”;</p><p>  當(dāng)S(3 downto 0)=”0010”,則DOUT=”01011011”;</p>

33、;<p>  當(dāng)S(3 downto 0)=”0011”,則DOUT=”01001111”;</p><p>  當(dāng)S(3 downto 0)=”0100”,則DOUT=”01100110”;</p><p>  當(dāng)S(3 downto 0)=”0101”,則DOUT=”01101101”;</p><p>  當(dāng)S(3 downto 0)=”0110

34、”,則DOUT=”01111101”;</p><p>  當(dāng)S(3 downto 0)=”0111”,則DOUT=”00000111”;</p><p>  當(dāng)S(3 downto 0)=”1000”,則DOUT=”01111111”;</p><p>  當(dāng)S(3 downto 0)=”1001”,則DOUT=”01101111”;</p><

35、;p>  當(dāng)S(3 downto 0)等于上述值以外的值時,則DOUT=”00000000”。</p><p><b>  2. DP=1時:</b></p><p>  當(dāng)S(3 downto 0)=”0000”,則DOUT=”10111111”;</p><p>  當(dāng)S(3 downto 0)=”0001”,則DOUT=”10000

36、110”;</p><p>  當(dāng)S(3 downto 0)=”0010”,則DOUT=”11011011”;</p><p>  當(dāng)S(3 downto 0)=”0011”,則DOUT=”11001111”;</p><p>  當(dāng)S(3 downto 0)=”0100”,則DOUT=”11100110”;</p><p>  當(dāng)S(3 d

37、ownto 0)=”0101”,則DOUT=”11101101”;</p><p>  當(dāng)S(3 downto 0)=”0110”,則DOUT=”11111101”;</p><p>  當(dāng)S(3 downto 0)=”0111”,則DOUT=”10000111”;</p><p>  當(dāng)S(3 downto 0)=”1000”,則DOUT=”11111111”;&

38、lt;/p><p>  當(dāng)S(3 downto 0)=”1001”,則DOUT=”11101111”;</p><p>  當(dāng)S(3 downto 0)等于上述值以外的值時,則DOUT=”10000000”。</p><p>  4.2.2 顯示控制模塊的仿真及分析</p><p>  圖4-6 顯示控制模塊的功能仿真圖</p>

39、<p>  圖4-6為顯示控制模塊功能仿真圖,其中clk為時鐘脈沖輸入端,sel為計(jì)數(shù)控制信號輸出端,daout為sel所控制狀態(tài)下的輸出到數(shù)碼管的位選信號,dp為小數(shù)點(diǎn)控制輸出信號??梢钥闯?,當(dāng)時鐘沿上升時刻到來時,計(jì)數(shù)器的輸出sel就自動加1,當(dāng)計(jì)數(shù)器輸出端加到“111”時,再來一個脈沖上升沿,則計(jì)數(shù)的輸出端sel變?yōu)椤?00”,該顯示控制模塊的功能主要是利用其計(jì)數(shù)的八個狀態(tài),進(jìn)而去輪流控制數(shù)碼管的位選信號。由圖4-6可

40、知:當(dāng)sel=“000”時,則daout=CH0;當(dāng)sel=“001”時,daout=CH1;當(dāng)sel=“010”時,daout=CH2;當(dāng)sel=“011”時,daout=KM0;當(dāng)sel=“100”時,daout=KM1;當(dāng)sel=“101”時,daout=KM2;當(dāng)sel=“110”時,daout=MIN0;當(dāng)sel=“111”時,daout=MIN1。由于KM1、CH1表示里程的個位和費(fèi)用的個位,其后都存在小數(shù),故在設(shè)計(jì)中當(dāng)顯示

41、KM1、CH1時須加入小數(shù)點(diǎn),此時dp=‘1’,在其他沒有小數(shù)點(diǎn)的情況時dp=‘0’。</p><p>  4.2.3 計(jì)量模塊的仿真及分析</p><p>  圖4-7 計(jì)量模塊的功能仿真圖</p><p>  圖4-7為計(jì)量模塊的功能仿真圖,START信號為高電平時(即出租車啟動)。當(dāng)DRIVE為高電平且BREAK為低電平時,出租車為行駛狀態(tài),此時里程計(jì)數(shù)模

42、塊開始計(jì)數(shù),每經(jīng)過10個CLK1脈沖信號,里程加0.1公里,當(dāng)里程計(jì)數(shù)大于3公里時,每計(jì)0.1公里產(chǎn)生1個B1脈沖信號。當(dāng)DRIVE為高電平且BREAK為高電平時,出租車為暫停狀態(tài),此時等待時間計(jì)數(shù)模塊開始計(jì)數(shù),每經(jīng)過60個CLK脈沖信號,時間加1分鐘,每計(jì)1分鐘產(chǎn)生一個B2脈沖信號。B1和B2分別為里程計(jì)費(fèi)脈沖和等待時間計(jì)費(fèi)脈沖。</p><p>  4.2.4 計(jì)費(fèi)模塊的仿真及分析</p>&

43、lt;p>  圖4-8 計(jì)費(fèi)模塊的功能仿真圖</p><p>  圖4-8為計(jì)費(fèi)模塊的功能仿真圖當(dāng)START處于高電平且DRIVE處于高電平時,每送入一個計(jì)費(fèi)脈沖且計(jì)費(fèi)脈沖處于上升沿時,CH0自動加1(即每送入一個計(jì)費(fèi)脈沖加0.1元)。CH0、CH1、CH2為十進(jìn)制計(jì)數(shù)。CH2表示費(fèi)用的十位,CH1表示費(fèi)用的個位,CH0表示費(fèi)用的十分位,計(jì)費(fèi)的最大值為99.9元。</p><p>

44、  5 鎖定管腳及硬件實(shí)現(xiàn)</p><p>  5.1 鎖定管腳圖</p><p>  在驗(yàn)證出租車計(jì)費(fèi)器系統(tǒng)的功能之前,需要清楚實(shí)驗(yàn)箱與各個信號之間的對應(yīng)關(guān)系,參照資料得出本設(shè)計(jì)中各引腳的對應(yīng)情況如下:</p><p>  圖5-1 頂層原理圖</p><p><b>  5.2 硬件實(shí)現(xiàn)</b></p&

45、gt;<p>  通過硬件下載,該電路可以完成硬件實(shí)現(xiàn),芯片管腳定義可以直接用編輯.pin文件。完成管腳定義后選擇器件,編譯后生成.sof文件。選擇.sof文件進(jìn)行下載。</p><p>  下載完成后,將第一全局時鐘CLK1的跳線器接1Hz(作為秒脈沖信號),將第二全局時鐘CLK2的跳線器接1Hz(作為十米脈沖信號),將第三全局時鐘CLK3的跳線器接32768Hz,用撥位開關(guān)模擬控制出租車的啟動、

46、行駛、暫停。觀察數(shù)碼管上數(shù)據(jù)的變化是否符合設(shè)計(jì)標(biāo)準(zhǔn)。在試驗(yàn)箱上八個數(shù)碼管從左至右分別顯示的是:等待時間的十位、等待時間的個位、里程的十位、里程的個位、里程的十分位、費(fèi)用的十位、費(fèi)用的個位、費(fèi)用的十分位。</p><p>  5.2.1 顯示結(jié)果的幾種情況</p><p>  圖5-2 驗(yàn)證結(jié)果1</p><p>  圖5-2表示出租車等待了1分鐘,行駛了3.9公

47、里,即時車費(fèi)為6.0元。根據(jù)設(shè)計(jì)要求計(jì)算所得費(fèi)用為:5元+(3.9-3)公里×1元/公里+1分鐘×0.1元/分鐘=6.0元,計(jì)算結(jié)果與試驗(yàn)箱上所得顯示結(jié)果相同。</p><p>  圖5-3 驗(yàn)證結(jié)果2</p><p>  圖5-3表示出租車等待了3分鐘,行駛了6.8公里,即時車費(fèi)為9.1元。根據(jù)設(shè)計(jì)要求計(jì)算所得費(fèi)用為:5元+(6.8-3)公里×1元/公里+

48、3分鐘×0.1元/分鐘=9.1元,計(jì)算結(jié)果與試驗(yàn)箱上所得顯示結(jié)果相同。</p><p>  在試驗(yàn)箱驗(yàn)證過程中,我們可以看到,八位數(shù)碼管的右三位顯示起步價05.0,中間三個數(shù)碼管在以0.1為步長進(jìn)行加法顯示行駛里程,當(dāng)行駛里程超過3公里之后,每0.1公里計(jì)費(fèi)金額加0.1元,當(dāng)我們按下等待暫停鍵,每分鐘左邊兩個數(shù)碼管加1,其顯示的等待時間,當(dāng)?shù)却龝r間到1分鐘時,計(jì)費(fèi)金額加0.1元,由此我們可以判斷,系統(tǒng)設(shè)

49、計(jì)符合要求。</p><p>  5.2.2 硬件實(shí)現(xiàn)總結(jié)</p><p>  通過對每一模塊的仿真和下載,可以實(shí)現(xiàn)各個模塊的邏輯功能,驗(yàn)證了各個模塊的正確性。在出租車計(jì)費(fèi)系統(tǒng)的4個模塊中,重點(diǎn)在于計(jì)量模塊(JILIANG),計(jì)費(fèi)模塊(JIFEI),顯示控制模塊(SELTIME),譯碼顯示模塊(DELED)。JILIANG模塊主要有汽車的開始、運(yùn)行、暫停,JILIANG模塊主要記錄出租車

50、的行駛里程和等待時間,并將等待時間計(jì)費(fèi)脈沖和行駛里程計(jì)費(fèi)脈沖送入JIFEI模塊;JIFEI模塊主要是完成起步價計(jì)費(fèi)、等待時間計(jì)費(fèi)、行駛里程計(jì)費(fèi),并完成總費(fèi)用;SELTIME模塊起顯示控制作用,控制等待時間、行駛里程、費(fèi)用在八個數(shù)碼管上的位置。DELED模塊是把送入的每個四位數(shù)據(jù)轉(zhuǎn)換為7段碼,從而能在數(shù)碼管上正確的顯示。這四個模塊的組合成完整的出租車系統(tǒng),在設(shè)計(jì)過程中還需要改進(jìn)的是控制出租車計(jì)費(fèi)系統(tǒng)的控制功能。 </p&g

51、t;<p>  出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已全部完成,能按預(yù)期的效果進(jìn)行模擬汽車開始、啟動、暫停、停止等功能,由數(shù)碼管顯示出租車等待時間,行駛里程,費(fèi)用。車暫等待時停止行駛里程計(jì)費(fèi),車費(fèi)僅由等待時間計(jì)費(fèi);出租車正常行駛時,僅根據(jù)里程收費(fèi)方式。若停止則車費(fèi)清零,等待下一次計(jì)費(fèi)的開始。出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)中體現(xiàn)了VHDL覆蓋面廣,描述能力強(qiáng),是一個多層次的硬件描述語言本設(shè)計(jì)在實(shí)用方面具有一定的價值。 </p>

52、<p>  該計(jì)費(fèi)器實(shí)現(xiàn)了按預(yù)置參數(shù)自動計(jì)費(fèi)(最大計(jì)費(fèi)金額為99.9元)、自動計(jì)程(最大計(jì)程公里數(shù)為99.9公里)等功能;能夠?qū)崿F(xiàn)起步價、每公里收費(fèi)、等待時間計(jì)費(fèi)的參數(shù)預(yù)置(如:起步價5.0元;3公里后1元每公里;等待時間0.1元每分鐘),且預(yù)置參數(shù)可調(diào)范圍廣。由于采用CPLD大規(guī)??删幊踢壿嬈骷?,整機(jī)功耗小、抗干擾能力強(qiáng)、系統(tǒng)穩(wěn)定、工作可靠、升級方便。</p><p>  6 設(shè)計(jì)體會與總結(jié)&l

53、t;/p><p>  通過這次緊張而又充實(shí)的EDA課程設(shè)計(jì),我感受到了VHDL語言和普通軟件語言之間的區(qū)別,也能夠更加熟練地運(yùn)用VHDL語言進(jìn)行邏輯電路的設(shè)計(jì)了,受益匪淺。我們所做的課題是出租車計(jì)費(fèi)器的設(shè)計(jì)。老師給了我們課程設(shè)計(jì)題目,在這半個月的實(shí)驗(yàn)操作中,不斷的完善自己的設(shè)計(jì)要求,將自己的想法融入到實(shí)驗(yàn)的程序中去。最終通過仿真達(dá)到了自己預(yù)想的效果。有種先苦后甜的成就感。</p><p>  

54、同時在本次試驗(yàn)中,我們熟練的掌握了Quartus II軟件的使用。學(xué)會了如何把自己所設(shè)計(jì)的程序,通過軟件用波形仿真出來,再通過試驗(yàn)箱仿真出來。</p><p>  在這次課程設(shè)計(jì)過程中,要感謝陳老師在課程設(shè)計(jì)上給予我的幫助,提供給我的支持與建議,特別是幫助我解決了我半個月來一直遇到的運(yùn)行程序警告多的問題,這是我能順利完成這次報告的主要原因,讓我能把課程設(shè)計(jì)做得更加完善。在此期間,我不僅學(xué)到了許多新知識,而且也開闊

55、了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過我的同學(xué)們,他們也為我解決了不少難題。這些東西是無法再平時上課的過程中學(xué)到的,實(shí)踐出真知,只有在實(shí)驗(yàn)中我們才能更好的學(xué)到東西,不用紙上談兵,做無用功。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 徐飛.EDA技術(shù)與實(shí)踐[M].北京:清華大學(xué)出版社,2011.</p><

56、p>  [2] 王行,李衍.EDA技術(shù)入門與提高[M].西安:西安電子科技大學(xué)出版社,2005.</p><p>  [3] 劉昌華.數(shù)字邏輯EDA設(shè)計(jì)與實(shí)踐[M].北京:國防工業(yè)出版社,2011.</p><p>  [4] 李蓉.基于VHDL語言的出租車自動計(jì)費(fèi)器的設(shè)計(jì)[J].科技風(fēng),2008,24:33.</p><p><b>  附

57、錄</b></p><p>  1 JILIANG模塊的VHDL編程</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE I

58、EEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY JILIANG IS</p><p>  PORT(CLK,CLK1 : IN STD_LOGIC;</p><p>  START : IN STD_LOGIC;</p><p>  DRIVE : IN STD_LOGIC;</p&

59、gt;<p>  BREAK : IN STD_LOGIC;</p><p>  B1,B2 : OUT STD_LOGIC;</p><p>  KM2,KM1,KM0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  MIN1,MIN0 : OUT STD_LOGIC_VECTOR(3 DO

60、WNTO 0));</p><p>  END JILIANG;</p><p>  ARCHITECTURE BEHAVE OF JILIANG IS </p><p>  SIGNAL R1:INTEGER RANGE 0 TO 9; </p><p>  SIGNAL K:STD_LOGIC_VECTOR (7

61、 DOWNTO 0);</p><p>  SIGNAL K2,K1,K0 :STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  SIGNAL W1:INTEGER RANGE 0 TO 59; </p><p>  SIGNAL M1:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p&g

62、t;  SIGNAL M0:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN </b></p><p>  RUN:PROCESS(CLK1,DRIVE,BREAK,K0,K1,K2)</p><p><b>  BEGIN</b></p><p>

63、  IF START='1' THEN</p><p>  IF DRIVE='0' THEN K0<="0000";K1<="0000";K2<="0000";R1<=0;</p><p>  ELSIF CLK1'EVENT AND CLK1='1&#

64、39; THEN </p><p>  IF DRIVE='1'AND BREAK='0' THEN </p><p>  IF R1=9 THEN R1<=0;</p><p>  IF K0="1001" THEN K0<="0000";k1<=k1+1;</p>

65、;<p>  IF K1="1001" THEN K1<="0000";k2<=k2+1;</p><p>  IF K2="1001" THEN K2<="0000";</p><p>  ELSE K2<=K2+1; </p><p><b

66、>  END IF;</b></p><p>  ELSE K1<=K1+1;</p><p><b>  END IF;</b></p><p>  ELSE K0<=K0+1;</p><p><b>  END IF;</b></p><p&g

67、t;  ELSE R1<=R1+1;B1<='0';</p><p><b>  END IF;</b></p><p><b>  K<=K2&K1;</b></p><p>  IF K>"00000010" THEN </p><

68、p>  IF R1<9 THEN R1<=R1+1;B1<='0';</p><p>  ELSE R1<=0; B1<='1';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p>

69、<p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  ELSE K0<="0000";K1<="0000";K2<="0000";</p><p><b>  

70、END IF;</b></p><p>  KM0<=K0;KM1<=K1;KM2<=K2;</p><p>  END PROCESS;</p><p>  PAUSE:PROCESS(CLK,DRIVE,BREAK,M0,M1) </p><p><b>  BEGIN</b>

71、</p><p>  IF START='1' THEN</p><p>  IF DRIVE='0' THEN M0<="0000";M1<="0000";W1<=0;</p><p>  ELSIF CLK'EVENT AND CLK='1' T

72、HEN</p><p>  IF DRIVE='1' AND BREAK='1'THEN</p><p>  IF W1=59 THEN W1<=0;B2<='1';</p><p>  IF M0="1001"THEN M0<="0000"; M1<=M

73、1+1;</p><p>  IF M1="1001"THEN M1<="0000";</p><p>  ELSE M1<=M1+1;</p><p><b>  END IF;</b></p><p>  ELSE M0<=M0+1;</p>&

74、lt;p><b>  END IF;</b></p><p>  ELSE W1<=W1+1;B2<='0';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b&

75、gt;  END IF;</b></p><p>  ELSE M0<="0000";M1<="0000";</p><p><b>  END IF;</b></p><p><b>  MIN0<=M0;</b></p><p&

76、gt;<b>  MIN1<=M1;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE ;</p><p>  2 JIFEI模塊的VHDL編程</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.

77、STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY JIFEI IS</p><p>  PORT(B :IN STD_LOGIC;</p>

78、;<p>  START:IN STD_LOGIC;</p><p>  DRIVE:IN STD_LOGIC;</p><p>  CH2,CH1,CH0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END JIFEI;</p><p>  ARCHITECTURE BEHAVE

79、 OF JIFEI IS</p><p>  SIGNAL C2,C1,C0:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(B,DRIVE,C0,C1,C2) </p><p><b>  BEGIN </b

80、></p><p>  IF DRIVE='0' THEN C0<="0000";C1<="0101";C2<="0000";</p><p>  ELSIF DRIVE='1' THEN</p><p>  IF B'EVENT AND B=

81、'1' THEN </p><p>  IF C0="1001" THEN C0<="0000";</p><p>  IF C1="1001"THEN C1<="0000"; </p><p>  IF C2="1001"THEN C2&

82、lt;="0000";</p><p>  ELSE C2<=C2+1;</p><p><b>  END IF;</b></p><p>  ELSE C1<=C1+1;</p><p><b>  END IF;</b></p><p>

83、  ELSE C0<=C0+1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  ELSE C0<="0000";C

84、1<="0000";C2<="0000";</p><p><b>  END IF;</b></p><p>  CH0<=C0;CH1<=C1;CH2<=C2;</p><p>  END PROCESS;</p><p><b>  E

85、ND;</b></p><p>  3 SELTIME控制模塊的VHDL編程</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>

86、  entity seltime is</p><p>  port( clk : in std_logic;</p><p>  CH2,CH1,CH0 : in std_logic_vector(3 downto 0);</p><p>  KM2,KM1,KM0 : in std_logic_vector(3 downto 0);</p&

87、gt;<p>  MIN1,MIN0 : in std_logic_vector(3 downto 0);</p><p>  dp : OUT STD_LOGIC;</p><p>  daout : out std_logic_vector(3 downto 0);</p><p>  sel

88、 : out std_logic_vector(2 downto 0));</p><p>  end seltime;</p><p>  architecture behav of seltime is </p><p>  signal sec : std_logic_vector(2 downto 0);</p><p>&

89、lt;b>  begin </b></p><p>  process(clk)</p><p><b>  begin</b></p><p>  if(clk'event and clk='1') then</p><p>  if(sec="111")

90、then</p><p>  sec<="000";</p><p><b>  else</b></p><p>  sec<=sec+1;</p><p><b>  end if;</b></p><p><b>  end i

91、f;</b></p><p>  end process;</p><p>  process(sec,MIN1,MIN0,CH2,CH1,CH0,KM2,KM1,KM0)</p><p><b>  begin </b></p><p>  case sec is</p><p> 

92、 when "000"=>daout<=CH0 ( 3 downto 0);dp<='0';</p><p>  when "001"=>daout<=CH1 ( 3 downto 0);dp<='1';</p><p>  when "010"=>daou

93、t<=CH2 ( 3 downto 0);dp<='0';</p><p>  when "011"=>daout<=KM0 ( 3 downto 0);dp<='0';</p><p>  when "100"=>daout<=KM1 ( 3 downto 0);dp<

94、='1';</p><p>  when "101"=>daout<=KM2 ( 3 downto 0);dp<='0';</p><p>  when "110"=>daout<=MIN0( 3 downto 0);dp<='0';</p><p

95、>  when "111"=>daout<=MIN1( 3 downto 0);dp<='0';</p><p>  when others=>daout<="XXXX";</p><p><b>  end case;</b></p><p>  en

96、d process;</p><p><b>  sel<=sec;</b></p><p>  end behav;</p><p>  4 DELED模塊的VHDL編程</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.

97、ALL;</p><p>  ENTITY DELED IS</p><p>  PORT( DP: IN STD_LOGIC; </p><p>  S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  A,B,C,D,E,F,G,H: OUT STD_LOGIC);</p>&l

98、t;p>  END DELED;</p><p>  ARCHITECTURE BEHAV OF DELED IS</p><p>  SIGNAL DATA : STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  SIGNAL DOUT : STD_LOGIC_VECTOR(7 DOWNTO 0);</p><

99、;p><b>  BEGIN</b></p><p><b>  DATA<=S;</b></p><p>  PROCESS(DATA,DP)</p><p><b>  BEGIN</b></p><p>  IF DP='0' THEN<

100、/p><p>  CASE DATA IS </p><p>  WHEN "0000"=>DOUT<="00111111";</p><p>  WHEN "0001"=>DOUT<="00000110";</p><p>  WHEN &q

101、uot;0010"=>DOUT<="01011011";</p><p>  WHEN "0011"=>DOUT<="01001111";</p><p>  WHEN "0100"=>DOUT<="01100110";</p>&

102、lt;p>  WHEN "0101"=>DOUT<="01101101";</p><p>  WHEN "0110"=>DOUT<="01111101";</p><p>  WHEN "0111"=>DOUT<="00000111&qu

103、ot;;</p><p>  WHEN "1000"=>DOUT<="01111111";</p><p>  WHEN "1001"=>DOUT<="01101111";</p><p>  WHEN OTHERS=>DOUT<="0000

104、0000";</p><p><b>  END CASE;</b></p><p><b>  ELSE</b></p><p>  CASE DATA IS </p><p>  WHEN "0000"=>DOUT<="10111111&quo

105、t;;</p><p>  WHEN "0001"=>DOUT<="10000110";</p><p>  WHEN "0010"=>DOUT<="11011011";</p><p>  WHEN "0011"=>DOUT<=&

106、quot;11001111";</p><p>  WHEN "0100"=>DOUT<="11100110";</p><p>  WHEN "0101"=>DOUT<="11101101";</p><p>  WHEN "0110&quo

107、t;=>DOUT<="11111101";</p><p>  WHEN "0111"=>DOUT<="10000111";</p><p>  WHEN "1000"=>DOUT<="11111111";</p><p>  WH

108、EN "1001"=>DOUT<="11101111";</p><p>  WHEN OTHERS=>DOUT<="10000000";</p><p><b>  END CASE;</b></p><p><b>  END IF;</b&

109、gt;</p><p>  END PROCESS;</p><p>  H<=DOUT(7);G<=DOUT(6);F<=DOUT(5);E<=DOUT(4);</p><p>  D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);</p><p>  E

溫馨提示

  • 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

提交評論