99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解RTL設(shè)計中多時鐘域的處理方法

路科驗證 ? 來源:CSDN技術(shù)社區(qū) ? 作者:IamSarah ? 2022-05-17 13:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【 一 】

數(shù)字IC系統(tǒng)邏輯設(shè)計這部分主要介紹兩個方面,一個是RTL的設(shè)計基礎(chǔ);另一方面是verilog基本語法。這一篇文章主要介紹一下RTL的設(shè)計基礎(chǔ)。

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

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

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

下面對寄存器做一個介紹,一個寄存器的結(jié)構(gòu)如下圖所示:

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

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

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

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

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

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

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

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

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

同步復(fù)位的優(yōu)點在于:

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

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

缺點:

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

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

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

將同步復(fù)位和異步復(fù)位優(yōu)點結(jié)合起來:給出了一種異步復(fù)位,同步釋放的復(fù)位方法,如下圖所示:

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

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

【 二 】

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原文標(biāo)題:帶你科普RTL設(shè)計基礎(chǔ)

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

審核編輯:湯梓紅

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

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124445
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    389

    瀏覽量

    61088
  • 多時鐘域
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6109

原文標(biāo)題:帶你科普RTL設(shè)計基礎(chǔ)

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    關(guān)于跨時鐘信號的處理方法

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

    如何處理好FPGA設(shè)計時鐘間的數(shù)據(jù)

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

    多時鐘的設(shè)計和綜合技巧系列

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

    IC設(shè)計多時鐘處理的常用方法相關(guān)資料推薦

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

    基于多時鐘的異步FIFO設(shè)計

    在大規(guī)模集成電路設(shè)計,一個系統(tǒng)包含了很多不相關(guān)的時鐘信號,當(dāng)其目標(biāo)時鐘與源時鐘不同時,如何
    發(fā)表于 12-14 10:19 ?14次下載

    關(guān)于FPGA時鐘的問題分析

    時鐘問題(CDC,Clock Domain Crossing )是多時鐘設(shè)計的常見現(xiàn)象。在FPGA領(lǐng)域,互動的異步時鐘
    發(fā)表于 08-19 14:52 ?3665次閱讀

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

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

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

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

    RTL多時鐘的異步復(fù)位同步釋放

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

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

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

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

    時鐘處理是FPGA設(shè)計中經(jīng)常遇到的問題,而如何處理好跨時鐘間的數(shù)據(jù),可以說是每個FPGA初
    的頭像 發(fā)表于 09-18 11:33 ?2.3w次閱讀
    介紹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多時鐘和異步信號處理的問題

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

    IC設(shè)計多時鐘處理方法總結(jié)

    我們在ASIC或FPGA系統(tǒng)設(shè)計,常常會遇到需要在多個時鐘下交互傳輸?shù)膯栴},時序問題也隨著系統(tǒng)越復(fù)雜而變得更為嚴(yán)重。
    的頭像 發(fā)表于 04-06 10:56 ?1130次閱讀

    FPGA跨時鐘處理方法(二)

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

    關(guān)于FPGA設(shè)計多時鐘和異步信號處理有關(guān)的問題

    減少很多與多時鐘有關(guān)的問題,但是由于FPGA外各種系統(tǒng)限制,只使用一個時鐘常常又不現(xiàn)實。FPGA時常需要在兩個不同時鐘頻率系統(tǒng)之間交換數(shù)據(jù),在系統(tǒng)之間通過多I/O接口接收和發(fā)送數(shù)據(jù),
    的頭像 發(fā)表于 08-23 16:10 ?926次閱讀