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

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

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

控制信號從慢時鐘域到快時鐘域快遞時會存在什么問題呢?

冬至子 ? 來源:小魚學(xué)IC ? 作者:小魚 ? 2023-06-21 11:07 ? 次閱讀

1.什么是控制交互信號

答:控制交互信號用于作為控制指示信號,比如當某個電路模塊有數(shù)據(jù)輸入端口data,但是電路不可能每個時鐘周期都對端口輸入的數(shù)據(jù)做處理,那一般上一級電路會同時給出一個指示信號,比如in_valid,用于表示當前端口data輸入的數(shù)據(jù)是有效的,電路需要對其進行采集或做運算處理。同樣的對于電路模塊輸出數(shù)據(jù)時,也需要給出類似的信號,表明當前輸出端口的數(shù)據(jù)是否有效,例如o_valid信號等。

還有就是比如像FIFO,RAM的讀寫使能信號,用于控制FIFO,RAM是否需要正常進行工作;讀寫控制信號用于指示是讀還是寫操作行為。以及總線的一系列控制信號等,CPU的指令等等,都可以說是控制信號。常用于作為控制模塊產(chǎn)生控制信號的就是狀態(tài)機。

總結(jié)一下,就是沒有控制信號只有運算電路,電路就是塊板磚,我行我素,無任何意義,當我們設(shè)計電路模塊的時候,往往最先需要搞明白的就是本電路模塊的交互控制接口的時序。

2.跨時鐘域時,控制信號從慢時鐘域(時鐘頻率較小)到快時鐘域(時鐘頻率較大)快遞時會存在什么問題呢?

答:如下圖所示,CLK1為慢時鐘域的時鐘,IN_VALID信號由慢時鐘域電路生成,比如用于指示DATA(由CLK1時鐘域電路生成)的有效,或者指示完成一次運算。原本IN_VALID在CLK1時鐘域下只有一個脈沖寬度,表示完成一次運算。但是跨時鐘域傳遞到CLK2(快時鐘域下),CLK2由于頻率較快,多個上升沿都采集到IN_VALID為高,在CLK1時鐘域下就會誤以為完成了多次運算(或者連續(xù)多個DATA為有效的)。

圖片

3.上述問題怎么解決呢?

答:如果需要跨時鐘域的控制信號不會出現(xiàn)多個脈沖連續(xù)為高的情況的話,則可以在快時鐘域通過邊沿檢測電路解決。電路如下。將最后的IN_VALID_CLK2作為最后的控制信號。

圖片

其波形如下:

圖片

4.如果IN_VALID有多個連續(xù)的為高電平的情況怎么辦?

答:如果IN_VALID是用來傳遞數(shù)據(jù)的,用來指示DATA有效的,則可以采用一個異步FIFO將數(shù)據(jù)進行緩存,將IN_VALID作為FIFO的寫使能信號。如若是其他的這種情況則需要按情況來定制電路。

拓展問題

1.脈沖上升沿檢測電路(被檢測的脈沖寬度不小于一個時鐘周期)。

圖片

2.脈沖下降沿檢測電路(被檢測的脈沖寬度不小于一個時鐘周期)

圖片

3.脈沖邊沿(IN_VALID的下降沿、上升沿時電路都會輸出一個高脈沖)檢測電路(被檢測的脈沖寬度不小于一個時鐘周期)。

圖片

下面給出邊沿檢測電路的示例Verilog代碼:

向上滑動閱覽

module EDGE_DEC(

input clk2,

input rst_n,

input in_valid,

output in_valid_edge

);

reg in_valid_d;

reg in_valid_dd;

always @( posedge clk2 or negedge rst_n ) begin

if( !rst_n )

in_valid_d <= 1'b0;

else

in_valid_d <= in_valid;

end

always @( posedge clk2 or negedge rst_n ) begin

if( !rst_n )

in_valid_dd <= 1'b0;

else

in_valid_dd <= in_valid_d;

end

assign in_valid_edge = in_valid_d ^ in_valid_dd;

endmodule

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

    關(guān)注

    8

    文章

    1365

    瀏覽量

    114476
  • 狀態(tài)機
    +關(guān)注

    關(guān)注

    2

    文章

    491

    瀏覽量

    27461
  • FIFO存儲
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    5955
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    17105
  • 控制器
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    3274
收藏 人收藏

    評論

    相關(guān)推薦

    時鐘控制信號傳輸設(shè)計方案

    clk2的時鐘。當clk1比clk2的頻率高時,則稱模塊1(相對于模塊2)為時鐘,而模塊2位為
    發(fā)表于 10-16 15:47 ?1133次閱讀
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>控制</b><b class='flag-5'>信號</b>傳輸設(shè)計方案

    CDC跨時鐘分單bit和多bit傳輸介紹

    單bit(時鐘時鐘):用
    的頭像 發(fā)表于 08-29 11:13 ?3873次閱讀
    CDC跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>分單bit和多bit傳輸介紹

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

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

    怎么將信號從一個時鐘傳遞另一個時鐘

    親愛的朋友們, 我有一個多鎖設(shè)計。時鐘為50MHz,200MHz和400Mhz。如果僅使用400MHz時鐘并使用時鐘使能產(chǎn)生200Mhz和50Mhz時鐘
    發(fā)表于 03-11 08:55

    同步從一個時鐘另一個時鐘的多位信號怎么實現(xiàn)?

    你好,我在Viv 2016.4上使用AC701板。我需要同步從一個時鐘另一個時鐘的多位信號
    發(fā)表于 08-17 07:48

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

    通常不是問題,因為時鐘將對時鐘控制
    發(fā)表于 04-11 17:06

    時鐘信號同步的IP解決方案

    本文解釋了在時鐘和數(shù)據(jù)信號從一個時鐘跨越到另一個時鐘所發(fā)生的許多類型的同步問題。在任何情況下
    發(fā)表于 04-06 17:39 ?51次下載
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>信號</b>同步的IP解決方案

    總線半握手跨時鐘處理

    同步器應(yīng)用場景: 適用有脈沖控制信號的總線跨時鐘處理,不適用電平控制信號。慢到
    的頭像 發(fā)表于 04-04 12:32 ?2787次閱讀
    總線半握手跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>處理

    CDC跨時鐘的基礎(chǔ)概念

    時鐘clock domain:以寄存器捕獲的時鐘來劃分時鐘。 單時鐘
    的頭像 發(fā)表于 08-29 15:11 ?2453次閱讀

    時鐘處理方法(一)

    理論上講,時鐘信號總會采集時鐘
    的頭像 發(fā)表于 03-28 13:50 ?2098次閱讀
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>處理方法(一)

    時鐘處理方法(二)

    時鐘采集從快時鐘傳輸來的信號時,需要根據(jù)信號
    的頭像 發(fā)表于 03-28 13:52 ?844次閱讀
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>處理方法(二)

    時鐘電路設(shè)計:多位寬數(shù)據(jù)通過FIFO跨時鐘

    FIFO是實現(xiàn)多位寬數(shù)據(jù)的異步跨時鐘操作的常用方法,相比于握手方式,F(xiàn)IFO一方面允許發(fā)送端在每個時鐘周期都發(fā)送數(shù)據(jù),另一方面還可以對數(shù)據(jù)進行緩存。需要注意的是對FIFO控制
    的頭像 發(fā)表于 05-11 14:01 ?2883次閱讀
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>電路設(shè)計:多位寬數(shù)據(jù)通過FIFO跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b>

    處理單bit跨時鐘信號同步問題來入手

    在數(shù)字電路中,跨時鐘處理是個很龐大的問題,因此將會作為一個專題來陸續(xù)分享。今天先來處理單bit跨時鐘
    發(fā)表于 06-27 11:25 ?1555次閱讀
    <b class='flag-5'>從</b>處理單bit跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>信號</b>同步問題來入手

    時鐘信號該如何處理?

    時鐘是如何產(chǎn)生的?現(xiàn)在的芯片(比如SOC,片上系統(tǒng))集成度和復(fù)雜度越來越高,通常一顆芯片上會有許多不同的信號工作在不同的時鐘頻率下。
    的頭像 發(fā)表于 06-27 11:39 ?1511次閱讀
    跨<b class='flag-5'>時鐘</b><b class='flag-5'>域</b><b class='flag-5'>信號</b>該如何處理<b class='flag-5'>呢</b>?

    fpga跨時鐘通信時,時鐘如何讀取時鐘發(fā)送過來的數(shù)據(jù)?

    fpga跨時鐘通信時,時鐘如何讀取時鐘發(fā)送過來的數(shù)據(jù)? 在FPGA設(shè)計中,通常需要跨
    的頭像 發(fā)表于 10-18 15:23 ?982次閱讀