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

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

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

多位寬數(shù)據(jù)通過握手方式跨時(shí)鐘域

FPGA技術(shù)驛站 ? 來源:FPGA技術(shù)驛站 ? 作者:FPGA技術(shù)驛站 ? 2023-05-06 09:22 ? 次閱讀

對(duì)于多位寬數(shù)據(jù),我們可以采用握手方式實(shí)現(xiàn)跨時(shí)鐘域操作。該方式可直接使用xpm_cdc_handshake實(shí)現(xiàn),如下圖所示。xpm_cdc_handshake提供了6個(gè)參數(shù)

其中DEST_EXT_HSK用于決定握手信號(hào)是內(nèi)部生成還是來自于該模塊的外部;DEST_SYNC_FF決定了目的端控制信號(hào)對(duì)應(yīng)的級(jí)聯(lián)觸發(fā)器個(gè)數(shù);INIT_SYNC_FF決定了仿真時(shí)是否使用觸發(fā)器的初始值;SIM_ASSERT_CHK用于判定是否檢查仿真過程中可能的潛在問題;SRC_SYNC_FF決定了源端控制信號(hào)對(duì)應(yīng)的級(jí)聯(lián)觸發(fā)器個(gè)數(shù);WIDTH決定了傳輸數(shù)據(jù)的位寬。

8b508748-eb83-11ed-90ce-dac502259ad0.png

假定DEST_EXT_HSK為0(握手信號(hào)由內(nèi)部生成),DEST_SYNC_FF和SRC_SYNC_FF均為2,WIDTH為4,綜合后的電路結(jié)果如下圖所示??梢钥吹皆O(shè)計(jì)使用了xpm_cdc_single,用于實(shí)現(xiàn)控制信號(hào)src_send的跨時(shí)鐘域操作,這也就意味著src_send為高有效時(shí)要確??梢员唤邮斩藭r(shí)鐘穩(wěn)定地采樣到至少兩次。

同時(shí)也不難理解SRC_SYNC_FF決定了src_send從發(fā)送時(shí)鐘域到接收時(shí)鐘域所需的級(jí)聯(lián)觸發(fā)器個(gè)數(shù)。下面第二張圖片就顯示了SRC_SYNC_FF為4時(shí)的電路。下面第三章圖顯示了DEST_SYNC_FF為4時(shí)的電路。

8b61df66-eb83-11ed-90ce-dac502259ad0.png8b7baf68-eb83-11ed-90ce-dac502259ad0.png8b9283be-eb83-11ed-90ce-dac502259ad0.png

我們單獨(dú)把控制信號(hào)src_send提取出來,看看src_send是如何從發(fā)送時(shí)鐘域到接收時(shí)鐘域然后又回到發(fā)送時(shí)鐘域生成src_rcv信號(hào),如下圖所示。圖中淡紫色為接收時(shí)鐘,淺藍(lán)色為發(fā)送時(shí)鐘,src_send從輸入到最終產(chǎn)生src_rcv信號(hào)共經(jīng)歷了6個(gè)觸發(fā)器,兩次跨時(shí)鐘域操作。src_send為高時(shí),表明發(fā)送端有待發(fā)送數(shù)據(jù),src_rcv為高時(shí)表明接收端已接收到數(shù)據(jù),意味著跨時(shí)鐘域操作完成。

8ba83308-eb83-11ed-90ce-dac502259ad0.png

從約束層面看,該模塊使用了set_false_path,set_max_delay和set_bus_skew三種約束,如下圖所示。但其實(shí)set_max_delay和set_bus_skew的延遲值都很大,所以可以認(rèn)為與set_max_delay等效。

8bc07bc0-eb83-11ed-90ce-dac502259ad0.png

從仿真角度看,我們先看從慢時(shí)鐘域到快時(shí)鐘域,如下圖所示。這里需要注意的是dest_req輸出脈寬為一個(gè)接收時(shí)鐘域脈寬,故該信號(hào)可用于最終數(shù)據(jù)(跨時(shí)鐘域之后)的有效標(biāo)記信號(hào)。

8be8cf6c-eb83-11ed-90ce-dac502259ad0.png

同樣,該模塊也支持從快時(shí)鐘域到慢時(shí)鐘域的跨時(shí)鐘域的操作,如下圖所示。

8bf52faa-eb83-11ed-90ce-dac502259ad0.png

既然是握手方式,那么就意味著每發(fā)送一個(gè)數(shù)據(jù),就要發(fā)送一個(gè)與之同步的有效標(biāo)記信號(hào)(src_send),當(dāng)接收端接收到該信號(hào)時(shí),開始處理,接收完畢發(fā)送src_rcv給發(fā)送端,表明數(shù)據(jù)被接收到。這樣看來,握手方式因?yàn)椤拔帐帧钡拇嬖诙荒苓B續(xù)發(fā)送數(shù)據(jù),如下圖所示,可以看到連續(xù)發(fā)送造成數(shù)據(jù)丟失。

8c034dce-eb83-11ed-90ce-dac502259ad0.png

從綜合后的仿真來看,進(jìn)一步理解“握手”,如下圖所示,我們將數(shù)據(jù)路徑上發(fā)送端和接收端觸發(fā)器的使能信號(hào)添加到波形窗口里。其中p_0_in為發(fā)送端使能信號(hào),對(duì)應(yīng)的輸出數(shù)據(jù)為src_hsdata_ff,dest_hsdata_en為接收端使能信號(hào)。

8c15f29e-eb83-11ed-90ce-dac502259ad0.png

如果參數(shù)DEST_EXT_HSK為1,表明外部提供接收應(yīng)答信號(hào),綜合結(jié)果如下圖所示。圖中藍(lán)色高亮為信號(hào)dest_ack,該信號(hào)經(jīng)跨時(shí)鐘域處理輸出src_rcv給接收端,這正是與內(nèi)部產(chǎn)生握手信號(hào)電路的區(qū)別。

8c27c32a-eb83-11ed-90ce-dac502259ad0.png

綜上所述,可以看到“握手”方式需要發(fā)送端和接收端通過握手信號(hào)src_send和src_rcv或dest_ack來表明發(fā)送端有數(shù)據(jù)等待發(fā)送或接收端已接收到數(shù)據(jù),“握手”一來一回就意味著發(fā)送端不能每個(gè)時(shí)鐘周期都發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)率必然低于時(shí)鐘頻率。同時(shí),握手方式也無法對(duì)待發(fā)送數(shù)據(jù)進(jìn)行緩存。好處是這種方式僅僅消耗觸發(fā)器和查找表資源,資源用量比較少,電路比較簡(jiǎn)單。


審核編輯:劉清

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

    關(guān)注

    1629

    文章

    21744

    瀏覽量

    603658
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1734

    瀏覽量

    131517
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61169
  • SRC
    SRC
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    18000
  • 時(shí)鐘域
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    9536

原文標(biāo)題:跨時(shí)鐘域電路設(shè)計(jì)(6):多位寬數(shù)據(jù)通過握手方式跨時(shí)鐘域

文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何處理好FPGA設(shè)計(jì)中時(shí)鐘問題?

    以手到擒來。這里介紹的三種方法時(shí)鐘處理方法如下:打兩拍;異步雙口 RAM;格雷碼轉(zhuǎn)換。01方法一:打兩拍大家很清楚,處理時(shí)鐘
    發(fā)表于 09-22 10:24

    三種時(shí)鐘處理的方法

    的三種方法時(shí)鐘處理方法如下:  1. 打兩拍;  2. 異步雙口RAM;  3. 格雷碼轉(zhuǎn)換。  方法一:打兩拍  大家很清楚,處理時(shí)鐘
    發(fā)表于 01-08 16:55

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

    時(shí)鐘處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問題,而如何處理好時(shí)鐘間的
    發(fā)表于 07-29 06:19

    如何處理好時(shí)鐘間的數(shù)據(jù)

    時(shí)鐘處理是什么意思?如何處理好時(shí)鐘間的數(shù)據(jù)
    發(fā)表于 11-01 07:44

    看看Stream信號(hào)里是如何做時(shí)鐘握手

    邏輯出身的農(nóng)民工兄弟在面試時(shí)總難以避免“時(shí)鐘”的拷問,在諸多時(shí)鐘的方法里,
    發(fā)表于 07-07 17:25

    CDC單bit脈沖時(shí)鐘的處理介紹

    單bit 脈沖時(shí)鐘處理 簡(jiǎn)要概述: 在上一篇講了總線全握手時(shí)鐘處理,本文講述單bit脈沖
    的頭像 發(fā)表于 03-22 09:54 ?3528次閱讀

    總線半握手時(shí)鐘處理

    總線半握手時(shí)鐘處理 簡(jiǎn)要概述: 在上一篇講了單bit脈沖同步器時(shí)鐘處理,本文講述控制信號(hào)基
    的頭像 發(fā)表于 04-04 12:32 ?2872次閱讀
    總線半<b class='flag-5'>握手</b><b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>處理

    關(guān)于時(shí)鐘的詳細(xì)解答

    每一個(gè)做數(shù)字邏輯的都繞不開時(shí)鐘處理,談一談SpinalHDL里用于時(shí)鐘處理的一些手段方法
    的頭像 發(fā)表于 04-27 10:52 ?4280次閱讀
    關(guān)于<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>的詳細(xì)解答

    單位信號(hào)如何時(shí)鐘

    單位(Single bit)信號(hào)即該信號(hào)的位為1,通??刂菩盘?hào)居多。對(duì)于此類信號(hào),如需時(shí)鐘可直接使用xpm_cdc_single
    的頭像 發(fā)表于 04-13 09:11 ?1329次閱讀

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

    FIFO是實(shí)現(xiàn)多位數(shù)據(jù)的異步時(shí)鐘操作的常用方法,相比于
    的頭像 發(fā)表于 05-11 14:01 ?3084次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>電路設(shè)計(jì):<b class='flag-5'>多位</b><b class='flag-5'>寬</b><b class='flag-5'>數(shù)據(jù)通過</b>FIFO<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>

    時(shí)鐘電路設(shè)計(jì)總結(jié)

    時(shí)鐘操作包括同步時(shí)鐘操作和異步
    的頭像 發(fā)表于 05-18 09:18 ?751次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>電路設(shè)計(jì)總結(jié)

    FPGA時(shí)鐘處理方法(一)

    時(shí)鐘是FPGA設(shè)計(jì)中最容易出錯(cuò)的設(shè)計(jì)模塊,而且一旦時(shí)鐘出現(xiàn)問題,定位排查會(huì)非常困難,因?yàn)?/div>
    的頭像 發(fā)表于 05-25 15:06 ?2003次閱讀
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>處理方法(一)

    FPGA時(shí)鐘處理方法(二)

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

    時(shí)鐘電路設(shè)計(jì):?jiǎn)挝?b class='flag-5'>寬信號(hào)如何時(shí)鐘

    單位(Single bit)信號(hào)即該信號(hào)的位為1,通常控制信號(hào)居多。對(duì)于此類信號(hào),如需時(shí)鐘可直接使用xpm_cdc_single,如
    的頭像 發(fā)表于 08-16 09:53 ?1354次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>電路設(shè)計(jì):?jiǎn)挝?b class='flag-5'>寬</b>信號(hào)如何<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>

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

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