論文參考3(有點介紹有點程序)_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘要</b></p><p>  本文主要介紹了利用VHDL設(shè)計語言和Altera公司的MAX+PLUS II軟件開發(fā)平臺, 來設(shè)計實現(xiàn)地鐵自動售票系統(tǒng)的核心控制部分的功能:站點選擇,票數(shù)選擇,投幣處理,余額計算,自動出票等功能。在本設(shè)計中采用了有限狀態(tài)機的設(shè)計方法,將整個售票系統(tǒng)的控制部分化分為五個狀態(tài): 選站狀態(tài),選票狀態(tài),投幣狀態(tài),出票狀態(tài)和余額找零狀態(tài)。

2、最后通過對程序的調(diào)試以及相應部分功能的仿真,驗證了整個系統(tǒng)的原理和本設(shè)計方案的正確性。 由于采用了有限狀態(tài)機的設(shè)計方法,使得本系統(tǒng)運行可靠性高,非法狀態(tài)易控制。</p><p>  關(guān)鍵詞: FPGA,CPLD, VHDL語言,MAX+PLUS II 軟件,有限狀態(tài)機, ,地鐵自動售票系統(tǒng)</p><p><b>  目錄</b></p><p&

3、gt;<b>  第一章 緒論1</b></p><p>  1.1 電子器件的發(fā)展和現(xiàn)狀1</p><p>  1.2 設(shè)計方法的發(fā)展1</p><p>  1.3 層次化的設(shè)計與VHDL的應用1</p><p>  1.4 本課題的提出與意義1</p><p>  1.5 本課題研究

4、內(nèi)容1</p><p>  第二章 VHDL語言介紹1</p><p>  2.1什么是VHDL1</p><p>  2.2 VHDL語言的特點1</p><p>  2.3 VHDL的設(shè)計流程1</p><p>  2.4 VHDL程序的基本結(jié)構(gòu)1</p><p>  第三章 M

5、AX+PLUS II軟件介紹1</p><p>  3.1 MAX+PLUS II簡介1</p><p>  3.2Max+PlusⅡ開發(fā)系統(tǒng)的特點1</p><p>  3.3 Max+PlusⅡ功能簡介1</p><p>  3.4 Max+plusⅡ設(shè)計過程1</p><p>  第四章 地鐵售票系統(tǒng)

6、的設(shè)計與實現(xiàn)1</p><p>  4.1 課題要求1</p><p><b>  4.2設(shè)計分析1</b></p><p>  4.3狀態(tài)機設(shè)計1</p><p><b>  第五章 結(jié)束語1</b></p><p><b>  附錄1</b&g

7、t;</p><p><b>  參考文獻1</b></p><p><b>  致謝1</b></p><p><b>  第一章 緒論</b></p><h4>  1.1 電子器件的發(fā)展和現(xiàn)狀</h2><p>  電子技術(shù)的發(fā)展總是同電子器件

8、的發(fā)展密切相關(guān)的,由于電子器件的不斷更新?lián)Q代,電子技術(shù)得到了飛速發(fā)展,當今信息技術(shù)被廣泛應用在國民經(jīng)濟的方方面面。多媒體技術(shù)的普及、高速寬帶網(wǎng)絡(luò)的建設(shè)、數(shù)字電視的出現(xiàn)以及與我們?nèi)粘I钕⑾⑾嚓P(guān)的各種家用電器,都離不開微處理器、存儲器和一些采用行業(yè)標準的專用芯片。</p><p>  這些電子器件的發(fā)展經(jīng)歷了從電子管、晶體管、小規(guī)模集成電路、中規(guī)模集成電路到大規(guī)模集成電路和超大規(guī)模集成電路幾個階段,其發(fā)展趨勢是體積

9、越來越小,集成度越來越高。隨著半導體技術(shù)的迅速發(fā)展,設(shè)計與制造集成電路的任務已不完全由半導體廠商來獨立承擔,系統(tǒng)設(shè)計師們更愿意自己設(shè)計專用集成電路(ASIC)芯片,而且希望ASIC的設(shè)計周期盡可能短,最好在自己的實驗室里就能設(shè)計并制造出適用的ASIC芯片,并且能夠得到實際的應用。使用ASIC完成電子系統(tǒng)的設(shè)計,其優(yōu)點是集成度高、保密性強、可大幅度地減少印刷電路板的面積和接插件、電路性能好并能降低裝配和調(diào)試費用、更適合較大規(guī)模批量生產(chǎn)、降

10、低生產(chǎn)成本。例如,現(xiàn)在微機中使用的顯卡、網(wǎng)卡、數(shù)字電視等都是專用的ASIC芯片。采用ASIC設(shè)計的不足之處是一次性的投資大,設(shè)計周期一般比較長,不便于以后修改設(shè)計,因而近幾年在ASIC領(lǐng)域出現(xiàn)了一種半定制電路,即現(xiàn)場可編程邏輯器件FPLD。目前使用較多的可編程邏輯器是現(xiàn)場可編程門陣列FPGA(field programmable gate array)和復雜可編程邏輯器件CPLD(complex programmable g</p

11、><p>  早期使用的可編程器件有PROM、EPROM、E2PROM、PAL、GAL等,這些芯片的容量一般比較小,只能完成簡單的數(shù)字邏輯功能,這些器件基本上是使用專用的編程器進行裝載。CPLD和FPGA的芯片是在早期使用的PAL和GAL基礎(chǔ)上發(fā)展起來的,相比早期的可編程器件,現(xiàn)場可編程邏輯器件FPLD的容量大,器件的容量遠遠大于PAL和GAL,更適合做時序和組合邏輯電路的設(shè)計,不但集成度高,而且逐漸向低功耗發(fā)展,芯

12、片的使用電壓有+5V、+3.3V和+2.5 V幾種,有的芯片外部是+5V而內(nèi)部的工作電壓則是+3.3V或+2.5V。現(xiàn)在市場上FPLD的品種很多,使用較多的是Altera、Xilinx和Lattice這3個公司的產(chǎn)品,各公司都有不同型號的CPLD和FPGA產(chǎn)品,例如,Xilinx的XC系列;Altera的EPLD系列、FPGA系列;Lattice的ispLSI、ispGAL等。由于各個公司的 FPLD結(jié)構(gòu)不同,使用的裝載電纜線是不一樣的

13、,設(shè)計軟件也不同,但共同的特點是:現(xiàn)場可編程邏輯器件FPLD都可以在系統(tǒng)進行編程加載程序,不需要使用專用的編程器,它們都是直接將實驗系統(tǒng)和計算機的并行口連</p><p>  室中就可將大量的數(shù)字電路設(shè)計集成到一個大芯片中,實現(xiàn)系統(tǒng)的微型化和可靠性。目前工程設(shè)計人員通常都采用這種方法進行電路設(shè)計。</p><p>  1.CPLD或EPLD芯片</p><p>  

14、這類器件的使用特點是:芯片一經(jīng)上電加載即已完成編程,不必在每次上電時重新進行加載,也就是當程序燒入芯片后,只有下一次需要再修改程序時才需要對芯片重新進行加載,否則將不會改變先前所燒入的代碼,類似于大的GAL芯片。例如,Lattice的ispGAL芯片可以在系統(tǒng)進行編程加載程序,也可以與該公司的ispLSI芯片在同一個電路中加載程序。CPLD在結(jié)構(gòu)上主要由可編程邏輯宏單元LMC(logic macro cell)圍繞中心的可編程互連矩陣單

15、元組成,其中LMC的邏輯結(jié)構(gòu)比較復雜,并具有復雜的I/O單元互連結(jié)構(gòu),可以由用戶根據(jù)設(shè)計的需要生成特定的電路結(jié)構(gòu),完成一定的功能。</p><p><b>  2.FPGA芯片</b></p><p>  這類器件不像CPLD或EPLD,每次上電使用時不管是否改變程序都要對芯片進行加載。現(xiàn)在FPGA芯片的容量一般比CPLD或EPLD的容量要大得多,更適合于做較大系統(tǒng)的

16、復雜設(shè)計。FPGA芯片通常包含3類可編程資源:可編程的邏輯功能塊、可編程I/O塊和可編程的內(nèi)部互連??删幊痰倪壿嫻δ軌K是實現(xiàn)用戶功能的基本單元,它們通常排成一個陣列,遍布于整個芯片中;可編程I/O塊完成芯片上的邏輯與外部封裝管腳的接口,常圍繞著陣列排列于芯片四周;可編程的內(nèi)部互連包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個可編程邏輯塊或I/O塊連接起來,構(gòu)成特定功能的電路。</p><p>  Xili

17、nx的XC系列器件采用的是現(xiàn)場可編程門陣列FPGA,現(xiàn)場可編程門陣列是一種類似門陣列的結(jié)構(gòu),它的基本單元以陣列的形式排列在芯片上,但它不像門陣列那樣由連線掩膜確定其最終的邏輯功能,而是將規(guī)則的連線陣列也已做好,其邏輯功能由各連線節(jié)點的控制開關(guān)的通斷來確定。這些節(jié)點的控制開關(guān)的值有各種不同的控制方法,如靜態(tài)隨機存儲器控制(SRAM)、反熔絲(antifuse based)控制以及由快閃爍存儲器(Flash)控制等幾大類。</p>

18、;<p>  SRAM控制的FPGA器件是用靜態(tài)隨機存儲器中存儲的數(shù)值來控制芯片中可編程節(jié)點的通斷,以實現(xiàn)芯片的設(shè)計功能。這種FPGA在使用時,需要在系統(tǒng)加電時首先進行功能初始化,將存儲器的內(nèi)容加載到芯片的控制器中。</p><p>  反熔絲控制的FPGA器件是用反熔絲單元來控制可編程器件內(nèi)的可編程節(jié)點的通斷,使芯片中每一部分具有應有的邏輯功能,以實現(xiàn)器件的設(shè)計功能。反熔絲單元是一個被動的兩端器件

19、,通常情況下處于開路狀態(tài),在施加充足的電壓后,能夠永久地導通。用于現(xiàn)場可編程器件的反熔絲其占用芯片面積非常小,速度也很高,這方面的性能幾乎可以與門陣列相比。但這種FPGA在編程時需要專用的編程設(shè)備,而且芯片功能一經(jīng)編程確定后,不能再修改,反熔絲控制的FPGA器件價格最低。</p><p>  Flash控制的FPGA器件是用快閃爍存儲器的數(shù)值來控制FPGA節(jié)點的通斷,實現(xiàn)現(xiàn)場可編程目的。這種FPGA的工作特性與S

20、RAM-FPGA相似,但與SRAM-FPGA相比,它的單元面積小。由于Flash具有不揮發(fā)性,使用時不必在每次上電時都</p><p>  重新進行功能加載,所以使用是很方便的。</p><h4>  1.2 設(shè)計方法的發(fā)展</h2><p>  傳統(tǒng)的手工設(shè)計方法一般是根據(jù)系統(tǒng)的要求,首先畫出系統(tǒng)的硬件流程圖,再根據(jù)功能劃分成不同的模塊,設(shè)計過程一般從底層開始,先

21、要選擇具體的元器件,用所選擇的元器件進行各功能模塊的邏輯電路設(shè)計,手工畫出一張張的電路原理圖,根據(jù)原理圖制作印刷電路板,每個功能模塊都調(diào)試通過后,再把各個模塊連接起來進行系統(tǒng)的調(diào)試。對整個系統(tǒng)的仿真、調(diào)試只能在完成硬件設(shè)計以后才能進行,系統(tǒng)設(shè)計中的問題在調(diào)試的后期才能發(fā)現(xiàn),如果出現(xiàn)設(shè)計中沒有考慮到的問題,就要再從底層重新設(shè)計,這樣的設(shè)計周期一般較長。設(shè)計結(jié)果是若干張的電路原理圖和信號的連接表,如果是一個大的系統(tǒng),將是一大摞圖紙,以后系統(tǒng)

22、出現(xiàn)問題,查找修改起來都不直觀。</p><p>  上述過程是從底層開始,并在已有的功能模塊的基礎(chǔ)上來搭建高層次的模塊直至整個系統(tǒng)。因此這種電子系統(tǒng)的傳統(tǒng)的設(shè)計方法稱為是自底至上(bottom-up)的設(shè)計。這里的底指的是設(shè)計樹的末枝,設(shè)計過程必須從存在的基本單元模塊出發(fā),基本單元模塊必須是已經(jīng)設(shè)計成熟的單元,也可采用其他項目已開發(fā)好的標準單元。</p><p>  由于電子器件的更新?lián)Q

23、代,在現(xiàn)代數(shù)字系統(tǒng)設(shè)計中,現(xiàn)場可編程器件FPGA和CPLD的使用越來越廣泛,與此同時基于大規(guī)??删幊踢壿嬈骷腅DA(electronic design automation)硬件解決方案(EDA solution)也被廣泛采用。這使得電子電路的設(shè)計方法也發(fā)生了根本性的變化,出現(xiàn)了電子電路設(shè)計自動化。</p><p>  計算機應用的普及,自然產(chǎn)生了計算機輔助設(shè)計(CAD)。最早的電子CAD軟件僅僅是一些繪圖軟件

24、,包括繪制電路原理圖、繪制印刷電路板圖、繪制集成電路芯片板圖以及一些簡單的數(shù)值計算等。當出現(xiàn)了自動設(shè)計、驗證和自動布局布線工具后,這類軟件稱之為第一代的EDA軟件。后來又出現(xiàn)了第二代的EDA軟件,它包括邏輯綜合、仿真以及“自頂向下”的設(shè)計等。近年來又出現(xiàn)了第三代的EDA軟件,稱為電子系統(tǒng)設(shè)計自動化EsDA,可以通過概念輸入(框圖、公式等)自動生成各種設(shè)計結(jié)果,包括ASIC芯片設(shè)計結(jié)果、電路原理圖、PCB板圖以及軟件等,并且可以進行機電一

25、體化設(shè)計。與傳統(tǒng)的設(shè)計方法不同,現(xiàn)代電子工程師們設(shè)計系統(tǒng)的過程是首先描述系統(tǒng),然后用EDA工具在計算機上進行系統(tǒng)級仿真,設(shè)計適合自己用的ASIC芯片,用通用和專用芯片構(gòu)成系統(tǒng),進行功能模擬和帶時延的仿真,布PCB板,對PCB板進行仿真,最終生產(chǎn)調(diào)試成功。</p><p>  EDA,即電子設(shè)計自動化。所謂自動化是指利用計算機完成電子系統(tǒng)設(shè)計,現(xiàn)在已經(jīng)逐漸成為電子系統(tǒng)的主要設(shè)計手段,尤其是采用可編程器件和軟件仿真模

26、擬方法的使用,給傳統(tǒng)的電路設(shè)計方法帶來了重大的變革,它使得設(shè)計工程師們從繁雜而零亂的工作中解放出來,而把著眼點放在電路的設(shè)計上,是一種節(jié)省時間而又高效率的現(xiàn)代設(shè)計理念。EDA技術(shù)以計算機為工具,設(shè)計者只需要完成對系統(tǒng)功能的描述,就可以由計算機軟件進行處理,代替人來完成數(shù)字系統(tǒng)的邏輯</p><p>  綜合、仿真模擬和布局布線等工作。其中模擬硬件電路在實際工作時的時序關(guān)系是相當重要的,因為系統(tǒng)設(shè)計上的錯誤通過仿真

27、模擬波形時就可以發(fā)現(xiàn),而不是等到線路板調(diào)試時才發(fā)現(xiàn)錯誤,即使是在線路板調(diào)試時又發(fā)現(xiàn)錯誤,在外部連接線已經(jīng)固定的情況下,只要對內(nèi)部的軟件設(shè)計進行改進,就可達到修改設(shè)計方案的目的,這種方法比起傳統(tǒng)的電路設(shè)計方法進步多了,修改設(shè)計如同修改軟件一樣方便。</p><p>  當今的硬件設(shè)計方法有幾大優(yōu)點:一是設(shè)計方法由手工設(shè)計變?yōu)樽詣釉O(shè)計,可以大大提高設(shè)計效率和設(shè)計質(zhì)量,縮短設(shè)計周期;二是在系統(tǒng)設(shè)計和各個過程中可分別進行

28、仿真,保證了設(shè)計的正確性,使得設(shè)計能夠一次成功;三是能夠根據(jù)實際需要來自行設(shè)計ASIC芯片。</p><p>  可編程邏輯器件和EDA技術(shù)給硬件系統(tǒng)設(shè)計者提供了強有力的工具。如今,只要擁有一臺計算機、一套相應的EDA軟件和空白的可編程器件芯片,在實驗室就可以完成數(shù)字系統(tǒng)的設(shè)計與生產(chǎn)。可以說,當今的數(shù)字系統(tǒng)設(shè)計離不開可編程器件和EDA設(shè)計工具。</p><h4>  1.3 層次化的設(shè)計與

29、VHDL的應用</h2><p>  1.自頂向下(top-down)的設(shè)計方式</p><p>  一般來說,EDA解決方案是一種采用計算機自頂向下(top-down)的設(shè)計方式。這里的頂指的是設(shè)計樹的樹根,按照數(shù)字系統(tǒng)的功能描述,把系統(tǒng)劃分為若干個功能模塊,然后再把每個模塊劃分為不同的層次,由高層次到低層次逐步細化。這樣的設(shè)計過程稱之為自頂向下的設(shè)計方式。在底層設(shè)計時對邏輯進行必要的描

30、述,并依賴特定的軟件執(zhí)行邏輯優(yōu)化(logic optimization)與器件映射(device mapping),自頂向下設(shè)計的特點是每一層次劃分時都要對某些目標進行優(yōu)化,這些目標包括工作速度、芯片面積和芯片成本等。最后再使用由各芯片生產(chǎn)廠商提供的編譯器執(zhí)行布線(route)和網(wǎng)單優(yōu)化(netlist optimization)。而直接采用原始邏輯圖或布爾方程輸入進行電路設(shè)計雖然對于簡單的邏輯可以獲得非常有效的結(jié)果。但是對于復雜的系統(tǒng)

31、設(shè)計,應用它們就很容易產(chǎn)生錯誤,而必須依靠一種高層的邏輯輸入方式,這樣就產(chǎn)生了硬件描述語言HDL(hardware description language)。所謂硬件描述語言,就是對實際的硬件設(shè)計用語言的方式來描述,能夠把復雜的電路設(shè)計用形象化的語言方式表示出來,可以</p><p>  硬件描述語言有HDL、AHDL、Verilog HDL和VHDL等。VHDL語言的全稱是“超高速集成電路硬件描述語言”(ve

32、ry high speed integrated circuit hardware description language)屬于硬件描述語言中的一種,對系統(tǒng)硬件的描述功能很強而語法規(guī)范又比較簡單。</p><p>  其中符合IEEE-1076標準的VHDL的應用成為EDA解決方案中的首選。VHDL這</p><p>  種行為描述性語言將被廣泛應用到新一代EDA硬件設(shè)計方案中,因此對V

33、HDL的應用成為EDA解決方案的核心,更是整個電子邏輯系統(tǒng)設(shè)計的核心。</p><p>  2.VHDL語言的應用</p><p>  VHDL語言源于美國政府于1980年開始啟動的超高速集成電路(very high speed integrated circuits,vHSIC)計劃。在這一計劃的執(zhí)行過程中,專家們認識到需要有一種標準的語言來描述集成電路的結(jié)構(gòu)和功能。這樣,vHSIC的硬

34、件描述語言(vHSIC hardware description language),即VHDL誕生了。很快,這一標準被美國電氣和電子工程師協(xié)會(IEEE)所承認。</p><p>  VHDL語言作為高級硬件行為描述型語言,如今已經(jīng)廣泛被應用到FPGA/CPLD和ASIC中的設(shè)計。嚴格地講,VHDL是一種用來描述數(shù)字邏輯系統(tǒng)的“編程語言”。它通過對硬件行為的直接描述來實現(xiàn)對硬件的物理實現(xiàn),代表了當今硬件設(shè)計的發(fā)

35、展方向。VHDL是為了滿足邏輯設(shè)計過程中的各種需求而設(shè)計的。</p><p>  第一,它是可以用來描述邏輯設(shè)計的結(jié)構(gòu),比如邏輯設(shè)計中有多少個子邏輯,而這些子邏輯又是如何連接的。除此之外,VHDL并不十分關(guān)心一個具體邏輯依靠何種方式實現(xiàn),而是把開發(fā)者的精力集中到邏輯所實現(xiàn)的功能上。</p><p>  第二,VHDL采用類似高級語言的語句格式完成對硬件行為的描述,具備更強的模塊化能力,并擁

36、有良好的可讀性以及程序的移植性。另外,VHDL淡化狀態(tài)機,與或表達式等早一代硬件描述語言中的元素,用更類似于高級語言的表達式取代。這些也是為什么把VHDL稱為“編程語言”的原因。</p><p>  第三,VHDL給出邏輯的模擬與調(diào)試為設(shè)計工作提供了最大的空間。VHDL調(diào)試的過程是相當靈活的:一方面可以使用傳統(tǒng)的調(diào)試方法,比如適用傳統(tǒng)的波形激勵或編寫測試向量;另一方面,可以使用一些VHDL原碼調(diào)試器,這類調(diào)試器可

37、以大大加快VHDL程序調(diào)試的速度,因為它可以像調(diào)試軟件一樣單步跟蹤調(diào)試每一條語句,并且可以設(shè)置斷點,觀察內(nèi)部變量等。這些功能是傳統(tǒng)的調(diào)試仿真方法所不具備的。這種調(diào)試器比較著名的有Aldec的Active-HDL。擁有高效率的生成代碼,能夠節(jié)省大量的資源。甚至不必編寫任何測試向量便可以進行源代碼級的調(diào)試。而且,設(shè)計者可以非常方便地比較各種方案之間的可行性及其優(yōu)劣而不需做任何實際的電路實驗。</p><p>  鑒于

38、VHDL具有以上諸多優(yōu)點,只要開發(fā)者具備一定的高級語言程序設(shè)計基礎(chǔ),擁有Pascal、C等計算機高級語言的基礎(chǔ),同時又了解一些基本數(shù)字電路的設(shè)計方法,在此基礎(chǔ)上來學習VHDL程序設(shè)計應該是比較容易的,可以輕松地掌握VHDL使硬件工作軟件化。現(xiàn)代電子系統(tǒng)設(shè)計人員應該把VHDL語言作為一種基礎(chǔ)知識來學習,并要求能夠熟練地使用EDA的設(shè)計工具。</p><p>  在EDA解決方案中應用VHDL有助于縮短數(shù)字系統(tǒng)的開發(fā)

39、周期。但還應該注意,除了靠編寫VHDL程序簡化邏輯之外,還需要選擇合理的HDL synthesis。不同公司的HDL synthesis所支持的語法并不相同,而且生成的代碼效率也不同。經(jīng)實驗對比,相同的程序經(jīng)過不同的編譯器編譯,芯片資源的消耗相差高達10%。另外,由于知識產(chǎn)權(quán)和專利保護問題,目前國際上尚無統(tǒng)一的集成化開發(fā)工具可以完成從邏輯輸入到下載所需的全部工作,這也給VHDL在EDA解決方案中的廣泛應用帶來了一定的困難。但是總的來講,

40、廣大廠商均遵循VHDL’87這一通用標準并互相提供良好的軟件接口,在某種程度上可以緩解該矛盾。隨著VHDL’93</p><p>  標準的廣泛應用以及第二代可編程邏輯器件的推出,VHDL必將在未來的EDA解決方案中發(fā)揮不可替代的作用。</p><h4>  1.4 本課題的提出與意義</h2><p>  就目前而言,實現(xiàn)地鐵自動售票系統(tǒng)的控制方法很多,可以用可編

41、程序控制器PLC、單片機等方案來實現(xiàn)。但是這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上增加了功能修改及系統(tǒng)調(diào)試的困難。而FPGA(Field Programmable Gate Array)是專用集成電路(ASIC)中集成度最高的一種,用戶可對FPGA內(nèi)部的邏輯模塊和I/O模塊重新配置,以實現(xiàn)用戶的邏輯。同時,與之相配套的VHDL(Very High Speed Integrated Circuit Hardware

42、Description Language)語言,是一種用來描述數(shù)字邏輯系統(tǒng)的編程語言,采用類似高級語言的語句格式完成對硬件行為的描述。VHDL的優(yōu)越性,成為現(xiàn)在硬件設(shè)計師的首選語言。此外,兼容VHDL語言的軟件也越來越多,也越來越實用。MAX+PLUS II正是其中的佼佼者。MAX+PLUS II(Multiple Array Matrix and Programmable Logic User System)是美國Altera公司自行

43、設(shè)計的一種軟件工具,它具有原理圖輸入和文本輸入(采用硬件描述語</p><p>  本課題正是基于以上現(xiàn)狀提出的,有著重要的意義。</p><h4>  1.5 本課題研究內(nèi)容</h2><p>  本課題的主要研究目標是針對于地鐵自動售票系統(tǒng)的核心控制部分進行研究和設(shè)計,主要內(nèi)容包括:</p><p>  1.首先對于目前比較流行的電路設(shè)計

44、的VHDL語言進行了相關(guān)介紹.主要介紹了:VHDL的起源,VHDL語言的特點,VHDL的設(shè)計流程,以及VHDL程序的基本結(jié)構(gòu).</p><p>  2.其次介紹了不Altera公司推出的第三代PLD開發(fā)系統(tǒng)MAX+PLUS II.主要包括: MAX+PLUS II開發(fā)系統(tǒng)的特點, MAX+PLUS II開發(fā)系統(tǒng)的功能以及MAX+PLUS II的設(shè)計過程.</p><p>  3.最后對于地

45、鐵自動售票系統(tǒng)的核心控制部分的功能進行分析,采用狀態(tài)機的設(shè)計方法,運用VHDL語言編程并進行了相關(guān)波形仿真,通過仿真驗證了地鐵售票系統(tǒng)的控制部分功能的正確性.</p><p>  在上述工作中,對地鐵售票系統(tǒng)核心控制部分的設(shè)計以及運用VHDL語言編程所進行的邏輯設(shè)計和仿真是本論文的主要工作。</p><h3>  第二章 VHDL語言介紹</h2><h4>  2

46、.1什么是VHDL</h2><p>  VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。但是,由于它在一定程度上滿足了當時的設(shè)計需求,于是他在1987年成為ANSI/IEEE的標準(IEEE STD 1076-1987)。1993年更進一步修訂,變得更加完備,成為ANSI/IEEE的ANSI/IE

47、EE STD 1076-1993標準。現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言. 在新的世紀中,VHDL和Verilog語言將承擔起大部分的數(shù)字系統(tǒng)設(shè)計任務. </p><p>  VHDL的英文全寫是:VHSIC(Very High Speed Integrated Circuit)Hardware Descri

48、ptiong Language.翻譯成中文就是超高速集成電路硬件描述語言。因此它的應用主要是應用在數(shù)字電路的設(shè)計中。目前,它在中國的應用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計中。當然在一些實力較為雄厚的單位,它也被用來設(shè)計ASIC。</p><h4>  2.2 VHDL語言的特點</h2><p>  VHDL是一種全方位的硬件描述語言,具有極強的描述能力,能支持系統(tǒng)行為級、寄存器

49、傳輸級和邏輯門級三個不同層次的設(shè)計,支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述,覆蓋面廣,抽象能力強,因此在實際應用中越來越廣泛。</p><p>  VHDL的主要特點有:</p><p>  作為硬件描述語言的第一個國際標準,VHDL具有很強的可移植性。</p><p>  具有豐富的模擬仿真語句和庫函數(shù),隨時可對設(shè)計進行仿真模擬,因而能將設(shè)計中邏輯上的錯誤消

50、滅在組裝之前,在大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)功能的可行性。</p><p>  設(shè)計層次較高,用于較復雜的計算時,能盡早發(fā)現(xiàn)存在的問題,從而縮短設(shè)計周期。</p><p>  VHDL的設(shè)計不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。</p><p>  支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用。</p><p>  對于用VHDL完成的一個確定

51、的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動地把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。</p><p>  VHDL用源代碼描述來進行復雜控制邏輯的設(shè)計,靈活又方便,同時也便于設(shè)計結(jié)果的交流、保存和重用。</p><h4>  2.3 VHDL的設(shè)計流程</h2><p>  應用VHDL語言進行電子設(shè)計,首先要了解基本的設(shè)計流程。在EDA解決方案中采用VHDL要

52、經(jīng)過的流程如圖2.1所示。</p><p>  從圖2.1可以看出,在分析系統(tǒng)指標后,就進入了設(shè)計階段,首先是設(shè)計輸入,可以采用的輸入方式有VHDL語言、VHDL語言與邏輯圖混合輸入或采用邏輯圖輸入,這一步通常都使用芯片生產(chǎn)商提供的開發(fā)工具,有關(guān)這方面的內(nèi)容將在后面介紹。接下來是對所輸入的源文件進行編譯,即HDL Synthesis。通常稱為合成或邏輯合成,這一步通常由三個過程組成,分別是HDL語言合成(lang

53、uage synthesis或HDL compilation)、邏輯優(yōu)化(optimization)、目標映射(technology mapping)。前兩個過程很好理解,最后一步是為了適應不同公司的編譯器而生成EDIF(electronic design interchange format)的中間文件,也有的生成AHDL、DSL、QDIF、XNF等內(nèi)部網(wǎng)單描述文件。有些公司的軟件自帶編譯器,而也有些公司的軟件不帶編譯器,這時需要使用

54、第三方軟件,比較著名的有Exemplar 公司的Leonardo Spectrum 和Synplicity 公司的Synplify等。一般這類工具都采用Behavior Extracting </p><p>  圖2.1 VHDL的設(shè)計流程</p><p>  對于這些步驟,一般均可借助由芯片生產(chǎn)商提供的開發(fā)軟件完成。因此一定要在這里將各項功能都調(diào)試正確,接下來就是對芯片進行裝載程序,

55、在這里要用各個芯片廠商提供的編譯器來生成可用于裝載(download)的文件進行裝載。例如,Altera公司的軟件生成的裝載文件是 .POF,用軟件菜單中的Program命令裝載芯片;Lattice公司的軟件生成的裝載文件是 .JED,用軟件菜單中的Fitter命令裝載芯片。每個公司的開發(fā)工具都具備這些功能。最后是對裝載的芯片進行系統(tǒng)調(diào)試以驗證設(shè)計的正確性。如果其中哪一步出現(xiàn)錯誤,都要重復前面的步驟,直到最終產(chǎn)品調(diào)試通過。</p&

56、gt;<h4>  2.4 VHDL程序的基本結(jié)構(gòu)</h2><p>  一個VHDL程序由5個部分組成,包括實體(ENTITY)、結(jié)構(gòu)體(architecture)、配置(coxnfiguration)、包(package)和庫(library)。實體和結(jié)構(gòu)體兩大部分組成程序設(shè)計的最基本單元。圖2.2表示的是一個VHDL程序的基本組成。配置是用來從庫中選擇所需要的單元來組成該系統(tǒng)設(shè)計的不同規(guī)格的不

57、同版本,VHDL和Verilog HDL已成為IEEE的標準語言,使用IEEE提供的版本。包是存放每個設(shè)計模塊都能共享的設(shè)計類型、常數(shù)和子程序的集合體。庫是用來存放已編譯的實體、結(jié)構(gòu)體、包和配置。在設(shè)計中可以使用ASIC芯片制造商提供的庫,也可以使用由用戶生成的IP庫。</p><p>  圖2.2 VHDL程序的基本組成</p><h3>  第三章 MAX+PLUS II軟件介紹&l

58、t;/h2><h4>  3.1 MAX+PLUS II簡介</h2><p>  Max+PlusII(或?qū)懗蒑axplus2,或MP2) 是Altera公司推出的的第三代PLD開發(fā)系統(tǒng)(Altera第四代PLD開發(fā)系統(tǒng)被稱為:QuartusII,主要用于設(shè)計新器件和大規(guī)模CPLD/FPGA), Altera是世界上最大可編程邏輯器件的供應商之一。使用MAX+PLUSII的設(shè)計者不需精通器件

59、內(nèi)部的復雜結(jié)構(gòu)。設(shè)計者可以用自己熟悉的設(shè)計工具(如原理圖輸入或硬件描述語言)建立設(shè)計,MAX+PLUSII把這些設(shè)計轉(zhuǎn)自動換成最終所需的格式。其設(shè)計速度非???。對于一般幾千門的電路設(shè)計,使用MAX+PLUSII,從設(shè)計輸入到器件編程完畢,用戶拿到設(shè)計好的邏輯電路,大約只需幾小時。設(shè)計處理一般在數(shù)分鐘內(nèi)內(nèi)完成。特別是在原理圖輸入等方面,Maxplus2被公認為是最易使用,人機界面最友善的PLD開發(fā)軟件,特別適合初學者使用,其軟件操作界面如

60、圖3.1所示。</p><p>  圖3.1 MAX+PLUS II 軟件操作界面</p><h4>  Max+PlusⅡ開發(fā)系統(tǒng)的特點</h2><p><b>  1.開放的界面</b></p><p>  Max+plusⅡ支持與Cadence,Exemplarlogic,Mentor Graphics,Syn

61、plicty,Viewlogic和其它公司所提供的EDA工具接口。</p><p><b>  2.與結(jié)構(gòu)無關(guān)</b></p><p>  Max+plusⅡ系統(tǒng)的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可編程邏輯器件,提供了世界上唯一真正與結(jié)構(gòu)無關(guān)的可

62、編程邏輯設(shè)計環(huán)境。</p><p><b>  3.完全集成化</b></p><p>  Max+plusⅡ的設(shè)計輸入、處理與較驗功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動態(tài)調(diào)試、縮短開發(fā)周期。</p><p><b>  4.豐富的設(shè)計庫</b></p><p>  Max+plusⅡ提供豐

63、富的庫單元供設(shè)計者調(diào)用,其中包括74系列的全部器件和多種特殊的邏輯功能(Macro-Function)以及新型的參數(shù)化的兆功能(Mage-Function)。</p><p><b>  5.模塊化工具</b></p><p>  設(shè)計人員可以從各種設(shè)計輸入、處理和較驗選項中進行選擇從而使設(shè)計環(huán)境用戶化。</p><p>  6.硬件描述語言(

64、HDL)</p><p>  Max+plusⅡ軟件支持各種HDL設(shè)計輸入選項,包括VHDL、Verilog HDL和Altera自己的硬件描述語言AHDL。</p><p>  7.Opencore特征</p><p>  Max+plusⅡ軟件具有開放核的特點,允許設(shè)計人員添加自己認為有價值的宏函數(shù)。</p><h4>  3.3 Max

65、+PlusⅡ功能簡介</h2><p>  1.原理圖輸入(Graphic Editor)</p><p>  MAX+PLUSII軟件具有圖形輸入能力,用戶可以方便的使用圖形編輯器輸入電路圖,圖中的元器件可以調(diào)用元件庫中元器件,除調(diào)用庫中的元件以外,還可以調(diào)用該軟件中的符號功能形成的功能塊.圖形編輯器窗口見圖3.2。</p><p>  2.硬件描述語言輸入(Te

66、xt Editor)</p><p>  MAX+PLUSII軟件中有一個集成的文本編輯器,該編輯器支持VHDL,AHDL和Verilog硬件描述語言的輸入,同時還有一個語言模板使輸入程序語言更加方便,該軟件可以對這些程序語言進行編譯并形成可以下載配置數(shù)據(jù),文本編輯器窗口見圖3.3。</p><p>  3.波形編輯器 (Waveform Editor)</p><p&

67、gt;  在進行邏輯電路的行為仿真時,需要在所設(shè)計電路的輸入端加入一定的波形,波形編輯器可以生成和編輯仿真用的波形(*.SCF文件),使用該編輯器的工具條可以容易方便的生成波形和編輯波形。波形編輯器窗口如圖3.4所示。使用時只要將欲輸入波形的時間段用鼠標涂黑,然后選擇工具條中的按鈕,例如,如果要某一時間段為高電平,只需選擇按鈕 ”1”。</p><p>  還可以使用輸入的波形(*.WDF文件)經(jīng)過編譯生成邏輯功

68、能塊,相當于已知一個芯片的輸入輸出波形,但不知是何種芯片,使用該軟件功能可以解決這個問題,設(shè)計出一個輸入和輸出波形相同CPLD電路。</p><p>  4.管腳(底層)編輯窗口 (Floorplan Editor)</p><p>  該窗口用于將已設(shè)計好邏輯電路的輸入輸出節(jié)點賦予實際芯片的引腳,通過鼠標的拖拉,方便的定義管腳的功能。管腳(底層)編輯窗口見圖3.5。</p>

69、<p><b>  5.自動錯誤定位</b></p><p>  在編譯源文件的過程中,若源文件有錯誤,Max+Plus2軟件可以自動指出錯誤類型和錯誤所在的位置。</p><p><b>  6.邏輯綜合與適配</b></p><p>  該軟件在編譯過程中,通過邏輯綜合 (Logic Synthesizer

70、)和適配(Fitter) 模塊,可以把最簡單的邏輯表達式自動的吻合在合適的器件中。</p><p><b>  7.設(shè)計規(guī)則檢查</b></p><p>  選取Compile\Processing\Design Doctor菜單,將調(diào)出規(guī)則檢查醫(yī)生,該醫(yī)生可以按照三種規(guī)則中的一個規(guī)則檢查各個設(shè)計文件,以保證設(shè)計的可靠性。一旦選擇該菜單,在編譯窗口將顯示出醫(yī)生,用鼠標

71、點擊醫(yī)生,該醫(yī)生可以告訴你程序文件的健康情況。見圖3.6。 </p><p>  8.多器件劃分 (Partitioner)</p><p>  如果設(shè)計不能完全裝入一個器件,編譯器中的多器件劃分模塊,可自動的將一個設(shè)計分成幾個部分并分別裝入幾個器件中,并保證器件之間的連線最少。</p><p><b>  9.編程文件的產(chǎn)生</b><

72、/p><p>  編譯器中的裝配程序(Assembler)將編譯好的程序創(chuàng)建一個或多個編程目標文件:</p><p>  EPROM配置文件(*.POF)例如,MAX7000S系列</p><p>  SRAM文件(*.SCF)例如,FLEX8000系列的配置芯片EPROM</p><p>  JEDEC文件(*.JED)</p>

73、<p>  十六進制文件(*.HEX)</p><p>  文本文件(*.TTF)</p><p>  串行BIT流文件(*.SBF)</p><p><b>  10.仿真</b></p><p>  當設(shè)計文件被編譯好,并在波形編輯器中將輸入波形編輯完畢后,就可以進行行為仿真了,通過仿真可以檢驗設(shè)計的邏輯關(guān)

74、系是否準確.</p><p>  11.分析時間(Analyze Timing)</p><p>  該功能可以分析各個信號到輸出端的時間延遲,可以給出延遲矩陣和最高工作頻率.見圖3.7和圖3.8。</p><p><b>  12.器件編程</b></p><p>  當設(shè)計全部完成后,就可以將形成的目標文件下載到芯片

75、中,實際驗證設(shè)計的準確性.</p><h4>  3.4 Max+plusⅡ設(shè)計過程</h2><p><b>  1.設(shè)計流程</b></p><p>  使用Max+plusⅡ軟件設(shè)計流程由以下幾部分組成。如圖3.9所示。</p><p>  1.設(shè)計輸入:可以采用原理圖輸入、HDL語言描述、EDIF網(wǎng)表輸入及波形輸

76、入等幾種方式。</p><p>  2.編譯:先根據(jù)設(shè)計要求設(shè)定編譯參數(shù)和編譯策略,如器件的選擇、邏輯綜合方式的選擇等。然后根據(jù)設(shè)定的參數(shù)和策略對設(shè)計項目進行網(wǎng)表提取、邏輯綜合和器件適配,并產(chǎn)生報告文件、延時信息文件及編程文件,供分析仿真和編程使用。</p><p>  3.仿真:仿真包括功能仿真、時序仿真和定時分析,可以利用軟件的仿真功能來驗證設(shè)計項目的邏輯功能是否正確。</p&g

77、t;<p>  4.編程與驗證:用經(jīng)過仿真確認后的編程文件通過編程器(Programmer)將設(shè)計下載到實際芯片中,最后測試芯片在系統(tǒng)中的實際運行性能。</p><p>  在設(shè)計過程中,如果出現(xiàn)錯誤,則需重新回到設(shè)計輸入階段,改正錯誤或調(diào)整電路后重復上述過程。</p><p>  圖3.10是Max+plusⅡ編譯設(shè)計主控界面,它顯示了Max+plusⅡ自動設(shè)計的各主要處理

78、環(huán)節(jié)和設(shè)計流程,包括設(shè)計輸入編輯、編譯網(wǎng)表提取、數(shù)據(jù)庫建立、邏輯綜合、邏輯分割、適配、延時網(wǎng)表提取、編程文件匯編(裝配)以及編程下載9個步驟。</p><p><b>  2.設(shè)計步驟</b></p><p>  1)輸入項目文件名(File/Project/Name)</p><p>  2)輸入源文件(圖形、VHDL、AHDL、Verlog

79、和波形輸入方式)</p><p>  (Max+plusⅡ/graphic Editor;Max+plusⅡ/Text Editor;Max+plusⅡ/Waveform Editor)</p><p>  3)指定CPLD型號(Assign/Device)</p><p>  4)設(shè)置管腳、下載方式和邏輯綜合的方式</p><p>  (A

80、ssign/Global Project Device Option,Assign/Global Logic Synthesis)</p><p>  5)保存并檢查源文件(File/project/Save & Check)</p><p>  6)指定管腳(Max+plusⅡ/Floorplan Editor)</p><p>  7)保存和編譯源文件(

81、File/project/Save & Compile)</p><p>  8)生成波形文件(Max+plusⅡ/Waveform Editor)</p><p>  9)仿真(Max+plusⅡ/Simulator)</p><p>  10)下載配置(Max+plusⅡ/Programmer)</p><h3>  第四章 地鐵

82、售票系統(tǒng)的設(shè)計與實現(xiàn)</h2><p><b>  4.1 課題要求</b></p><p><b>  功能描述:</b></p><p>  用于模仿地鐵售票的自動售票,完成地鐵售票的核心控制功能。</p><p><b>  功能要求:</b></p>&l

83、t;p>  售票機有兩個進幣孔,一個是輸入硬幣,一個是輸入紙幣,硬幣的識別范圍是5角和1元的硬幣,紙幣的識別范圍是1元、2元,5元,10元。乘客可以連續(xù)多次投入錢幣。乘客可以選擇的種類為2元和4元,乘客一次只能選擇一個出站口。購買車票時,乘客先選擇出站名,然后選擇所需的票數(shù),再進行投幣,投入的錢幣未達到所需金額時,顯示信號,提醒錢不夠,需要繼續(xù)投入錢幣,如果投入的錢幣達到所需金額時,售票機自動出票,并找出余額,本次交易結(jié)束,等待下

84、一次的交易。在投幣期間,乘客可以按取消鍵取消本次操作,錢幣自動退出。</p><p><b>  4.2設(shè)計分析</b></p><p>  經(jīng)過分析, 本地鐵自動售票系統(tǒng)的設(shè)計需要實現(xiàn)以下幾項主要功能: 站點選擇, 票數(shù)選擇, 投幣處理, 出票及余額找零.</p><p>  本系統(tǒng)可以采用模塊化設(shè)計和有限狀態(tài)機的設(shè)計方案來實現(xiàn)。 <

85、/p><p>  采用模塊化設(shè)計方法即從整個系統(tǒng)的功能出發(fā), 將系統(tǒng)的整體逐步分解為若干個子系統(tǒng)和模塊,然后用VHDL語言對各個模塊進行編程,最后形成頂層文件,在MAX+PLUSⅡ環(huán)境下進行編譯與仿真,檢查所編程序是否運行正確。如果出現(xiàn)錯誤,需要進行修改,直到完全通過為止。</p><p>  采用模塊化設(shè)計的優(yōu)點在于:對設(shè)計的描述從上到下逐步由粗略到詳細,符合常規(guī)的邏輯思維習慣。便于由多個設(shè)

86、計者同時進行設(shè)計從而加速整個項目的開發(fā)進度;每個子模塊都能夠靈活使用綜合和實現(xiàn)工具獨立進行優(yōu)化,從而達到更好的優(yōu)化結(jié)果;調(diào)試、更改某個子模塊時,不會影響其他模塊的實現(xiàn)結(jié)果,保證了整個設(shè)計的穩(wěn)定性與可靠性。 </p><p>  有限狀態(tài)機(Finite State Machine,簡稱FSM)是指輸出向量不僅依賴于當前輸入向量,也依賴于過去輸入向量序列的電路.一個有限狀態(tài)機電路由寄存器邏輯(時序邏輯)和組合邏輯組

87、成. 有限狀態(tài)機是數(shù)字邏輯電路以及數(shù)字系統(tǒng)的重要組成部分,尤其應用于數(shù)字系統(tǒng)核心部件的設(shè)計,以實現(xiàn)高效率高可靠性的邏輯控制。</p><p>  一般有限狀態(tài)機的VHDL組成 :</p><p><b>  說明部分:</b></p><p>  主要是設(shè)計者使用TYPE語句定義新的數(shù)據(jù)類型,如: </p><p>  

88、TYPE states IS (st0, st1, st2, st3, st4, st5); </p><p>  SIGNAL present_state, next_state: states;</p><p><b>  主控時序邏輯部分:</b></p><p>  任務是負責狀態(tài)機運轉(zhuǎn)和在外部時鐘驅(qū)動下實現(xiàn)內(nèi)部狀態(tài)轉(zhuǎn)換的進程。時序進程

89、的實質(zhì)是一組觸發(fā)器,因此,該進程中往往也包括一些清零或置位的輸入控制信號,如Reset信號。 </p><p><b>  主控組合邏輯部分:</b></p><p>  任務是根據(jù)狀態(tài)機外部輸入的狀態(tài)控制信號(包括來自外部的和狀態(tài)機內(nèi)部的非進程的信號)和當前的狀態(tài)值current_state來確定下一狀態(tài)next_state的取值內(nèi)容,以及對外部或?qū)?nèi)部其他進程輸出

90、控制信號的內(nèi)容。 </p><p><b>  輔助邏輯部分:</b></p><p>  輔助邏輯部分主要是用于配合狀態(tài)機的主控組合邏輯和主控時序邏輯進行工作,以完善和提高系統(tǒng)的性能。</p><p>  無論與基于VHDL的其它設(shè)計方案相比,還是與可完成相似功能的CPU相比,狀態(tài)機都有其難以逾越的優(yōu)越性,它主要表現(xiàn)在以下幾方面: </

91、p><p>  由于狀態(tài)機的結(jié)構(gòu)模式相對簡單,設(shè)計方案相對固定,特別是可以定義符號化枚舉類型的狀態(tài),這一切都為VHDL綜合器盡可能發(fā)揮其強大的優(yōu)化功能提供了有利條件。而且,性能良好的綜合器都具備許多可控或不可控的專門用于優(yōu)化狀態(tài)機的功能。 </p><p>  狀態(tài)機容易構(gòu)成性能良好的同步時序邏輯模塊,這對于對付大規(guī)模邏輯電路設(shè)計中令人深感棘手的競爭冒險現(xiàn)象無疑是一個上佳的選擇,加之綜合器對狀

92、態(tài)機的特有的優(yōu)化功能,使的狀態(tài)機解決方案的優(yōu)越性更為突出。 </p><p>  狀態(tài)機的VHDL設(shè)計程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂,易排錯和修改。 </p><p>  在高速運算和控制方面,狀態(tài)機更有其巨大的優(yōu)勢。由于在VHDL中,一個狀態(tài)機可以由多個進程構(gòu)成,一個結(jié)構(gòu)體中可以包含多個狀態(tài)機,而一個單獨的狀態(tài)機(或多個并行運行的狀態(tài)機)以順序方式的所能完成的運算和控制方面的工作與一個

93、CPU類似。 </p><p>  就運行速度而言,狀態(tài)機狀態(tài)變換周期只有一個時鐘周期,而且,由于在每一狀態(tài)中,狀態(tài)機可以完成許多并行的運算和控制操作,所以,一個完整的控制程序,即使由多個并行的狀態(tài)機構(gòu)成,其狀態(tài)數(shù)也是十分有限的。因此有理由認為,由狀態(tài)機構(gòu)成的硬件系統(tǒng)比CPU所能完成同樣功能的軟件系統(tǒng)的工作速度要高出兩個數(shù)量級。 </p><p>  就可靠性而言,狀態(tài)機的優(yōu)勢也是十分明顯

94、的。首先是由于狀態(tài)機的設(shè)計中能使用各種無懈可擊的容錯技術(shù);其次是當狀態(tài)機進入非法狀態(tài)并從中跳出所耗的時間十分短暫,通常只有2個時鐘周期,約數(shù)十個ns,尚不足以對系統(tǒng)的運行構(gòu)成損害.</p><p>  應用VHDL 設(shè)計狀態(tài)機的具體步驟如下:</p><p>  (1)根據(jù)系統(tǒng)要求確定狀態(tài)數(shù)量、狀態(tài)轉(zhuǎn)移的條件和各狀態(tài)輸出信號的賦值,并畫出狀態(tài)轉(zhuǎn)移圖;</p><p>

95、; ?。?)按照狀態(tài)轉(zhuǎn)移圖編寫狀態(tài)機的VHDL 設(shè)計程序;</p><p> ?。?)利用EDA 工具對狀態(tài)機的功能進行仿真驗證。</p><p>  經(jīng)過綜合比較,決定采用狀態(tài)機來實現(xiàn)本系統(tǒng)的設(shè)計,這樣不僅思路很清楚而且可讀性也非常強. 利用狀態(tài)機實現(xiàn)售票功能,僅需要一個模塊,避免了考慮各模塊相連時的控制問題</p><p>  因此需要首先把整個系統(tǒng)的所有狀態(tài)都

96、給羅列出來,然后實現(xiàn)每個狀態(tài)的內(nèi)容,最后再利用一些變量將各個狀態(tài)連接起來,實現(xiàn)整個系統(tǒng)的基本功能.</p><p><b>  4.3狀態(tài)機設(shè)計</b></p><p>  根據(jù)以上的分析,地鐵售票系統(tǒng)可以分為以下五個狀態(tài):</p><p> ?。?)selstation:選站狀態(tài)</p><p> ?。?)seltic

97、ket: 選票狀態(tài)</p><p> ?。?)inputcoin: 投幣狀態(tài)</p><p> ?。?)ticketout: 出票狀態(tài)</p><p>  (5)givechange: 找零狀態(tài)</p><p>  而且系統(tǒng)每個狀態(tài)完成以下功能:</p><p>  等待,選站狀態(tài):在該狀態(tài)用戶完成選站功能,選站完成后

98、,tp不為零,自動進入選票狀態(tài)。當無人使用時,系統(tǒng)也停留在該狀態(tài),等待下一個用戶使用。</p><p>  選票狀態(tài):在該狀態(tài)用戶完成選票功能,選票完成后,tmoney不為零,自動進入投幣狀態(tài)。按cancelkey鍵可取消操作,系統(tǒng)回到等待、選站狀態(tài)。</p><p>  投幣狀態(tài):在該狀態(tài)用戶可投幣,可多次投錢,可同時投硬幣和紙幣,但不可同時投一個以上硬幣或一張以上紙幣。用戶投幣后,在該

99、狀態(tài)系統(tǒng)內(nèi)部完成計算投幣總額的功能,并將計算結(jié)果跟所需錢數(shù)比較,若錢不夠,回到投幣狀態(tài),也可按cancelkey鍵將錢退出;若錢正好投夠,進入出票狀態(tài).出票結(jié)束后, 若錢有多余,則自動進入找錢狀態(tài)。 </p><p>  出票狀態(tài):在該狀態(tài)完成出票功能,票每周期出一張,直到出夠為止。票全部出完以后,自動進入出錢狀態(tài)。 </p><p>  找零狀態(tài):在該狀態(tài)完成出幣功能,若余額不為零,繼續(xù)

100、在此狀態(tài)出幣,若余額已為零,系統(tǒng)回到等待、選站狀態(tài)。</p><p>  以上所有功能按時鐘周期進行.</p><p>  給出tp,tmoney,pmoney,num,en幾個變量,控制狀態(tài)間的轉(zhuǎn)移。根據(jù)tp判斷是否完成選站,根據(jù)tmoney判斷是否完成選票,根據(jù)pmoney判斷投幣是否足夠,根據(jù)num判斷出票是否足夠,根據(jù)en判斷找錢是否結(jié)束. </p><p>

101、;  設(shè)計中輸入有clk, reset,station,tn,lettuce,coin ,cancelkey.其中clk是時鐘周期信號, reset為系統(tǒng)復位信號,station是乘客所選的出站號,程序中一共設(shè)置了16個站,對應的票價為2元和4元.0代表本站,1-10站票價為2元,11-15站票價為4元.而tn表示乘客所選的票數(shù),為方便設(shè)計,乘客一次購車票數(shù)限制在3張以內(nèi). Lettuce表示乘客投入的紙幣, Coin表示乘客投的硬幣,

102、 cancelkey是乘客在選票和投幣期間用來取消操作的.</p><p>  設(shè)計中輸出有Tout,Mout,MoneyInputAlarm,State.其中Tout表示出票, 周期數(shù)即是出票數(shù), Mout表示找出的零錢, 若所投錢幣總額恰好為車票總額, 則Mout一直為0,MoneyInputAlarm表示所投金額不足時發(fā)出的警報,當繼續(xù)投幣至足額時MoneyInputAlarm會自動恢復為0,交易正常進行.

103、 State是用來標號各個狀態(tài)的.加這個輸出主要是考慮到調(diào)試程序時能更方便地觀察到狀態(tài)之間的轉(zhuǎn)換,更容易發(fā)現(xiàn)問題,調(diào)試程序.</p><p>  4.4系統(tǒng)設(shè)計流程圖</p><p>  經(jīng)過分析,整個系統(tǒng)的流程圖設(shè)計如圖4.2所示.</p><p><b>  圖4.2系統(tǒng)流程圖</b></p><p>  系統(tǒng)上電后

104、首先對于整個系統(tǒng)進行進行復位,處于等待乘客選站狀態(tài);</p><p>  當乘客選擇了出站名之后,系統(tǒng)內(nèi)部設(shè)定相應的票價(2元和4元);</p><p>  然后系統(tǒng)進入選擇購買票數(shù)同時計算出票價總額;</p><p>  選票完成后系統(tǒng)轉(zhuǎn)到投幣狀態(tài),系統(tǒng)對于乘客所投入的硬幣(5角和1元)和紙幣(1元,2元,5元,10元)進行識別,在每次投幣結(jié)束后累加投幣總額,然后

105、判斷所投錢幣是否足夠,如果不足繼續(xù)停留在投幣狀態(tài);</p><p>  如果投幣足夠,系統(tǒng)進入到出票狀態(tài),每個周期出一張票,出票結(jié)束后進行余額找零;</p><p>  余額找零按照從大到小(10元,5元,2元,1元,5角)的原則逐額進行退錢,找零結(jié)束系統(tǒng)返回到初始等待選站狀態(tài);</p><p>  購票過程中,在選擇了站點以后, 乘客可以按下取消鍵(cancelk

106、ey=1),系統(tǒng)返回等待選站狀態(tài),可以進行重新選站或結(jié)束本次操作.</p><p>  在投幣過程中,如果所投錢幣未達到票價總額,乘客按下取消鍵后(cancelkey=1),系統(tǒng)轉(zhuǎn)到余額找零狀態(tài)逐額找零,找零結(jié)束后,重新回到等待選站狀態(tài).</p><p><b>  4.3程序仿真波形</b></p><p>  程序編制完成后,對于系統(tǒng)的各項

107、功能分別進行以下調(diào)試及仿真:</p><p>  (1) 圖4.3顯示系統(tǒng)處于等待選站狀態(tài)的波形</p><p>  系統(tǒng)開機上電后首先進行復位(Reset=1),所有輸出均為零,系統(tǒng)處于等待選站狀態(tài)(state=000).</p><p>  圖4.3等待選站狀態(tài)的波形</p><p> ?。?)圖4.4顯示選站未選票的波形</p&g

108、t;<p>  選擇出站8(Station=8),票價為2元(Tp=2),系統(tǒng)進入選票狀態(tài)(state=001). 所有輸出仍為零.</p><p>  圖4.4選站未選票的波形</p><p>  圖4.5顯示選站和選票都完成的波形</p><p>  選擇出站8(Station=8)和2張票(Tn=2)后,車票總額為4元(tmoney=4),系統(tǒng)進

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論