數(shù)字邏輯與系統(tǒng)設(shè)計 課件 第8章 數(shù)字系統(tǒng)設(shè)計_第1頁
數(shù)字邏輯與系統(tǒng)設(shè)計 課件 第8章 數(shù)字系統(tǒng)設(shè)計_第2頁
數(shù)字邏輯與系統(tǒng)設(shè)計 課件 第8章 數(shù)字系統(tǒng)設(shè)計_第3頁
數(shù)字邏輯與系統(tǒng)設(shè)計 課件 第8章 數(shù)字系統(tǒng)設(shè)計_第4頁
數(shù)字邏輯與系統(tǒng)設(shè)計 課件 第8章 數(shù)字系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章數(shù)字系統(tǒng)設(shè)計8.1概述8.2處理流程的電路結(jié)構(gòu)8.3數(shù)據(jù)處理結(jié)構(gòu)8.4狀態(tài)機8.5模塊互聯(lián)

8.1概述

數(shù)字系統(tǒng)設(shè)計的核心是自頂向下的設(shè)計思想和模塊化的設(shè)計方法,其實質(zhì)是三個問題:

(1)模塊劃分,即系統(tǒng)應(yīng)該被劃分為幾個模塊。

(2)模塊互聯(lián),即各個模塊間的連接接口如何規(guī)劃。

(3)模塊通信,即各個模塊之間的數(shù)據(jù)如何交互。

數(shù)字電路系統(tǒng)的設(shè)計方法有試湊法和自上而下法。

(1)試湊法。

試湊法把系統(tǒng)的總體方案分成若干個相對獨立的功能部件,然后用組合邏輯電路和時序邏輯電路的設(shè)計方法分別設(shè)計并構(gòu)成這些功能部件,最后把這些已經(jīng)確定的部件按要求拼接組合起來,便構(gòu)成完整的數(shù)字系統(tǒng)。

(2)自上而下法。

自上而下(或自頂向下)的設(shè)計方法適用于較大規(guī)模的數(shù)字系統(tǒng)。把較大規(guī)模的數(shù)字系統(tǒng)從邏輯上劃分為控制器和受控制器電路兩大部分,采用邏輯流程圖或其他工具來描述控制器的控制過程,并根據(jù)控制器及受控制器的邏輯功能,選擇適當?shù)墓δ芷骷韺崿F(xiàn)??刂破骰蚴芸刂破鞅旧碛址謩e可以看成一個子系統(tǒng),邏輯劃分的工作還可以在控制器或受控制器內(nèi)部多重進行。

數(shù)字系統(tǒng)設(shè)計能力的培養(yǎng)要從小系統(tǒng)入手,如同“滾雪球”一樣。在前面章節(jié)的基礎(chǔ)電路上組合改進實現(xiàn)小系統(tǒng)設(shè)計,再在小系統(tǒng)上不斷增加和完善功能,最后實現(xiàn)一個大系統(tǒng),最終達到能夠設(shè)計大系統(tǒng)的目標。

例如,某簡單的小型數(shù)字系統(tǒng)的功能要求如下:有4×4矩陣數(shù)字鍵盤和一行5個數(shù)碼管,每個按鍵上標有一位十六進制數(shù)符,十六個按鍵標注不同值,每按一次鍵,相應(yīng)的十六進制數(shù)符就顯示在最右邊的數(shù)碼管上,以前顯示的數(shù)符都向左移一個數(shù)碼管。

本章的系統(tǒng)設(shè)計采用進階提升的方式來描述數(shù)字系統(tǒng)設(shè)計的基本理念、思維、方法和手段,使初學者實現(xiàn)設(shè)計能力的提升。

首先描述處理流程如何用電路實現(xiàn),可以使初學者的設(shè)計角度從門電路或基本功能電路上轉(zhuǎn)換到系統(tǒng)結(jié)構(gòu)上,完成設(shè)計思維的提升。無論數(shù)字系統(tǒng)是否復(fù)雜,其功能是可以用操作流程來描述的,特別是有計算機編程經(jīng)驗的人來學更是容易接受。

其次介紹常用的處理電路結(jié)構(gòu),可以使初學者學會功能流程的工程設(shè)計思路,從而理解速度與資源的制衡關(guān)系,領(lǐng)會“因需可定”的工程設(shè)計理念。

然后將時序電路設(shè)計升遷到功能模塊,將有限狀態(tài)機與處理流程相融合,采用擴展有限狀態(tài)機來進行規(guī)范說明和描述,使初學者的設(shè)計著眼點從時序升格至流程,從而為進一步學習復(fù)雜設(shè)計理論和實現(xiàn)復(fù)雜設(shè)計奠定基礎(chǔ)。

最后介紹系統(tǒng)的模塊劃分和互聯(lián),利用數(shù)據(jù)處理功能來分類和設(shè)計模塊,利用“服務(wù)”來描述模塊之間的交互,采用易讀易懂且關(guān)系明晰的原語來設(shè)計模塊之間的通信,從而實現(xiàn)系統(tǒng)設(shè)計能力的提升。

8.2處理流程的電路結(jié)構(gòu)

處理流程通常有算術(shù)邏輯運算、數(shù)據(jù)保存、流程控制這三個基本要素構(gòu)成。8.2.1算術(shù)邏輯運算

1.算術(shù)運算基本算術(shù)運算主要包括加、減、乘、除。這些基本算術(shù)運算通過組合實現(xiàn)各種數(shù)學表達式的計算。例如,y=(x1+x2)x3-(x4+x5)/x6

可以采用如圖8-1所示的結(jié)構(gòu)來實現(xiàn)。

圖8-1數(shù)字表達式的實現(xiàn)結(jié)構(gòu)

任何一種處理都可以看成是一個部件,它有輸入和輸出,其功能可以采用函數(shù)來表示。例如,輸入為x,輸出為y,該部件功能函數(shù)為y=f(x),f

代表功能。

基本算術(shù)運算所對應(yīng)的部件分別稱為加法器、減法器、乘法器和除法器。比較器是一種特殊的減法器,不用輸出差,只需要輸出是否大于、小于和等于三種邏輯量。

2.邏輯運算

常用邏輯運算包括與、或、非和異或四種。邏輯運算主要用于數(shù)位處理或檢測、條件判定等處理。

8.2.2數(shù)據(jù)保存

在數(shù)字系統(tǒng)設(shè)計中,數(shù)據(jù)保存是一個核心環(huán)節(jié),它確保了數(shù)據(jù)的穩(wěn)定性和可靠性。通常采用寄存器和RAM來實現(xiàn)數(shù)據(jù)保存。

常規(guī)寄存器有6個信號:時鐘CLK、使能E、數(shù)據(jù)D、清零R、置位S

和輸出Q。通常配置為沿觸發(fā),異步清零和置位。其適用于存儲少量的,但是需要快速訪問的數(shù)據(jù)。

8.2.3流程控制

流程控制是處理的“指揮中心”,前文從功能上描述了它的功能描述結(jié)構(gòu)和實現(xiàn)部件與結(jié)構(gòu),下文將從具體電路實現(xiàn)及設(shè)計原理上進行描述。

流程控制結(jié)構(gòu)主要有順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)就是按順序逐一執(zhí)行操作。

1.分支結(jié)構(gòu)

分支結(jié)構(gòu)是指根據(jù)不同條件執(zhí)行不同的操作。

例如:

分支結(jié)構(gòu)可以分為兩個功能部分:條件判斷和選擇執(zhí)行。前者來決定哪個條件成立,生成相應(yīng)的條件號;后者根據(jù)前者生成的條件號來決定哪個結(jié)果被輸出。

1)條件判斷

條件判斷可以描述為:當i<a

時,條件1成立,其他條件不成立;當a≤i<b

時,條件2成立,其他條件不成立;當b≤i<c時,條件3成立,其他條件不成立;當i≥c時,條件4成立,其他條件不成立。

在條件判斷中,i分別與3個數(shù)相比較,即i與a、i與b、i與c。比較運算實質(zhì)是一種數(shù)學運算,差為0表明相等;差是正數(shù)表明大于;差是負數(shù)表明小于。進行比較運算的部件稱為比較器。

將i與這三個數(shù)比較的結(jié)果進行組合,輸出相應(yīng)的條件號。

條件判斷的實現(xiàn)結(jié)構(gòu)如圖8-2(a)所示。

2)選擇執(zhí)行

選擇執(zhí)行可以描述為:當條件1成立時,Y=f1(X);當條件2成立時,Y=f2(X);當條件3成立時,Y=f3(X);當條件4成立時,Y=f4(X)。采用如圖8-2(b)所示的描述方式,每個函數(shù)都對輸入

X

進行運算,根據(jù)條件號選擇其所對應(yīng)的函數(shù)計算結(jié)果作為輸出。

圖8-2分支結(jié)構(gòu)的實現(xiàn)結(jié)構(gòu)

2.循環(huán)結(jié)構(gòu)

有時處理操作需要在一定條件下反復(fù)執(zhí)行某些操作,這種操作稱為循環(huán)。反復(fù)執(zhí)行的操作稱為循環(huán)體,執(zhí)行所需要的條件稱為循環(huán)條件。循環(huán)條件是循環(huán)體內(nèi)存儲量或外部輸入量的值滿足某種關(guān)系。

循環(huán)結(jié)構(gòu)有兩種形式,即當型和直到型,流程圖結(jié)構(gòu)如圖8-3(a)所示。當型循環(huán)根據(jù)條件判定結(jié)果決定是否執(zhí)行循環(huán)體;而直到型循環(huán)先執(zhí)行循環(huán)體,根據(jù)條件判定結(jié)果決定是否再執(zhí)行循環(huán)體。

循環(huán)結(jié)構(gòu)的處理電路結(jié)構(gòu)如圖8-3(b)所示,其中輸入信號EN為使能循環(huán)信號,輸出信號OV為循環(huán)結(jié)束指示信號。EN信號無效時執(zhí)行初始化循環(huán)體存儲量,EN信號有效時可以執(zhí)行循環(huán)體操作,通常是通過條件判定來決定是否執(zhí)行循環(huán)體操作。當條件判定不滿足時,循環(huán)體操作不再執(zhí)行,電路處于保持狀態(tài)。若條件判定滿足,則OV為0,否則為1。

圖8-3循環(huán)結(jié)構(gòu)處理流程與結(jié)構(gòu)

例如,階乘運算y=N!的計算流程如圖8-4所示。圖8-4階乘的循環(huán)計算流程

仿真波形如圖8-5所示,其中數(shù)值為十進制數(shù)。x圖8-5階乘運算的仿真波形

8.3數(shù)據(jù)處理結(jié)構(gòu)

8.3.1并行結(jié)構(gòu)并行結(jié)構(gòu)的特點是所有數(shù)據(jù)量均以寄存器的存儲方式呈現(xiàn),所有運算和控制都由各自單獨的電路來實現(xiàn)。數(shù)據(jù)可以同時進行讀寫,數(shù)據(jù)運算和控制采用專用獨立電路,故處理速度快,但資源占用量較大。

例如,數(shù)字信號處理中最為常用的卷積運算是對連續(xù)輸入數(shù)據(jù)的延時加權(quán)求和,其運算公式為

這里,xn

是當前輸入,xn-m

是從當前前移m

個時刻時的輸入值,hm是給定的權(quán)值。

由于要保存

M-1個以往時刻的輸入值且隨時刻后移不斷順序更新,故采用移位寄存器來保存輸入值。當前輸入和所有寄存器的輸出分別乘以相應(yīng)權(quán)值后求和即可實現(xiàn)該數(shù)據(jù)運算,電路結(jié)構(gòu)如圖8-6所示。為了保證同步操作,電路對輸入

X

進行鎖存后再參與計算。計算輸出Y

采用同步輸出方式。

圖8-6卷積運算的電路結(jié)構(gòu)

仿真測試時采用周期為10ns的時鐘,輸入數(shù)據(jù)按先后順序依次為-63、116、-124、85、-13、63、0,時序仿真波形如圖8-7所示。圖8-7卷積運算電路的10ns時鐘時序仿真波形

為了測試最小時鐘周期,將時鐘周期減小并仿真測試,可以找到一個出現(xiàn)錯誤的時鐘,這個時鐘可以近似為最小值。因為仿真不可能是全部數(shù)據(jù),所以仿真得到的最小值不一定是真正最小值,真正最小值應(yīng)不小于該值。通過內(nèi)部門電路的分析才能得到最大處理時長,也就決定了最小周期。采用周期為4.6ns的時鐘仿真時結(jié)果出錯,如圖8-8所示。

圖8-8卷積運算電路的4.6ns時鐘時序仿真波形

8.3.2流水結(jié)構(gòu)

如果數(shù)據(jù)更新周期小于處理時長,那么如何設(shè)計電路才能盡可能滿足需要?設(shè)計電路需要將運算分成兩步,每步的運算時長小于數(shù)據(jù)更新周期。具體做法是在中間運算中加上一級寄存器來鎖存中間結(jié)果,構(gòu)成兩級流水結(jié)構(gòu),從而使兩級鎖存之間的運算時長減小,如圖8-9所示。

圖8-9卷積運算的流水結(jié)構(gòu)電路

采用周期為4ns的時鐘進行仿真,其波形圖如810所示。圖8-10卷積運算的流水結(jié)構(gòu)的電路時序仿真波形

為了進一步提高運算速度,繼續(xù)增加中間鎖存,構(gòu)成四級流水結(jié)構(gòu),如圖8-11所示。圖8-11卷積運算的四級流水結(jié)構(gòu)電路

四級流水結(jié)構(gòu)可使時鐘周期降至2.2ns,其時序仿真如圖8-12所示。圖8-12卷積運算的四級流水結(jié)構(gòu)電路時序仿真波形

通過寄存器鎖存構(gòu)成多級運算結(jié)構(gòu)來提高處理速度,如圖8-13所示,這種電路結(jié)構(gòu)稱為流水線結(jié)構(gòu)。流水線分為4級,每級處理時長分別為τ1、τ2、τ3、τ4。更新周期要大于流水線各級處理時長的最大值,即max(τ1,τ2,τ3,τ4)。流水線中每級的處理時長都很短,從而整體處理速度加快。

圖8-13多級流水線示意結(jié)構(gòu)

8.3.3串行結(jié)構(gòu)

采用FPGA來實現(xiàn)并行結(jié)構(gòu)時,電路占用了大量的寄存器和邏輯單元。在處理速度需求較低時,并行結(jié)構(gòu)的優(yōu)勢沒有發(fā)揮出來,但占用大量邏輯資源的缺點使電路成本較高。為了使邏輯資源占用與處理速度相適配,盡可能使用存儲器并復(fù)用運算邏輯單元。

串行結(jié)構(gòu)中的數(shù)據(jù)保存在存儲器中。數(shù)據(jù)處理時從存儲器中讀取數(shù)據(jù),將計算結(jié)果保存至存儲器。結(jié)合存儲器的特點,采用不同方式進行讀寫,最為常用的方式是同步讀寫。

下面仍以卷積運算為例來探討串行結(jié)構(gòu)的設(shè)計。

每來一個數(shù)據(jù)需要先加權(quán)求和再移位存儲,移位存儲是為了下一個數(shù)據(jù)提供歷史數(shù)據(jù)。假定輸入數(shù)據(jù)信號為

X,以往的數(shù)據(jù)保存在RAM存儲單元XM[0]~XM[M-2]內(nèi)。若當前數(shù)據(jù)為xn,則存儲單元中的數(shù)據(jù)按地址從小到大依次為數(shù)據(jù)xn-1~xn-M+1。為了保證權(quán)值下標與數(shù)據(jù)一致,權(quán)值h1~hM-1依次保存在ROM存儲單元HM[0]~HM[M-2]中。

加權(quán)求和的計算表達式為

移位存儲的狀態(tài)方程為

實際存儲器的輸入DI和輸出DO是不同的,當采用讀優(yōu)先時,可以對同一地址AD實現(xiàn)同時讀寫。按照存儲器操作的形式來重寫表達式,即

加權(quán)求和流程和移位存儲流程分別如圖8-14(a)和圖8-14(b)所示。圖中i為循環(huán)控制量同時也作為地址偏移量。從流程中可以看出加權(quán)求和與移位存儲可以同時進行,兩者的流程可以合并成一個完整運算的流程,如圖8-14(c)所示。

圖8-14卷積運算的串行處理流程

整個運算的工作時序如圖8-15所示。圖8-15卷積運算的串行處理流程工作時序

其中:

串行結(jié)構(gòu)電路設(shè)計的重點是狀態(tài)設(shè)計和存儲與運算一體化設(shè)計。在涉及大量數(shù)據(jù)運算時,合理的結(jié)構(gòu)可以有效減少寄存器和邏輯運算器的使用,節(jié)約邏輯電路資源。

8.4狀態(tài)機

8.4.1有限狀態(tài)機有限狀態(tài)機(FSM)主要用于設(shè)計計算機程序和時序邏輯電路。它被設(shè)想為抽象機器,可以處于有限數(shù)量的用戶定義的狀態(tài)之一。機器一次只能處于一種狀態(tài),它在任何給定時間所處的狀態(tài)稱為當前狀態(tài)。當有觸發(fā)事件或條件滿足時,它可以從一種狀態(tài)改變?yōu)榱硪环N狀態(tài)(稱為轉(zhuǎn)移)。

某閘機如圖8-16所示,它由門禁閘機控制器(簡稱閘控器)、RFID識別器、閘門啟閉器、語音播放器、紅外線檢測器、指示燈顯控器構(gòu)成。

圖8-16門禁閘機的電路結(jié)構(gòu)

閘控器需要三種狀態(tài):禁行態(tài)、待入態(tài)和待出態(tài)??刂屏鞒滩捎脿顟B(tài)—觸發(fā)思路來描述,即在何種狀態(tài)下何種變化會導(dǎo)致何種操作。控制器加電后進入禁行態(tài)。在禁行態(tài)下,若信號C變?yōu)楦?,則進行通行控制操作,并進入待入態(tài);在待入態(tài)下,若N個時鐘周期內(nèi)沒人進入,則進行禁行控制操作并返回禁行態(tài);在待入態(tài)下,若有人進入,則轉(zhuǎn)入待出態(tài);在待出態(tài)下,若檢測沒人在通道,則進行禁行控制操作,并返回禁行態(tài)。

采用有限狀態(tài)機描述時,等待

N

個時鐘周期就意味需要N個不同的狀態(tài)。因此,待入狀態(tài)細分為待入1態(tài)、待入2態(tài)(已經(jīng)等待1個時鐘周期)、……、待入

N

態(tài)(已經(jīng)等待N-1個時鐘周期)。

對各狀態(tài)進行賦值,禁行態(tài)定為0,待入1態(tài)定為1,待入2態(tài)定為2,……,待入

N態(tài)定為N,待出態(tài)定為

N+1。

其狀態(tài)轉(zhuǎn)移如圖8-17所示。圖8-17閘控器電路的狀態(tài)轉(zhuǎn)移圖

功能仿真波形如圖8-18所示。圖8-18閘控器電路的功能仿真波形

8.4.2高級狀態(tài)機

在數(shù)字系統(tǒng)設(shè)計中,行為描述和系統(tǒng)實現(xiàn)是兩個關(guān)鍵步驟。可以通過高級狀態(tài)機來描述系統(tǒng)的行為,再使用標準處理器架構(gòu)來實現(xiàn)系統(tǒng)設(shè)計。

具體而言,設(shè)計的第一步是準確捕獲所需的系統(tǒng)行為,使用高級狀態(tài)機或其他形式的形式化描述來明確系統(tǒng)應(yīng)有的功能和操作。第二步是將這種行為轉(zhuǎn)換為具體的電路設(shè)計。以處理器架構(gòu)為基礎(chǔ),通常包括控制器和與之相連的數(shù)據(jù)通路。

例如,需要設(shè)計一個自動售貨機系統(tǒng),當投入足夠的錢后就可以得到商品。該數(shù)字系統(tǒng)如圖8-19所示,它由自動售貨機控制器(簡稱自動售貨機)、投幣識別器、分配貨物模塊、投幣面額檢測器、貨物售價輸入模塊組成。投幣識別器提供一個1位輸入C,當檢測到貨幣時,在一個時鐘周期內(nèi)C變?yōu)?;一個8位輸入A表示插入硬紙幣的面額,例如,1元(00000001)或10元(00001010)。另一個8位輸入S

表示貨物的售價,如12元(00001100),這可以由機器擁有者設(shè)置。

當處理器檢測到存入的貨幣總價值等于或超過一瓶汽水的售價時(例如,1+10+1≥12),處理器應(yīng)該在一個時鐘周期內(nèi)將一個輸出位

D

設(shè)置為1,從而分配一個貨物(這臺機器只提供一種類型的貨物,并且不找零)。假設(shè)值

A

在下一個貨幣存入之前保持不變,并且在連續(xù)存入貨幣之間可能有許多時鐘周期。

圖8-19自動售貨機的電路結(jié)構(gòu)

使用圖8-20的高級狀態(tài)機描述自動售貨機功能,擴展了狀態(tài)轉(zhuǎn)移圖,以描述更復(fù)雜的行為。高級狀態(tài)機與有限狀態(tài)機的主要區(qū)別有:

(1)狀態(tài)轉(zhuǎn)移的條件可以是復(fù)雜的描述,也就是說可以處理多位數(shù)據(jù)的輸入和輸出,而不僅僅是單個比特。

(2)狀態(tài)對應(yīng)的輸出結(jié)果也可以是復(fù)雜的功能,包括本地存儲以及算術(shù)運算,如加法和比較,而不僅僅是布爾運算。

圖8-20自動售貨機的高級狀態(tài)機

再使用處理器的構(gòu)架來實現(xiàn)系統(tǒng),將系統(tǒng)分為控制器和數(shù)據(jù)通路兩部分。數(shù)據(jù)路徑包含一個用于存儲總錢數(shù)tot的寄存器,一個加法器用于計算tot+A,以及一個比較器用于計算tot<S。自動售貨機的電路實現(xiàn)構(gòu)架如圖8-21所示。

圖8-21自動售貨機的電路實現(xiàn)構(gòu)架

控制器采用有限狀態(tài)機描述(如圖8-22所示),它通過設(shè)置數(shù)據(jù)路徑組件的控制輸入信號,例如,寄存器的加載控制輸入load來驅(qū)動整個系統(tǒng)的行為??刂破鬟€負責根據(jù)數(shù)據(jù)路徑組件的狀態(tài)或輸出,確定系統(tǒng)的下一個狀態(tài)。

圖8-22自動售貨機的狀態(tài)轉(zhuǎn)移圖

功能仿真波形如圖8-23所示。圖8-23自動售貨機的功能仿真波形

8.4.3規(guī)范說明與描述語言

有限狀態(tài)機主要用于描述狀態(tài)轉(zhuǎn)移,而轉(zhuǎn)移過程所要做的處理操作沒法呈現(xiàn)出來,下面引入一種可以將狀態(tài)轉(zhuǎn)移與轉(zhuǎn)移過程中所進行的處理流程融于一體的描述語言。

規(guī)范說明與描述語言是一種描述實時系統(tǒng)的建模語言,它既可以規(guī)范說明一個系統(tǒng)所應(yīng)具有的行為,也可以描述一個系統(tǒng)實際具有的行為。SDL廣泛應(yīng)用于自動汽車、航空、交通、醫(yī)療和電信領(lǐng)域。

進程是系統(tǒng)行為最基本的執(zhí)行實體,由用于執(zhí)行的代碼組成,主要描述處理步驟和具體操作。系統(tǒng)行為通過若干進程實例來描述,進程實例之間利用信號進行消息傳遞。

進程描述是基于擴展FSM的,其內(nèi)部含有私有存儲空間和消息隊列。私有存儲空間主要用來保存工作狀態(tài)和處理變量,而消息隊列則處于輸入端口來接收消息(相當于FSM的輸入),處理過程中也會產(chǎn)生消息傳至輸出端口(相當于FSM的輸出)。進程中的消息相當于FSM中的輸入/輸出,狀態(tài)決定進程在接收到特定消息時應(yīng)有哪種行為,轉(zhuǎn)移是兩狀態(tài)之間的執(zhí)行代碼。

進程通常用進程圖來定義和描述,進程圖的內(nèi)容主要是狀態(tài)機圖,常用符號如表8-1所示。

常規(guī)的連接規(guī)則如下:

(1)只有輸入、優(yōu)先輸入、連續(xù)信號才能使狀態(tài)發(fā)生轉(zhuǎn)移。

(2)狀態(tài)后面只能跟隨輸入、優(yōu)先輸入、連續(xù)信號和輸入保存。

(3)輸出只能發(fā)生在進程對輸入的響應(yīng)動作的執(zhí)行過程中,無入必無出。

常規(guī)的有限狀態(tài)機主要由狀態(tài)、輸入和輸出構(gòu)成,其主要作用是展示狀態(tài)轉(zhuǎn)移。SDL是擴展的有限狀態(tài)機,它不僅將狀態(tài)、輸入和輸出之間的關(guān)系展示出來,同時展示出具體的輸入響應(yīng)處理過程。

進程圖實質(zhì)是某狀態(tài)下輸入觸發(fā)的流程,圖8-24為某進程示意圖。

圖8-24某進程示意圖

以閘控器為例,根據(jù)其有限狀態(tài)機圖和工作流程可得如圖8-25所示的SDL進程圖。圖8-25閘控器的SDL進程圖

進程中的內(nèi)部計時操作可以有內(nèi)部專用定時器,它采用專用電路模塊實現(xiàn),其狀態(tài)轉(zhuǎn)移如圖8-26所示。其中,T

為啟動和關(guān)閉信號,TO為定時超時標志信號。M

為設(shè)定的延時值,M

為0表明關(guān)閉定時,M

為1表明后續(xù)時鐘超時處理,其他值表明

M

個時鐘后超時處理。

圖8-26進程內(nèi)部專用定時器的狀態(tài)圖

閘控器采用內(nèi)部定時器來實現(xiàn)等待進入的進程圖如圖8-27所示。圖8-27基于內(nèi)部定時器觸發(fā)的進程圖

8.4.4設(shè)計示例

SLIP(SerialLineIP)協(xié)議是一種串行線上對互聯(lián)網(wǎng)網(wǎng)絡(luò)數(shù)據(jù)報進行封裝的簡單組幀方式。協(xié)議采用字符END(0xC0)來表示一幀的開始和結(jié)束。為了防止數(shù)據(jù)中出現(xiàn)0xC0使收方錯誤地終止一幀的接收,因此需要采用轉(zhuǎn)義方式來表示END,即當數(shù)據(jù)中有END字符時采用ESC+0xDC兩個字符來替代。ESC作為轉(zhuǎn)義符,數(shù)據(jù)中本身所有的字符ESC也需要通過轉(zhuǎn)義來表示,即當數(shù)據(jù)報中有ESC字符時,需要用ESC+0xDD替代。

發(fā)方的發(fā)送操作流程如下:

(1)啟動發(fā)送,發(fā)送開始字符END。

(2)判定已發(fā)字符數(shù)是否小于N,否則轉(zhuǎn)向執(zhí)行(5)。

(3)從存儲器中取出當前待發(fā)字符,判定字符是否為END或ESC,若是則先輸出ESC再輸出0xDC或0xDD,否則直接輸出待發(fā)字符。

(4)已發(fā)字符數(shù)增1,轉(zhuǎn)向執(zhí)行(2)。

(5)發(fā)送結(jié)束字符END后結(jié)束發(fā)送。

其操作流程圖如圖8-28所示。

圖8-28SLIP協(xié)議發(fā)送操作流程

在發(fā)送操作電路中,字符輸出操作是由外部電路完成,外部控制電路通過“數(shù)據(jù)發(fā)送”事件信號DatTx啟動逐個字符發(fā)送存儲器數(shù)據(jù)的操作,全部數(shù)據(jù)發(fā)送完畢,產(chǎn)生“數(shù)據(jù)發(fā)送完成”事件信號DatTxEnd返給外部控制電路以告知數(shù)據(jù)發(fā)送完畢。

由于字符發(fā)送是由外部傳輸電路實現(xiàn),所以每次字符發(fā)送產(chǎn)生一個“字符發(fā)送”事件信號ChTx讓外部傳輸電路啟動給定字符的發(fā)送,外部傳輸電路發(fā)送完字符后產(chǎn)生“字符發(fā)完”事件信號ChTxEnd來告知發(fā)送操作電路。外部傳輸電路發(fā)送需要一定時長,因此,發(fā)送操作中存在一個等待操作,即等字符發(fā)完。

發(fā)送操作電路收到“字符發(fā)完”事件信號后才可以進行后續(xù)操作。后續(xù)工作有三種情況:

一種是剛發(fā)完正常字符,接著發(fā)送后一個字符;第二種是剛發(fā)完0xDB,接著發(fā)送0xDC或0xDD;第三種是剛發(fā)完結(jié)束字符,結(jié)束發(fā)送。因此發(fā)送完等待分為三種狀態(tài),即常規(guī)發(fā)送等待(TXW)、特殊發(fā)送等待(STXW)和結(jié)束發(fā)送等待(ETXW)。

下面進行發(fā)送操作電路的工作狀態(tài)分析。

(1)加電后,電路進入空閑狀態(tài)(IDLE)。

(2)電路被DatTx觸發(fā)后,先產(chǎn)生ChTx觸發(fā)外部傳輸電路進行字符0xC0發(fā)送,同時將發(fā)送字符序號置0,進入狀態(tài)TXW。

(3)在狀態(tài)TXW下,電路被ChTxEnd觸發(fā)后,若發(fā)送字符數(shù)達到規(guī)定數(shù)目N,則產(chǎn)生ChTx進行字符0xC0發(fā)送,并進入狀態(tài)ETXW;若待發(fā)字符是特殊字符,則將待發(fā)字符置為0xDC或0xDD,產(chǎn)生ChTx發(fā)送0xDB,進入狀態(tài)ETXW;若待發(fā)字符是正常字符,則產(chǎn)生ChTx發(fā)送待發(fā)字符,進入狀態(tài)TXW。

(4)在狀態(tài)STXW下,電路被ChTxEnd觸發(fā)后,發(fā)送待發(fā)字符,進入狀態(tài)TXW。

(5)在狀態(tài)ETXW下,電路被ChTxEnd觸發(fā)后,表明當前發(fā)送操作結(jié)束,產(chǎn)生DatTxEnd并進入狀態(tài)IDLE。

發(fā)送器有11個輸入/輸出,如圖8-29所示。

圖8-29SLIP協(xié)議發(fā)送器電路符號

在電路中實現(xiàn)信號觸發(fā)是通過判定信號電平是否發(fā)生改變來確定的,即產(chǎn)生信號時,將當前信號的輸出電平反轉(zhuǎn),在功能真值表中采用“?”表示。

在發(fā)送操作中,需要對發(fā)送數(shù)目進行計數(shù),所以需要寄存已經(jīng)發(fā)送的數(shù)目txi。

發(fā)送電路是一個有限狀態(tài)機,其狀態(tài)轉(zhuǎn)移如表8-2所示。

整個發(fā)送操作的SDL流程如圖8-30所示。圖8-30SLIP協(xié)議發(fā)送的SDL流程圖

產(chǎn)生事件信號采用電平翻轉(zhuǎn)電路,如圖8-31(a)所示,事件信號變化檢測采用當前時刻值與前一時刻值對比判定,可以采用鎖存和異或門組合電路完成,如圖8-31(b)所示。圖8-31事件信號產(chǎn)生與檢測電路

仿真波形如圖8-32所示。圖8-32SLIP協(xié)議發(fā)送電路的仿真波形

8.5模

聯(lián)

8.5.1互聯(lián)描述

SDL的組織有兩部分:系統(tǒng)與行為體。行為體是系統(tǒng)結(jié)構(gòu)的組成部分,有兩種類型:功能塊和進程。功能塊是結(jié)構(gòu)化組成部分,它主要用來模塊化功能行為,并不實現(xiàn)任何具體操作。一個功能塊可以進一步分解成許多功能塊,方便處理更大的系統(tǒng)。

因此,一個SDL圖有三部分:系統(tǒng)、功能塊和進程。系統(tǒng)定義了整個設(shè)計中所涉及的主要功能實體;功能塊展示了功能實現(xiàn)所需要的操作執(zhí)行實體及它們之間的關(guān)系;進程是最基本的執(zhí)行實體,它描述處理步驟和具體操作。

一個系統(tǒng)由若干功能塊組成,一個功能塊由若干功能相近的進程或功能塊組成,一個進程是一個有限狀態(tài)機。系統(tǒng)行為通過進程實例來描述,進程實例之間利用信號進行消息傳遞,即有限狀態(tài)機中的輸入/輸出。

SDL采用圖來說明建模過程。功能塊采用內(nèi)部有功能塊名稱的實線矩形來表示;進程采用實線圓角方框來表示,內(nèi)部有進程名稱和啟動時實例數(shù)目與最大數(shù)目,兩個數(shù)目在進程名稱后的括號內(nèi),省略則表示啟動時實例數(shù)目為1且最大數(shù)目無限。

整個系統(tǒng)的構(gòu)架可采用如圖8-33所示的樹狀層次關(guān)系描述,葉子是進程。

圖8-33系統(tǒng)架構(gòu)的樹狀層次關(guān)系描述

最為常用的是如圖8-34所示的包含關(guān)系描述。系統(tǒng)包含關(guān)系圖中列出了功能塊及它們之間的消息交互關(guān)系,而功能塊包含關(guān)系列出了進程或子功能塊及它們之間的消息交互關(guān)系。

圖8-34系統(tǒng)的包含關(guān)系描述

8.5.2服務(wù)原語

整個系統(tǒng)中的各進程是靠消息交互觸發(fā)處理操作的,模塊互聯(lián)設(shè)計的首要任務(wù)是規(guī)范消息設(shè)計。

在日常生活中,兩個實體之間的交互行為是非常普遍的。交互行為可視為服務(wù)活動,根據(jù)行為特征和發(fā)生場景可將兩個實體分為服務(wù)用戶和服務(wù)提供者。

以顧客去茶館喝茶時與服務(wù)員之間的服務(wù)活動對話為例,顧客就是服務(wù)用戶,服務(wù)員就是服務(wù)提供者。兩者之間的正常服務(wù)活動對話可以分為四種類型,如圖8-35所示。

圖8-35茶館的服務(wù)活動對話

在同一個系統(tǒng)中,模塊N作為服務(wù)提供者,模塊M為服務(wù)用戶,兩者之間交互的基本服務(wù)原語有四類:

(1)請求(Request,Req),即由服務(wù)用戶產(chǎn)生發(fā)向服務(wù)提供者,服務(wù)用戶讓服務(wù)提供者激活相應(yīng)的服務(wù)。

(2)確認(Confirm,Cfm),即由服務(wù)提供者產(chǎn)生發(fā)向服務(wù)用戶,服務(wù)提供者向服務(wù)用戶傳送前面服務(wù)請求的服務(wù)結(jié)果。

(3)指示(Indication,Ind),即由服務(wù)提供者產(chǎn)生發(fā)向服務(wù)用戶,服務(wù)提供者向服務(wù)用戶指示它內(nèi)部發(fā)生了對服務(wù)用戶非常重要的事件,使服務(wù)用戶激活相應(yīng)的處理。

(4)響應(yīng)(Response,Rsp),即由服務(wù)用戶產(chǎn)生發(fā)向服務(wù)提供者,服務(wù)用戶向服務(wù)提供者告知前面指示所激活的處理結(jié)束。

通常“請求”與“確認”為一對,“指示”與“響應(yīng)”為一對,沒有“請求”就不會單獨產(chǎn)生“確認”,沒有“指示”也不會單獨產(chǎn)生“響應(yīng)”。如果服務(wù)提供者接收“請求”并立即執(zhí)行且不影響下一次“請求”的接收,同時服務(wù)用戶認為服務(wù)提供者完全可以在下一次“請求”產(chǎn)生之前完成服務(wù),那么服務(wù)提供者可以不用產(chǎn)生“確認”,服務(wù)用戶也不用等待“確認”。

原語通常針對某一行為來描述。圖8-36是對茶館服務(wù)采用原語進行規(guī)范描述。在D型服務(wù)中,服務(wù)員給用戶提供的行為是上茶,是服務(wù)員接收“點茶請求”后自己發(fā)起的行為,而不是對顧客點茶行為的確認,故采用“指示”原語。從功能上看,這個行為是服務(wù)員對顧客點茶行為的確認。因此,原語的設(shè)計優(yōu)先針對行為,這樣條理清晰,不容易產(chǎn)生理解偏差。

圖8-36茶館服務(wù)的原語描述

8.5.3設(shè)計示例

一個數(shù)字系統(tǒng)設(shè)計要從整體開始,步步細化,最后到執(zhí)行細節(jié)(進程)。

通信系統(tǒng)

溫馨提示

  • 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

提交評論