衡阳派盒市场营销有限公司

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

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

3天內不再提示

多位寬數據通過握手方式跨時鐘域

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

對于多位寬數據,我們可以采用握手方式實現跨時鐘域操作。該方式可直接使用xpm_cdc_handshake實現,如下圖所示。xpm_cdc_handshake提供了6個參數

其中DEST_EXT_HSK用于決定握手信號是內部生成還是來自于該模塊的外部;DEST_SYNC_FF決定了目的端控制信號對應的級聯觸發器個數;INIT_SYNC_FF決定了仿真時是否使用觸發器的初始值;SIM_ASSERT_CHK用于判定是否檢查仿真過程中可能的潛在問題;SRC_SYNC_FF決定了源端控制信號對應的級聯觸發器個數;WIDTH決定了傳輸數據的位寬。

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

假定DEST_EXT_HSK為0(握手信號由內部生成),DEST_SYNC_FF和SRC_SYNC_FF均為2,WIDTH為4,綜合后的電路結果如下圖所示。可以看到設計使用了xpm_cdc_single,用于實現控制信號src_send的跨時鐘域操作,這也就意味著src_send為高有效時要確保可以被接收端時鐘穩定地采樣到至少兩次。

同時也不難理解SRC_SYNC_FF決定了src_send從發送時鐘域到接收時鐘域所需的級聯觸發器個數。下面第二張圖片就顯示了SRC_SYNC_FF為4時的電路。下面第三章圖顯示了DEST_SYNC_FF為4時的電路。

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

我們單獨把控制信號src_send提取出來,看看src_send是如何從發送時鐘域到接收時鐘域然后又回到發送時鐘域生成src_rcv信號,如下圖所示。圖中淡紫色為接收時鐘,淺藍色為發送時鐘,src_send從輸入到最終產生src_rcv信號共經歷了6個觸發器,兩次跨時鐘域操作。src_send為高時,表明發送端有待發送數據,src_rcv為高時表明接收端已接收到數據,意味著跨時鐘域操作完成。

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

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

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

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

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

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

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

既然是握手方式,那么就意味著每發送一個數據,就要發送一個與之同步的有效標記信號(src_send),當接收端接收到該信號時,開始處理,接收完畢發送src_rcv給發送端,表明數據被接收到。這樣看來,握手方式因為“握手”的存在而不能連續發送數據,如下圖所示,可以看到連續發送造成數據丟失。

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

從綜合后的仿真來看,進一步理解“握手”,如下圖所示,我們將數據路徑上發送端和接收端觸發器的使能信號添加到波形窗口里。其中p_0_in為發送端使能信號,對應的輸出數據為src_hsdata_ff,dest_hsdata_en為接收端使能信號。

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

如果參數DEST_EXT_HSK為1,表明外部提供接收應答信號,綜合結果如下圖所示。圖中藍色高亮為信號dest_ack,該信號經跨時鐘域處理輸出src_rcv給接收端,這正是與內部產生握手信號電路的區別。

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

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


審核編輯:劉清

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

    關注

    1630

    文章

    21798

    瀏覽量

    606022
  • 時鐘
    +關注

    關注

    11

    文章

    1747

    瀏覽量

    131803
  • 觸發器
    +關注

    關注

    14

    文章

    2003

    瀏覽量

    61349
  • SRC
    SRC
    +關注

    關注

    0

    文章

    61

    瀏覽量

    18050
  • 時鐘域
    +關注

    關注

    0

    文章

    52

    瀏覽量

    9574

原文標題:跨時鐘域電路設計(6):多位寬數據通過握手方式跨時鐘域

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何處理好FPGA設計中時鐘問題?

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

    三種時鐘處理的方法

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

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

    時鐘處理是FPGA設計中經常遇到的問題,而如何處理好時鐘間的
    發表于 07-29 06:19

    如何處理好時鐘間的數據

    時鐘處理是什么意思?如何處理好時鐘間的數據
    發表于 11-01 07:44

    看看Stream信號里是如何做時鐘握手

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

    CDC單bit脈沖時鐘的處理介紹

    單bit 脈沖時鐘處理 簡要概述: 在上一篇講了總線全握手時鐘處理,本文講述單bit脈沖
    的頭像 發表于 03-22 09:54 ?3583次閱讀

    總線半握手時鐘處理

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

    關于時鐘的詳細解答

    每一個做數字邏輯的都繞不開時鐘處理,談一談SpinalHDL里用于時鐘處理的一些手段方法
    的頭像 發表于 04-27 10:52 ?4338次閱讀
    關于<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>的詳細解答

    單位信號如何時鐘

    單位(Single bit)信號即該信號的位為1,通常控制信號居多。對于此類信號,如需時鐘可直接使用xpm_cdc_single
    的頭像 發表于 04-13 09:11 ?1379次閱讀

    時鐘電路設計:多位數據通過FIFO時鐘

    FIFO是實現多位數據的異步時鐘操作的常用方法,相比于
    的頭像 發表于 05-11 14:01 ?3185次閱讀
    <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>FIFO<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>

    時鐘電路設計總結

    時鐘操作包括同步時鐘操作和異步
    的頭像 發表于 05-18 09:18 ?789次閱讀
    <b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>電路設計總結

    FPGA時鐘處理方法(一)

    時鐘是FPGA設計中最容易出錯的設計模塊,而且一旦時鐘出現問題,定位排查會非常困難,因為
    的頭像 發表于 05-25 15:06 ?2081次閱讀
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>處理方法(一)

    FPGA時鐘處理方法(二)

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

    時鐘電路設計:單位信號如何時鐘

    單位(Single bit)信號即該信號的位為1,通常控制信號居多。對于此類信號,如需時鐘可直接使用xpm_cdc_single,如
    的頭像 發表于 08-16 09:53 ?1424次閱讀
    <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><b class='flag-5'>域</b>

    fpga時鐘通信時,慢時鐘如何讀取快時鐘發送過來的數據

    fpga時鐘通信時,慢時鐘如何讀取快時鐘發送過來的數據? 在FPGA設計中,通常需要
    的頭像 發表于 10-18 15:23 ?1140次閱讀
    大发888官方hgx2dafa888gwd| 香港六合彩管家婆| 赌神网百家乐官网2| 六合彩走势图| gt百家乐平台| 澳门百家乐官网娱乐注册| 威尼斯人娱乐场地址| 百家乐官网平注常赢玩法技巧| 龙口市| 济州岛百家乐的玩法技巧和规则 | 上海百家乐官网的玩法技巧和规则 | 乐九百家乐官网娱乐城| 百家乐桌子租| 百家乐官网详解| 百家乐官网大赢家客户端| 大发888开户大发娱乐权威吗| 百家乐最新套路| 虚拟百家乐官网游戏下载| 大发888中文下载| 百家乐怎么赢博彩正网| 百家乐官网赌机破解| ,博彩通| 百家乐如何捕捉长龙| 金彩百家乐官网的玩法技巧和规则 | 新葡京娱乐城官方网站| 百家乐平注法攻略| 百家乐官网的巧门| 和龙市| 大发888线上| 百家乐www| 实战百家乐官网十大取胜原因百分百战胜百家乐官网不买币不吹牛只你能做到按我说的.百家乐官网基本规则 | 百家乐官网有赢钱公式吗| 星空棋牌下载| 博彩百家乐画谜网| 永利百家乐游戏| 网络百家乐官网必胜投注方法| 菲彩线上娱乐| 威尼斯人娱乐城百家乐赌博 | 太阳城百家乐官网筹码租| 大发888真人存款| 澳门档百家乐的玩法技巧和规则|