1004144733課程設(shè)計(論文)基于VHDL的Mealy狀態(tài)機設(shè)計_第1頁
1004144733課程設(shè)計(論文)基于VHDL的Mealy狀態(tài)機設(shè)計_第2頁
1004144733課程設(shè)計(論文)基于VHDL的Mealy狀態(tài)機設(shè)計_第3頁
1004144733課程設(shè)計(論文)基于VHDL的Mealy狀態(tài)機設(shè)計_第4頁
1004144733課程設(shè)計(論文)基于VHDL的Mealy狀態(tài)機設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于vhdl的mealy狀態(tài)機設(shè)計 物理與電子信息科學(xué)系 電子信息科學(xué)與技術(shù)專業(yè)姓名:xxx 學(xué)號:05120126指導(dǎo)教師:xxx摘 要: 伴隨著集成電路(ic)技術(shù)的發(fā)展,電子設(shè)計自動化(eda)逐漸成為重要的設(shè)計手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。eda的一個重要特征就是使用硬件描述語言(hdl)來完成的設(shè)計文件,誕生于1982年的vhdl語言是經(jīng)ieee確認的標準硬件描述語言,在電子設(shè)計領(lǐng)域受到了廣泛的接受。本文首先綜述了eda技術(shù)的發(fā)展概況,vhdl語言的的歷史、開發(fā)步驟及其優(yōu)點;著重介紹了使用eda技術(shù),用vhdl語言完成了moore狀態(tài)機的設(shè)計工作;通過開發(fā)工具ma

2、x+plus的編譯和功能仿真,驗證了方法的合理性和通用性;最后介紹了設(shè)計結(jié)果分析及狀態(tài)機設(shè)計的幾點體會。關(guān)鍵詞:eda;vhdl;mealy型;有限狀態(tài)機目錄1.引言(2)2.eda技術(shù)概述(2)2.1什么是eda (2)2.2 eda的發(fā)展(3)3.硬件描述語言(hdl)(5)3.1 vhdl語言簡介(5)3.2 vhdl語言的特點(5)4.max+plus軟件(8) 4.1 max+plus簡介(6) 4.2 max+plus的特點(7)5.mealy型狀態(tài)機的vhdl設(shè)計 (8)5.1狀態(tài)機的定義(8)5.2狀態(tài)機的分類(8)5.3態(tài)機的設(shè)計步驟(9)5.4mealy狀態(tài)機的設(shè)計(9)5

3、.5 mealy狀態(tài)機優(yōu)化(12)6.狀態(tài)機設(shè)計的幾點體會 (15)6.1把握整體與細節(jié)(15)6.2資料的重要性(15)6.3常用工具軟件的運用(15)參考文獻 (16)致謝 (18)1、引言20世紀末,電子技術(shù)得到了飛速發(fā)展,在其推動下,現(xiàn)代電子技術(shù)幾乎滲透到了社會的各個領(lǐng)域,有力的推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快?,F(xiàn)代電子設(shè)計的核心是eda(electronic design automation)技術(shù)。eda技術(shù)就是依賴功能強大的計算機,在eda工具軟件平臺上,對以硬件描述語言hdl(hardware des

4、cription languge)為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動的完成邏輯編譯、邏輯簡化、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合(布局布線),以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)即定的電子線路系統(tǒng)功能。eda技術(shù)是微電子技術(shù)和現(xiàn)代電子設(shè)計技術(shù)的結(jié)合,是這兩個領(lǐng)域共同孕育的奇葩。eda技術(shù)在硬件實現(xiàn)了方面融合了大規(guī)模集成電路制造技術(shù)、ic版圖設(shè)計技術(shù)、asic測試和封裝技術(shù)、fpga/cpld編程下載技術(shù)、自動測試技術(shù)等;在計算機輔助工程方面融合了計算機輔助設(shè)計(cad)、計算機輔助制造(cam)、計算機輔助測試(cat)、計算機輔助工程(cae)技術(shù)以及多種計算機云煙的設(shè)計概念;而在現(xiàn)代電子學(xué)方面則

5、容納了更多的內(nèi)容,如電子線路設(shè)計理論、數(shù)字信號處理技術(shù)、數(shù)字系統(tǒng)建模和優(yōu)化技術(shù)及長線技術(shù)理論等。因此,eda技術(shù)為現(xiàn)代電子理論和設(shè)計的表達與實現(xiàn)提供了可能性。在現(xiàn)代技術(shù)的所有領(lǐng)域中,得以飛速發(fā)展的科學(xué)技術(shù)多為計算機輔助設(shè)計,而非自動化設(shè)計。顯然,最早進入設(shè)計自動化的技術(shù)領(lǐng)域之一是電子技術(shù),這就是為什么電子技術(shù)始終處于所有科學(xué)技術(shù)發(fā)展最前列的原因之一。本文主要運用eda技術(shù),通過max+plus軟件對mealy狀態(tài)機進行設(shè)計,并對程序及仿真結(jié)果進行分析和概括。2. eda技術(shù)概述2.1什么是eda在電子設(shè)計技術(shù)領(lǐng)域,可編程邏輯器件(如pld,gal)的應(yīng)用,已有了很好的普及。隨著可編程邏輯器件集

6、成規(guī)模不斷擴大,自身功能的不斷完善和計算機輔助設(shè)計技術(shù)的提高,在現(xiàn)代電子系統(tǒng)設(shè)計領(lǐng)域中的eda便應(yīng)運而生了。傳統(tǒng)的數(shù)字電路設(shè)計模式,如利用卡諾圖的邏輯化簡手段以及難懂的布爾方程表達方式和相應(yīng)的ttl或4000系列小規(guī)模集成芯片的堆砌技術(shù)正在迅速地退出歷史舞臺。eda是一種實現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設(shè)計的技術(shù),它與電子技術(shù)、微電子技術(shù)的發(fā)展密切相關(guān),吸收了計算機科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計算機作為工作平臺,是20世紀90年代初從cad(計算機輔助設(shè)計)、cam(計算機輔助制造)、cat(計算機輔助測試)和cae(計算機輔助工程)的概念發(fā)展而來的2。eda技術(shù)就是以計算機為工具,在

7、eda軟件平臺上,根據(jù)硬件描述語言hdl完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局線、仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。設(shè)計者的工作僅限于利用軟件的方式來完成對系統(tǒng)硬件功能的描述,在eda工具的幫助下和應(yīng)用相應(yīng)的fpg/cpld器件,就可以得到最后的設(shè)計結(jié)果。盡管目標系統(tǒng)是硬件,但整個設(shè)計和修改過程如同完成軟件設(shè)計一樣方便和高效。當然,這里的所謂eda主要是指數(shù)字系統(tǒng)的自動化設(shè)計,因為這一領(lǐng)域的軟硬件方面的技術(shù)已比較成熟,應(yīng)用的普及程度也已比較大。而模擬電子系統(tǒng)的eda正在進入實用,其初期的eda工具不一定需要硬件描述語言。此外,從應(yīng)用的廣度

8、和深度來說,由于電子信息領(lǐng)域的全面數(shù)字化,基于eda的數(shù)字系統(tǒng)的設(shè)計技術(shù)具有更大的應(yīng)用市場和更緊迫的需求性。2.2 eda的發(fā)展eda(electronics design automation 電子設(shè)計自動化)技術(shù)伴隨著半導(dǎo)體技術(shù)、集成技術(shù)和計算機技術(shù)的發(fā)展,經(jīng)歷了計算機輔助設(shè)cad(computer assist design)、計算機輔助工程設(shè)計cae(computer assistengineering design)和電子設(shè)計自動化esda(electronics systems design automation)三個發(fā)展階段。90年代以來,eda技術(shù)的發(fā)展和普及給電子系統(tǒng)的設(shè)計帶

9、來了革命性的變化,并已滲透到電子系統(tǒng)設(shè)計的各個領(lǐng)域。目前,eda工具的應(yīng)用范圍涉及模擬、微波等各個領(lǐng)域,可以實現(xiàn)各個領(lǐng)域電子系統(tǒng)設(shè)計的測試、設(shè)計仿真和布局布線等。eda技術(shù)是以計算機硬件和系統(tǒng)軟件為基本工作平臺,在電路與系統(tǒng)、數(shù)據(jù)庫、圖形學(xué)、圖論、拓撲邏輯、計算數(shù)學(xué)、優(yōu)化理論等諸多學(xué)科基礎(chǔ)上研制成的、商品化的eda通用支撐軟件和應(yīng)用軟件包。電子設(shè)計工程師只要完成對電子系統(tǒng)的功能描述,就可以利用計算機和eda工具完成電路的功能設(shè)計、邏輯設(shè)計、性能分析、時序測試直至印刷電路板pcb(printed circuit board)的自動設(shè)計。近十年來,微電子技術(shù)和計算機技術(shù)的進步及電子產(chǎn)品市場運作節(jié)奏

10、的加快,涉及諸多領(lǐng)域的現(xiàn)代電子設(shè)計技術(shù)已邁入一個全新的階段。應(yīng)用系統(tǒng)設(shè)計從單純的專用集成電路asic(application specificintegrated circuit)設(shè)計走向了系統(tǒng)設(shè)計和單片系統(tǒng)soc(system on a chip)設(shè)計,尤其是20 世紀90 年代初的系統(tǒng)編程技術(shù)isp(in system programmability),為電子產(chǎn)品的設(shè)計和生產(chǎn)帶來了革命性的變化。3.硬件描述語言(hdl)3.1vhdl語言 vhdl(very2high2speed integrated circuithard2waredescriptionlanguage)是用來描述從抽樣

11、到具體級別硬件的工業(yè)標準語言。80 年代初期,因為美國軍事工業(yè)需要描述電子系統(tǒng)的標準方法,美國開始進行vhdl的開發(fā),它是美vhsic(超高速集成電路)的一部分,并于1986年和1987年分別成為美國和ieee的工業(yè)標準。此后,各eda公司相繼推出了自己的vhdl設(shè)計環(huán)境,并迅速地被接納為一種通用的設(shè)計交換媒介。作為一種規(guī)范和建模語言,它不只是意味著編寫代碼,而且也便于建立層次結(jié)構(gòu)和用元件庫進行設(shè)計。 vhdl翻譯成中文就是超高速集成電路硬件描述語言,是一種快速的電路設(shè)計工具,功能涵蓋了電路描述、電路合成、電路仿真等三大電路設(shè)計工作。vhdl 是用來描述從抽象到具體硬件級別的工業(yè)標準語言,并已

12、成為一種通用的硬件設(shè)計交換媒介。計算機輔助工程軟件的供應(yīng)商已把vhdl作為其cad或eda軟件輸入與輸出的標準,例如synopsys、altera、ca-dence、viewlogic 等eda廠商均提供了vhdl的編輯器,并在其仿真工具、綜合工具和布圖工具中提供了對vhdl 的支持。特別值得一提的是altera公司不僅提供大規(guī)模的cpld 和epga器件,同時也提供一套十分有特色的綜合工具maxplus-,設(shè)計者既可以使用原理圖輸入,也可以使用文本輸入方式,更可以二者混合輸入。從編譯、綜合、布線到仿真、下載一氣呵成,十分方便。3.2 vhdl語言的特點vhdl是一種面向設(shè)計的標準硬件描述語言

13、,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。vhdl不僅保留了一般計算機高級語言簡潔、高效的編程風(fēng)格和規(guī)范易讀的語言形式,而且還包含了許多獨特的具有硬件特性的語言。其主要特點如下。vhdl支持數(shù)字電路的開發(fā)環(huán)境,并能抽象表示電路的結(jié)構(gòu)和行為,降低了硬件電路的設(shè)計難度,并能進行系統(tǒng)的早期模擬以保證設(shè)計的正確性。vhdl支持多種設(shè)計方法:自頂向下、自底向上或混合的方法;支持邏輯設(shè)計中層次與領(lǐng)域的描述;支持行為描述、rtl方式描述、門級描述。vhdl設(shè)計與工藝無關(guān)。在傳統(tǒng)的硬件設(shè)計中,設(shè)計者必須手工檢查與工藝有關(guān)的因素,如時序、面積、驅(qū)動強度等。用vhdl設(shè)計的最大優(yōu)點是在工藝上無需花費過多的時

14、間和精力。4.max+plus4.1 max+plus簡介本次設(shè)計選用的開發(fā)環(huán)境為美國altera公司自行設(shè)計開發(fā)的eda工具max+plus,其全稱為mu1tiple array matrix and programmable logic user systems。它具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。它的器件系列從最初的max系列到最新的flex10k系列,從500門到10萬門提供了滿足各種條件需要的一系列器件。其中最為先進的flex系列采用獨特的快通道技術(shù),使得器件的可預(yù)測性大大增強,速度也得到提高,資源利用率達70%左右時,flex10k系列可以提供7omhz左右的工作

15、速度。max+plus結(jié)合各種系列器件的物理結(jié)構(gòu),提供了各種的優(yōu)化措施,以在提高工作速度和資源利用率之間給以平衡。從而對大多數(shù)設(shè)計提供解決方案。max+plus提供了原理圖輸入、文本輸入(采用硬件描述語言)和波形輸入等多種輸入手段,并可以任意組合使用。利用該工具所配備的編輯、編譯、仿真、綜合、芯片編程等功能,可將設(shè)計電路圖或電路描述程序變成基本的邏輯單元寫入到可編程的芯片中(如即ga芯片),做成asic芯片。用戶首先對所做項目進行設(shè)計,明確設(shè)計目的、設(shè)計要求;然后利用原理圖輸入方式或文本輸入方式進行設(shè)計輸入;輸入完成后,進行編譯,若編譯過程中發(fā)現(xiàn)錯誤,則檢查設(shè)計輸入,修改錯誤,直至沒有錯誤發(fā)生

16、;編譯完成后,就可以進行仿真,檢查設(shè)計是否達到設(shè)計要求,否則的話,還需重新檢查設(shè)計輸入;仿真結(jié)果達到要求后,就可以進行燒錄,把設(shè)計程序下載到目的芯片中;最后把芯片放到實際系統(tǒng)中進行驗證、測試。圖2給出了用max+plus進行fp以開發(fā)的流程。alteramax+plus設(shè)計輸入編譯仿真燒錄驗證圖2 用max+plus開發(fā)的fpga的流程示意圖 max+plus借助edif網(wǎng)表文件,sram目標文件(.sof)、lpm、veriloghdl和vhdl能與candence、mentor graphics、orcad、synopsys、synplicity和viewlogic。等公司提供的其它多種e

17、da工具接口。max+plus編譯器可以在pc機及各種工作站平臺上運行,這使max+plus成為工業(yè)界中唯一與平境。42 max+plus的特點max+plus的特點:(1)max+plus的編譯核心支持altera公司的flex 10k、fle 8k、max9000、max7000、flashhlogic、max5000、classic系列可編程邏輯器件。(2)max+plus的設(shè)計輸入、處理與校驗功能一起提供了全集成化的一套可編程邏輯開發(fā)工具,可加快動態(tài)調(diào)試,縮短開發(fā)周期。(3)max+plus支持各種hdl設(shè)計輸入,包括vhdl、verilog和altera ahdl。(4)max+pl

18、us與其他工業(yè)標準設(shè)計輸入、綜合與校驗工具鏈接。與cae工具的接口符合edif200和209、參數(shù)化模塊庫(lpm)、verilog、vhdl及其他標準。設(shè)計者可使用altera或標準cae 設(shè)計工具去建立邏輯設(shè)計,使用max+plus 編譯器對altera器件設(shè)計進行編譯,并使用altera或其他cae校驗工具進行器件或板級仿真。max+plus支持與synopsys、viewlogic、mentor graphics、cadence、exemplar、data i/o、intergraph、minc、orcad等公司提供的工具接口。5.mealy型狀態(tài)機的vhdl設(shè)計5.1狀態(tài)機的定義狀態(tài)

19、機是由狀態(tài)寄存器和組合邏輯電路構(gòu)成的,能夠根據(jù)控制信號按照預(yù)先設(shè)定的狀態(tài)進行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號動作,完成特定操作的控制中心,屬于種時序邏輯電路。常用的狀態(tài)機有三個部分組成,即當前狀態(tài)寄存器(current state,cs)、下一狀態(tài)組合邏輯(next state,ns)和輸出組合邏輯(output logic,ol)。5.2狀態(tài)機的分類從信號輸出方式上,有限狀態(tài)機分為:moore型和mealy型兩類,從輸出時序上看前者屬于異步輸出狀態(tài)機,后者屬于同步輸出狀態(tài)機(所謂同步或異步都是相對于時鐘信號而言的。不依賴于時鐘而有效的信號稱為異步信號,而依賴于時鐘才有效的信號稱為同步信號)。moor

20、e型有限狀態(tài)機的輸出僅為當前狀態(tài)的函數(shù), 這類狀態(tài)機在輸入發(fā)生變化后再等待時鐘的到來,時鐘使狀態(tài)發(fā)生變化時才導(dǎo)致輸出的變化;mealy型有限狀態(tài)機的輸出是當前狀態(tài)和所有輸入信號的函數(shù),它的輸出在輸入變化后立即發(fā)生。從結(jié)構(gòu)圖上看它們的區(qū)別如圖3和圖4所示。processcomcomb_outputscurrent_state圖3 moore型狀態(tài)機processcominputcomb_outputscurrent_state圖4 mealy型狀態(tài)機與moore型狀態(tài)機相比較,mealy狀態(tài)機的輸出變化要領(lǐng)先一個時鐘周期。通過狀態(tài)機的工作時序圖比較容易區(qū)分這兩種類型的狀態(tài)機,如果單純從vhdl代

21、碼來區(qū)分,就主要看他的輸出與輸入是否有關(guān)系,有關(guān)系的就是moore型狀態(tài)機,無關(guān)的就是mealy型狀態(tài)機.正確的區(qū)別兩類狀態(tài)機是正確設(shè)計的前提,只有才能按照自己的意愿或者要求去設(shè)計不同類型的狀態(tài)機。5.3狀態(tài)機的設(shè)計步驟利用vhdl語言設(shè)計狀態(tài)機,所有的狀態(tài)可表示為case-when結(jié)構(gòu)中的一個when子句,而狀態(tài)的轉(zhuǎn)換則通過if-then-else語句實現(xiàn)。1、利用枚舉型定義狀態(tài)信號type statetype is(s0,s1,s2); - 枚舉類型signal present_state,next_state:statetype; - 現(xiàn)態(tài)和次態(tài)信號2、建立狀態(tài)機進程state_comb

22、:process(present_state,din) 狀態(tài)轉(zhuǎn)換進程beginend process state_comb;73、在進程中定義狀態(tài)的轉(zhuǎn)換在進程中使用case-when語句,因狀態(tài)s0是狀態(tài)轉(zhuǎn)換的起點,因此,把s0作為case語句中第一個when子句項,然后利用if-then-else語句列出轉(zhuǎn)移到次態(tài)的條件,即可寫出狀態(tài)轉(zhuǎn)換流程:case present_state iswhen s0=z=0;if din=1then next_state=s1;else next_state=s0;end if;5.4 mealy型狀態(tài)機的設(shè)計與moore型狀態(tài)機相比較,mealy機的輸出變

23、化要領(lǐng)先一個周期,即一旦輸入信號或狀態(tài)發(fā)生變化,輸出信號即刻發(fā)生變化。mealy狀態(tài)機的結(jié)構(gòu)框圖如圖5所示:input組合邏輯寄存器reset當前狀態(tài)outputclk圖5 mealy狀態(tài)機結(jié)構(gòu)框圖對mealy狀態(tài)機設(shè)計首先要把整個流程圖畫出來,根據(jù)流程圖設(shè)計各個部分。下圖是流程圖:根據(jù)系統(tǒng)要求建立狀態(tài)轉(zhuǎn)換圖根據(jù)狀態(tài)轉(zhuǎn)移圖編寫vhdl設(shè)計程序利用eda工具進行仿真、驗證 圖6 狀態(tài)機的vhdl設(shè)計流程圖根據(jù)流程圖的設(shè)計步驟畫出狀態(tài)轉(zhuǎn)換圖,如下圖所示:st1st2st3st4st01/100000/101111/101010/110110/010101/101000/100111/01001圖7

24、 狀態(tài)轉(zhuǎn)換圖然后根據(jù)狀態(tài)轉(zhuǎn)換圖寫出程序代碼,程序如下面所示:library ieee;use ieee.std_logic_1164.all;entity mealy2 isport ( clk,datain,reset:in std_logic;q:out std_logic_vector(4 downto 0);end mealy2;architecture behav of mealy2 istype states is (st0,st1,st2,st3,st4);signal stx : states;signal q1 : std_logic_vector(4 downto 0);b

25、egincomreg : process(clk,reset)beginif reset=1 then stx if datain =1 then stx= st1;else stx if datain =0 then stx= st2;else stx if datain =1 then stx= st3;else stx if datain =0 then stx= st4;else stx if datain =1 then stx= st0;else stx stxif datain=1 then q2 :=10000;else q2:=01010;end if;when st1=if

26、 datain=0 then q2 :=10111;else q2:=10100;end if;when st2=if datain=1 then q2 :=10101;else q2:=10011;end if;when st3=if datain=0 then q2 :=11011;else q2:=01001;end if;when st4=if datain=1 then q2 :=11101;else q2:=01101;end if;when others = q2:=00000;end case;if clkevent and clk =1 then q1=q2;end if;e

27、nd process com1;q=q1;end behav;程序分析:這段程序是2進程mealy型狀態(tài)機。由entity語句引導(dǎo)的是主體,由architecture語句引導(dǎo)的是結(jié)構(gòu)體。在結(jié)構(gòu)體中,進程comreg是時序與組合混合型進程,它將狀態(tài)機的主控時序電路和主控狀態(tài)譯碼電路同時用一個進程來表達。這個進程也是狀態(tài)轉(zhuǎn)換過程。reset復(fù)位后初始狀態(tài)設(shè)置為st0,當datain為高電平且clk信號處于上升延時,將st1賦值給stx, 即狀態(tài)由st0轉(zhuǎn)換為st1;當datain為底電平且clk信號處于上升延時,將st2賦值給stx,即狀態(tài)由st1轉(zhuǎn)換為st2;當datain為高電平且clk信號處

28、于上升延時,將st3賦值給stx, 即狀態(tài)由st2轉(zhuǎn)換為st3;當datain為底電平且clk信號處于上升延時,將st4賦值給stx, 即狀態(tài)由st3轉(zhuǎn)換為st4;當datain為高電平且clk信號處于上升延時,將st4賦值給stx, 即狀態(tài)由st4轉(zhuǎn)換為st0。其他情況狀態(tài)均轉(zhuǎn)換為st0。進程com1負責根據(jù)狀態(tài)和輸入信號給出不同的輸出信號。這個進程是輸出過程。當為狀態(tài)st0時,datain為高電平,則輸出為“10000”,datain為低電平,則輸出為“01010”;當為狀態(tài)st1時,datain為高電平,則輸出為“10100”,datain為低電平,則輸出為“10111”;當為狀態(tài)st2

29、時,datain為高電平,則輸出為“10101”,datain為低電平,則輸出為“10011”;當為狀態(tài)st3時,datain為高電平,則輸出為“01001”,datain為低電平,則輸出為“11011”;當為狀態(tài)st4時,datain為高電平,則輸出為“11101”,datain為低電平,則輸出為“01101”。此進程最后用一個if語句產(chǎn)生一個鎖存器,將q2鎖存后再輸出。由于是同步鎖存的緣故,沒有發(fā)生鎖存后延時一個時鐘周期的現(xiàn)象。對程序進行編譯仿真后得出幾幅仿真圖,如下所示:其中reset為復(fù)位信號,高電平有效,datain為輸入信號,clk是時鐘信號,上升延有效,q為輸出信號,q165為輸

30、出q的16進值,stx為狀態(tài)。此圖的狀態(tài)由st0、st1、st2、st3和st4依次循環(huán)轉(zhuǎn)換下去。reset信號復(fù)位以后,狀態(tài)無條件轉(zhuǎn)換為狀態(tài)st0。此后每一個clk上升延依照datain輸入信號的高低進行狀態(tài)轉(zhuǎn)換。 此圖標尺處體現(xiàn)了狀態(tài)由st1轉(zhuǎn)換到st0。當狀態(tài)為st1,輸入datain為高電平時,狀態(tài)由st1到st0,而不是st1到st2。此圖標尺處體現(xiàn)了狀態(tài)由st2轉(zhuǎn)換到st0。當狀態(tài)為st2,輸入datain為低電平時,狀態(tài)由st2到st0,而不是st2到st3。此圖標尺處體現(xiàn)了狀態(tài)由st3轉(zhuǎn)換到st0。當狀態(tài)為st3,輸入datain為高電平時,狀態(tài)由st3到st0,而不是st3到

31、st4。5.5mealy狀態(tài)機優(yōu)化 毛刺的產(chǎn)生,一方面由于通常的狀態(tài)機中都包含有組合邏輯進程,使得輸出信號在時鐘的有效邊沿產(chǎn)生毛刺;另一方面當狀態(tài)信號是多位值的時候,在電路中就對應(yīng)了多條信號線,如果同時有幾條信號線跳變,由于存在傳輸延遲,各信號線上的值發(fā)生改變的時間會有先后,使得狀態(tài)遷移的時候在初始狀態(tài)和目的狀態(tài)間出現(xiàn)臨時狀態(tài),雖然它只存在了很短的時間,但仍然會影響電路的穩(wěn)定。對于第一種情況,在大多數(shù)條件下,毛刺對電路的影響可忽略不計,但是當狀態(tài)機的輸出信號作為三態(tài)使能控制或者時鐘信號使用的時候,就必須要消除毛刺。消除的方法可以用改進有限狀態(tài)機的描述方法來解決這個問題:把時鐘信號引入組合進程,

32、用時鐘來同步狀態(tài)遷移和信號輸出,在電路上表現(xiàn)為先將輸出信號保存在觸發(fā)器中,當時鐘有效邊沿到來的時候輸出;或者在電路設(shè)計時,選用延遲時間較小的器件,且盡可能采用級數(shù)少的電路結(jié)構(gòu)。 對于第二種情況,需要重新調(diào)整狀態(tài)編碼。一般而言,編有順序編碼、one-hot編碼、格雷碼、隨機編碼等。如果vhdl描述中沒有對各個狀態(tài)的編碼專門指定,模擬器和綜合器一般按照狀態(tài)的定義順序進行編碼。為了消除傳輸延遲造成的毛刺,理想的解決方法是使相鄰狀態(tài)間只有1位信號改變,因此應(yīng)該按照格雷碼制進行編碼。在某些情況下,狀態(tài)編碼不能保證只有一位發(fā)生變化時,有2種編碼方法可以保證狀態(tài)機編碼仍然維持。位變化,第一種方法是一個狀態(tài)分

33、配多個編碼;第二種方法是在狀態(tài)譯碼時采用分組譯碼,這樣就保證了狀態(tài)遷移時只有。位狀態(tài)線發(fā)生變化。在同步電路中,一般情況下“毛刺”不會產(chǎn)生重大影響。因為“毛刺”僅發(fā)生在時鐘有效邊沿之后的一小段時間內(nèi),只要在下一個時鐘有效邊沿到來之前“毛刺”消失即可。但當狀態(tài)機的輸出信號作為其他功能模塊的控制信號,例如作為異步控制、態(tài)使能控制或時鐘信號使用時,將會使受控模塊發(fā)生誤動作,造成系統(tǒng)工作混亂。因此,在這種情況下必須通過改變設(shè)計消除毛刺。 消除狀態(tài)機輸出信號的“毛刺”一般可采用三種方案: (1)調(diào)整狀態(tài)編碼,使相鄰狀態(tài)間只有位信號改變,從而消除競爭冒險的發(fā)生條件,避免了毛刺的產(chǎn)生。常采用的編碼方式為格雷碼

34、。它適用于順序遷移的狀態(tài)機。 (2)在有限狀態(tài)機的基礎(chǔ)上采用時鐘同步信號,即把時鐘信號引入組合進程。狀態(tài)機每一個輸出信號都經(jīng)過附加的輸出寄存器,并由時鐘信號同步,因而保證了輸出信號沒有毛刺。這種方法存在一些弊端:由于增加了輸出寄存器,硬件開銷增大,這對于一些寄存器資源較少的目標芯片是不利的;從狀態(tài)機的狀態(tài)位到達輸出需要經(jīng)過兩級組合邏輯,這就限制了系統(tǒng)時鐘的最高工作頻率;由于時鐘信號將輸出加載到附加的寄存器上,所以在輸出端得到信號值的時間要比狀態(tài)的變化延時一個時鐘周期。(3)直接把狀態(tài)機的狀態(tài)碼作為輸出信號,即采用狀態(tài)碼直接輸出型狀態(tài)機,使狀態(tài)和輸出信號一致,使得輸出譯碼電路被優(yōu)化掉了,因此不會

35、出現(xiàn)競爭冒險。這種方案,占用芯片資源少,信號與狀態(tài)變化同步,因此速度快,是一種較優(yōu)方案。但在設(shè)計過程中對狀態(tài)編碼時可能增加狀態(tài)向量,出現(xiàn)多余狀態(tài)。雖然可用case語句中whenothers來安排多余狀態(tài),但有時難以有效控制多余狀態(tài),運行時可能會出現(xiàn)難以預(yù)料的情況。因此它適用于狀態(tài)機輸出信號較少的場合。6、本次論文設(shè)計的幾點體會6.1把握整體跟細節(jié)設(shè)計狀態(tài)機首先要有個系統(tǒng)的把握,要從整體上去概述,畫出一個流程圖,然后根據(jù)流程圖才能一步一步的做下去。如果沒有一個大概的流程就很難著手做下去。其次在流程圖中的每一步都是一個細節(jié),有句話叫“細節(jié)決定成敗”,在結(jié)構(gòu)圖、狀態(tài)轉(zhuǎn)換圖、程序代碼、仿真等方面是都不

36、能出錯。本次論文主要采用自頂而下的設(shè)計方法,把一個整體劃分為幾個子模塊,然后對各個模塊依次進行設(shè)計,劃分的好壞,將直接影響到整個的系統(tǒng)開發(fā)。因此要對認真對待整體與細節(jié)。6.2 資料的重要性查找資料也是一個漫長而具體的過程,單純從教科書上很難編寫出一篇完整的論文。找資料就花掉了近一周的時間,而看懂資料與篩選資料又是一個更加漫長的過程。論文中的大部分內(nèi)容都源于所查找的資料,如果沒有網(wǎng)上查找的資料就很難寫出一篇完整的論文。6.3常用工具軟件的運用以前總覺的對word軟件很熟悉,真正到了運用起來的時候,發(fā)現(xiàn)很多東西都很生硬,很陌生。尤其是在繪圖等方面根本是一竅不通。通過這次論文的寫作,加深對常用工具軟

37、件的了解,同時也發(fā)現(xiàn)了自己的不足,在以后的學(xué)習(xí)生活中要繼續(xù)加強對常用軟件的學(xué)習(xí)與使用。參考文獻:1 康華光.電子技術(shù)基礎(chǔ).數(shù)字部分(第四版)m.北京:高等教育出版社,2000.7,4284572 潘松,黃繼業(yè).eda技術(shù)實用教程(第二版)m.北京:科學(xué)出版社,2005,1293 劉力,胡博.關(guān)于vhdl與edaj.電大理工,2007.6,71724 趙鑫,蔣亮,齊兆群,李曉凱.vhdl與數(shù)字電路設(shè)計m.北京:機械工業(yè)出版社,2005.4,175 陳耀和.vhdl語言設(shè)計技術(shù)m.北京:電子工業(yè)出版社,2004.3,786 萬莉莉.moore型和mealy型有限狀態(tài)機的vhdl設(shè)計j.科技信息,1

38、994,2202227 曾繁泰,陳美金.vhdl程序設(shè)計(第二版)m.北京:清華大學(xué)出版社,2542778 劉瑞新.vhdl語言與fpga設(shè)計.基于protel dxp開發(fā)平臺m.北京:機械工業(yè)出版社,2004.4,3183349 朱小莉,陳迪平,王鎮(zhèn)道.vhdl設(shè)計moore型有限狀態(tài)機時速度問題的探討j.半導(dǎo)體技術(shù),2002.4,485110 吳蓉.moore型有限狀態(tài)機的vhdl設(shè)計與資源利用研究j. 蘭州鐵道學(xué)院學(xué)報,2003.2,9093 ground on moore type fsms vhdl design methoddepartment of physics and electronic information science, electronic information science and technologynumber of student:05120126 name:sun jia fangtutor: hu xiang juanabstract :the electron

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論