基于VHDL的Mealy狀態(tài)機(jī)設(shè)計(jì)_第1頁(yè)
基于VHDL的Mealy狀態(tài)機(jī)設(shè)計(jì)_第2頁(yè)
基于VHDL的Mealy狀態(tài)機(jī)設(shè)計(jì)_第3頁(yè)
基于VHDL的Mealy狀態(tài)機(jī)設(shè)計(jì)_第4頁(yè)
基于VHDL的Mealy狀態(tài)機(jī)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于 VHDL 的 Mealy 狀態(tài)機(jī)設(shè)計(jì)物理與電子信息科學(xué)系 電子信息科學(xué)與技術(shù)專業(yè)姓名:孫家芳 學(xué)號(hào):05120126指導(dǎo)教師:胡湘娟摘 要 :伴隨著集成電路 (IC技術(shù)的發(fā)展,電子設(shè)計(jì)自動(dòng)化 (EDA逐漸成為重要的設(shè)計(jì) 手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。 EDA 的一個(gè)重要特征就是使用硬 件描述語(yǔ)言 (HDL 來(lái)完成的設(shè)計(jì)文件, 誕生于 1982年的 VHDL 語(yǔ)言是經(jīng) IEEE 確認(rèn)的標(biāo)準(zhǔn)硬件 描述語(yǔ)言, 在電子設(shè)計(jì)領(lǐng)域受到了廣泛的接受。 本文首先綜述了 EDA 技術(shù)的發(fā)展概況, VHDL 語(yǔ)言的的歷史、開(kāi)發(fā)步驟及其優(yōu)點(diǎn);著重介紹了使用 EDA 技術(shù),用 VHDL 語(yǔ)言

2、完成了 Moore 狀態(tài)機(jī)的設(shè)計(jì)工作;通過(guò)開(kāi)發(fā)工具 Max+plus的編譯和功能仿真,驗(yàn)證了方法的合理性和 通用性;最后介紹了設(shè)計(jì)結(jié)果分析及狀態(tài)機(jī)設(shè)計(jì)的幾點(diǎn)體會(huì)。關(guān)鍵詞:EDA ; VHDL ; Mealy 型;有限狀態(tài)機(jī)目 錄1. 引言(22. EDA 技術(shù)概述 (2 2.1什么是 EDA (22.2EDA 的發(fā)展(33. 硬件描述語(yǔ)言(HDL (5 3.1VHDL 語(yǔ)言簡(jiǎn)介(53.2VHDL 語(yǔ)言的特點(diǎn)(54.MAX+PLUS 軟件(8 4.1MAX+PLUS簡(jiǎn)介 (64.2MAX+PLUS的特點(diǎn) (75.Mealy 型狀態(tài)機(jī)的 VHDL 設(shè)計(jì) (8 5.1狀態(tài)機(jī)的定義(8 5.2狀態(tài)機(jī)的

3、分類(8 5.3態(tài)機(jī)的設(shè)計(jì)步驟(9 5.4Mealy 狀態(tài)機(jī)的設(shè)計(jì)(95.5Mealy 狀態(tài)機(jī)優(yōu)化(126. 狀態(tài)機(jī)設(shè)計(jì)的幾點(diǎn)體會(huì) (15 6.1把握整體與細(xì)節(jié)(15 6.2資料的重要性(15 6.3常用工具軟件的運(yùn)用(15 參考文獻(xiàn) (16 致謝 (181、引言20世紀(jì)末 , 電子技術(shù)得到了飛速發(fā)展 , 在其推動(dòng)下 , 現(xiàn)代電子技術(shù)幾乎滲透 到了社會(huì)的各個(gè)領(lǐng)域 , 有力的推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高 , 同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高 , 產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。 現(xiàn)代電子設(shè)計(jì)的核心是 EDA (Electronic Design Automation 技術(shù)。 ED

4、A 技 術(shù)就是依賴功能強(qiáng)大的計(jì)算機(jī), 在 EDA 工具軟件平臺(tái)上, 對(duì)以硬件描述語(yǔ)言 HDL (Hardware Description Languge為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)的 完成邏輯編譯、邏輯簡(jiǎn)化、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合(布局布線 ,以及 邏輯優(yōu)化和仿真測(cè)試,直至實(shí)現(xiàn)即定的電子線路系統(tǒng)功能。EDA 技術(shù)是微電子技術(shù)和現(xiàn)代電子設(shè)計(jì)技術(shù)的結(jié)合,是這兩個(gè)領(lǐng)域共同孕 育的奇葩。 EDA 技術(shù)在硬件實(shí)現(xiàn)了方面融合了大規(guī)模集成電路制造技術(shù)、 IC 版 圖設(shè)計(jì)技術(shù)、 ASIC 測(cè)試和封裝技術(shù)、 FPGA/CPLD編程下載技術(shù)、自動(dòng)測(cè)試技 術(shù)等;在計(jì)算機(jī)輔助工程方面融合了計(jì)算機(jī)輔助設(shè)

5、計(jì)(CAD 、計(jì)算機(jī)輔助制造 (CAM 、計(jì)算機(jī)輔助測(cè)試(CAT 、計(jì)算機(jī)輔助工程(CAE 技術(shù)以及多種計(jì) 算機(jī)云煙的設(shè)計(jì)概念; 而在現(xiàn)代電子學(xué)方面則容納了更多的內(nèi)容, 如電子線路設(shè) 計(jì)理論、 數(shù)字信號(hào)處理技術(shù)、 數(shù)字系統(tǒng)建模和優(yōu)化技術(shù)及長(zhǎng)線技術(shù)理論等。 因此, EDA 技術(shù)為現(xiàn)代電子理論和設(shè)計(jì)的表達(dá)與實(shí)現(xiàn)提供了可能性。 在現(xiàn)代技術(shù)的所有 領(lǐng)域中, 得以飛速發(fā)展的科學(xué)技術(shù)多為計(jì)算機(jī)輔助設(shè)計(jì), 而非自動(dòng)化設(shè)計(jì)。 顯然 , 最早進(jìn)入設(shè)計(jì)自動(dòng)化的技術(shù)領(lǐng)域之一是電子技術(shù) , 這就是為什么電子技術(shù)始終處 于所有科學(xué)技術(shù)發(fā)展最前列的原因之一。本文主要運(yùn)用 EDA 技術(shù),通過(guò) MAX+PLUS軟件對(duì) Mea

6、ly 狀態(tài)機(jī)進(jìn)行設(shè) 計(jì),并對(duì)程序及仿真結(jié)果進(jìn)行分析和概括。2. EDA 技術(shù)概述2.1什么是 EDA在電子設(shè)計(jì)技術(shù)領(lǐng)域,可編程邏輯器件 (如 PLD , GAL 的應(yīng)用,已有了很 好的普及。 隨著可編程邏輯器件集成規(guī)模不斷擴(kuò)大, 自身功能的不斷完善和計(jì)算 機(jī)輔助設(shè)計(jì)技術(shù)的提高,在現(xiàn)代電子系統(tǒng)設(shè)計(jì)領(lǐng)域中的 EDA 便應(yīng)運(yùn)而生了。傳 統(tǒng)的數(shù)字電路設(shè)計(jì)模式, 如利用卡諾圖的邏輯化簡(jiǎn)手段以及難懂的布爾方程表達(dá) 方式和相應(yīng)的 TTL 或 4000系列小規(guī)模集成芯片的堆砌技術(shù)正在迅速地退出歷史 舞臺(tái)。EDA 是一種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動(dòng)化設(shè)計(jì)的技術(shù),它與電子技術(shù)、微電子技術(shù)的發(fā)展密切相關(guān), 吸收了計(jì)算

7、機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果, 以 高性能的計(jì)算機(jī)作為工作平臺(tái), 是 20世紀(jì) 90年代初從 CAD (計(jì)算機(jī)輔助設(shè)計(jì) 、 CAM (計(jì)算機(jī)輔助制造 、 CAT (計(jì)算機(jī)輔助測(cè)試 和 CAE (計(jì)算機(jī)輔助工程 的概 念發(fā)展而來(lái)的 2。 EDA 技術(shù)就是以計(jì)算機(jī)為工具,在 EDA 軟件平臺(tái)上,根據(jù)硬 件描述語(yǔ)言 HDL 完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及 優(yōu)化、布局線、仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載 等工作。 設(shè)計(jì)者的工作僅限于利用軟件的方式來(lái)完成對(duì)系統(tǒng)硬件功能的描述, 在 EDA 工具的幫助下和應(yīng)用相應(yīng)的 FPG/CPLD器件, 就可以得到最后的

8、設(shè)計(jì)結(jié)果。 盡管目標(biāo)系統(tǒng)是硬件,但整個(gè)設(shè)計(jì)和修改過(guò)程如同完成軟件設(shè)計(jì)一樣方便和高 效。當(dāng)然,這里的所謂 EDA 主要是指數(shù)字系統(tǒng)的自動(dòng)化設(shè)計(jì),因?yàn)檫@一領(lǐng)域的 軟硬件方面的技術(shù)已比較成熟, 應(yīng)用的普及程度也已比較大。 而模擬電子系統(tǒng)的 EDA 正在進(jìn)入實(shí)用,其初期的 EDA 工具不一定需要硬件描述語(yǔ)言。此外,從應(yīng) 用的廣度和深度來(lái)說(shuō),由于電子信息領(lǐng)域的全面數(shù)字化,基于 EDA 的數(shù)字系統(tǒng) 的設(shè)計(jì)技術(shù)具有更大的應(yīng)用市場(chǎng)和更緊迫的需求性。2.2 EDA的發(fā)展EDA (Electronics Design Automation 電子設(shè)計(jì)自動(dòng)化 技術(shù)伴隨著半導(dǎo)體技 術(shù)、集成技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,經(jīng)歷了

9、計(jì)算機(jī)輔助設(shè) CAD (Computer Assist Design 、計(jì)算機(jī)輔助工程設(shè)計(jì) CAE (Computer AssistEngineering Design 和電子 設(shè)計(jì)自動(dòng)化 ESDA (Electronics Systems Design Automation 三個(gè)發(fā)展階段。90年代以來(lái), EDA 技術(shù)的發(fā)展和普及給電子系統(tǒng)的設(shè)計(jì)帶來(lái)了革命性的變化, 并 已滲透到電子系統(tǒng)設(shè)計(jì)的各個(gè)領(lǐng)域。 目前, EDA 工具的應(yīng)用范圍涉及模擬、 微波 等各個(gè)領(lǐng)域,可以實(shí)現(xiàn)各個(gè)領(lǐng)域電子系統(tǒng)設(shè)計(jì)的測(cè)試、設(shè)計(jì)仿真和布局布線等。 EDA 技術(shù)是以計(jì)算機(jī)硬件和系統(tǒng)軟件為基本工作平臺(tái),在電路與系統(tǒng)、數(shù)據(jù)庫(kù)

10、、 圖形學(xué)、圖論、拓?fù)溥壿?、?jì)算數(shù)學(xué)、優(yōu)化理論等諸多學(xué)科基礎(chǔ)上研制成的、商 品化的 EDA 通用支撐軟件和應(yīng)用軟件包。 電子設(shè)計(jì)工程師只要完成對(duì)電子系統(tǒng)的 功能描述, 就可以利用計(jì)算機(jī)和 EDA 工具完成電路的功能設(shè)計(jì)、 邏輯設(shè)計(jì)、 性能 分析、時(shí)序測(cè)試直至印刷電路板 PCB (Printed Circuit Board 的自動(dòng)設(shè)計(jì)。近十年 來(lái), 微電子技術(shù)和計(jì)算機(jī)技術(shù)的進(jìn)步及電子產(chǎn)品市場(chǎng)運(yùn)作節(jié)奏的加快, 涉及諸多 領(lǐng)域的現(xiàn)代電子設(shè)計(jì)技術(shù)已邁入一個(gè)全新的階段。 應(yīng)用系統(tǒng)設(shè)計(jì)從單純的專用集 成電路 ASIC (Application SpecificIntegrated Circuit 設(shè)計(jì)走向

11、了系統(tǒng)設(shè)計(jì)和單片系 統(tǒng) SOC (System On a Chip 設(shè)計(jì), 尤其是 20 世紀(jì) 90 年代初的系統(tǒng)編程技術(shù) ISP (InSystem Programmability ,為電子產(chǎn)品的設(shè)計(jì)和生產(chǎn)帶來(lái)了革命性的變化。3. 硬件描述語(yǔ)言(HDL 3.1VHDL 語(yǔ)言VHDL (Very2High2Speed Integrated CircuitHard2wareDescriptionLanguage 是 用來(lái)描述從抽樣到具體級(jí)別硬件的工業(yè)標(biāo)準(zhǔn)語(yǔ)言。 80 年代初期 , 因?yàn)槊绹?guó)軍事工 業(yè)需要描述電子系統(tǒng)的標(biāo)準(zhǔn)方法 , 美國(guó)開(kāi)始進(jìn)行 VHDL 的開(kāi)發(fā) , 它是美 VHSIC (超 高速

12、集成電路 的一部分 , 并于 1986年和 1987年分別成為美國(guó)和 IEEE 的工業(yè)標(biāo) 準(zhǔn)。 此后 , 各 EDA 公司相繼推出了自己的 VHDL 設(shè)計(jì)環(huán)境 , 并迅速地被接納為一種 通用的設(shè)計(jì)交換媒介。 作為一種規(guī)范和建模語(yǔ)言 , 它不只是意味著編寫(xiě)代碼 , 而且 也便于建立層次結(jié)構(gòu)和用元件庫(kù)進(jìn)行設(shè)計(jì)。VHDL 翻譯成中文就是超高速集成電路硬件描述語(yǔ)言,是一種快速的電路設(shè) 計(jì)工具, 功能涵蓋了電路描述、 電路合成、 電路仿真等三大電路設(shè)計(jì)工作。 VHDL 是用來(lái)描述從抽象到具體硬件級(jí)別的工業(yè)標(biāo)準(zhǔn)語(yǔ)言, 并已成為一種通用的硬件設(shè) 計(jì)交換媒介。 計(jì)算機(jī)輔助工程軟件的供應(yīng)商已把 VHDL 作為其

13、 CAD 或 EDA 軟件輸 入與輸出的標(biāo)準(zhǔn),例如 SYNOPSYS 、 ALTERA 、 CA-DENCE 、 VIEWLOGIC 等 EDA 廠商均提供了 VHDL 的編輯器,并在其仿真工具、綜合工具和布圖工具中提 供了對(duì) VHDL 的支持。 特別值得一提的是 ALTERA 公司不僅提供大規(guī)模的 CPLD 和 EPGA 器件, 同時(shí)也提供一套十分有特色的綜合工具 MAXPLUS -, 設(shè)計(jì)者既 可以使用原理圖輸入, 也可以使用文本輸入方式, 更可以二者混合輸入。 從編譯、 綜合、布線到仿真、下載一氣呵成,十分方便。3.2 VHDL語(yǔ)言的特點(diǎn)VHDL 是一種面向設(shè)計(jì)的標(biāo)準(zhǔn)硬件描述語(yǔ)言 , 主

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

15、驅(qū)動(dòng)強(qiáng)度等。用 VHDL 設(shè)計(jì)的最大優(yōu)點(diǎn)是在工藝上無(wú) 需花費(fèi)過(guò)多的時(shí)間和精力。4.MAX+PLUS4.1 MAX+PLUS 簡(jiǎn)介本次設(shè)計(jì)選用的開(kāi)發(fā)環(huán)境為美國(guó) ALTERA 公司自行設(shè)計(jì)開(kāi)發(fā)的 EDA 工具 MAX+PLUS,其全稱為 Mu1tiple Array Matrix and Programmable Logic User Systems 。它具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。它的器 件系列從最初的 Max 系列到最新的 FLEX10K 系列,從 500門(mén)到 10萬(wàn)門(mén)提供了 滿足各種條件需要的一系列器件。 其中最為先進(jìn)的 FLEX 系列采用獨(dú)特的快通道 技術(shù), 使得器

16、件的可預(yù)測(cè)性大大增強(qiáng), 速度也得到提高, 資源利用率達(dá) 70%左右 時(shí), FLEX10K 系列可以提供 7OMHz 左右的工作速度。 MAX+PLUS結(jié)合各種 系列器件的物理結(jié)構(gòu), 提供了各種的優(yōu)化措施, 以在提高工作速度和資源利用率 之間給以平衡。從而對(duì)大多數(shù)設(shè)計(jì)提供解決方案。MAX +PLUS 提供了原理圖輸入、 文本輸入 (采用硬件描述語(yǔ)言 和波形輸入 等多種輸入手段, 并可以任意組合使用。 利用該工具所配備的編輯、 編譯、 仿真、 綜合、 芯片編程等功能, 可將設(shè)計(jì)電路圖或電路描述程序變成基本的邏輯單元寫(xiě) 入到可編程的芯片中 (如即 GA 芯片 ,做成 ASIC 芯片。用戶首先對(duì)所做項(xiàng)

17、目進(jìn) 行設(shè)計(jì), 明確設(shè)計(jì)目的、 設(shè)計(jì)要求; 然后利用原理圖輸入方式或文本輸入方式進(jìn) 行設(shè)計(jì)輸入; 輸入完成后, 進(jìn)行編譯, 若編譯過(guò)程中發(fā)現(xiàn)錯(cuò)誤, 則檢查設(shè)計(jì)輸入, 修改錯(cuò)誤,直至沒(méi)有錯(cuò)誤發(fā)生 ; 編譯完成后,就可以進(jìn)行仿真,檢查設(shè)計(jì)是否達(dá) 到設(shè)計(jì)要求,否則的話,還需重新檢查設(shè)計(jì)輸入;仿真結(jié)果達(dá)到要求后,就可以 進(jìn)行燒錄, 把設(shè)計(jì)程序下載到目的芯片中; 最后把芯片放到實(shí)際系統(tǒng)中進(jìn)行驗(yàn)證、 測(cè)試。圖 2給出了用 MAX +PLUS 進(jìn)行 FP 以開(kāi)發(fā)的流程。 圖 2 用 MAX+PLUS開(kāi)發(fā)的 FPGA 的流程示意圖設(shè)計(jì) 驗(yàn)證MAX +PLUS 借助 EDIF 網(wǎng)表文件, SRAM 目標(biāo)文件 (

18、.sof 、 LPM 、 VerilogHDL 和 VHDL 能與 Candence 、 Mentor Graphics 、 OrCAD 、 Synopsys 、 Synplicity 和 Viewlogic 。等公司提供的其它多種 EDA 工具接口。 MAX +PLUS 編譯器可以在 PC 機(jī)及各種工作站平臺(tái)上運(yùn)行,這使 MAX +PLUS 成為工業(yè)界中唯一與平境。 4. 2MAX+PLUS 的特點(diǎn)MAX +PLUS 的特點(diǎn):(1 MAX +PLUS 的編譯核心支持 Altera 公司的 FLEX 10K 、 FLE 8K 、 MAX9000、 MAX7000、 FLASHHlogic 、

19、MAX5000、 Classic 系列可編程邏輯器件。(2 MAX +PLUS 的設(shè)計(jì)輸入、處理與校驗(yàn)功能一起提供了全集成化的一套可 編程邏輯開(kāi)發(fā)工具,可加快動(dòng)態(tài)調(diào)試,縮短開(kāi)發(fā)周期。(3 MAX +PLUS 支持各種 HDL 設(shè)計(jì)輸入, 包括 VHDL 、 Verilog 和 Altera AHDL 。(4 MAX +PLUS 與其他工業(yè)標(biāo)準(zhǔn)設(shè)計(jì)輸入、綜合與校驗(yàn)工具鏈接。與 CAE 工 具的接口符合 EDIF 200和 209、參數(shù)化模塊庫(kù)(LPM 、 Verilog 、 VHDL 及其他標(biāo) 準(zhǔn)。 設(shè)計(jì)者可使用 Altera 或標(biāo)準(zhǔn) CAE 設(shè)計(jì)工具去建立邏輯設(shè)計(jì), 使用 MAX +PLUS

20、編譯器對(duì) Altera 器件設(shè)計(jì)進(jìn)行編譯, 并使用 Altera 或其他 CAE 校驗(yàn)工具進(jìn)行器件 或板級(jí)仿真。 MAX +PLUS 支持與 Synopsys 、 Viewlogic 、 Mentor Graphics 、 Cadence 、 Exemplar 、 Data I/O、 Intergraph 、 Minc 、 OrCAD 等公司提供的工具接 口。5. Mealy 型狀態(tài)機(jī)的 VHDL 設(shè)計(jì)5.1狀態(tài)機(jī)的定義狀態(tài)機(jī)是由狀態(tài)寄存器和組合邏輯電路構(gòu)成的, 能夠根據(jù)控制信號(hào)按照預(yù)先 設(shè)定的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)移, 是協(xié)調(diào)相關(guān)信號(hào)動(dòng)作, 完成特定操作的控制中心, 屬 于種時(shí)序邏輯電路。常用的狀態(tài)

21、機(jī)有三個(gè)部分組成,即當(dāng)前狀態(tài)寄存器 (Current State,CS 、 下一狀態(tài)組合邏輯 (Next State,NS和輸出組合邏輯 (Output Logic, OL 。5.2狀態(tài)機(jī)的分類從信號(hào)輸出方式上 , 有限狀態(tài)機(jī)分為 :Moore 型和 Mealy 型兩類 , 從輸出時(shí)序 上看前者屬于異步輸出狀態(tài)機(jī) , 后者屬于同步輸出狀態(tài)機(jī) (所謂同步或異步都是 相對(duì)于時(shí)鐘信號(hào)而言的。不依賴于時(shí)鐘而有效的信號(hào)稱為異步信號(hào) , 而依賴于時(shí) 鐘才有效的信號(hào)稱為同步信號(hào) 。 Moore 型有限狀態(tài)機(jī)的輸出僅為當(dāng)前狀態(tài)的函 數(shù) , 這類狀態(tài)機(jī)在輸入發(fā)生變化后再等待時(shí)鐘的到來(lái) , 時(shí)鐘使?fàn)顟B(tài)發(fā)生變化時(shí)才

22、導(dǎo)致輸出的變化; Mealy 型有限狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和所有輸入信號(hào)的函數(shù) , 它的輸出在輸入變化后立即發(fā)生。從結(jié)構(gòu)圖上看它們的區(qū)別如圖 3和圖 4所示。 圖 3 Moore型狀態(tài)機(jī) 圖 4 Mealy型狀態(tài)機(jī)與 Moore 型狀態(tài)機(jī)相比較 , Mealy 狀態(tài)機(jī)的輸出變化要領(lǐng)先一個(gè)時(shí)鐘周期。通 過(guò)狀態(tài)機(jī)的工作時(shí)序圖比較容易區(qū)分這兩種類型的狀態(tài)機(jī) , 如果單純從 VHDL 代 碼來(lái)區(qū)分 , 就主要看他的輸出與輸入是否有關(guān)系 , 有關(guān)系的就是 Moore 型狀態(tài)機(jī) , 無(wú)關(guān)的就是 Mealy 型狀態(tài)機(jī) . 正確的區(qū)別兩類狀態(tài)機(jī)是正確設(shè)計(jì)的前提 , 只有才能 按照自己的意愿或者要求去設(shè)計(jì)不同類

23、型的狀態(tài)機(jī)。5.3狀態(tài)機(jī)的設(shè)計(jì)步驟利用 VHDL 語(yǔ)言設(shè)計(jì)狀態(tài)機(jī),所有的狀態(tài)可表示為 case-when 結(jié)構(gòu)中的一個(gè) when 子句,而狀態(tài)的轉(zhuǎn)換則通過(guò) if-then-else 語(yǔ)句實(shí)現(xiàn)。1、利用枚舉型定義狀態(tài)信號(hào)type StateType is(s0,s1,s2; - 枚舉類型signal present_state,next_state:StateType; - 現(xiàn)態(tài)和次態(tài)信號(hào)2、建立狀態(tài)機(jī)進(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 語(yǔ)句,因狀態(tài) s0是狀態(tài)轉(zhuǎn)換的起點(diǎn),因此,把 s0作為 case 語(yǔ)句中第一個(gè) when 子句項(xiàng), 然后利用 if-then-else 語(yǔ)句列出轉(zhuǎn)移到次態(tài) 的條件,即可寫(xiě)出狀態(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)機(jī)的設(shè)計(jì)與 Moore 型狀態(tài)機(jī)相比較 , Mealy 機(jī)的輸出變化要領(lǐng)先一個(gè)周期 , 即一旦輸入 信號(hào)或狀態(tài)發(fā)生變化 , 輸出信號(hào)即刻發(fā)生變化。Mealy 狀態(tài)機(jī)的

25、結(jié)構(gòu)框圖如圖 5所示: 圖 5 Mealy 狀態(tài)機(jī)結(jié)構(gòu)框圖對(duì) Mealy 狀態(tài)機(jī)設(shè)計(jì)首先要把整個(gè)流程圖畫(huà)出來(lái) , 根據(jù)流程圖設(shè)計(jì)各個(gè)部分。 下圖是流程圖 : 圖 6 狀態(tài)機(jī)的 VHDL 設(shè)計(jì)流程圖根據(jù)流程圖的設(shè)計(jì)步驟畫(huà)出狀態(tài)轉(zhuǎn)換圖 , 如下圖所示 :圖 7 狀態(tài)轉(zhuǎn)換圖然后根據(jù)狀態(tài)轉(zhuǎn)換圖寫(xiě)出程序代碼 , 程序如下面所示 : 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)機(jī)。由 entity 語(yǔ)句引導(dǎo)的是主體, 由 architecture 語(yǔ)句引導(dǎo)的是結(jié)構(gòu)體。在結(jié)構(gòu)體中, 進(jìn)程 comreg 是時(shí)序與

31、組合混合型進(jìn)程, 它將狀態(tài)機(jī)的主控時(shí)序 電路和主控狀態(tài)譯碼電路同時(shí)用一個(gè)進(jìn)程來(lái)表達(dá)。這個(gè)進(jìn)程也是狀態(tài)轉(zhuǎn)換過(guò)程。reset 復(fù)位后初始狀態(tài)設(shè)置為 st0, 當(dāng) datain 為高電平且 clk 信號(hào)處于上升延時(shí),將 st1賦值給 stx , 即狀態(tài)由 st0轉(zhuǎn)換為 st1;當(dāng) datain 為底電平且 clk 信號(hào)處于上升延時(shí), 將 st2賦值給 stx , 即狀態(tài)由 st1轉(zhuǎn)換為 st2;當(dāng) datain 為高電平且 clk 信號(hào)處于上升延 時(shí),將 st3賦值給 stx , 即狀態(tài)由 st2轉(zhuǎn)換為 st3;當(dāng) datain 為底電平且 clk 信號(hào)處于上 升延時(shí),將 st4賦值給 stx ,

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

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

34、延有效 , q 為輸出信號(hào), q165為輸出 q 的 16進(jìn)值, stx 為狀態(tài)。此圖的狀態(tài)由 st0、 st1、 st 2、 s t 3和 st4依次循環(huán)轉(zhuǎn)換下去。 reset 信號(hào)復(fù)位以 后,狀態(tài)無(wú)條件轉(zhuǎn)換為狀態(tài) st0。此后每一個(gè) clk 上升延依照 datain 輸入信號(hào)的高低 進(jìn)行狀態(tài)轉(zhuǎn)換。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st1轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st1, 輸入 datain 為高電平時(shí), 狀態(tài)由 st1到 st0,而不是 st1到 st2。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st2轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st2, 輸入 datain 為低電平時(shí), 狀態(tài)由 st2到 st0,而不是 st

35、2到 st3。 此圖標(biāo)尺處體現(xiàn)了狀態(tài)由 st3轉(zhuǎn)換到 st0。 當(dāng)狀態(tài)為 st3, 輸入 datain 為高電平時(shí), 狀態(tài)由 st3到 st0,而不是 st3到 st4。5.5Mealy 狀態(tài)機(jī)優(yōu)化毛刺的產(chǎn)生,一方面由于通常的狀態(tài)機(jī)中都包含有組合邏輯進(jìn)程,使得輸 出信號(hào)在時(shí)鐘的有效邊沿產(chǎn)生毛刺; 另一方面當(dāng)狀態(tài)信號(hào)是多位值的時(shí)候, 在電 路中就對(duì)應(yīng)了多條信號(hào)線, 如果同時(shí)有幾條信號(hào)線跳變, 由于存在傳輸延遲, 各 信號(hào)線上的值發(fā)生改變的時(shí)間會(huì)有先后 , 使得狀態(tài)遷移的時(shí)候在初始狀態(tài)和目的 狀態(tài)間出現(xiàn)臨時(shí)狀態(tài),雖然它只存在了很短的時(shí)間,但仍然會(huì)影響電路的穩(wěn)定。 對(duì)于第一種情況, 在大多數(shù)條件下,

36、 毛刺對(duì)電路的影響可忽略不計(jì), 但是當(dāng) 狀態(tài)機(jī)的輸出信號(hào)作為三態(tài)使能控制或者時(shí)鐘信號(hào)使用的時(shí)候, 就必須要消除毛 刺。 消除的方法可以用改進(jìn)有限狀態(tài)機(jī)的描述方法來(lái)解決這個(gè)問(wèn)題:把時(shí)鐘信號(hào) 引入組合進(jìn)程,用時(shí)鐘來(lái)同步狀態(tài)遷移和信號(hào)輸出 , 在電路上表現(xiàn)為先將輸出信 號(hào)保存在觸發(fā)器中 , 當(dāng)時(shí)鐘有效邊沿到來(lái)的時(shí)候輸出; 或者在電路設(shè)計(jì)時(shí) , 選用延 遲時(shí)間較小的器件 , 且盡可能采用級(jí)數(shù)少的電路結(jié)構(gòu)。對(duì)于第二種情況,需要重新調(diào)整狀態(tài)編碼。一般而言,編有順序編碼、 One -Hot 編碼、格雷碼、隨機(jī)編碼等。如果 vhdl 描述中沒(méi)有對(duì)各個(gè)狀態(tài)的編碼專 門(mén)指定 , 模擬器和綜合器一般按照狀態(tài)的定義順

37、序進(jìn)行編碼。為了消除傳輸延遲 造成的毛刺,理想的解決方法是使相鄰狀態(tài)間只有 1位信號(hào)改變,因此應(yīng)該按照 格雷碼制進(jìn)行編碼。 在某些情況下, 狀態(tài)編碼不能保證只有一位發(fā)生變化時(shí), 有 2種編碼方法可以保證狀態(tài)機(jī)編碼仍然維持。位變化,第一種方法是一個(gè)狀態(tài)分 配多個(gè)編碼; 第二種方法是在狀態(tài)譯碼時(shí)采用分組譯碼, 這樣就保證了狀態(tài)遷移 時(shí)只有。位狀態(tài)線發(fā)生變化。在同步電路中,一般情況下“毛刺”不會(huì)產(chǎn)生重大影響。因?yàn)椤懊獭眱H 發(fā)生在時(shí)鐘有效邊沿之后的一小段時(shí)間內(nèi), 只要在下一個(gè)時(shí)鐘有效邊沿到來(lái)之前 “毛刺” 消失即可。 但當(dāng)狀態(tài)機(jī)的輸出信號(hào)作為其他功能模塊的控制信號(hào), 例如 作為異步控制、 態(tài)使能控制

38、或時(shí)鐘信號(hào)使用時(shí), 將會(huì)使受控模塊發(fā)生誤動(dòng)作, 造 成系統(tǒng)工作混亂。因此,在這種情況下必須通過(guò)改變?cè)O(shè)計(jì)消除毛刺。消除狀態(tài)機(jī)輸出信號(hào)的“毛刺”一般可采用三種方案:(1調(diào)整狀態(tài)編碼, 使相鄰狀態(tài)間只有1位信號(hào)改變, 從而消除競(jìng)爭(zhēng)冒險(xiǎn)的發(fā) 生條件, 避免了毛刺的產(chǎn)生。 常采用的編碼方式為格雷碼。 它適用于順序遷移的 狀態(tài)機(jī)。(2在有限狀態(tài)機(jī)的基礎(chǔ)上采用時(shí)鐘同步信號(hào),即把時(shí)鐘信號(hào)引入組合進(jìn)程。狀態(tài)機(jī)每一個(gè)輸出信號(hào)都經(jīng)過(guò)附加的輸出寄存器, 并由時(shí)鐘信號(hào)同步, 因而保證 了輸出信號(hào)沒(méi)有毛刺。 這種方法存在一些弊端:由于增加了輸出寄存器, 硬件開(kāi) 銷增大, 這對(duì)于一些寄存器資源較少的目標(biāo)芯片是不利的; 從狀

39、態(tài)機(jī)的狀態(tài)位到 達(dá)輸出需要經(jīng)過(guò)兩級(jí)組合邏輯, 這就限制了系統(tǒng)時(shí)鐘的最高工作頻率; 由于時(shí)鐘 信號(hào)將輸出加載到附加的寄存器上, 所以在輸出端得到信號(hào)值的時(shí)間要比狀態(tài)的 變化延時(shí)一個(gè)時(shí)鐘周期。(3直接把狀態(tài)機(jī)的狀態(tài)碼作為輸出信號(hào),即采用狀態(tài)碼直接輸出型狀態(tài)機(jī), 使?fàn)顟B(tài)和輸出信號(hào)一致, 使得輸出譯碼電路被優(yōu)化掉了, 因此不會(huì)出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)。 這種方案,占用芯片資源少,信號(hào)與狀態(tài)變化同步,因此速度快,是一種較優(yōu)方 案。 但在設(shè)計(jì)過(guò)程中對(duì)狀態(tài)編碼時(shí)可能增加狀態(tài)向量, 出現(xiàn)多余狀態(tài)。 雖然可用 case 語(yǔ)句中 whenothers 來(lái)安排多余狀態(tài),但有時(shí)難以有效控制多余狀態(tài),運(yùn)行時(shí) 可能會(huì)出現(xiàn)難以預(yù)料的情

40、況。因此它適用于狀態(tài)機(jī)輸出信號(hào)較少的場(chǎng)合。6、本次論文設(shè)計(jì)的幾點(diǎn)體會(huì)6.1把握整體跟細(xì)節(jié)設(shè)計(jì)狀態(tài)機(jī)首先要有個(gè)系統(tǒng)的把握,要從整體上去概述,畫(huà)出一個(gè)流程圖, 然后根據(jù)流程圖才能一步一步的做下去。 如果沒(méi)有一個(gè)大概的流程就很難著手做 下去。其次在流程圖中的每一步都是一個(gè)細(xì)節(jié),有句話叫“細(xì)節(jié)決定成敗” ,在 結(jié)構(gòu)圖、狀態(tài)轉(zhuǎn)換圖、程序代碼、仿真等方面是都不能出錯(cuò)。本次論文主要采用 自頂而下的設(shè)計(jì)方法, 把一個(gè)整體劃分為幾個(gè)子模塊, 然后對(duì)各個(gè)模塊依次進(jìn)行 設(shè)計(jì), 劃分的好壞, 將直接影響到整個(gè)的系統(tǒng)開(kāi)發(fā)。 因此要對(duì)認(rèn)真對(duì)待整體與細(xì) 節(jié)。6.2資料的重要性查找資料也是一個(gè)漫長(zhǎng)而具體的過(guò)程, 單純從教科書(shū)

41、上很難編寫(xiě)出一篇完整 的論文。 找資料就花掉了近一周的時(shí)間, 而看懂資料與篩選資料又是一個(gè)更加漫 長(zhǎng)的過(guò)程。 論文中的大部分內(nèi)容都源于所查找的資料, 如果沒(méi)有網(wǎng)上查找的資料 就很難寫(xiě)出一篇完整的論文。6.3常用工具軟件的運(yùn)用以前總覺(jué)的對(duì) word 軟件很熟悉,真正到了運(yùn)用起來(lái)的時(shí)候,發(fā)現(xiàn)很多東西 都很生硬,很陌生。尤其是在繪圖等方面根本是一竅不通。通過(guò)這次論文的寫(xiě) 作,加深對(duì)常用工具軟件的了解,同時(shí)也發(fā)現(xiàn)了自己的不足,在以后的學(xué)習(xí)生 活中要繼續(xù)加強(qiáng)對(duì)常用軟件的學(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論