0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數字電路之時鐘切換電路解析

星星科技指導員 ? 來源:blog.eetop ? 作者:jake ? 2024-02-18 18:22 ? 次閱讀

剛入行時最早看到的時鐘切換電路出自下面這篇文獻,第20頁,Trouble-Free Switching Between Clocks。 這篇極短的小文章可能是 Xilinx 元老 Peter Alfke 寫的。 Peter 是我非常敬重的前輩,讀過幾篇他寫的數字電路小文章,非常實用,受益匪淺。

這個電路雖然概念上是對的,但有明顯瑕疵。如果Select相對于Clock A, Clock B是完全異步asynchronous,電路中的兩個flip flop在Select變化時會有亞穩(wěn)態(tài)metastability的可能性。克服這個瑕疵的fix很簡單,把圖中的單個flip flop換成兩級flip flop組成的同步器synchronizer就可以了。

1612048761819076.png

Xilinx這個電路的基本思想是SR latch。去掉圖中兩個flip flop,最前端的兩個AND組成一個類似SR latch的電路,只不過SR Latch的S,R輸入換成了Select和Select inverted。為了使SR Latch的輸出能與所需控制的時鐘同步,加上了一級flip flop同步一下。當然,兩級flip flop同步會更好。Xilinx這個電路里有一個非常重要的小細節(jié),牽涉到時鐘切換的一條重要原則---先關斷當前選擇的時鐘,再使能新選擇的時鐘。QB反饋到Clock A那邊經過一個反向再和Select反向AND,QA反饋到Clock B那邊經過一個反向再和Select AND,保證了先關斷再使能這個重要原則。

Xilinx這個電路里還有個非常重要的小細節(jié),也是該電路的精妙之處。這兩個flip flop的時鐘輸入端有個小泡泡,意思是時鐘下降沿觸發(fā)。這是一個重要的設計思想。如果要gate off掉一個時鐘,在該時鐘低電平時gate off是最安全的。如果是在高電平時做切換,很容易造成高電平被切掉一段變成一個毛刺,這可是大大的危害。搞笑的是網上隨便搜一下“glitchless clock switching”,會出來一大堆文章,雖然都是基于Xilinx這個電路,但大部分漏掉了低電平觸發(fā)這個細節(jié)。沒有完全理解就胡亂抄胡亂吹牛,比較符合南亞某大國的國民性格。嘴上吹得天花亂墜,做事毛毛躁躁。做出來的電路有時工作有時不工作。玩具上用用倒也沒大問題。這種態(tài)度用到飛機上就是737 MAX。

下面是改進的電路,一級flip flop換成了兩級flip flop同步而已。

1627442549233196.png

電路啟動波形

1627442697811384.png

切換波形– fast to slow

1627442743268144.png

切換波形– slow to fast

1627442779566240.png

這個改進電路依然有一些可以變化的地方。譬如電路中的AND換成ICG貌似更好一些,對后端的工具更友好一些,實際上ICG在初始狀態(tài)有一個額外要求,不見得是好的選擇,見補充2。

以上是一個比較經典的時鐘切換電路。根據實際使用場景的不同,時鐘切換有很多不同的實現方法,都可以做得非常經典。時鐘,復位,是數字設計里最最基本的電路,稍有不慎,就會毀了整個設計,一定要謹慎再謹慎。

順便講一下,在芯片設計里,這種特殊電路都應該是例化instantiate的。例化的好處是便于在后端流程里找到這些門。例如,這里的AND可以用一個bbox_and模塊。bbox_and里例化instantiate庫里的CKAND2門。時鐘切換電路里例化bbox_and模塊,給個u_bbox_and_1 這樣的instance name。在后端設計里,就可以很方便找到u_clkgen/u_bbox_and_1/bbox_and_0,加約束就會很方便。使用bbox模塊也是數字設計中一個重要技巧,以后有時間再討論了。

小結一下。

1)時鐘切換的重要原則---先關斷當前選擇的時鐘,再使能新選擇的時鐘。

2)當前時鐘低電平時切換是比較安全的做法。

補充一下。 上面的電路只是概念上的示意圖。 實際設計中要考慮 DFT, 要加 DFT clock mux, DFT reset mux,會復雜一些。

補充2

前面講了可以考慮把AND換成ICG。一位網友指出,換成ICG后如果時鐘的初始值時高電平,電路可能會出問題。首先感謝這位網友,謝謝指出這個與ICG特性有關的重要問題。

下面是改用ICG后的時鐘切換電路。

1627442881442640.png

下面是在clk1, clk2初始值都為高的場景下該電路啟動時的仿真波形。在這個特殊場景下,由于clk1, clk2初始為高,使得對應的ICG輸出clk_slow_gated, clk_fast_gated初始值為X,造成切換電路輸出在初始時也為X!造成這個現象的是ICG的一個重要“缺陷”–未被初始化uninitialized ICG。

1627443039912089.png

解釋這個現象,首先要先看一下這個電路里用到的ICG的內部構造。這里SE(scan mode ICG enable),E(functional mode ICG enable)是latch的數據輸入。Latch的gate信號為CK的反向。

CK為0時latch打開,(E | SE)通過latch,ICG的輸出=(E|SE)& CK。因為此時CK為0,ICG的輸出也為0。

CK為1時latch關閉并保持以前的狀態(tài)(latch_old_state)。假設CK變?yōu)?前E=1,latch_old_state =1,ICG的輸出=latch_old_state & CK= CK;假設CK變?yōu)?前E=0,latch_old_state =0,ICG的輸出=0 & CK= 0。

1627442940754073.png

如果初始時CLK為1,ICG內部的latch是關閉的,E無法通過,而且因為之前l(fā)atch從來沒有打開過,沒鎖存過任何確定的值,latch_old_state不確定(仿真中顯示為X)。在這個場景下ICG輸出= latch_old_state & CK= X& CK= X,即ICG輸出為X。下面就是這個場景的波形。

如果初始時CLK為0,ICG內部的latch是打開的,ICG的輸出為(E & CLK) = 0,ICG輸出為確定值,ICG被成功初始化。下面是這個場景下的仿真波形。

1627443088630020.png

綜上所述,為了避免上述ICG未初始化引起的問題,使用ICG搭時鐘切換電路時,系統(tǒng)設計中要考慮加一個時鐘初始為0的要求。

補充3

基于補充2的電路,還有一種變化,就是把falling edge DFF換成rising edge DFF。這時要特別小心兩個時鐘周期相差很大的情況。例如一路時鐘為clk_slow (slow clock),另一路為clk_fast (fast clock),選擇信號sel由0變1 (clk_slow to clk_fast switch)。當clk_slow上升沿到來,當clk_slow這一路第二級DFF的輸出(sel_sync_slow)變?yōu)?時,并不意味著clk_slow對應的ICG輸出立刻變0,而是要等到clk_slow下降沿到來。也就是說此時clk_sw的輸出仍舊clk_slow的高電平。這時如果clk_slow第二級DFF輸出(sel_sync_slow)被直接送到clk_fast的選擇輸入邏輯,如果clk_fast非???,就會出現clk_slow ICG尚未關斷,clk_fast ICG已經打開,造成切換后的輸出clk_sw出現毛刺。

1627443160614779.png

為了避免這樣的情況,必須引入第三級DFF。ICG E仍舊用第二級DFF輸出,第三級DFF輸出送到另一路選擇邏輯。整體來看這樣的電路有點浪費資源。

補充4

上面幾種電路都只能在時鐘正常跑起來的情況下完成切換。如果當前選中的時鐘停了,選擇信號無法通過由當前時鐘驅動的兩級DFF,也就無法實現切換了。

時鐘停止屬于系統(tǒng)級錯誤,需要在系統(tǒng)設計找到解決方案,這里就不贅述了。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • Xilinx
    +關注

    關注

    71

    文章

    2155

    瀏覽量

    120854
  • 數字電路
    +關注

    關注

    193

    文章

    1595

    瀏覽量

    80379
  • 時鐘電路
    +關注

    關注

    10

    文章

    236

    瀏覽量

    50675
  • 仿真波形圖
    +關注

    關注

    1

    文章

    5

    瀏覽量

    3140
收藏 人收藏

    評論

    相關推薦

    數字電路之時序電路

    在《數字電路之如雷貫耳的“邏輯電路”》、《數字電路數字集成電路IC》之后,本文是數字電路入門3,將帶來「時序
    發(fā)表于 08-01 10:58 ?1.9w次閱讀
    <b class='flag-5'>數字電路</b><b class='flag-5'>之時序電路</b>

    異步時鐘切換電路

    異步時鐘切換電路
    發(fā)表于 05-08 09:40 ?5827次閱讀
    異步<b class='flag-5'>時鐘</b><b class='flag-5'>切換</b><b class='flag-5'>電路</b>

    最通用的數字電路

    各種數字電路。包括時鐘信號產生電路、波形整形及變換電路、定時與延時電路、計數分頻及倍頻電路、鍵盤
    發(fā)表于 08-22 14:25

    數字電路-數字時鐘電路設計

    數字電路-數字時鐘電路設計 希望大家喜歡。
    發(fā)表于 12-06 09:46

    什么是叫數字電路?

    數字電路是什么意思?   現代的數字電路由半導體工藝制成的若干數字集成器件構造而成。邏輯門是數字邏輯電路的基本單元。存儲器是用來
    發(fā)表于 04-06 23:45 ?7594次閱讀
    什么是叫<b class='flag-5'>數字電路</b>?

    數字電路設計

    數字電路設計 關于高速數字電路的電氣特性,設計重點大略可分為三項: 正時(Timing) :由于數字電路
    發(fā)表于 08-26 19:08 ?2799次閱讀

    數字電路圖符號解析

    電子發(fā)燒友為大家提供了數字電路圖符號解析,希望對您有所幫助!像是多種場效應管的電路圖符號,電位器符號等等。
    發(fā)表于 07-23 09:49 ?1.4w次閱讀
    <b class='flag-5'>數字電路</b>圖符號<b class='flag-5'>解析</b>

    數字電路正式報告

    關于電路數字報告,能夠解決數字電路的實驗問題。
    發(fā)表于 05-16 11:56 ?1次下載

    什么是模擬電路 什么是數字電路

      模擬信號和數字信號的特點不同,處理這兩種信號的方法和電路也不同。一般地, 電子電路可分為模擬電路數字電路兩大類?!   ?. 模擬
    的頭像 發(fā)表于 10-16 10:25 ?10.1w次閱讀

    數字電路基礎教程之時序邏輯電路的詳細資料概述

    本文檔的主要內容詳細介紹的是數字電路基礎教程之時序邏輯電路的詳細資料概述。內容包括了:1.時序邏輯電路分析2.若干常用時序邏輯電路3.時序邏輯電路
    發(fā)表于 10-17 08:00 ?0次下載
    <b class='flag-5'>數字電路基礎教程之時</b>序邏輯<b class='flag-5'>電路</b>的詳細資料概述

    數字電路教程之時序邏輯電路課件的詳細資料免費下載

    本文檔的主要內容詳細介紹的是數字電路教程之時序邏輯電路課件的詳細資料免費下載主要內容包括了:一 概述,二 時序邏輯電路的分析方法,三 若干常用的時序邏輯
    發(fā)表于 12-28 08:00 ?12次下載
    <b class='flag-5'>數字電路</b>教程<b class='flag-5'>之時</b>序邏輯<b class='flag-5'>電路</b>課件的詳細資料免費下載

    數字電路比模擬電路的優(yōu)點

    本文主要詳細介紹了數字電路比模擬電路的優(yōu)點,分別是數字電路結構簡單、數字電路容易標準化、數字電路能夠滿足對信號保真度的要求。
    發(fā)表于 05-16 17:50 ?1.8w次閱讀

    簡析模擬電路數字電路

    模擬電路數字電路的關系,有說所有電路都是模擬電路數字電路只是模擬電路的一部分的;有說模擬
    發(fā)表于 07-03 17:35 ?9838次閱讀

    數字電路設計的基本流程

    數字電路設計是數字電路最為關鍵及重要的一步,今天我們將從各個流程為大家介紹完整的數字電路設計!
    的頭像 發(fā)表于 07-10 17:14 ?7606次閱讀

    什么是時鐘信號?數字電路時鐘信號是怎么產生呢?

    什么是時鐘信號?數字電路時鐘信號是怎么產生呢? 時鐘信號,也稱為時鐘脈沖,是用于同步數字電路
    的頭像 發(fā)表于 01-25 15:40 ?9164次閱讀