版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于 VHDL 的 Mealy 狀態(tài)機設(shè)計物理與電子信息科學(xué)系 電子信息科學(xué)與技術(shù)專業(yè)姓名:孫家芳 學(xué)號:05120126指導(dǎo)教師:胡湘娟摘 要 :伴隨著集成電路 (IC技術(shù)的發(fā)展,電子設(shè)計自動化 (EDA逐漸成為重要的設(shè)計 手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。 EDA 的一個重要特征就是使用硬 件描述語言 (HDL 來完成的設(shè)計文件, 誕生于 1982年的 VHDL 語言是經(jīng) IEEE 確認(rèn)的標(biāo)準(zhǔn)硬件 描述語言, 在電子設(shè)計領(lǐng)域受到了廣泛的接受。 本文首先綜述了 EDA 技術(shù)的發(fā)展概況, VHDL 語言的的歷史、開發(fā)步驟及其優(yōu)點;著重介紹了使用 EDA 技術(shù),用 VHDL 語言
2、完成了 Moore 狀態(tài)機的設(shè)計工作;通過開發(fā)工具 Max+plus的編譯和功能仿真,驗證了方法的合理性和 通用性;最后介紹了設(shè)計結(jié)果分析及狀態(tài)機設(shè)計的幾點體會。關(guān)鍵詞:EDA ; VHDL ; Mealy 型;有限狀態(tài)機目 錄1. 引言(22. EDA 技術(shù)概述 (2 2.1什么是 EDA (22.2EDA 的發(fā)展(33. 硬件描述語言(HDL (5 3.1VHDL 語言簡介(53.2VHDL 語言的特點(54.MAX+PLUS 軟件(8 4.1MAX+PLUS簡介 (64.2MAX+PLUS的特點 (75.Mealy 型狀態(tài)機的 VHDL 設(shè)計 (8 5.1狀態(tài)機的定義(8 5.2狀態(tài)機的
3、分類(8 5.3態(tài)機的設(shè)計步驟(9 5.4Mealy 狀態(tài)機的設(shè)計(95.5Mealy 狀態(tài)機優(yōu)化(126. 狀態(tài)機設(shè)計的幾點體會 (15 6.1把握整體與細(xì)節(jié)(15 6.2資料的重要性(15 6.3常用工具軟件的運用(15 參考文獻(xiàn) (16 致謝 (181、引言20世紀(jì)末 , 電子技術(shù)得到了飛速發(fā)展 , 在其推動下 , 現(xiàn)代電子技術(shù)幾乎滲透 到了社會的各個領(lǐng)域 , 有力的推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高 , 同時也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高 , 產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。 現(xiàn)代電子設(shè)計的核心是 EDA (Electronic Design Automation 技術(shù)。 ED
4、A 技 術(shù)就是依賴功能強大的計算機, 在 EDA 工具軟件平臺上, 對以硬件描述語言 HDL (Hardware Description 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è)
5、計(CAD 、計算機輔助制造 (CAM 、計算機輔助測試(CAT 、計算機輔助工程(CAE 技術(shù)以及多種計 算機云煙的設(shè)計概念; 而在現(xiàn)代電子學(xué)方面則容納了更多的內(nèi)容, 如電子線路設(shè) 計理論、 數(shù)字信號處理技術(shù)、 數(shù)字系統(tǒng)建模和優(yōu)化技術(shù)及長線技術(shù)理論等。 因此, EDA 技術(shù)為現(xiàn)代電子理論和設(shè)計的表達(dá)與實現(xiàn)提供了可能性。 在現(xiàn)代技術(shù)的所有 領(lǐng)域中, 得以飛速發(fā)展的科學(xué)技術(shù)多為計算機輔助設(shè)計, 而非自動化設(shè)計。 顯然 , 最早進(jìn)入設(shè)計自動化的技術(shù)領(lǐng)域之一是電子技術(shù) , 這就是為什么電子技術(shù)始終處 于所有科學(xué)技術(shù)發(fā)展最前列的原因之一。本文主要運用 EDA 技術(shù),通過 MAX+PLUS軟件對 Mea
6、ly 狀態(tài)機進(jìn)行設(shè) 計,并對程序及仿真結(jié)果進(jìn)行分析和概括。2. EDA 技術(shù)概述2.1什么是 EDA在電子設(shè)計技術(shù)領(lǐng)域,可編程邏輯器件 (如 PLD , GAL 的應(yīng)用,已有了很 好的普及。 隨著可編程邏輯器件集成規(guī)模不斷擴大, 自身功能的不斷完善和計算 機輔助設(shè)計技術(shù)的提高,在現(xiàn)代電子系統(tǒng)設(shè)計領(lǐng)域中的 EDA 便應(yīng)運而生了。傳 統(tǒng)的數(shù)字電路設(shè)計模式, 如利用卡諾圖的邏輯化簡手段以及難懂的布爾方程表達(dá) 方式和相應(yīng)的 TTL 或 4000系列小規(guī)模集成芯片的堆砌技術(shù)正在迅速地退出歷史 舞臺。EDA 是一種實現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設(shè)計的技術(shù),它與電子技術(shù)、微電子技術(shù)的發(fā)展密切相關(guān), 吸收了計算
7、機科學(xué)領(lǐng)域的大多數(shù)最新研究成果, 以 高性能的計算機作為工作平臺, 是 20世紀(jì) 90年代初從 CAD (計算機輔助設(shè)計 、 CAM (計算機輔助制造 、 CAT (計算機輔助測試 和 CAE (計算機輔助工程 的概 念發(fā)展而來的 2。 EDA 技術(shù)就是以計算機為工具,在 EDA 軟件平臺上,根據(jù)硬 件描述語言 HDL 完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及 優(yōu)化、布局線、仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載 等工作。 設(shè)計者的工作僅限于利用軟件的方式來完成對系統(tǒng)硬件功能的描述, 在 EDA 工具的幫助下和應(yīng)用相應(yīng)的 FPG/CPLD器件, 就可以得到最后的
8、設(shè)計結(jié)果。 盡管目標(biāo)系統(tǒng)是硬件,但整個設(shè)計和修改過程如同完成軟件設(shè)計一樣方便和高 效。當(dāng)然,這里的所謂 EDA 主要是指數(shù)字系統(tǒng)的自動化設(shè)計,因為這一領(lǐng)域的 軟硬件方面的技術(shù)已比較成熟, 應(yīng)用的普及程度也已比較大。 而模擬電子系統(tǒng)的 EDA 正在進(jìn)入實用,其初期的 EDA 工具不一定需要硬件描述語言。此外,從應(yīng) 用的廣度和深度來說,由于電子信息領(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)歷了
9、計算機輔助設(shè) CAD (Computer Assist Design 、計算機輔助工程設(shè)計 CAE (Computer AssistEngineering Design 和電子 設(shè)計自動化 ESDA (Electronics Systems Design Automation 三個發(fā)展階段。90年代以來, EDA 技術(shù)的發(fā)展和普及給電子系統(tǒng)的設(shè)計帶來了革命性的變化, 并 已滲透到電子系統(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ù)庫
10、、 圖形學(xué)、圖論、拓?fù)溥壿嫛⒂嬎銛?shù)學(xué)、優(yōu)化理論等諸多學(xué)科基礎(chǔ)上研制成的、商 品化的 EDA 通用支撐軟件和應(yīng)用軟件包。 電子設(shè)計工程師只要完成對電子系統(tǒng)的 功能描述, 就可以利用計算機和 EDA 工具完成電路的功能設(shè)計、 邏輯設(shè)計、 性能 分析、時序測試直至印刷電路板 PCB (Printed Circuit Board 的自動設(shè)計。近十年 來, 微電子技術(shù)和計算機技術(shù)的進(jìn)步及電子產(chǎn)品市場運作節(jié)奏的加快, 涉及諸多 領(lǐng)域的現(xiàn)代電子設(shè)計技術(shù)已邁入一個全新的階段。 應(yīng)用系統(tǒng)設(shè)計從單純的專用集 成電路 ASIC (Application SpecificIntegrated Circuit 設(shè)計走向
11、了系統(tǒng)設(shè)計和單片系 統(tǒng) SOC (System On a Chip 設(shè)計, 尤其是 20 世紀(jì) 90 年代初的系統(tǒng)編程技術(shù) ISP (InSystem Programmability ,為電子產(chǎn)品的設(shè)計和生產(chǎn)帶來了革命性的變化。3. 硬件描述語言(HDL 3.1VHDL 語言VHDL (Very2High2Speed Integrated CircuitHard2wareDescriptionLanguage 是 用來描述從抽樣到具體級別硬件的工業(yè)標(biāo)準(zhǔn)語言。 80 年代初期 , 因為美國軍事工 業(yè)需要描述電子系統(tǒng)的標(biāo)準(zhǔn)方法 , 美國開始進(jìn)行 VHDL 的開發(fā) , 它是美 VHSIC (超 高速
12、集成電路 的一部分 , 并于 1986年和 1987年分別成為美國和 IEEE 的工業(yè)標(biāo) 準(zhǔn)。 此后 , 各 EDA 公司相繼推出了自己的 VHDL 設(shè)計環(huán)境 , 并迅速地被接納為一種 通用的設(shè)計交換媒介。 作為一種規(guī)范和建模語言 , 它不只是意味著編寫代碼 , 而且 也便于建立層次結(jié)構(gòu)和用元件庫進(jìn)行設(shè)計。VHDL 翻譯成中文就是超高速集成電路硬件描述語言,是一種快速的電路設(shè) 計工具, 功能涵蓋了電路描述、 電路合成、 電路仿真等三大電路設(shè)計工作。 VHDL 是用來描述從抽象到具體硬件級別的工業(yè)標(biāo)準(zhǔn)語言, 并已成為一種通用的硬件設(shè) 計交換媒介。 計算機輔助工程軟件的供應(yīng)商已把 VHDL 作為其
13、 CAD 或 EDA 軟件輸 入與輸出的標(biāo)準(zhǔn),例如 SYNOPSYS 、 ALTERA 、 CA-DENCE 、 VIEWLOGIC 等 EDA 廠商均提供了 VHDL 的編輯器,并在其仿真工具、綜合工具和布圖工具中提 供了對 VHDL 的支持。 特別值得一提的是 ALTERA 公司不僅提供大規(guī)模的 CPLD 和 EPGA 器件, 同時也提供一套十分有特色的綜合工具 MAXPLUS -, 設(shè)計者既 可以使用原理圖輸入, 也可以使用文本輸入方式, 更可以二者混合輸入。 從編譯、 綜合、布線到仿真、下載一氣呵成,十分方便。3.2 VHDL語言的特點VHDL 是一種面向設(shè)計的標(biāo)準(zhǔn)硬件描述語言 , 主
14、要用于描述數(shù)字系統(tǒng)的結(jié) 構(gòu)、行為、功能和接口。 VHDL 不僅保留了一般計算機高級語言簡潔、高效的編 程風(fēng)格和規(guī)范易讀的語言形式 , 而且還包含了許多獨特的具有硬件特性的語言。 其主要特點如下。 VHDL 支持?jǐn)?shù)字電路的開發(fā)環(huán)境 , 并能抽象表示電路的結(jié)構(gòu)和行為 , 降低了硬 件電路的設(shè)計難度 , 并能進(jìn)行系統(tǒng)的早期模擬以保證設(shè)計的正確性。 VHDL 支持多種設(shè)計方法 :自頂向下、 自底向上或混合的方法 ; 支持邏輯設(shè)計中 層次與領(lǐng)域的描述 ; 支持行為描述、 RTL 方式描述、門級描述。 VHDL 設(shè)計與工藝無關(guān)。在傳統(tǒng)的硬件設(shè)計中 , 設(shè)計者必須手工檢查與工藝有關(guān)的因素 , 如時序、面積、
15、驅(qū)動強度等。用 VHDL 設(shè)計的最大優(yōu)點是在工藝上無 需花費過多的時間和精力。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萬門提供了 滿足各種條件需要的一系列器件。 其中最為先進(jìn)的 FLEX 系列采用獨特的快通道 技術(shù), 使得器
16、件的可預(yù)測性大大增強, 速度也得到提高, 資源利用率達(dá) 70%左右 時, FLEX10K 系列可以提供 7OMHz 左右的工作速度。 MAX+PLUS結(jié)合各種 系列器件的物理結(jié)構(gòu), 提供了各種的優(yōu)化措施, 以在提高工作速度和資源利用率 之間給以平衡。從而對大多數(shù)設(shè)計提供解決方案。MAX +PLUS 提供了原理圖輸入、 文本輸入 (采用硬件描述語言 和波形輸入 等多種輸入手段, 并可以任意組合使用。 利用該工具所配備的編輯、 編譯、 仿真、 綜合、 芯片編程等功能, 可將設(shè)計電路圖或電路描述程序變成基本的邏輯單元寫 入到可編程的芯片中 (如即 GA 芯片 ,做成 ASIC 芯片。用戶首先對所做項
17、目進(jìn) 行設(shè)計, 明確設(shè)計目的、 設(shè)計要求; 然后利用原理圖輸入方式或文本輸入方式進(jìn) 行設(shè)計輸入; 輸入完成后, 進(jìn)行編譯, 若編譯過程中發(fā)現(xiàn)錯誤, 則檢查設(shè)計輸入, 修改錯誤,直至沒有錯誤發(fā)生 ; 編譯完成后,就可以進(jìn)行仿真,檢查設(shè)計是否達(dá) 到設(shè)計要求,否則的話,還需重新檢查設(shè)計輸入;仿真結(jié)果達(dá)到要求后,就可以 進(jìn)行燒錄, 把設(shè)計程序下載到目的芯片中; 最后把芯片放到實際系統(tǒng)中進(jìn)行驗證、 測試。圖 2給出了用 MAX +PLUS 進(jìn)行 FP 以開發(fā)的流程。 圖 2 用 MAX+PLUS開發(fā)的 FPGA 的流程示意圖設(shè)計 驗證MAX +PLUS 借助 EDIF 網(wǎng)表文件, SRAM 目標(biāo)文件 (
18、.sof 、 LPM 、 VerilogHDL 和 VHDL 能與 Candence 、 Mentor Graphics 、 OrCAD 、 Synopsys 、 Synplicity 和 Viewlogic 。等公司提供的其它多種 EDA 工具接口。 MAX +PLUS 編譯器可以在 PC 機及各種工作站平臺上運行,這使 MAX +PLUS 成為工業(yè)界中唯一與平境。 4. 2MAX+PLUS 的特點MAX +PLUS 的特點:(1 MAX +PLUS 的編譯核心支持 Altera 公司的 FLEX 10K 、 FLE 8K 、 MAX9000、 MAX7000、 FLASHHlogic 、
19、MAX5000、 Classic 系列可編程邏輯器件。(2 MAX +PLUS 的設(shè)計輸入、處理與校驗功能一起提供了全集成化的一套可 編程邏輯開發(fā)工具,可加快動態(tài)調(diào)試,縮短開發(fā)周期。(3 MAX +PLUS 支持各種 HDL 設(shè)計輸入, 包括 VHDL 、 Verilog 和 Altera AHDL 。(4 MAX +PLUS 與其他工業(yè)標(biāo)準(zhǔn)設(shè)計輸入、綜合與校驗工具鏈接。與 CAE 工 具的接口符合 EDIF 200和 209、參數(shù)化模塊庫(LPM 、 Verilog 、 VHDL 及其他標(biāo) 準(zhǔn)。 設(shè)計者可使用 Altera 或標(biāo)準(zhǔn) CAE 設(shè)計工具去建立邏輯設(shè)計, 使用 MAX +PLUS
20、編譯器對 Altera 器件設(shè)計進(jìn)行編譯, 并使用 Altera 或其他 CAE 校驗工具進(jìn)行器件 或板級仿真。 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)機是由狀態(tài)寄存器和組合邏輯電路構(gòu)成的, 能夠根據(jù)控制信號按照預(yù)先 設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移, 是協(xié)調(diào)相關(guān)信號動作, 完成特定操作的控制中心, 屬 于種時序邏輯電路。常用的狀態(tài)
21、機有三個部分組成,即當(dāng)前狀態(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)機 (所謂同步或異步都是 相對于時鐘信號而言的。不依賴于時鐘而有效的信號稱為異步信號 , 而依賴于時 鐘才有效的信號稱為同步信號 。 Moore 型有限狀態(tài)機的輸出僅為當(dāng)前狀態(tài)的函 數(shù) , 這類狀態(tài)機在輸入發(fā)生變化后再等待時鐘的到來 , 時鐘使?fàn)顟B(tài)發(fā)生變化時才
22、導(dǎo)致輸出的變化; Mealy 型有限狀態(tài)機的輸出是當(dāng)前狀態(tài)和所有輸入信號的函數(shù) , 它的輸出在輸入變化后立即發(fā)生。從結(jié)構(gòu)圖上看它們的區(qū)別如圖 3和圖 4所示。 圖 3 Moore型狀態(tài)機 圖 4 Mealy型狀態(tài)機與 Moore 型狀態(tài)機相比較 , Mealy 狀態(tài)機的輸出變化要領(lǐng)先一個時鐘周期。通 過狀態(tài)機的工作時序圖比較容易區(qū)分這兩種類型的狀態(tài)機 , 如果單純從 VHDL 代 碼來區(qū)分 , 就主要看他的輸出與輸入是否有關(guān)系 , 有關(guān)系的就是 Moore 型狀態(tài)機 , 無關(guān)的就是 Mealy 型狀態(tài)機 . 正確的區(qū)別兩類狀態(tài)機是正確設(shè)計的前提 , 只有才能 按照自己的意愿或者要求去設(shè)計不同類
23、型的狀態(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)機進(jìn)程state_comb:process(present_state,din 狀態(tài)轉(zhuǎn)換進(jìn)程beginend process state_comb;73、在進(jìn)程中定義狀態(tài)的轉(zhuǎn)換在進(jìn)程中使用 case
24、-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= 1 then next_state<=s1;else next_state<=s0;end if;5.4 Mealy型狀態(tài)機的設(shè)計與 Moore 型狀態(tài)機相比較 , Mealy 機的輸出變化要領(lǐng)先一個周期 , 即一旦輸入 信號或狀態(tài)發(fā)生變化 , 輸出信號即刻發(fā)生變化。Mealy 狀態(tài)機的
25、結(jié)構(gòu)框圖如圖 5所示: 圖 5 Mealy 狀態(tài)機結(jié)構(gòu)框圖對 Mealy 狀態(tài)機設(shè)計首先要把整個流程圖畫出來 , 根據(jù)流程圖設(shè)計各個部分。 下圖是流程圖 : 圖 6 狀態(tài)機的 VHDL 設(shè)計流程圖根據(jù)流程圖的設(shè)計步驟畫出狀態(tài)轉(zhuǎn)換圖 , 如下圖所示 :圖 7 狀態(tài)轉(zhuǎn)換圖然后根據(jù)狀態(tài)轉(zhuǎn)換圖寫出程序代碼 , 程序如下面所示 : library ieee;entity mealy2 isport ( clk,datain,reset:in std_logic;q:out std_logic_vector(4 downto 0;end mealy2;architecture behav of mealy
26、2 istype states is (st0,st1,st2,st3,st4;signal stx : states;signal q1 : std_logic_vector(4 downto 0;begincomreg : process(clk,resetbegin if reset='1' then stx<=st0;elsif clk'event and clk = '1' thencase stx iswhen st0 => if datain ='1' then stx<= st1;else stx<
27、=st0;end if; when st1 => if datain ='0' then stx<= st2;else stx<=st0;end if; when st2 => if datain ='1' then stx<= st3;else stx<=st0;end if; when st3 => if datain ='0' then stx<= st4;else stx<=st0;end if; when st4 => if datain ='1' then s
28、tx<= st0;else stx<=st0;end if; when others => stx<=st0;end case;end if;end process comreg;com1: process (stx,datain,clkvariable q2 : std_logic_vector( 4 downto 0;begincase stx iswhen st0=>if datain='1' then q2 :="10000"else q2:="01010"end if;when st1=>if
29、 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&
30、#39; then q2 :="11101"else q2:="01101"end if;when others => q2:="00000"end case;if clk'event and clk ='1' then q1<=q2;end if;end process com1;q<=q1;end behav;程序分析:這段程序是 2進(jìn)程 Mealy 型狀態(tài)機。由 entity 語句引導(dǎo)的是主體, 由 architecture 語句引導(dǎo)的是結(jié)構(gòu)體。在結(jié)構(gòu)體中, 進(jìn)程 comreg 是時序與
31、組合混合型進(jìn)程, 它將狀態(tài)機的主控時序 電路和主控狀態(tài)譯碼電路同時用一個進(jìn)程來表達(dá)。這個進(jìn)程也是狀態(tài)轉(zhuǎn)換過程。reset 復(fù)位后初始狀態(tài)設(shè)置為 st0, 當(dāng) datain 為高電平且 clk 信號處于上升延時,將 st1賦值給 stx , 即狀態(tài)由 st0轉(zhuǎn)換為 st1;當(dāng) datain 為底電平且 clk 信號處于上升延時, 將 st2賦值給 stx , 即狀態(tài)由 st1轉(zhuǎn)換為 st2;當(dāng) datain 為高電平且 clk 信號處于上升延 時,將 st3賦值給 stx , 即狀態(tài)由 st2轉(zhuǎn)換為 st3;當(dāng) datain 為底電平且 clk 信號處于上 升延時,將 st4賦值給 stx ,
32、即狀態(tài)由 st3轉(zhuǎn)換為 st4;當(dāng) datain 為高電平且 clk 信號處 于上升延時, 將 st4賦值給 stx , 即狀態(tài)由 st4轉(zhuǎn)換為 st0。 其他情況狀態(tài)均轉(zhuǎn)換為 st0。 進(jìn)程 com1負(fù)責(zé)根據(jù)狀態(tài)和輸入信號給出不同的輸出信號。這個進(jìn)程是輸出 過程。當(dāng)為狀態(tài) st0時, datain 為高電平,則輸出為“ 10000”, datain 為低電平, 則輸出為 “ 01010” ; 當(dāng)為狀態(tài) st1時, datain 為高電平, 則輸出為 “ 10100” , datain 為低電平, 則輸出為 “ 10111” ; 當(dāng)為狀態(tài) st2時, datain 為高電平, 則輸出為 “ 1
33、0101” , datain 為低電平,則輸出為“ 10011”;當(dāng)為狀態(tài) st3時, datain 為高電平,則輸出 為“ 01001”, datain 為低電平,則輸出為“ 11011”;當(dāng)為狀態(tài) st4時, datain 為高 電平,則輸出為“ 11101”, datain 為低電平,則輸出為“ 01101”。此進(jìn)程最后 用一個 IF 語句產(chǎn)生一個鎖存器,將 q2鎖存后再輸出。由于是同步鎖存的緣故,沒 有發(fā)生鎖存后延時一個時鐘周期的現(xiàn)象。對程序進(jìn)行編譯仿真后得出幾幅仿真圖,如下所示 :其中 reset 為復(fù)位信號 , 高電平有效, datain 為輸入信號, clk 是時鐘信號, 上升
34、延有效 , q 為輸出信號, q165為輸出 q 的 16進(jìn)值, stx 為狀態(tài)。此圖的狀態(tài)由 st0、 st1、 st 2、 s t 3和 st4依次循環(huán)轉(zhuǎn)換下去。 reset 信號復(fù)位以 后,狀態(tài)無條件轉(zhuǎn)換為狀態(tài) st0。此后每一個 clk 上升延依照 datain 輸入信號的高低 進(jìn)行狀態(tài)轉(zhuǎn)換。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st1轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st1, 輸入 datain 為高電平時, 狀態(tài)由 st1到 st0,而不是 st1到 st2。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st2轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st2, 輸入 datain 為低電平時, 狀態(tài)由 st2到 st0,而不是 st
35、2到 st3。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st3轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st3, 輸入 datain 為高電平時, 狀態(tài)由 st3到 st0,而不是 st3到 st4。5.5Mealy 狀態(tài)機優(yōu)化毛刺的產(chǎn)生,一方面由于通常的狀態(tài)機中都包含有組合邏輯進(jìn)程,使得輸 出信號在時鐘的有效邊沿產(chǎn)生毛刺; 另一方面當(dāng)狀態(tài)信號是多位值的時候, 在電 路中就對應(yīng)了多條信號線, 如果同時有幾條信號線跳變, 由于存在傳輸延遲, 各 信號線上的值發(fā)生改變的時間會有先后 , 使得狀態(tài)遷移的時候在初始狀態(tài)和目的 狀態(tài)間出現(xiàn)臨時狀態(tài),雖然它只存在了很短的時間,但仍然會影響電路的穩(wěn)定。 對于第一種情況, 在大多數(shù)條件下,
36、 毛刺對電路的影響可忽略不計, 但是當(dāng) 狀態(tài)機的輸出信號作為三態(tài)使能控制或者時鐘信號使用的時候, 就必須要消除毛 刺。 消除的方法可以用改進(jìn)有限狀態(tài)機的描述方法來解決這個問題:把時鐘信號 引入組合進(jìn)程,用時鐘來同步狀態(tài)遷移和信號輸出 , 在電路上表現(xiàn)為先將輸出信 號保存在觸發(fā)器中 , 當(dāng)時鐘有效邊沿到來的時候輸出; 或者在電路設(shè)計時 , 選用延 遲時間較小的器件 , 且盡可能采用級數(shù)少的電路結(jié)構(gòu)。對于第二種情況,需要重新調(diào)整狀態(tài)編碼。一般而言,編有順序編碼、 One -Hot 編碼、格雷碼、隨機編碼等。如果 vhdl 描述中沒有對各個狀態(tài)的編碼專 門指定 , 模擬器和綜合器一般按照狀態(tài)的定義順
37、序進(jìn)行編碼。為了消除傳輸延遲 造成的毛刺,理想的解決方法是使相鄰狀態(tài)間只有 1位信號改變,因此應(yīng)該按照 格雷碼制進(jìn)行編碼。 在某些情況下, 狀態(tài)編碼不能保證只有一位發(fā)生變化時, 有 2種編碼方法可以保證狀態(tài)機編碼仍然維持。位變化,第一種方法是一個狀態(tài)分 配多個編碼; 第二種方法是在狀態(tài)譯碼時采用分組譯碼, 這樣就保證了狀態(tài)遷移 時只有。位狀態(tài)線發(fā)生變化。在同步電路中,一般情況下“毛刺”不會產(chǎn)生重大影響。因為“毛刺”僅 發(fā)生在時鐘有效邊沿之后的一小段時間內(nèi), 只要在下一個時鐘有效邊沿到來之前 “毛刺” 消失即可。 但當(dāng)狀態(tài)機的輸出信號作為其他功能模塊的控制信號, 例如 作為異步控制、 態(tài)使能控制
38、或時鐘信號使用時, 將會使受控模塊發(fā)生誤動作, 造 成系統(tǒng)工作混亂。因此,在這種情況下必須通過改變設(shè)計消除毛刺。消除狀態(tài)機輸出信號的“毛刺”一般可采用三種方案:(1調(diào)整狀態(tài)編碼, 使相鄰狀態(tài)間只有1位信號改變, 從而消除競爭冒險的發(fā) 生條件, 避免了毛刺的產(chǎn)生。 常采用的編碼方式為格雷碼。 它適用于順序遷移的 狀態(tài)機。(2在有限狀態(tài)機的基礎(chǔ)上采用時鐘同步信號,即把時鐘信號引入組合進(jìn)程。狀態(tài)機每一個輸出信號都經(jīng)過附加的輸出寄存器, 并由時鐘信號同步, 因而保證 了輸出信號沒有毛刺。 這種方法存在一些弊端:由于增加了輸出寄存器, 硬件開 銷增大, 這對于一些寄存器資源較少的目標(biāo)芯片是不利的; 從狀
39、態(tài)機的狀態(tài)位到 達(dá)輸出需要經(jīng)過兩級組合邏輯, 這就限制了系統(tǒng)時鐘的最高工作頻率; 由于時鐘 信號將輸出加載到附加的寄存器上, 所以在輸出端得到信號值的時間要比狀態(tài)的 變化延時一個時鐘周期。(3直接把狀態(tài)機的狀態(tài)碼作為輸出信號,即采用狀態(tài)碼直接輸出型狀態(tài)機, 使?fàn)顟B(tài)和輸出信號一致, 使得輸出譯碼電路被優(yōu)化掉了, 因此不會出現(xiàn)競爭冒險。 這種方案,占用芯片資源少,信號與狀態(tài)變化同步,因此速度快,是一種較優(yōu)方 案。 但在設(shè)計過程中對狀態(tài)編碼時可能增加狀態(tài)向量, 出現(xiàn)多余狀態(tài)。 雖然可用 case 語句中 whenothers 來安排多余狀態(tài),但有時難以有效控制多余狀態(tài),運行時 可能會出現(xiàn)難以預(yù)料的情
40、況。因此它適用于狀態(tài)機輸出信號較少的場合。6、本次論文設(shè)計的幾點體會6.1把握整體跟細(xì)節(jié)設(shè)計狀態(tài)機首先要有個系統(tǒng)的把握,要從整體上去概述,畫出一個流程圖, 然后根據(jù)流程圖才能一步一步的做下去。 如果沒有一個大概的流程就很難著手做 下去。其次在流程圖中的每一步都是一個細(xì)節(jié),有句話叫“細(xì)節(jié)決定成敗” ,在 結(jié)構(gòu)圖、狀態(tài)轉(zhuǎn)換圖、程序代碼、仿真等方面是都不能出錯。本次論文主要采用 自頂而下的設(shè)計方法, 把一個整體劃分為幾個子模塊, 然后對各個模塊依次進(jìn)行 設(shè)計, 劃分的好壞, 將直接影響到整個的系統(tǒng)開發(fā)。 因此要對認(rèn)真對待整體與細(xì) 節(jié)。6.2資料的重要性查找資料也是一個漫長而具體的過程, 單純從教科書
41、上很難編寫出一篇完整 的論文。 找資料就花掉了近一周的時間, 而看懂資料與篩選資料又是一個更加漫 長的過程。 論文中的大部分內(nèi)容都源于所查找的資料, 如果沒有網(wǎng)上查找的資料 就很難寫出一篇完整的論文。6.3常用工具軟件的運用以前總覺的對 word 軟件很熟悉,真正到了運用起來的時候,發(fā)現(xiàn)很多東西 都很生硬,很陌生。尤其是在繪圖等方面根本是一竅不通。通過這次論文的寫 作,加深對常用工具軟件的了解,同時也發(fā)現(xiàn)了自己的不足,在以后的學(xué)習(xí)生 活中要繼續(xù)加強對常用軟件的學(xué)習(xí)與使用。Ground on Moore Type FSMS VHDL Design Method Department of Physics and Electronic Information Science, Electronic Information Science and Technology Number of student:
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人股份優(yōu)先認(rèn)購權(quán)合同參考樣本2篇
- 2025年度個人投資理財合同范本詳細(xì)說明4篇
- 建筑設(shè)備租賃合同(2篇)
- 2025年農(nóng)業(yè)科技項目研發(fā)合作協(xié)議集錦4篇
- 2025年度員工退休金及福利待遇確認(rèn)協(xié)議4篇
- 2024年中級經(jīng)濟師考試題庫附完整答案
- 2025年銷售員銷售技巧與產(chǎn)品知識培訓(xùn)勞務(wù)用工協(xié)議3篇
- 2025個人股權(quán)買賣及收益分配合同范本4篇
- 貨幣課程設(shè)計
- 虛擬仿生課程設(shè)計思路
- 2024版智慧電力解決方案(智能電網(wǎng)解決方案)
- 公司SWOT分析表模板
- 小學(xué)預(yù)防流行性感冒應(yīng)急預(yù)案
- 肺癌術(shù)后出血的觀察及護(hù)理
- 聲紋識別簡介
- 生物醫(yī)藥大數(shù)據(jù)分析平臺建設(shè)-第1篇
- 基于Android的天氣預(yù)報系統(tǒng)的設(shè)計與實現(xiàn)
- 沖鋒舟駕駛培訓(xùn)課件
- 美術(shù)家協(xié)會會員申請表
- 聚合收款服務(wù)流程
- 中石化浙江石油分公司中石化溫州靈昆油庫及配套工程項目環(huán)境影響報告書
評論
0/150
提交評論