三段式狀態(tài)機(jī)課件_第1頁
三段式狀態(tài)機(jī)課件_第2頁
三段式狀態(tài)機(jī)課件_第3頁
三段式狀態(tài)機(jī)課件_第4頁
三段式狀態(tài)機(jī)課件_第5頁
已閱讀5頁,還剩187頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第13章數(shù)字系統(tǒng)設(shè)計(jì)基礎(chǔ)數(shù)字系統(tǒng)概述數(shù)字系統(tǒng)的設(shè)計(jì)方法

數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則

數(shù)字系統(tǒng)的設(shè)計(jì)步驟數(shù)字系統(tǒng)設(shè)計(jì)舉例狀態(tài)機(jī)的設(shè)計(jì)第13章數(shù)字系統(tǒng)設(shè)計(jì)基礎(chǔ)數(shù)字系統(tǒng)概述數(shù)字系統(tǒng)的設(shè)1什么是數(shù)字系統(tǒng)?數(shù)字系統(tǒng)是指交互式的、以離散形式表示的,具有存儲、傳輸、信息處理能力的邏輯子系統(tǒng)的集合。13.1數(shù)字系統(tǒng)概述什么是數(shù)字系統(tǒng)?數(shù)字系統(tǒng)是指交互式的、以離散213.1.1數(shù)字系統(tǒng)的優(yōu)點(diǎn)

(1)工作穩(wěn)定,抗干擾能力強(qiáng)。(2)精確度高。(3)系統(tǒng)可靠性高。(4)便于系統(tǒng)的模塊化。(5)便于大規(guī)模集成,易于實(shí)現(xiàn)小型化。(6)可實(shí)現(xiàn)片上系統(tǒng)(SOC)。(7)可實(shí)現(xiàn)嵌入式系統(tǒng)。13.1.1數(shù)字系統(tǒng)的優(yōu)點(diǎn)(1)工作穩(wěn)定,抗干313.1.2數(shù)字系統(tǒng)的基本構(gòu)成

一個(gè)完整的數(shù)字系統(tǒng)通??煞譃槲鍌€(gè)部分:輸入電路、輸出電路、數(shù)據(jù)處理器、控制器和時(shí)鐘電路。圖13-2數(shù)字系統(tǒng)結(jié)構(gòu)框圖13.1.2數(shù)字系統(tǒng)的基本構(gòu)成4

●輸入/輸出電路是整個(gè)數(shù)字系統(tǒng)對外信號交流的接口,是完成將物理量轉(zhuǎn)化為數(shù)字量或?qū)?shù)字量轉(zhuǎn)化為物理量的功能部件。

●數(shù)據(jù)處理器主要完成數(shù)據(jù)的采集、存儲、運(yùn)算和傳輸?shù)裙δ堋?/p>

●控制器是執(zhí)行數(shù)字系統(tǒng)算法的核心,具有記憶功能,一般為時(shí)序系統(tǒng)??刂破髫?fù)責(zé)規(guī)定算法的步驟,在每一個(gè)計(jì)算步驟給數(shù)據(jù)處理器發(fā)出命令信號,同時(shí)接收來自數(shù)字處理器的狀態(tài)變量,確定下一個(gè)計(jì)算步驟,以確保算法按正確的次序?qū)崿F(xiàn)。

●時(shí)鐘電路是用來產(chǎn)生系統(tǒng)工作的同步時(shí)鐘信號,使整個(gè)系統(tǒng)在時(shí)鐘信號的作用下,一步一步地按順序完成各種操作。

●輸入/輸出電路是整個(gè)數(shù)字系統(tǒng)對外信號交流的接口,是完5圖13-3馮.諾依曼計(jì)算機(jī)框架圖圖13-3馮.諾依曼計(jì)算機(jī)框架圖613.2數(shù)字系統(tǒng)的設(shè)計(jì)方法數(shù)字系統(tǒng)設(shè)計(jì)有多種方法,傳統(tǒng)的方法有試湊設(shè)計(jì)法、MCU設(shè)計(jì)法等。傳統(tǒng)的設(shè)計(jì)方法都是采用自下而上的設(shè)計(jì)方法,即首先確定可用的元件,然后根據(jù)這些器件進(jìn)行邏輯設(shè)計(jì),完成各模塊后,進(jìn)行連接形成系統(tǒng),最后經(jīng)調(diào)試、測量觀察整個(gè)系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。13.2.1傳統(tǒng)的設(shè)計(jì)方法13.2數(shù)字系統(tǒng)的設(shè)計(jì)方法數(shù)字系統(tǒng)設(shè)計(jì)有多種方法,7系統(tǒng)測試與性能分析完整系統(tǒng)功能模塊基本元器件

缺點(diǎn):1、設(shè)計(jì)過程依賴現(xiàn)有的通用元器件、手工及經(jīng)驗(yàn);2、設(shè)計(jì)后期的仿真和調(diào)試3、基于原理圖的設(shè)計(jì)、可移植性差;4、設(shè)計(jì)周期長、靈活性差、效率低傳統(tǒng)電路設(shè)計(jì)方法:自下而上(Bottom-Up)的設(shè)計(jì)方法系統(tǒng)測試與性能分析完整系統(tǒng)功能模塊基本元器件缺點(diǎn):傳8基于EDA技術(shù)的現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)一般采用自頂向下的方法。該方法首先根據(jù)系統(tǒng)的總體功能要求,進(jìn)行系統(tǒng)級設(shè)計(jì);然后按照一定的標(biāo)準(zhǔn)將整個(gè)系統(tǒng)劃分成若干個(gè)子系統(tǒng);接著將各個(gè)子系統(tǒng)劃分為若干功能模塊,針對各模塊進(jìn)行邏輯電路級設(shè)計(jì)。13.2.2基于EDA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)方法基于EDA技術(shù)的現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)一般采用自頂向下的9

●自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對設(shè)計(jì)的描述從上到下逐步由粗略到詳細(xì),符合常規(guī)的邏輯思維習(xí)慣;

優(yōu)點(diǎn)

●針對具體的設(shè)計(jì),實(shí)施自頂向下的設(shè)計(jì)方法的形式會(huì)有所不同,但均需遵循以下兩條原則:逐層分解功能和分層次進(jìn)行設(shè)計(jì)。同時(shí),應(yīng)在各個(gè)設(shè)計(jì)層次上,考慮相應(yīng)的仿真驗(yàn)證問題。

●適合多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(shè)計(jì)。隨著技術(shù)的不斷進(jìn)步,許多設(shè)計(jì)由一個(gè)設(shè)計(jì)者已無法完成,由多個(gè)設(shè)計(jì)者分工協(xié)作完成一項(xiàng)設(shè)計(jì)的情況越來越多;●自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對設(shè)計(jì)的描10表13-1傳統(tǒng)設(shè)計(jì)方法和EDA設(shè)計(jì)方法的比較表13-1傳統(tǒng)設(shè)計(jì)方法和EDA設(shè)計(jì)方法的比較1113.3數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則1.分割準(zhǔn)則2.系統(tǒng)的可觀測性4.同步和異步電路5.最優(yōu)化設(shè)計(jì)3.面積和速度的平衡與互換原則6.理想設(shè)計(jì)準(zhǔn)則13.3數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則1.分割準(zhǔn)則2.系統(tǒng)的可觀測性4121.分割準(zhǔn)則

●自頂向下的設(shè)計(jì)方法需要對系統(tǒng)功能進(jìn)行分割,然后用邏輯語言進(jìn)行描述。分割過程中,若分割過粗,則不易用邏輯語言表達(dá);分割過細(xì),則帶來不必要的重復(fù)和繁瑣。因此,分割的粗細(xì)需要根據(jù)具體的設(shè)計(jì)和設(shè)計(jì)工具情況而定。

2.系統(tǒng)的可觀測性●在系統(tǒng)設(shè)計(jì)中,應(yīng)該同時(shí)考慮功能檢查和性能的測試,即系統(tǒng)可測性的問題。在設(shè)計(jì)系統(tǒng)的同時(shí)設(shè)計(jì)觀測電路,指示系統(tǒng)內(nèi)部的工作狀態(tài)。

1.分割準(zhǔn)則●自頂向下的設(shè)計(jì)方法需要對系統(tǒng)功能進(jìn)行分134.同步和異步電路●異步電路會(huì)造成較大延時(shí)和邏輯競爭,容易引起系統(tǒng)的不穩(wěn)定,而同步電路則是按照統(tǒng)一的時(shí)鐘工作,穩(wěn)定性好。因此,在設(shè)計(jì)時(shí)應(yīng)盡可能采用同步電路進(jìn)行設(shè)計(jì),避免使用異步電路。在必須使用異步電路時(shí),應(yīng)采取措施來避免競爭和增加穩(wěn)定性。3.面積和速度的平衡與互換原則

●面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量,一般可以用觸發(fā)器和組合邏輯單元來度量。速度指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行時(shí)能夠達(dá)到的最高頻率。面積和速度是一對矛盾的需求,在設(shè)計(jì)中應(yīng)力求平衡,在一定條件下可相互轉(zhuǎn)換。4.同步和異步電路●異步電路會(huì)造成較大延時(shí)和邏輯競爭,146.理想設(shè)計(jì)準(zhǔn)則

●一個(gè)理想的設(shè)計(jì),應(yīng)該具有以下基本特征:設(shè)計(jì)總體上流暢,無拖泥帶水的感覺;資源分配、I/O分配合理,沒有任何設(shè)計(jì)上和性能上的瓶頸;系統(tǒng)結(jié)構(gòu)協(xié)調(diào);具有良好的可觀測性;易于修改和移植;器件的特點(diǎn)能得到充分的發(fā)揮。5.最優(yōu)化設(shè)計(jì)●由于可編程器件的邏輯資源、連接資源和I/O資源有限,器件的速度和性能也是有限的,用器件設(shè)計(jì)系統(tǒng)的過程相當(dāng)于求最優(yōu)解的過程,因此,需要給定兩個(gè)約束條件:邊界條件和最優(yōu)化目標(biāo)。

6.理想設(shè)計(jì)準(zhǔn)則●一個(gè)理想的設(shè)計(jì),應(yīng)該具有以下基本特征1513.4數(shù)字系統(tǒng)的設(shè)計(jì)步驟圖13-4數(shù)字系統(tǒng)設(shè)計(jì)流程圖13.4數(shù)字系統(tǒng)的設(shè)計(jì)步驟圖13-4數(shù)字系統(tǒng)設(shè)計(jì)流程圖161.系統(tǒng)需求分析

●系統(tǒng)需求分析是數(shù)字系統(tǒng)設(shè)計(jì)的首要任務(wù)。設(shè)計(jì)者在讀完技術(shù)任務(wù)書后應(yīng)明確以下內(nèi)容:確定系統(tǒng)的基本功能;確定輸入和輸出信號;確定各功能模塊之間的相互關(guān)系;確定系統(tǒng)具體指標(biāo)。2.確定總體方案●數(shù)字系統(tǒng)總體方案將直接影響整個(gè)數(shù)字系統(tǒng)的質(zhì)量與性能,總體方案需要綜合考慮以下幾個(gè)因素:系統(tǒng)功能要求、系統(tǒng)使用要求和系統(tǒng)性能價(jià)格比。1.系統(tǒng)需求分析●系統(tǒng)需求分析是數(shù)字系統(tǒng)設(shè)計(jì)的首要任174.系統(tǒng)和子系統(tǒng)邏輯描述●采用比較規(guī)范的形式來描述系統(tǒng)的邏輯功能。對系統(tǒng)的邏輯描述可先采用較粗略的方框圖,再將方框圖逐步細(xì)化為詳細(xì)邏輯流程圖,最后將詳細(xì)邏輯流程圖用電路原理圖或硬件描述語言描述出來。3.建立系統(tǒng)及子系統(tǒng)結(jié)構(gòu)框圖

●把系統(tǒng)從邏輯上劃分為數(shù)據(jù)子系統(tǒng)和控制子系統(tǒng)兩部分,畫出整個(gè)系統(tǒng)的結(jié)構(gòu)框圖。然后將數(shù)據(jù)子系統(tǒng)分解為多個(gè)基本的邏輯功能模塊。最后畫出由基本功能模塊組成的數(shù)據(jù)子系統(tǒng)結(jié)構(gòu)框圖,數(shù)據(jù)子系統(tǒng)中所需的各種控制信號將由控制子系統(tǒng)產(chǎn)生。4.系統(tǒng)和子系統(tǒng)邏輯描述●采用比較規(guī)范的形式來描述系統(tǒng)186.系統(tǒng)的物理實(shí)現(xiàn)

●通過EDA軟件仿真,如果設(shè)計(jì)的數(shù)字系統(tǒng)滿足總體要求,就可以用芯片實(shí)現(xiàn)數(shù)字系統(tǒng)。首先實(shí)現(xiàn)各個(gè)邏輯功能電路,調(diào)試正確后,再將它們互連成子系統(tǒng),最后進(jìn)行數(shù)字系統(tǒng)總體調(diào)試。5.系統(tǒng)仿真與驗(yàn)證●在電路設(shè)計(jì)完成以后必須驗(yàn)證設(shè)計(jì)是否正確。數(shù)字電路設(shè)計(jì)的EDA軟件都具有仿真功能,先通過系統(tǒng)仿真,當(dāng)系統(tǒng)仿真結(jié)果正確后再進(jìn)行實(shí)際電路的測試。6.系統(tǒng)的物理實(shí)現(xiàn)●通過EDA軟件仿真,如果設(shè)計(jì)的數(shù)19狀態(tài)機(jī)是一種具有指定數(shù)目的狀態(tài)的概念機(jī),它在某個(gè)指定的時(shí)刻僅處于一個(gè)狀態(tài),狀態(tài)的改變是對輸入事件的響應(yīng)。狀態(tài)機(jī)的基本要素有三個(gè):狀態(tài)、輸入條件和輸出。什么是狀態(tài)機(jī)?13.5狀態(tài)機(jī)的設(shè)計(jì)狀態(tài)機(jī)是一種具有指定數(shù)目的狀態(tài)的概念機(jī),它在某個(gè)20狀態(tài)機(jī)的優(yōu)勢:

(1)狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn);(2)狀態(tài)機(jī)的結(jié)構(gòu)相對簡單,設(shè)計(jì)方案相對固定;(3)狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊;(4)與VHDL的其他描述方式相比,狀態(tài)機(jī)的VHDL表述豐富多樣、程序?qū)哟畏置鳎Y(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有其獨(dú)到的好處;(5)在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢。(6)高可靠性。狀態(tài)機(jī)的優(yōu)勢:(1)狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制21應(yīng)用實(shí)例1

圖13-5自動(dòng)售貨機(jī)控制系統(tǒng)方框圖自動(dòng)售貨機(jī)設(shè)定邏輯變量:設(shè)投幣信號A、B為輸入邏輯變量,投入一枚一元硬幣時(shí)用A=1表示,未投入時(shí)A=0。投入一枚五角硬幣用B=1表示,未投入時(shí)B=0;設(shè)礦泉水和找錢為兩個(gè)輸出變量,分別用Z和Y表示,給出礦泉水時(shí)Z=1,不給時(shí)Z=0,找回一枚五角硬幣時(shí)Y=1,不找時(shí)Y=0。

應(yīng)用實(shí)例122圖13-6自動(dòng)售貨機(jī)狀態(tài)轉(zhuǎn)換圖圖13-6自動(dòng)售貨機(jī)狀態(tài)轉(zhuǎn)換圖23libraryieee;useieee.std_logic_1164.all;entityshj_ctrlis port(a,b:instd_logic; clk:instd_logic; z,y:outstd_logic);endshj_ctrl;architecturebehaofshj_ctrlistypestatesis(s0,s1,s2);signalstate:states;signalx:std_logic_vector(1downto0);beginx<=a&b;process(clk,x,state)begin ifrising_edge(clk)then casestateis whens0=> z<='0';y<='0'; if(x="01")then state<=s1; elsif(x="10")thenlibraryieee;24 state<=s2; else state<=s0; endif; whens1=>z<='0';y<='0'; if(x="01")then state<=s2; elsif(x="10")then state<=s0;z<='1';y<='0'; else state<=s1; endif; whens2=>z<='0';y<='0'; if(x="01")then state<=s0;z<='1';y<='0'; elsif(x="10")then state<=s0;z<='1';y<='1'; else state<=s2; endif; endcase; endif;endprocess;endbeha; state<=s2;2513.5.1狀態(tài)機(jī)的基本構(gòu)成及描述方式1.狀態(tài)機(jī)的基本要素狀態(tài):也叫狀態(tài)變量。在邏輯設(shè)計(jì)中,使用狀態(tài)劃分邏輯順序和時(shí)序規(guī)律。輸入:指狀態(tài)機(jī)中進(jìn)入每個(gè)狀態(tài)的條件。輸出:指在某一個(gè)狀態(tài)時(shí)特定發(fā)生的事件。

13.5.1狀態(tài)機(jī)的基本構(gòu)成及描述方式1.狀態(tài)機(jī)的262.狀態(tài)機(jī)的基本結(jié)構(gòu)狀態(tài)寄存器的功能是記憶狀態(tài)機(jī)的內(nèi)部狀態(tài);次態(tài)邏輯的功能是確定狀態(tài)機(jī)的次態(tài);輸出邏輯的功能是確定狀態(tài)機(jī)的輸出。

圖13-7狀態(tài)機(jī)的基本結(jié)構(gòu)框圖2.狀態(tài)機(jī)的基本結(jié)構(gòu)圖13-7狀態(tài)機(jī)的基本結(jié)構(gòu)框圖273.狀態(tài)機(jī)的基本描述方式狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移表HDL語言描述3.狀態(tài)機(jī)的基本描述方式狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移表HDL語言2813.5.2狀態(tài)機(jī)的分類根據(jù)狀態(tài)機(jī)的狀態(tài)數(shù)是否為有限個(gè):有限狀態(tài)機(jī)(FSM)無限狀態(tài)機(jī)(ISM)根據(jù)輸出與現(xiàn)態(tài)以及輸入的關(guān)系:Moore型狀態(tài)機(jī)Mealy型狀態(tài)機(jī)

13.5.2狀態(tài)機(jī)的分類根據(jù)狀態(tài)機(jī)的狀態(tài)數(shù)是否為有限個(gè):2913.5.3狀態(tài)機(jī)的狀態(tài)編碼1.順序二進(jìn)制編碼表13-2順序二進(jìn)制編碼13.5.3狀態(tài)機(jī)的狀態(tài)編碼1.順序二進(jìn)制編碼表130

2.格雷碼編碼

表13-3格雷碼編碼2.格雷碼編碼表13-3格雷碼編碼31

3.One-Hot編碼表13-4One-Hot編碼3.One-Hot編碼表13-4One-Hot編32三段式狀態(tài)機(jī)課件3313.5.4狀態(tài)機(jī)的VHDL設(shè)計(jì)1.狀態(tài)機(jī)的VHDL設(shè)計(jì)步驟分析控制器設(shè)計(jì)指標(biāo),建立系統(tǒng)算法模型圖,即狀態(tài)轉(zhuǎn)移圖;分析被控對象的時(shí)序狀態(tài),確定控制器狀態(tài)機(jī)的各個(gè)狀態(tài)及輸入、輸出條件;應(yīng)用VHDL語言完成狀態(tài)機(jī)的描述。13.5.4狀態(tài)機(jī)的VHDL設(shè)計(jì)1.狀態(tài)機(jī)的VHDL設(shè)計(jì)342.狀態(tài)機(jī)的VHDL描述方法單進(jìn)程(一段式)FSM描述方法是將整個(gè)狀態(tài)機(jī)的三個(gè)模塊合并起來,寫到1個(gè)進(jìn)程里面,在該進(jìn)程中即描述狀態(tài)轉(zhuǎn)移,又描述狀態(tài)的輸入和輸出;兩進(jìn)程(二段式)FSM描述方法是用2個(gè)進(jìn)程來描述狀態(tài)機(jī),其中當(dāng)前狀態(tài)寄存器用一個(gè)同步時(shí)序進(jìn)程來描述,輸出邏輯和次態(tài)邏輯合并起來,用另一個(gè)組合邏輯進(jìn)程來描述;三進(jìn)程(三段式)FSM描述方法是將狀態(tài)機(jī)的三個(gè)模塊分別用3個(gè)進(jìn)程來描述,一個(gè)同步時(shí)序進(jìn)程描述狀態(tài)寄存器,一個(gè)組合邏輯進(jìn)程描述次態(tài)邏輯,最后輸出邏輯單獨(dú)用一個(gè)進(jìn)程來描述。2.狀態(tài)機(jī)的VHDL描述方法兩進(jìn)程(二段式)FSM描述方法35表13-5三種FSM描述方法比較表13-5三種FSM描述方法比較363.狀態(tài)機(jī)的VHDL設(shè)計(jì)相關(guān)語句

TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義OF基本數(shù)據(jù)類型;TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義;typem_stateis(st0,st1,st2,st3,st4,st5);(1)狀態(tài)定義語句signalcurrent_state:m_state;--定義現(xiàn)態(tài)signalnext_state:m_state;

--定義次態(tài)(2)狀態(tài)變量定義語句3.狀態(tài)機(jī)的VHDL設(shè)計(jì)相關(guān)語句TYPE數(shù)據(jù)類型名37①描述狀態(tài)寄存器的進(jìn)程:process(reset,clk)beginifreset=‘1’then current_state<=[初始狀態(tài)];elsifclk’eventandclk=‘1’then current_state<=next_state;endif;endprocess;(3)三個(gè)模塊進(jìn)程描述語句①描述狀態(tài)寄存器的進(jìn)程:(3)三個(gè)模塊進(jìn)程描述語句38②描述次態(tài)邏輯的進(jìn)程:process(current_state,其他輸入信號)beginnext_state<=current_state;casecurrent_stateis whenstate1=> … next_state<=某個(gè)狀態(tài); … whenstate2=> …endcase;endprocess;

②描述次態(tài)邏輯的進(jìn)程:39③描述輸出邏輯的進(jìn)程:process(current_state,其他輸入信號)beginoutput<=缺省值casecurrent_stateis whenstate1=> output<=xxx; …endcase;endprocess;

③描述輸出邏輯的進(jìn)程:40(1)一段式狀態(tài)機(jī)libraryieee;useieee.std_logic_1164.all;entitystatmachis port( clk :in bit; input :in bit; reset :in bit; output:outbit);endstatmach;architectureaofstatmachistypestate_typeis(s0,s1);signalstate:state_type;begin

4.VHDL狀態(tài)機(jī)實(shí)例(1)一段式狀態(tài)機(jī)4.VHDL狀態(tài)機(jī)實(shí)例41process(clk,reset)begin ifreset='1'then state<=s0; elsif(clk'eventandclk='1')then casestateis whens0=> state<=s1; output<='0'; whens1=> ifinput='1'then state<=s0; else state<=s1; endif; output<='1'; endcase; endif;endprocess;enda;process(clk,reset)42圖13-10狀態(tài)轉(zhuǎn)換圖圖13-10狀態(tài)轉(zhuǎn)換圖43--Moore型狀態(tài)機(jī)的二段式描述:

libraryieee;useieee.std_logic_1164.all;entitystatmachisport(clock,s1,s2,reset:instd_logic; r1,y1,g1,r2,y2,g2:outstd_logic);end;architectureexemplarofstatmachistypestate_tis(st0,st1,st2,st3,st4,st5,st6,st7);signalstate,nxstate:state_t;beginprocess(reset,clock)beginif(reset='1')then state<=st0;elsifclock'eventandclock='1'then state<=nxstate;endif;endprocess;(2)二段式狀態(tài)機(jī)--Moore型狀態(tài)機(jī)的二段式描述:(2)二段式狀態(tài)機(jī)44process(state,s1,s2)beginr1<='0';y1<='0';g1<='0';r2<='0';y2<='0';g2<='0'; casestateis whenst0=> g1<='1'; r2<='1'; ifs2=s1then nxstate<=st1; elsif(s1='0'ands2='1')then nxstate<=st2; else nxstate<=st0; endif; whenst1=> g1<='1'; r2<='1'; nxstate<=st2; process(state,s1,s2)45 whenst2=> g1<='1'; r2<='1'; nxstate<=st3; whenst3=> y1<='1'; r2<='1'; nxstate<=st4; whenst4=> r1<='1'; g2<='1'; if(s1='0'ands2='0')then nxstate<=st5; elsif(s1='1'ands2='0')then nxstate<=st6; else nxstate<=st4; endif; whenst5=> r1<='1'; g2<='1'; nxstate<=st6; whenst2=>46 whenst6=> r1<='1'; g2<='1'; nxstate<=st7; whenst7=> r1<='1'; y2<='1'; nxstate<=st0; endcase;endprocess;endexemplar; whenst6=>47圖13-11狀態(tài)轉(zhuǎn)換圖圖13-11狀態(tài)轉(zhuǎn)換圖48--Mealy型狀態(tài)機(jī)的二段式描述:

libraryieee;useieee.std_logic_1164.all;entitystmch1isport(clk,in1,rst:instd_logic;out1:outstd_logic);endstmch1;architecturebehaveofstmch1istypestate_valuesis(sx,s0,s1);signalstate,next_state:state_values;begin--Mealy型狀態(tài)機(jī)的二段式描述:49process(clk,rst)beginifrst='1'thenstate<=s0;elsifrising_edge(clk)thenstate<=next_state;endif;endprocess;process(state,in1)beginout1<='0';next_state<=sx;casestateiswhens0=>ifin1='0'thenout1<='1';next_state<=s1;elseprocess(clk,rst)50out1<='0';next_state<=s0;endif;whens1=>ifin1='0'thenout1<='0';next_state<=s0;elseout1<='1';next_state<=s1;endif;whensx=>next_state<=sx;endcase;endprocess;endbehave;out1<='051圖13-12狀態(tài)轉(zhuǎn)換圖圖13-12狀態(tài)轉(zhuǎn)換圖52libraryieee;useieee.std_logic_1164.all;entitymooreis port(rst:instd_logic; clock:instd_logic; x:instd_logic; z:outstd_logic);endmoore;architecturebehaviorofmooreistypestate_typeis(s0,s1,s2,s3);signalcurrent_state,next_state:state_type;begin(3)三段式狀態(tài)機(jī)libraryieee;(3)三段式狀態(tài)機(jī)53synch:process--狀態(tài)寄存器的進(jìn)程beginwaituntilclock'eventandclock='1';ifrst='1'then current_state<=s1;else current_state<=next_state;endif;endprocess;state_trans:process(current_state,x)--次態(tài)邏輯進(jìn)程beginnext_state<=current_state;casecurrent_stateis whens0=> ifx='0'then next_state<=s0; else next_state<=s2; endif;synch:process--狀態(tài)寄存器的進(jìn)54 whens1=> ifx='0'then next_state<=s0; else next_state<=s2; endif; whens2=> ifx='0'then next_state<=s2; else next_state<=s3; endif; whens3=> ifx='0'then next_state<=s3; else next_state<=s1; endif;endcase;endprocess; whens1=>55out:process(current_state,x)--輸出邏輯進(jìn)程begin z<='0'; casecurrent_stateis whens0=> z<='0'; whens1=> z<='1'; whens2=> z<='1'; whens3=> z<='0'; endcase;endprocess;endbehavior;out:process(current_state,x)56圖13-13狀態(tài)轉(zhuǎn)換圖圖13-13狀態(tài)轉(zhuǎn)換圖57數(shù)字秒表的要求及工作原理要求:用VHDL語言設(shè)計(jì)數(shù)字秒表;計(jì)時(shí)單位:1秒;(即每秒計(jì)時(shí)1次)計(jì)時(shí)范圍:60秒;顯示方式:使用PLD實(shí)驗(yàn)板上的8個(gè)LED進(jìn)行顯示;用邏輯電路控制8個(gè)LED燈,左邊4個(gè)代表秒表計(jì)數(shù)的十位,右邊4個(gè)代表秒表計(jì)數(shù)的個(gè)位,在脈沖信號CP的作用下,間接顯示秒表的BCD數(shù)值;數(shù)字秒表的要求及工作原理要求:用VHDL語言設(shè)計(jì)數(shù)字秒表;58LED燈表示數(shù)字秒表的狀態(tài)示意圖:………………………………1秒2秒9秒10秒19秒………………………………20秒59秒………………………………上圖給出了數(shù)字秒表(60進(jìn)制計(jì)數(shù)器)的效果圖;燈亮代表邏輯1,燈滅代表邏輯0,即得到秒表的轉(zhuǎn)移圖。0秒LED燈表示數(shù)字秒表的狀態(tài)示意圖:………………1591、分頻器設(shè)計(jì)(用VHDL語言描述)CP由實(shí)驗(yàn)板上的10MHz有源晶振產(chǎn)生(長方形的“鐵塊”);從PLD器件的專用時(shí)鐘引腳Pin12輸入到器件內(nèi)部(在QuartusII下進(jìn)行引腳鎖定),為計(jì)數(shù)器提供時(shí)鐘信號;由于實(shí)驗(yàn)板上所帶的連續(xù)脈沖CP的頻率為10MHz;因此,需要為秒表的計(jì)數(shù)器設(shè)計(jì)分頻器,將10MHz的連續(xù)脈沖分頻,得到秒脈沖;再由秒脈沖作為秒表計(jì)數(shù)器的計(jì)數(shù)頻率。本質(zhì)上就是用VHDL語言設(shè)計(jì)模值為10000000的計(jì)數(shù)器。實(shí)驗(yàn)任務(wù)

1、分頻器設(shè)計(jì)(用VHDL語言描述)CP由實(shí)驗(yàn)板上的10MH602、計(jì)數(shù)器設(shè)計(jì)(用VHDL語言描述)直接的60進(jìn)制計(jì)數(shù)器所對應(yīng)的是二進(jìn)制數(shù)值,不便于顯示;因此,可將秒表看做由個(gè)位為10進(jìn)制的計(jì)數(shù)器和十位為6進(jìn)制的計(jì)數(shù)器進(jìn)行級聯(lián)構(gòu)成,這種計(jì)數(shù)器也稱為BCD計(jì)數(shù)器;采用VHDL分別描述10進(jìn)制計(jì)數(shù)器和6進(jìn)制計(jì)數(shù)器,當(dāng)計(jì)數(shù)值為59時(shí),若再來一個(gè)時(shí)鐘脈沖,計(jì)數(shù)器回到初值0重新計(jì)數(shù)。也可以直接描述60進(jìn)制計(jì)數(shù)器,然后除10,得到的商為十位,余數(shù)為個(gè)位。2、計(jì)數(shù)器設(shè)計(jì)(用VHDL語言描述)直接的60進(jìn)制計(jì)數(shù)器所對61采用雙進(jìn)程描述的帶分頻60進(jìn)制計(jì)數(shù)器采用雙進(jìn)程描述的帶分頻60進(jìn)制計(jì)數(shù)器62采用雙進(jìn)程描述的帶分頻60進(jìn)制計(jì)數(shù)器(續(xù))采用雙進(jìn)程描述的帶分頻60進(jìn)制計(jì)數(shù)器(續(xù))63設(shè)計(jì)要求如下:(1)總線結(jié)構(gòu):數(shù)據(jù)總線位數(shù)8位、地址總線3位;(2)存儲器:存儲容量5×8位;(3)操作控制器:實(shí)現(xiàn)指令操作碼所需的操作控制信號;(4)運(yùn)算器:一個(gè)累加器,實(shí)現(xiàn)加法操作;(5)指令系統(tǒng)規(guī)模:3條指令?!?位模型計(jì)算機(jī)VHDL的設(shè)計(jì)13.6數(shù)字系統(tǒng)設(shè)計(jì)舉例13.6.1設(shè)計(jì)任務(wù)及方案構(gòu)思設(shè)計(jì)要求如下:—8位模型計(jì)算機(jī)VHDL的設(shè)計(jì)13.6數(shù)字64圖13-1模型計(jì)算機(jī)結(jié)構(gòu)框圖圖13-1模型計(jì)算機(jī)結(jié)構(gòu)框圖65圖13-14模型計(jì)算機(jī)系統(tǒng)頂層原理圖PC:程序計(jì)數(shù)器模塊MAR:地址寄存器ROM:存儲器DR:數(shù)據(jù)寄存器控制信號共有9個(gè),具體是:程序計(jì)數(shù)器PC的計(jì)數(shù)控制信號PCI;地址寄存器MAR的寄存命令信號ARI;數(shù)據(jù)寄存器DR的寄存命令信號DRI;數(shù)據(jù)寄存器DR的輸出控制信號DRO;累加器A的輸人命令信號AI;累加器A的輸出控制信號AO;ALU的加法運(yùn)算控制信號SUMI;ALU的輸出控制信號SUMO;指令寄存器IR的寄存命令信號IRI。IR:指令寄存器+譯碼器COUNTER:節(jié)拍發(fā)生器CTRL:控制器圖13-14模型計(jì)算機(jī)系統(tǒng)頂層原理圖PC:程序計(jì)數(shù)器模塊661.算術(shù)邏輯單元(ALU)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityaluisport(ac,dr:instd_logic_vector(7downto0);--累加器ac,數(shù)據(jù)寄存器dr sumi:std_logic;--加法運(yùn)算控制信號sumi sumo:std_logic;--輸出控制信號sumo alu_out:outstd_logic_vector(7downto0));--運(yùn)算結(jié)果endalu;architectureaofaluissignalalu_temp:std_logic_vector(7downto0);begin alu_temp<=ac+drwhensumi='0'; alu_out<=alu_tempwhensumo='0'else"ZZZZZZZZ";enda;13.6.3次級模塊電路的分析及VHDL實(shí)現(xiàn)1.算術(shù)邏輯單元(ALU)的VHDL源程序13.6.367圖13-15算術(shù)邏輯單元時(shí)序仿真波形圖圖13-15算術(shù)邏輯單元時(shí)序仿真波形圖682.累加器模塊(ACC)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entityaccisport(data_in:instd_logic_vector(7downto0);--數(shù)據(jù)輸入 ai:instd_logic;--累加器a的輸入命令信號ai ao:instd_logic;--累加器a的輸出控制信號ao clk:instd_logic;--時(shí)鐘頻率輸入 data_out:outstd_logic_vector(7downto0));--累加器數(shù)據(jù)輸出endacc;architectureaofaccissignalregq:std_logic_vector(7downto0);beginprocess(clk,ai,ao)begin if(clk'eventandclk='1')then if(ai='0')then regq<=data_in; endif; endif;endprocess;data_out<=regqwhenao='0'else"ZZZZZZZZ";enda;

2.累加器模塊(ACC)的VHDL源程序69圖13-16累加器模塊時(shí)序仿真波形圖圖13-16累加器模塊時(shí)序仿真波形圖703.節(jié)拍發(fā)生器(COUNTER)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitycounterisport(clk,clr:instd_logic;--系統(tǒng)時(shí)鐘和異步清零控制信號 t0,t1,t2,t3,t4,t5,t6,t7:outstd_logic);--節(jié)拍脈沖輸出endcounter;architectureaofcounterissignaltemp:std_logic_vector(7downto0);begin t0<=temp(0);t1<=temp(1);t2<=temp(2);t3<=temp(3); t4<=temp(4);t5<=temp(5);t6<=temp(6);t7<=temp(7);3.節(jié)拍發(fā)生器(COUNTER)的VHDL源程序71process(clk,clr)begin if(clr='0')then temp(0)<='1'; temp(1)<='0'; temp(2)<='0'; temp(3)<='0'; temp(4)<='0'; temp(5)<='0'; temp(6)<='0'; temp(7)<='0'; elsif(clk'eventandclk='1')then temp(0)<=temp(7);temp(1)<=temp(0); temp(2)<=temp(1);temp(3)<=temp(2); temp(4)<=temp(3);temp(5)<=temp(4); temp(6)<=temp(5);temp(7)<=temp(6); endif;endprocess;enda;process(clk,clr)72圖13-18節(jié)拍發(fā)生器模塊時(shí)序仿真波形圖圖13-18節(jié)拍發(fā)生器模塊時(shí)序仿真波形圖734.指令寄存器模塊(IR)和指令譯碼器的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entityirisport(data_in:instd_logic_vector(7downto0);--數(shù)據(jù)輸入 iri:instd_logic;--指令寄存器ir的寄存命令信號 clk:instd_logic;--系統(tǒng)時(shí)鐘頻率 ld,add,halt:outstd_logic);--譯碼輸出的3條指令信號endir;architectureaofirissignalregq:std_logic_vector(7downto0);beginprocess(clk,iri)--指令寄存器進(jìn)程begin if(clk'eventandclk='1')then

4.指令寄存器模塊(IR)和指令譯碼器的VHDL源程序74 if(iri='0')then regq<=data_in; endif; endif;endprocess;process(regq)--指令譯碼器進(jìn)程begin caseregqis when"00111111"=>ld<='1';add<='0';halt<='0'; when"01111111"=>ld<='0';add<='1';halt<='0'; when"10111111"=>ld<='0';add<='0';halt<='1'; whenothers=>ld<='0';add<='0';halt<='0'; endcase;endprocess;enda; if(iri='0')then75圖13-19指令寄存器和譯碼器模塊時(shí)序仿真波形圖圖13-19指令寄存器和譯碼器模塊時(shí)序仿真波形圖765.時(shí)鐘產(chǎn)生器(CLK_SOURCE)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entityclk_sourceisport(clk_50m:instd_logic;--50MHz晶振時(shí)鐘源輸入 clk:outstd_logic);--系統(tǒng)時(shí)鐘頻率輸出(1Hz)endentity;architectureaofclk_sourceissignalclk_temp:std_logic;beginclk<=clk_temp;process(clk_50m,clk_temp)5.時(shí)鐘產(chǎn)生器(CLK_SOURCE)的VHDL源程序77variablecounter:integerrange0to24999999;beginif(clk_50m'eventandclk_50m='1')then if(counter=24999999)then counter:=0; clk_temp<=notclk_temp; else counter:=counter+1; endif;endif;endprocess;enda;variablecounter:integerrange78圖13-20時(shí)鐘產(chǎn)生器模塊時(shí)序仿真波形圖圖13-20時(shí)鐘產(chǎn)生器模塊時(shí)序仿真波形圖796.程序計(jì)數(shù)器模塊(PC)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitypcisport( pci,clk,clr:instd_logic;--計(jì)數(shù)控制信號、時(shí)鐘頻率和清零標(biāo)志 pcout:outstd_logic_vector(2downto0)--指令地址輸出 );endpc;architectureaofpcissignalqout:std_logic_vector(2downto0);begin6.程序計(jì)數(shù)器模塊(PC)的VHDL源程序80process(clk,clr,pci)begin if(clr='0')then qout<="000"; elsif(clk'eventandclk='1')then if(pci='1')then qout<=qout+1; endif; endif;endprocess;pcout<=qout;enda;

process(clk,clr,pci)81圖13-21程序計(jì)數(shù)器模塊時(shí)序仿真波形圖圖13-21程序計(jì)數(shù)器模塊時(shí)序仿真波形圖827.地址寄存器(MAR)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entitymarisport(addr_in:instd_logic_vector(2downto0);--地址輸入 ari:instd_logic;--寄存命令信號 clk:instd_logic;--系統(tǒng)時(shí)鐘頻率addr_out:outstd_logic_vector(2downto0));--地址輸出endmar;architectureaofmarisbeginprocess(clk,ari)begin if(clk'eventandclk='1')then if(ari='0')then addr_out<=addr_in; endif; endif;endprocess;enda;

7.地址寄存器(MAR)的VHDL源程序83圖13-22地址寄存器模塊時(shí)序仿真波形圖圖13-22地址寄存器模塊時(shí)序仿真波形圖848.存儲器(ROM)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entityromisport(addr:inintegerrange0to4; dout:outstd_logic_vector(7downto0));endrom;architectureaofromistypevector_arrayisarray(0to4)ofstd_logic_vector(7downto0);constantmemory:vector_array:=("00111111","00000100","01111111","00000101","10111111");begin dout<=memory(addr);enda;8.存儲器(ROM)的VHDL源程序85圖13-23存儲器模塊時(shí)序仿真波形圖圖13-23存儲器模塊時(shí)序仿真波形圖869.數(shù)據(jù)寄存器(DR)的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entitydrisport(data_in:instd_logic_vector(7downto0);--數(shù)據(jù)輸入 dri:instd_logic;--寄存命令信號 dro:instd_logic;--輸出控制信號 clk:instd_logic;--系統(tǒng)時(shí)鐘頻率 data_out:outstd_logic_vector(7downto0));--數(shù)據(jù)輸出enddr;architectureaofdrissignalregq:std_logic_vector(7downto0);begin9.數(shù)據(jù)寄存器(DR)的VHDL源程序87process(clk,dri,dro)begin if(clk'eventandclk='1')then if(dri='1')then regq<=data_in; endif; endif;endprocess;data_out<=regqwhendro='1'else"ZZZZZZZZ";enda;process(clk,dri,dro)88圖13-24數(shù)據(jù)寄存器模塊時(shí)序仿真波形圖圖13-24數(shù)據(jù)寄存器模塊時(shí)序仿真波形圖8910.顯示譯碼電路的VHDL源程序

libraryieee;useieee.std_logic_1164.all;entitydel7isport(alt_out:instd_logic_vector(7downto0);led7:outstd_logic_vector(6downto0));endentity;architectureoneofdel7isbeginprocess(alt_out)begin10.顯示譯碼電路的VHDL源程序90casealt_outis when"00000000"=>led7<="1111110"; --0 when"00000001"=>led7<="0110000"; --1 when"00000010"=>led7<="1101101"; --2 when"00000011"=>led7<="1111001"; --3 when"00000100"=>led7<="0110011"; --4 when"00000101"=>led7<="1011011"; --5 when"00000110"=>led7<="1011111"; --6 when"00000111"=>led7<="1110000"; --7 when"00001000"=>led7<="1111111"; --8 when"00001001"=>led7<="1111011"; --9 whenothers=>null;endcase;endprocess;end;casealt_outis91圖13-25顯示譯碼模塊時(shí)序仿真波形圖圖13-25顯示譯碼模塊時(shí)序仿真波形圖9213.6.4控制器(CTRL)的VHDL設(shè)計(jì)模型計(jì)算機(jī)中控制信號共有9個(gè),具體是:程序計(jì)數(shù)器PC的計(jì)數(shù)控制信號PCI;地址寄存器MAR的寄存命令信號ARI;數(shù)據(jù)寄存器DR的寄存命令信號DRI;數(shù)據(jù)寄存器DR的輸出控制信號DRO;累加器A的輸人命令信號AI;累加器A的輸出控制信號AO;ALU的加法運(yùn)算控制信號SUMI;ALU的輸出控制信號SUMO;指令寄存器IR的寄存命令信號IRI。13.6.4控制器(CTRL)的VHDL設(shè)計(jì)模型計(jì)算機(jī)中控93libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityctrlisport( ld,add,halt:instd_logic;--來自指令譯碼器的3條指令 clk:instd_logic;--系統(tǒng)時(shí)鐘頻率 t0,tl,t2,t3,t4,t5,t6,t7:instd_logic;--節(jié)拍脈沖 pci,ari,dri,dro,ai,ao,sumi,sumo,iri:outstd_logic--控制信號輸出);endentity;architectureaofctrlisbeginprocess(ld,add,halt,t0,tl,t2,t3,t4,t5,t6,t7)beginlibraryieee;94if(clk'eventandclk='1')thenif(halt='1')thenpci<='0';sumo<='0';else ari<=not(t0or(t3andld)or(t3andadd)); iri<=nott2; ai<=not((t6andld)or(t6andadd)); dri<=tlor(t4andld)or(t4andadd); pci<=t2or(t5andld)or(t5andadd); sumi<=not(t5andadd); sumo<=not(t6andadd); ao<=not(t7andadd);dro<=(t6andadd)or(t7andadd);endif;endif;endprocess;enda;

if(clk'eventandclk='1')then95圖13-26控制器模塊時(shí)序仿真波形圖圖13-26控制器模塊時(shí)序仿真波形圖96第13章數(shù)字系統(tǒng)設(shè)計(jì)基礎(chǔ)數(shù)字系統(tǒng)概述數(shù)字系統(tǒng)的設(shè)計(jì)方法

數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則

數(shù)字系統(tǒng)的設(shè)計(jì)步驟數(shù)字系統(tǒng)設(shè)計(jì)舉例狀態(tài)機(jī)的設(shè)計(jì)第13章數(shù)字系統(tǒng)設(shè)計(jì)基礎(chǔ)數(shù)字系統(tǒng)概述數(shù)字系統(tǒng)的設(shè)97什么是數(shù)字系統(tǒng)?數(shù)字系統(tǒng)是指交互式的、以離散形式表示的,具有存儲、傳輸、信息處理能力的邏輯子系統(tǒng)的集合。13.1數(shù)字系統(tǒng)概述什么是數(shù)字系統(tǒng)?數(shù)字系統(tǒng)是指交互式的、以離散9813.1.1數(shù)字系統(tǒng)的優(yōu)點(diǎn)

(1)工作穩(wěn)定,抗干擾能力強(qiáng)。(2)精確度高。(3)系統(tǒng)可靠性高。(4)便于系統(tǒng)的模塊化。(5)便于大規(guī)模集成,易于實(shí)現(xiàn)小型化。(6)可實(shí)現(xiàn)片上系統(tǒng)(SOC)。(7)可實(shí)現(xiàn)嵌入式系統(tǒng)。13.1.1數(shù)字系統(tǒng)的優(yōu)點(diǎn)(1)工作穩(wěn)定,抗干9913.1.2數(shù)字系統(tǒng)的基本構(gòu)成

一個(gè)完整的數(shù)字系統(tǒng)通??煞譃槲鍌€(gè)部分:輸入電路、輸出電路、數(shù)據(jù)處理器、控制器和時(shí)鐘電路。圖13-2數(shù)字系統(tǒng)結(jié)構(gòu)框圖13.1.2數(shù)字系統(tǒng)的基本構(gòu)成100

●輸入/輸出電路是整個(gè)數(shù)字系統(tǒng)對外信號交流的接口,是完成將物理量轉(zhuǎn)化為數(shù)字量或?qū)?shù)字量轉(zhuǎn)化為物理量的功能部件。

●數(shù)據(jù)處理器主要完成數(shù)據(jù)的采集、存儲、運(yùn)算和傳輸?shù)裙δ堋?/p>

●控制器是執(zhí)行數(shù)字系統(tǒng)算法的核心,具有記憶功能,一般為時(shí)序系統(tǒng)。控制器負(fù)責(zé)規(guī)定算法的步驟,在每一個(gè)計(jì)算步驟給數(shù)據(jù)處理器發(fā)出命令信號,同時(shí)接收來自數(shù)字處理器的狀態(tài)變量,確定下一個(gè)計(jì)算步驟,以確保算法按正確的次序?qū)崿F(xiàn)。

●時(shí)鐘電路是用來產(chǎn)生系統(tǒng)工作的同步時(shí)鐘信號,使整個(gè)系統(tǒng)在時(shí)鐘信號的作用下,一步一步地按順序完成各種操作。

●輸入/輸出電路是整個(gè)數(shù)字系統(tǒng)對外信號交流的接口,是完101圖13-3馮.諾依曼計(jì)算機(jī)框架圖圖13-3馮.諾依曼計(jì)算機(jī)框架圖10213.2數(shù)字系統(tǒng)的設(shè)計(jì)方法數(shù)字系統(tǒng)設(shè)計(jì)有多種方法,傳統(tǒng)的方法有試湊設(shè)計(jì)法、MCU設(shè)計(jì)法等。傳統(tǒng)的設(shè)計(jì)方法都是采用自下而上的設(shè)計(jì)方法,即首先確定可用的元件,然后根據(jù)這些器件進(jìn)行邏輯設(shè)計(jì),完成各模塊后,進(jìn)行連接形成系統(tǒng),最后經(jīng)調(diào)試、測量觀察整個(gè)系統(tǒng)是否達(dá)到規(guī)定的性能指標(biāo)。13.2.1傳統(tǒng)的設(shè)計(jì)方法13.2數(shù)字系統(tǒng)的設(shè)計(jì)方法數(shù)字系統(tǒng)設(shè)計(jì)有多種方法,103系統(tǒng)測試與性能分析完整系統(tǒng)功能模塊基本元器件

缺點(diǎn):1、設(shè)計(jì)過程依賴現(xiàn)有的通用元器件、手工及經(jīng)驗(yàn);2、設(shè)計(jì)后期的仿真和調(diào)試3、基于原理圖的設(shè)計(jì)、可移植性差;4、設(shè)計(jì)周期長、靈活性差、效率低傳統(tǒng)電路設(shè)計(jì)方法:自下而上(Bottom-Up)的設(shè)計(jì)方法系統(tǒng)測試與性能分析完整系統(tǒng)功能模塊基本元器件缺點(diǎn):傳104基于EDA技術(shù)的現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)一般采用自頂向下的方法。該方法首先根據(jù)系統(tǒng)的總體功能要求,進(jìn)行系統(tǒng)級設(shè)計(jì);然后按照一定的標(biāo)準(zhǔn)將整個(gè)系統(tǒng)劃分成若干個(gè)子系統(tǒng);接著將各個(gè)子系統(tǒng)劃分為若干功能模塊,針對各模塊進(jìn)行邏輯電路級設(shè)計(jì)。13.2.2基于EDA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)方法基于EDA技術(shù)的現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)一般采用自頂向下的105

●自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對設(shè)計(jì)的描述從上到下逐步由粗略到詳細(xì),符合常規(guī)的邏輯思維習(xí)慣;

優(yōu)點(diǎn)

●針對具體的設(shè)計(jì),實(shí)施自頂向下的設(shè)計(jì)方法的形式會(huì)有所不同,但均需遵循以下兩條原則:逐層分解功能和分層次進(jìn)行設(shè)計(jì)。同時(shí),應(yīng)在各個(gè)設(shè)計(jì)層次上,考慮相應(yīng)的仿真驗(yàn)證問題。

●適合多個(gè)設(shè)計(jì)者同時(shí)進(jìn)行設(shè)計(jì)。隨著技術(shù)的不斷進(jìn)步,許多設(shè)計(jì)由一個(gè)設(shè)計(jì)者已無法完成,由多個(gè)設(shè)計(jì)者分工協(xié)作完成一項(xiàng)設(shè)計(jì)的情況越來越多;●自頂向下設(shè)計(jì)方法是一種模塊化設(shè)計(jì)方法。對設(shè)計(jì)的描106表13-1傳統(tǒng)設(shè)計(jì)方法和EDA設(shè)計(jì)方法的比較表13-1傳統(tǒng)設(shè)計(jì)方法和EDA設(shè)計(jì)方法的比較10713.3數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則1.分割準(zhǔn)則2.系統(tǒng)的可觀測性4.同步和異步電路5.最優(yōu)化設(shè)計(jì)3.面積和速度的平衡與互換原則6.理想設(shè)計(jì)準(zhǔn)則13.3數(shù)字系統(tǒng)的設(shè)計(jì)準(zhǔn)則1.分割準(zhǔn)則2.系統(tǒng)的可觀測性41081.分割準(zhǔn)則

●自頂向下的設(shè)計(jì)方法需要對系統(tǒng)功能進(jìn)行分割,然后用邏輯語言進(jìn)行描述。分割過程中,若分割過粗,則不易用邏輯語言表達(dá);分割過細(xì),則帶來不必要的重復(fù)和繁瑣。因此,分割的粗細(xì)需要根據(jù)具體的設(shè)計(jì)和設(shè)計(jì)工具情況而定。

2.系統(tǒng)的可觀測性●在系統(tǒng)設(shè)計(jì)中,應(yīng)該同時(shí)考慮功能檢查和性能的測試,即系統(tǒng)可測性的問題。在設(shè)計(jì)系統(tǒng)的同時(shí)設(shè)計(jì)觀測電路,指示系統(tǒng)內(nèi)部的工作狀態(tài)。

1.分割準(zhǔn)則●自頂向下的設(shè)計(jì)方法需要對系統(tǒng)功能進(jìn)行分1094.同步和異步電路●異步電路會(huì)造成較大延時(shí)和邏輯競爭,容易引起系統(tǒng)的不穩(wěn)定,而同步電路則是按照統(tǒng)一的時(shí)鐘工作,穩(wěn)定性好。因此,在設(shè)計(jì)時(shí)應(yīng)盡可能采用同步電路進(jìn)行設(shè)計(jì),避免使用異步電路。在必須使用異步電路時(shí),應(yīng)采取措施來避免競爭和增加穩(wěn)定性。3.面積和速度的平衡與互換原則

●面積是指一個(gè)設(shè)計(jì)消耗的邏輯資源數(shù)量,一般可以用觸發(fā)器和組合邏輯單元來度量。速度指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行時(shí)能夠達(dá)到的最高頻率。面積和速度是一對矛盾的需求,在設(shè)計(jì)中應(yīng)力求平衡,在一定條件下可相互轉(zhuǎn)換。4.同步和異步電路●異步電路會(huì)造成較大延時(shí)和邏輯競爭,1106.理想設(shè)計(jì)準(zhǔn)則

●一個(gè)理想的設(shè)計(jì),應(yīng)該具有以下基本特征:設(shè)計(jì)總體上流暢,無拖泥帶水的感覺;資源分配、I/O分配合理,沒有任何設(shè)計(jì)上和性能上的瓶頸;系統(tǒng)結(jié)構(gòu)協(xié)調(diào);具有良好的可觀測性;易于修改和移植;器件的特點(diǎn)能得到充分的發(fā)揮。5.最優(yōu)化設(shè)計(jì)●由于可編程器件的邏輯資源、連接資源和I/O資源有限,器件的速度和性能也是有限的,用器件設(shè)計(jì)系統(tǒng)的過程相當(dāng)于求最優(yōu)解的過程,因此,需要給定兩個(gè)約束條件:邊界條件和最優(yōu)化目標(biāo)。

6.理想設(shè)計(jì)準(zhǔn)則●一個(gè)理想的設(shè)計(jì),應(yīng)該具有以下基本特征11113.4數(shù)字系統(tǒng)的設(shè)計(jì)步驟圖13-4數(shù)字系統(tǒng)設(shè)計(jì)流程圖13.4數(shù)字系統(tǒng)的設(shè)計(jì)步驟圖13-4數(shù)字系統(tǒng)設(shè)計(jì)流程圖1121.系統(tǒng)需求分析

●系統(tǒng)需求分析是數(shù)字系統(tǒng)設(shè)計(jì)的首要任務(wù)。設(shè)計(jì)者在讀完技術(shù)任務(wù)書后應(yīng)明確以下內(nèi)容:確定系統(tǒng)的基本功能;確定輸入和輸出信號;確定各功能模塊之間的相互關(guān)系;確定系統(tǒng)具體指標(biāo)。2.確定總體方案●數(shù)字系統(tǒng)總體方案將直接影響整個(gè)數(shù)字系統(tǒng)的質(zhì)量與性能,總體方案需要綜合考慮以下幾個(gè)因素:系統(tǒng)功能要求、系統(tǒng)使用要求和系統(tǒng)性能價(jià)格比。1.系統(tǒng)需求分析●系統(tǒng)需求分析是數(shù)字系統(tǒng)設(shè)計(jì)的首要任1134.系統(tǒng)和子系統(tǒng)邏輯描述●采用比較規(guī)范的形式來描述系統(tǒng)的邏輯功能。對系統(tǒng)的邏輯描述可先采用較粗略的方框圖,再將方框圖逐步細(xì)化為詳細(xì)邏輯流程圖,最后將詳細(xì)邏輯流程圖用電路原理圖或硬件描述語言描述出來。3.建立系統(tǒng)及子系統(tǒng)結(jié)構(gòu)框圖

●把系統(tǒng)從邏輯上劃分為數(shù)據(jù)子系統(tǒng)和控制子系統(tǒng)兩部分,畫出整個(gè)系統(tǒng)的結(jié)構(gòu)框圖。然后將數(shù)據(jù)子系統(tǒng)分解為多個(gè)基本的邏輯功能模塊。最后畫出由基本功能模塊組成的數(shù)據(jù)子系統(tǒng)結(jié)構(gòu)框圖,數(shù)據(jù)子系統(tǒng)中所需的各種控制信號將由控制子系統(tǒng)產(chǎn)生。4.系統(tǒng)和子系統(tǒng)邏輯描述●采用比較規(guī)范的形式來描述系統(tǒng)1146.系統(tǒng)的物理實(shí)現(xiàn)

●通過EDA軟件仿真,如果設(shè)計(jì)的數(shù)字系統(tǒng)滿足總體要求,就可以用芯片實(shí)現(xiàn)數(shù)字系統(tǒng)。首先實(shí)現(xiàn)各個(gè)邏輯功能電路,調(diào)試正確后,再將它們互連成子系統(tǒng),最后進(jìn)行數(shù)字系統(tǒng)總體調(diào)試。5.系統(tǒng)仿真與驗(yàn)證●在電路設(shè)計(jì)完成以后必須驗(yàn)證設(shè)計(jì)是否正確。數(shù)字電路設(shè)計(jì)的EDA軟件都具有仿真功能,先通過系統(tǒng)仿真,當(dāng)系統(tǒng)仿真結(jié)果正確后再進(jìn)行實(shí)際電路的測試。6.系統(tǒng)的物理實(shí)現(xiàn)●通過EDA軟件仿真,如果設(shè)計(jì)的數(shù)115狀態(tài)機(jī)是一種具有指定數(shù)目的狀態(tài)的概念機(jī),它在某個(gè)指定的時(shí)刻僅處于一個(gè)狀態(tài),狀態(tài)的改變是對輸入事件的響應(yīng)。狀態(tài)機(jī)的基本要素有三個(gè):狀態(tài)、輸入條件和輸出。什么是狀態(tài)機(jī)?13.5狀態(tài)機(jī)的設(shè)計(jì)狀態(tài)機(jī)是一種具有指定數(shù)目的狀態(tài)的概念機(jī),它在某個(gè)116狀態(tài)機(jī)的優(yōu)勢:

(1)狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn);(2)狀態(tài)機(jī)的結(jié)構(gòu)相對簡單,設(shè)計(jì)方案相對固定;(3)狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊;(4)與VHDL的其他描述方式相比,狀態(tài)機(jī)的VHDL表述豐富多樣、程序?qū)哟畏置鳎Y(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有其獨(dú)到的好處;(5)在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢。(6)高可靠性。狀態(tài)機(jī)的優(yōu)勢:(1)狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制117應(yīng)用實(shí)例1

圖13-5自動(dòng)售貨機(jī)控制系統(tǒng)方框圖自動(dòng)售貨機(jī)設(shè)定邏輯變量:設(shè)投幣信號A、B為輸入邏輯變量,投入一枚一元硬幣時(shí)用A=1表示,未投入時(shí)A=0。投入一枚五角硬幣用B=1表示,未投入時(shí)B=0;設(shè)礦泉水和找錢為兩個(gè)輸出變量,分別用Z和Y表示,給出礦泉水時(shí)Z=1,不給時(shí)Z=0,找回一枚五角硬幣時(shí)Y=1,不找時(shí)Y=0。

應(yīng)用實(shí)例1118圖13-6自動(dòng)售貨機(jī)狀態(tài)轉(zhuǎn)換圖圖13-6自動(dòng)售貨機(jī)狀態(tài)轉(zhuǎn)換圖119libraryieee;useieee.std_logic_1164.all;entityshj_ctrlis port(a,b:instd_logic; clk:instd_logic; z,y:outstd_logic);endshj_ctrl;architecturebehaofshj_ctrlistypestatesis(s0,s1,s2);signalstate:states;signalx:std_logic_vector(1downto0);beginx<=a&b;process(clk,x,state)begin ifrising_edge(clk)then casestateis whens0=> z<='0';y<='0'; if(x="01")then state<=s1; elsif(x="10")thenlibraryieee;120 state<=s2; else state<=s0; endif;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論