Asynchronous Sequential Logic 9

41  Download (0)

Full text

(1)

9 章 非同步序向式邏輯

Asynchronous Sequential Logic

內容

9-1 簡介

9-2 分析步驟

9-3 具有latch的電路

9-4 設計的步驟

9-5 狀態和流程表的簡化

9-6 沒有競跑的狀態設定

9-7 雜訊

9-8 設計範例

習題

(2)

2

9-1 簡介

序向式電路是由輸入、輸出和內部狀態等一 連串的時間序列所定義。

– 同步的序向式電路中,內部狀態的變化對應到同 步的時間脈波。

– 非同步的序向式電路不使用時脈,內部狀態的變 化則發生在輸入變數改變時。

非同步序向式電路通常由組合式電路加上回 授所組成。

9-1

非同步序向式電路的方塊圖

(3)

9-1 簡介

非同步序向式電路中的目前狀態和次一狀態 變數習慣上分別稱為二次變數(secondary variables)和激勵變數(excitation variables)

基本模式(fundamental mode)的操作假設電 路在穩態時一次只有一個輸入信號改變。

– 為了確保正確的動作,非同步序向式電路必須在 輸入變成另外一個新的值之前達到穩態。因為連 線和邏輯閘電路的延遲,令兩個以上的輸入變數 準確地在同一時刻改變,不能有不知道哪一個先 後的不確定性

9-2 分析步驟

非同步序向式電路的分析包括獲得描述內部 狀態序列的表或圖,以及用輸入變數變化表 示的輸出函數。

在本章節中,觀察具有回授路徑但是沒有正 反器的非同步序向式電路的行為。沒有時脈 的正反器稱為鎖閂(latch)

電路分析的開始將激勵變數當成輸出並將二 次變數當成輸入,然後導出以輸入和二次變 數為函數的激勵變數之布氏代數式。

(4)

4

9-2

非同步序向式電路的範例

圖中清楚地看到兩條從OR閘輸出回到AND閘輸 入的回授迴圈。此電路包括一個輸入變數x和兩 個內部狀態。內部狀態有兩個激勵變數Y1和Y2 以及兩個二次變數y1和y2

9-3

9-2

電路的卡諾圖和轉換表

(5)

轉換表

有時為了方便將內部狀態和輸入值結合 在一起,稱之為電路的全狀態(total state)。

– 圖9-3(c)的電路具有四個穩定的全狀態—

y1y2x = 000,011,110和101—以及四個不穩定 的全狀態—001,010,111和100。

9-2 分析步驟

從非同步序向式電路得到轉換表的步驟如下:

– 1. 求出電路中所有的回授迴圈,

– 2. 每個回授路徑的輸出標示變數Yi,對應的輸入標 示成yi,其中i = 1,2,…,k,在此k為電路中回授迴圈 的編號,

– 3. 導出所有Y的布式函數,Y為外界輸入和y的函 數,

– 4. 用y變數為列、外界輸入為行,在卡諾圖上畫出 Y函數,

– 5. 將所有的圖結合成一個表,在每個方格中顯示Y

= Y1Y2…Yk的值,

(6)

6

流程表

在非同步序向式電路的設計中,狀態直接用 文字符號命名比較方便,不需要參照它們的 二進位值,這種表格稱為流程表。

因為每一列中只有一個穩定狀態,圖9-4(a)的 表被稱為原始流程表(primitive flow table)。

每個狀態必須設定一個獨特的二進位值。這 樣的設定將流程表轉變成轉換表

9-4

流程表的範例

(7)

9-5 9-4(b)流程表定義之電路的推導過程

競跑現象

當兩個或兩個以上的二進位狀態變數因為輸 入變數的變化而改變其值時,非同步序向式 電路中會存在競跑現象。

如果電路最後的穩定狀態和狀態變數改變的 次序無關,這樣的競跑現象稱為沒有危機的 競跑(noncritical race)。

如果電路依照狀態改變的順序有可能終止在 兩個或兩個以上的穩態,此種稱為危機的競 跑(critical race)。

正確的操作之下,應當避免危機的競跑現

(8)

8

9-6

沒有危機競跑的範例

9-7

危機的競跑範例

(9)

循環

適當地設定狀態變數的二進位值可以避 免競跑現象。

導引電路經過中繼的擁有獨一無二之狀 態變數變化的非穩態也可以避免競跑現 象。當電路經過一串獨一無二之非穩態 序列時,稱之為循環(cycle)。

9-8

循環的範例

(10)

10

穩定性考量

因為非同步序向式電路中存在回授連 結,必須小心確保電路不會變成不穩 定,不穩定的情形會讓電路在非穩態之 間震盪。轉換表的分析方法可以有效地 偵測不穩定情形的發生。

9-9

不穩定電路的範例

(11)

9-3 具有 latch 的電路

本章節中,要運用前一章節介紹的技巧 分析SR閂的動作,然後將展示利用SR閂 實現非同步序向式電路的步驟。

SR閂是具有兩個輸入S和R以及兩個交互 耦合的NOR邏輯閘或兩個交互耦合的 NAND邏輯閘形成的數位電路。

9-10 NOR

邏輯閘的

SR

(12)

12

9-11

具有

NAND

閘的

SR

9-12

具有

SR

閂的電路範例

(13)

9-13

9-12

電路的轉換表

具有

SR

閂的非同步序向式電路的分析步驟

分析具有SR閂的非同步序向式電路的步驟總結如下:

– 1. 每個閂的輸出標示為Yi,如果有外部回授路徑則標示為 yi,其中i = 1, 2, …, k。

– 2. 導出每個閂的輸入Si和Ri的布氏函數。

– 3. 檢查每個NOR閂是否SR = 0,或者每個NAND閂是否 = 0。

如果此一條件無法滿足,則電路有可能無法正常操作。

– 4. 計算出每個NOR閂的,或是每個NAND閂的。

– 5. 建立一個以y為列且以x輸入為行的圖。

– 6. 在圖上畫出Y = Y1Y2‥Yk的值。

– 7. 在Y = y的地方圈出所有的穩定狀態,所得的圖就是轉換 表。

(14)

14

閂的激勵表

在分析和定義閂的動作時,SR閂的轉換 表非常有用。在二次變數y和輸入S與R 已知的時候,它指明激勵變數Y。在實 現的過程中,會用到電路的轉換表以求 出S和R的值。基於此原因,對於從y到Y 的每一種可能的轉換,我們需要一個表 列出所要的輸入S和R,這種表就稱為激 勵表。

9-14

從轉換表導出具有閂的電路

(15)

閂的實現法

從一個已知的轉換表實現一個具有SR閂的電 路的一般步驟可以總結如下:

– 1. 已知一個定義出激勵函數Y = Y1Y2‥Yk的轉換 表,導出一對對Si和Ri的圖,其中i = 1, 2, …, k。利 用圖9-14(b)閂的激勵表指定的條件可以完成。

– 2. 導出每個Si和Ri簡化的布氏函數,必須注意在相 同的全及項格子裡,不能讓Si和Ri等於1。

– 3. 利用k個閂以及產生S和R布氏函數所需的邏輯閘 畫出邏輯圖。對NOR閂而言,利用步驟2得到的S 和R布氏函數;對NAND閂而言,利用步驟2得到 函數的補數值。

9-15

消除彈跳的電路

消除彈跳的電路用來去除因接觸彈跳而產生的一 連串脈波,同時產生從0到1或從1到0單一平滑的

(16)

16

9-4 設計的步驟

非同步序向式電路的設計步驟如下:由 設計的規格得到原始的流程表,將流程 表簡化至最少的狀態,然後設定狀態的 二進位值以得到轉換表。從轉換表導出 一個具有回授的組合式電路或者一個具 有SR閂的電路邏輯圖。

設計範例

想要設計一個具有兩個輸入G(gate閘控)和 D(data資料)以及一個輸出Q的閘控閂電 路。當G等於1時,在輸入D出現的二進位資料 會轉移至輸出Q,只要G = 1,Q的輸出跟隨著 D的輸入。當G變成0,在轉換的那一刻輸入D 出現的資料會維持在輸出Q。閘控的閂是一種 記憶元件,當G = 1時,接受D的值,且在G變 成0之後維持此值。一旦G = 0,改變D並無法 改變輸出Q的值。

(17)

9-16

原始流程表

9-17

原始流程表的簡化

(18)

18

9-18

閘控閂的轉換表和輸出圖

9-19

閘控閂的邏輯圖

(19)

9-19

具有

SR

閂的電路

9-21

設定輸出值給不穩態

(20)

20

設計步驟總結

1. 由已知的設計規格求得原始流程表。這是設計中最艱 難的部分,因為需要運用慣例和經驗才能正確的解譯 問題的規格。

2. 合併原始流程表中的列數以簡化流程表。9-5節已說明 合併流程表列數正式的步驟。

3. 簡化流程表中每一列設定二進位的狀態變數以得到轉 換表。9-6節已說明免除任何危機競跑可能性的狀態 設定步驟。

4. 設定不穩態橫線的輸出值以求得輸出圖。這個步驟已 在前面解釋過。

5. 簡化激勵變數和輸出變數的布氏函數,同時畫出9-2 節所示的邏輯圖。可以利用9-3節中以及9-7節末所示 的SR閂畫出邏輯圖。

9-5 狀態和流程表的簡化

5-6節中已說明一個完全定義的狀態表之狀態 簡化的演算法則,我們將複習這個演算法並 且運用在隱含表的狀態簡化方法。

完全定義狀態表的狀態簡化步驟是基於狀態 表中兩個狀態如果全等可以合併成一個狀態 的演算法。

如果對任一可能的輸入,兩個狀態正好輸出 相同且變成相同的次一狀態或是全等的次一 狀態,則這兩個狀態是全等的。

(21)

9-4

要簡化的狀態表

目前 次一狀態 輸出

狀態 x=0 x=0 x=0 x=0

a d b 0 0

b e a 0 0

c g f 0 1

d a d 1 0

e a d 1 0

f c b 0 0

g a e 1 0

9-22

隱含表

(22)

22

9-5

簡化後的狀態表

次一狀態 輸出

x=0 x=0 x=0 x=0

a d a 0 0

c d f 0 1

d a d 1 0

f c a 0 0

流程表的合併

為了求得合適的相容群組以合併流程表 之程序可以分成三個步驟:

– 1. 利用隱含表求出所有相容的狀態對 – 2. 利用合併表找出最大的相容對

– 3. 求出包含所有狀態之相容對的最小集合

然後利用相容對的最小集合來合併流程 表的列數。

(23)

9-23

流程表和隱含表

9-24

合併圖

(24)

24

9-25

選擇一個相容對的集合

9-6 沒有競跑的狀態設定

一旦導出非同步序向式電路的簡化流程表,

設計工作的下一個步驟是設定二進位變數給 每個穩態。這樣的設定結果將流程表轉變成 對等的轉換表。選擇適當的二進位狀態設定 最主要的目的是要避免危機競跑。

當流程表中有狀態轉換發生時,任一時刻只 有一個變數改變的二進位狀態設定可以避免 危機競跑。要完成這項工作,必須讓兩者之 間有轉換發生的狀態是相鄰的設定。如果兩 個二進位值只相差一個變數,則稱之為相鄰 的。

(25)

9-26

三列的流程表範例

9-27

有額外列的流程表

(26)

26

9-28

轉換表

9-29

四列的流程表範例

(27)

9-30

選擇流程表的額外列

9-31

修正後的流程表之狀態設定

(28)

28

9-32

複數列設定法

9-7 雜訊

有一種稱為雜訊(hazard)的現象會讓電路誤 動作。因為不同的路徑有不同的傳播延遲,

雜訊是不想要的切換暫態,會出現在電路的 輸出端。雜訊也出現在組合式電路中,他們 會導致暫時錯誤的輸出值。當這種情形出現 在非同步序向式電路時,會導致轉換到錯誤 的穩態。因此需要檢驗可能的雜訊,並且求 出他們是否會造成錯誤的動作。然後採取必 要的步驟刪除這些影響。

(29)

9-33

具有雜訊的電路

第一種情形稱為靜態1雜訊(static1-hazard),第二 種情形稱為靜態0雜訊(static 0-hazard)。第三種雜 訊稱為動態雜訊(dynamic hazard)

9-34

雜訊的形式

(30)

30

9-35

展示雜訊和如何移除的圖形

9-36

沒有雜訊的電路

(31)

9-37

非同步序向式電路中的雜訊

9-38

閂的實現方法

(32)

32

9-8 設計範例

現在要檢驗非同步序向式電路完整的設計範 例,這個範例可以當成其他類似電路設計時 的參考。我們將遵循列在9-4節最後的步驟展 示設計的方法,複述如下:

1. 描述設計的規格

2. 導出原始流程表

3. 合併列數以簡化流程表

4. 完成沒有競跑的二進位狀態設定

5. 求得轉換表和輸出圖

6. 運用SR閂求得邏輯圖

設計規格

想要設計一個負緣觸發的T型正反器。

此電路有兩個輸入,T(切換toggle)和 C(時脈clock),以及一個輸出Q。如 果T=1且時脈C從1變成0(負緣觸發),

則輸出狀態取補數。除此之外,在任何 其他的輸入情況,輸出維持不變。雖然 此電路可以在時脈式序向電路中當成正 反器,但是此正反器(其他所有的正反 器亦然)的內部設計是非同步的問題。

(33)

9-39

原始流程表

9-40

隱含表

(34)

34

9-41

合併圖

9-42

簡化後的流程表

(35)

9-43

轉換圖

9-44

轉換表和輸出圖

(36)

36

9-45

閂的輸入圖

9-46

負緣觸發

T

正反器的邏輯圖

(37)

習題圖 P9-2

習題圖 P9-5

(38)

38

習題圖 P9-6

習題圖 P9-9

(39)

習題圖 P9-14

習題圖 P9-15

(40)

40

習題圖 P9-18

習題圖 P9-19

(41)

習題圖 P9-20

習題圖 P9-21

Figure

Updating...

References

Related subjects :