時(shí)鐘切換電路及其注意事項(xiàng)
時(shí)鐘同步問題講完了,下面就開始講講soc中另一種常見的情況,有時(shí)為了考慮到功耗,性能的問題,某個(gè)模塊可能在某一種情況下工作在一個(gè)頻率,另一種情況下工作在另一種頻率,這個(gè)時(shí)候就需要進(jìn)行mux的切換,有的人就會(huì)說了,哪簡(jiǎn)單啊,加個(gè)mux啊,可事實(shí)真的如此嗎?
如上圖,大家會(huì)很自然而想到的一種時(shí)鐘切換電路,可是,你仔細(xì)分析,你會(huì)發(fā)現(xiàn)該電路會(huì)出現(xiàn)如下的問題,毛刺!這個(gè)毛刺無論對(duì)于clk0還是clk1都不是好事,它不屬于任何一個(gè)時(shí)鐘域,它的脈寬根本無法確定,你切換的點(diǎn)會(huì)影響毛刺的寬度。
那么該如何消除毛刺,進(jìn)而消除后面可能帶來的問題呢,見下圖,加入反饋電路。
反饋是為了確保時(shí)鐘真正被關(guān)閉了,例如,select從0切換到1,也就是選擇clk1,但是這時(shí)要確保clk0被完全關(guān)閉了,所以通過clk0時(shí)鐘域的DFF反饋回來的1(如果能反饋1說明0已經(jīng)進(jìn)入到clk0時(shí)鐘域的DFF中了)與clk1時(shí)鐘域的select進(jìn)行相與。
另外,為了解決跨時(shí)鐘域的問題(select畢竟是不同于clk0,clk1時(shí)鐘域的),通常還會(huì)加入1-2級(jí)的DFF。
另外,這幾個(gè)電路使用時(shí)需要注意一點(diǎn)的是兩個(gè)clk都必須要震蕩起來后才可以進(jìn)行select,否則進(jìn)行切換可能導(dǎo)致select不能被正確的傳送到最后一級(jí)的與門上,這樣消除毛刺的功能可能就無效。