2.4 同步時序迴路 與 異步時序迴路

好了,來看上一次的答案分析:061211888.png。首先人爲地設置初始狀態。這裏假設x=0,y=1,z=0。當時間0的時候X拉高,經過一個Inverter的延遲(1s)把變化傳播給Y同時自己,Y在1s的時候拉高,同理Z在2秒的時候拉高。此時Z而Z的輸出則在3s的時候爲低電平。看電路就會發現Z和X是連在一起的。。也就是形成了一個 循環迴路(Cyclic path)這樣導致在3s的時候X自然被拉低,繼而影響Y,Z,如此循環往復。。。。這就是一個 週期爲6的 環振盪器(ring oscillator)。我們雖然理論上可以用它來做時序計數器,但是注意這裏的週期我們不能精確控制,因爲是由每一個MOS內稟延遲決定的(。。。用了個高端的詞彙,就是內在特有)。

這樣邏輯電路里有循環路徑的一定會發生我們控制不了的時間因素,更重要的是,大多數這種迴路一定都會存在 競爭(race)。大家在前幾章做的那個關於Race的時序分析感覺很費勁吧--是的大規模的邏輯迴路根本無法進行調整--即使是100塊一樣的Dlacth你怎麼能保證每一個MOS的延遲相同。(雖然這種電路的時序分析很費勁,但是初學者往往就會那麼設計,所以最後要給大家留習題哦~~)。我們怎麼解決它呢?當然想到的是用額外的外部時鐘統一對電路發號施令,這樣可想而知,雖然人爲地外部控制一定會導致邏輯迴路的運行速度減慢,而帶給我們的是可控性!我們把不能控制的變爲能控制的了,所以無論如何這個Trade off 是值得的。

那麼我們怎麼設計實現這個想法?大家也可以試着想一想。多了時序,我們的邏輯迴路迴路到底多了什麼?這裏給出一個普遍的答案:狀態(State)。也就是說每一個時刻,整個系統可以被看作爲一個狀態的集合{S0,S1,S2,。。。。}。這樣就可以說在T1時刻我們的某個系統處於S2狀態,而又例如我們的系統現在處於S2狀態在下一個上升沿的時候會改變到下一個狀態--S3狀態。那麼這個可以把當前狀態“刷新”成 新的狀態 應該用什麼呢?當然是我們的寄存器咯。也就是D FlipFlop。 給個示意圖:132737641.png。這樣 同步時序邏輯迴路 就可以被定義爲:

1.整個迴路中必須有一個寄存器存在

2.所有寄存器接受相同的時序

3.每個循環迴路上必須存在一個寄存器

4.迴路只由寄存器和組合迴路構成

--話說定義有什麼用?還記得之前講的組合邏輯迴路的定義麼?如果在一個很大的系統裏面,你只要依照這些特徵去分析,馬上就能知道那一塊東西是幹什麼用的。這裏與其說是定義,不如說是特徵。

而異步時序迴路顧名思義寄存器可以接受不同的時序--當然生活中比同步時序更常用到,而設計起來更復雜。所以這個要在這個系列的高級篇降到。目前大家只要考慮 SYNCHRONOUS SEQUENTIAL CIRCUITS就好咯。

那麼下面就是承諾給大家的習題還有一個簡單的附加題~:

1.分析下面的邏輯迴路的作用,畫出時序圖(提示:分析對了的話會發現Race Condition 的哦)。

135042435.png


2.猜猜看,把下面的所有是 Sequential Circuit 的挑出來:

135157814.png


好了,下一次我們進入初學者的地獄--FSM(有限狀態機)初步。爲什麼叫地獄呢?因爲大多數搞單片機,FPGA的菜鳥們都對這個不能靈活應用,綜合性比較強(組合迴路+寄存器+時序分析),而實際應用中基本都是狀態機--所以是基礎中的基礎,重點中的重點。一定要牢固掌握這節以前的所有知識否則後果自負~~(其實就是會導致自己失去信心),這樣我才能幫助大家通過地獄~。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章