你的位置:首頁 > 電路保護 > 正文

絕對干貨:防毛刺的時鐘切換電路設(shè)計思路

發(fā)布時間:2015-01-16 責(zé)任編輯:sherryyu

【導(dǎo)讀】如果將如何設(shè)計防止毛刺發(fā)生的時鐘切換電路及危害告訴大家,大家知道后直接用這個電路就好了,但是如果你忘記了或者沒見過這個電路是不是就無從下手了!所謂知其然也要知其所以然,只有知道了防毛刺的時鐘切換電路設(shè)計思路才能夠融會貫通!
 
這里從一個角度,通過電路設(shè)計技巧來闡述防毛刺時鐘切換電路的設(shè)計思路。希望看過之后,不用參考文章就能夠自己設(shè)計出這個電路。
 
對于一個時鐘切換電路,輸入兩個異步時鐘clk0、clk1,以及一個選擇信號sel。
 
(1) 假設(shè)不考慮glitch,直接使用Mux就可以完成切頻。電路如下:
電路
由于clk0/clk1/sel之間是異步關(guān)系,時鐘切換會發(fā)生在任意時刻,有一定的概率會發(fā)生glitch. glitch的危害文章里已經(jīng)詳述,這里不再重復(fù)。
 
(2) 由于sel和clk0和clk1都是不同步的,我們可以從sel同步的方向入手,假如sel需要和clk0和clk1進行同步,那么sel必須分成兩路,一個和clk0同步,一個和clk1同步,同步之后的sel訊號再和clk0/clk1 gating起來,就可以讓問題簡單化。為了將sel分成兩路,并且clk0/clk1需要分別gating, 那么可以將mux邏輯用and/or設(shè)計出來,如下:
電路
當(dāng)然此Mux電路還可以用兩個or加上一個and來實現(xiàn),都可以。 注意G0和G1兩點就是分別對clk0和clk1進行g(shù)ating. 將來會在G0/G1點插入同步DFF.
 
(3) 將上面電路拆開成兩部分,一部分電路通過sel產(chǎn)生sel+和sel-兩路,另一部分電路是gating mux電路, 如下:
 
對于一個時鐘切換電路,輸入兩個異步時鐘clk0、clk1,以及一個選擇信號sel。
 
(1) 假設(shè)不考慮glitch,直接使用Mux就可以完成切頻。電路如下:
電路
只需要將sel-接上G0, sel+接上G1就是一個mux電路。將電路分開,是為了后續(xù)技巧性的功能替換。
 
[page]

(4) 將part0電路換成同樣功能的帶反饋的組合電路(為何要這樣做,屬于電路設(shè)計直覺和技巧)。最常見帶反饋的電路是RS觸發(fā)器,因此可以將part0換成如下電路。
part0換成如下電路
(5) 將part0_a或者part0_b替換part0電路,功能不變。如下:
(5) 將part0_a或者part0_b替換part0電路
不過,此時插入同步DFF的地方就多了一個選擇, 如果直接在G0, G1插入同步DFF, clk0和clk1的gating時間先后順序不確定,還是有可能發(fā)生毛刺。而在s0和s1處插入同步DFF, 正好利用反饋,讓時鐘切換按照安全的順序進行:
 
(1) 先gating住之前選擇的時鐘
 
(2) 然后再放開將要選擇的時鐘
 
在(1)和(2)之間, 輸出時鐘一直都是無效狀態(tài)(對于2and + 1or的mux來說,無效狀態(tài)就是0)
[page]

(6) 按照上面的分析,得到電路如下:
電路
注意幾點:

(1) 對s0插入的DFF需要用clk0作為時鐘, 對于s1插入的DFF需要用clk1作為時鐘。
                     
(2) 后一級的DFF必須使用clock下降沿,因為是用AND門進行g(shù)ating(如果用上升沿,則更容易出現(xiàn)毛刺)。如果換成2個OR+1個AND的MUX, 則必須用上升沿。
                    
(3) 必須插入兩級DFF防止metal stable, 前一級可以用上升沿,也可以用下降沿,用上升沿是為了節(jié)省時間。
                    
(4) 所有的DFF 復(fù)位值都是0,即讓clk_out處于無效狀態(tài)。
                    
(5) 必須滿足先gating后放開的順序,如果不滿足,可以在G0/G1處各插入一個反相器。(用part0_b搭配part1的時候需要插入反相器,如下圖)
反相器
(6)搭配不同的part0電路和part1電路,經(jīng)過稍許修改,都可以完成防毛刺切頻電路的設(shè)計。
要采購觸發(fā)器么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉