在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

詳解RTL設計中多時鐘域的處理方法

路科驗證 ? 來源:CSDN技術社區 ? 作者:IamSarah ? 2022-05-17 13:52 ? 次閱讀

【 一 】

數字IC系統邏輯設計這部分主要介紹兩個方面,一個是RTL的設計基礎;另一方面是verilog基本語法。這一篇文章主要介紹一下RTL的設計基礎。

RTL設計都是采用同步電路設計方式,了解同步電路的設計要求是RTL設計的第一步。下圖是一個同步電路的示例:

d8a421f6-d597-11ec-bce3-dac502259ad0.png

其中,組合邏輯實現設計所需要的功能,寄存器用于暫存數據用時鐘控制。只有當時鐘進行有效跳變時,才將新的數據所存起來,否則數據保持原值。時鐘相當于同步電路中的指揮。時鐘一般是由晶振產生,或者由外部輸入,如果需要還需要用鎖相環進行倍頻、相移等操作。

下面對寄存器做一個介紹,一個寄存器的結構如下圖所示:

d8ba413e-d597-11ec-bce3-dac502259ad0.png

寄存器的功能如下圖所示:

d8d61062-d597-11ec-bce3-dac502259ad0.png

由圖可得,該寄存器在時鐘的跳變沿鎖存數據,然后數據會保持直到下一個跳變沿。寄存器要正常工作,必須保證D端的數據變化與時鐘的有效沿不能距離太近,否則有可能鎖存錯誤的數據。在綜合庫中,規定了數據變化端跟時鐘跳變沿最短的時間要求,即建立時間約束和保持時間約束。建立時間規定,在時鐘沿到達前的某段時間內,數據必須穩定;保持時間定義了在時鐘沿之后的某段時間之后,數據才能發生變化。

對于一個寄存器來說,除了數據端與時鐘端有時序要求。異步復位端與時鐘端也有要求。假設一個寄存器是已不復位的,復位信號低電平有效。當復位信號是低電平時,寄存器被初始化。當異步復位信號跳高時,寄存器在時鐘跳變沿鎖存新的數據。如果異步復位信號跳高的時刻距離時鐘有效沿太近,寄存器可能繼續保持復位狀太,也可能鎖存新的數據。因此有必要定義時鐘有效沿與異步復位無效沿之間的時序要求,這就是recovery/removal的時序要求,如圖所示;

d8fd6900-d597-11ec-bce3-dac502259ad0.png

寄存器中建立時間/保持時間、recovery/removal的時序要求, 對設計的最大組合邏輯延時、時鐘樹的構造、復位樹的構造都提出了要求。復位樹、時鐘樹一般由后端工具進行處理。對RTL設計者來說,最需關注的是建立時間的問題。設計中的時序違例通過靜態時序分析工具可以檢查出來。

在IC系統中, 復位的目的是為了將芯片強制到一個已知的狀態。同步復位與異步復位都能達到這個目的。兩者的差別在于:同步復位需要時鐘有效沿到達時才能起作用,而異步復位不需要。如下,是同步復位電路:

d9374468-d597-11ec-bce3-dac502259ad0.png

同步復位的優點在于:

1)在采用基于周期的仿真器場合,同步復位簡單

2)寄存器可以濾掉復位上的毛刺

缺點:

1)需要時鐘,在某些場合帶來不便。假如設計中包含三態總線,總線上接著許多寄存器。當上電后,晶振還未起振,鎖相環還未穩定,這時候沒有時鐘,所以復位還沒有起作用,因此會導致總線上發生沖突。只有增加上電復位電路才能解決此問題。

2)采用同步復位,復位成為路徑組合邏輯的一部分,由于復位的負載比較大,因此會使得復位樹的延遲比較大,從而導致在路徑上的延遲比較大。

異步復位的優點是不需要時鐘,且復位不會影響到路徑延時。缺點是:復位上的毛刺不能被由它復位的寄存器過濾掉;復位的無效沿與時鐘之間存在時序要求。

將同步復位和異步復位優點結合起來:給出了一種異步復位,同步釋放的復位方法,如下圖所示:

d95479e8-d597-11ec-bce3-dac502259ad0.png

該電路的原理是:當復位信號有效時,兩個同步器都為低,因此同步器的輸出立即變低,而不管此時是否存在時鐘。當復位信號變高后,經過時鐘跳變沿后才能將高電平鎖存到同步器的輸出,也就是說,同步器的輸出的無效沿是與時鐘同步的。

【 二 】

這篇文章主要講一下RTL設計中多時鐘域的處理,之前在異步FIFO設計中已經講到這個問題,這篇更全面詳細的介紹一下多時鐘域的處理。

多時鐘域之所以難以處理,是因為在兩個時鐘域之間傳遞信號時,不可避免地會出現建立時間/保持時間違例的問題。寄存器會鎖存錯誤的數據,引起功能錯誤。

現考慮在兩個時鐘域間傳遞1位信號的情況。如下圖是多時鐘域傳遞一位信號的示例:

d987681c-d597-11ec-bce3-dac502259ad0.png

在這個例子中,aclk與bclk是兩個異步時鐘。由aclk時鐘域產生的數據adat要送到bclk的時鐘域。由于bclk與aclk不同步,所以會出現這種情形:在一定時刻,adat的變化沿距離bclk的采樣沿非常接近,不能滿足建立時間和保持時間的要求。這樣, 寄存器可能會進入亞穩態。下圖是這種情況下的波形圖:

d9bd01a2-d597-11ec-bce3-dac502259ad0.png

bdat1的值會傳遞給其他模塊。在實際芯片中,在bdat1處于亞微態的時候,有些模塊會認為自己收到的是“1”, 有些會認為是“0”,這種不一致會導致功能錯誤,如下圖所示:

d9cfbf4a-d597-11ec-bce3-dac502259ad0.png

這種情形需要采用下圖所示的同步器來避免:

da101c48-d597-11ec-bce3-dac502259ad0.png

采用同步器之后,其波形如下圖所示:

da4b14ba-d597-11ec-bce3-dac502259ad0.png

下面看一下相關的多位信號的傳遞,同步器適用于在多時鐘域間傳遞1位信號,但是對于相關的多位信號,采用這種技術仍然會出現問題。如下圖所示,在多時鐘域間傳遞兩位信號:

da5ef6f6-d597-11ec-bce3-dac502259ad0.png

在這個例子中,有兩個信號b-load和b-en由bclk時鐘域傳遞到aclk時鐘域。這兩個信號相關。我們假設在某個時鐘周期內, b-load與b-en同時有效,那么這兩個信號分別經過同步器后,得到的波形如下所示:

da9e7966-d597-11ec-bce3-dac502259ad0.png

由于b-load信號與b-en信號的延遲不同,兩者的上升沿之間有一些偏移。如果同步器的采樣時鐘正好也位于兩個信號變化沿之間, 則采樣后的信號有可能會相差一個周期。這種情況下,可以將兩個信號進行邏輯與操作變成一個信號送到同步器。但是很多時候,無法對傳遞信號進行簡單的合并。這個時候就可以考慮先將這些信號變成格雷碼,然后通過同步器來傳遞。由于格雷碼在一個周期內僅有一位發生變化,這樣經過同步器之后就可以得到正確的結果。

上述方案都是基于同步器的,依據的原理是降低寄存器處于亞穩態的概率。另外一種方案是用多組寄存器來存儲信號,過一段時間再進行讀操作。在開始讀操作的時候,數據早已經穩定下來,就不會出現建立時間/保持時間違例的情況。這也就是基于異步fifo在多時鐘減傳遞信號的基本原理。關于異步FIFO的設計,已經講過,在此不再贅述。

下面講一下時鐘切換電路,有些設計中需要進行時鐘切換。動態地將始終從高頻切換到低頻或者由低頻切換到高頻,切換過程中會出現毛刺。時鐘上的毛刺是非常致命的,可能會導致功能錯誤。要避免這種問題可以采取兩種方法,一種是在時鐘切換時,進入復位,當切換完成后,復位結束;另一種方法是采用時鐘切換電路,如下圖所示,這種切換電路跟鎖存器的設計有異曲同工之妙。

dae3d02e-d597-11ec-bce3-dac502259ad0.png

原文標題:帶你科普RTL設計基礎

文章出處:【微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅

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

    關注

    31

    文章

    5359

    瀏覽量

    120790
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59874
  • 多時鐘域
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6011

原文標題:帶你科普RTL設計基礎

文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于跨時鐘信號的處理方法

    我在知乎看到了多bit信號跨時鐘的問題,于是整理了一下自己對于跨時鐘信號的處理方法
    的頭像 發表于 10-09 10:44 ?6301次閱讀

    如何處理好FPGA設計時鐘間的數據

    時鐘處理是FPGA設計中經常遇到的問題,而如何處理好跨時鐘間的數據,可以說是每個FPGA初
    發表于 07-29 06:19

    多時鐘的設計和綜合技巧系列

    出現問題,來自快時鐘的控制信號必須寬于較慢時鐘的周期。否則如下圖所示,快時鐘的控制信號無法被采樣到慢
    發表于 04-11 17:06

    IC設計多時鐘處理的常用方法相關資料推薦

    1、IC設計多時鐘處理方法簡析我們在ASIC或FPGA系統設計,常常會遇到需要在多個
    發表于 06-24 16:54

    基于多時鐘的異步FIFO設計

    在大規模集成電路設計,一個系統包含了很多不相關的時鐘信號,當其目標時鐘與源時鐘不同時,如何
    發表于 12-14 10:19 ?14次下載

    關于FPGA時鐘的問題分析

    時鐘問題(CDC,Clock Domain Crossing )是多時鐘設計的常見現象。在FPGA領域,互動的異步時鐘
    發表于 08-19 14:52 ?3384次閱讀

    多時鐘的同步時序設計和幾種處理異步時鐘接口的方法

    外部輸入的信號與本地時鐘是異步的。在SoC設計,可能同時存在幾個時鐘,信號的輸出驅動和輸入采樣在不同的時鐘節拍下進行,可能會出現一些不穩
    的頭像 發表于 07-24 09:52 ?4428次閱讀
    <b class='flag-5'>多時鐘</b><b class='flag-5'>域</b>的同步時序設計和幾種<b class='flag-5'>處理</b>異步<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>接口的<b class='flag-5'>方法</b>

    揭秘FPGA跨時鐘處理的三大方法

    時鐘處理方法,這三種方法可以說是 FPGA 界最常用也最實用的方法,這三種
    的頭像 發表于 12-05 16:41 ?1675次閱讀

    RTL多時鐘的異步復位同步釋放

    1 多時鐘的異步復位同步釋放 當外部輸入的復位信號只有一個,但是時鐘有多個時,使用每個時鐘搭建自己的復位同步器即可,如下所示。 veri
    的頭像 發表于 05-08 09:59 ?2542次閱讀
    <b class='flag-5'>RTL</b><b class='flag-5'>中</b><b class='flag-5'>多時鐘</b><b class='flag-5'>域</b>的異步復位同步釋放

    解析多時鐘和異步信號處理解決方案

    減少很多與多時鐘有關的問題,但是由于FPGA外各種系統限制,只使用一個時鐘常常又不現實。 FPGA時常需要在兩個不同時鐘頻率系統之間交換數據,在系統之間通過多I/O接口接收和發送數據
    的頭像 發表于 05-10 16:51 ?3996次閱讀
    解析<b class='flag-5'>多時鐘</b><b class='flag-5'>域</b>和異步信號<b class='flag-5'>處理</b>解決方案

    介紹3種方法時鐘處理方法

    時鐘處理是FPGA設計中經常遇到的問題,而如何處理好跨時鐘間的數據,可以說是每個FPGA初
    的頭像 發表于 09-18 11:33 ?2.2w次閱讀
    介紹3種<b class='flag-5'>方法</b>跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>

    FPGA多時鐘和異步信號處理的問題

    減少很多與多時鐘有關的問題,但是由于FPGA外各種系統限制,只使用一個時鐘常常又不現實。FPGA時常需要在兩個不同時鐘頻率系統之間交換數據,在系統之間通過多I/O接口接收和發送數據,
    的頭像 發表于 09-23 16:39 ?3093次閱讀

    IC設計多時鐘處理方法總結

    我們在ASIC或FPGA系統設計,常常會遇到需要在多個時鐘下交互傳輸的問題,時序問題也隨著系統越復雜而變得更為嚴重。
    的頭像 發表于 04-06 10:56 ?871次閱讀

    FPGA跨時鐘處理方法(二)

    上一篇文章已經講過了單bit跨時鐘處理方法,這次解說一下多bit的跨時鐘
    的頭像 發表于 05-25 15:07 ?1054次閱讀
    FPGA跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b><b class='flag-5'>方法</b>(二)

    關于FPGA設計多時鐘和異步信號處理有關的問題

    減少很多與多時鐘有關的問題,但是由于FPGA外各種系統限制,只使用一個時鐘常常又不現實。FPGA時常需要在兩個不同時鐘頻率系統之間交換數據,在系統之間通過多I/O接口接收和發送數據,
    的頭像 發表于 08-23 16:10 ?639次閱讀
    主站蜘蛛池模板: 色香视频在线| 久久国产精品系列| 五月综合激情| 一级在线观看| 亚洲成人自拍| 免费看黄视频网站| 求av网站| 一区二区三区高清在线| 奇米影视一区| 天天摸天天摸天天躁| 成年在线视频| 国产欧美色图| 久久久久久9| 久久这里只有精品任你色| 久久精品国产四虎| 欧美第一网站| 黄网址免费| 18视频免费网址在线观看| 天天毛片| jlzzjlzzjlzz日本亚洲| 国产情侣露脸| 免费不卡毛片| 欧美h网| 男女交性无遮挡免费视频| 亚洲人成毛片线播放| 亚洲色图欧美在线| 日黄网站| 国产一级特黄特色aa毛片| 午夜美女久久久久爽久久| 夜夜夜夜夜夜夜猛噜噜噜噜噜噜| 国产综合精品久久亚洲| 久久精品国产精品亚洲毛片| wwwcom日本| 加勒比在线免费视频| 国产真实野战在线视频| 成人午夜免费视频| 色香欲亚洲天天综合网| 狠狠色噜噜狠狠狠狠97| 很黄很暴力 很污秽的小说| 特级中国aaa毛片| 日本在线观看成人小视频|