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

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

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

跨時(shí)鐘域處理方式

CHANBAEK ? 來源:新芯設(shè)計(jì) ? 作者:新芯設(shè)計(jì) ? 2023-06-21 11:53 ? 次閱讀

引言

??類似于電源域(電源規(guī)劃與時(shí)鐘規(guī)劃亦是對應(yīng)的),假如設(shè)計(jì)中所有的 D 觸發(fā)器都使用一個(gè)全局網(wǎng)絡(luò) GCLK ,比如 FPGA 的主時(shí)鐘輸入,那么我們說這個(gè)設(shè)計(jì)只有一個(gè)時(shí)鐘域。假如設(shè)計(jì)有兩個(gè)輸入時(shí)鐘,分別給不同的接口使用,那么我們說這個(gè)設(shè)計(jì)中有兩個(gè)時(shí)鐘域,不同的時(shí)鐘域,有著不同的時(shí)鐘頻率和時(shí)鐘相位。

??在實(shí)際的 FPGA 系統(tǒng)設(shè)計(jì)中,經(jīng)常有多個(gè)不同的時(shí)鐘源的參與,比如 FPGA 內(nèi)部的 Clock Wizard 時(shí)鐘分頻 IP 核,連接到許多不同的頻率輸入的 IP 模塊,這個(gè)在視頻顯示系統(tǒng)中是很常見的,畢竟,不同的視頻顯示格式需要不同的像素頻率,也就需要不同的輸入時(shí)鐘。例如 640X480@60Hz 需要 25.175MHz 時(shí)鐘,而 1280X720@60Hz 需要 74.2MHz 時(shí)鐘等等。

一、跨時(shí)鐘域處理方式

1、對于單比特?cái)?shù)據(jù)的跨時(shí)鐘域: 打兩拍 (即定義兩級寄存器對輸入數(shù)據(jù)進(jìn)行延拍,這個(gè)在解決 “亞穩(wěn)態(tài)” 方式的隨筆中已經(jīng)提及)。

2、對于多比特?cái)?shù)據(jù)的跨時(shí)鐘域: 異步 FIFO(異步雙口 RAM) 。例如前面一個(gè)模塊的數(shù)據(jù)發(fā)送速率為 100MHz,而后面一個(gè)模塊的數(shù)據(jù)接收速率為 50MHz,這樣就是數(shù)據(jù)速率傳輸?shù)牟煌?,那么,我們可以在中間插入一個(gè)異步 FIFO,一端接收前面的 100MHz 速率的數(shù)據(jù)進(jìn)行緩存,另一端發(fā)送 50MHz 速率的數(shù)據(jù),從而達(dá)到數(shù)據(jù)的同步接收與發(fā)送。當(dāng)然,這里的 FIFO 的深度就需要自己計(jì)算了。

3、 握手協(xié)議 。由于兩個(gè)異步時(shí)鐘的頻率關(guān)系不確定,所以,也就無法保證能否滿足觸發(fā)器之間的建立時(shí)間和保持時(shí)間,如果違反了建立時(shí)間或者保持時(shí)間的要求,那么接收域?qū)?huì)采樣到處于亞穩(wěn)態(tài)的數(shù)據(jù),那么系統(tǒng)就可能崩潰了。

??因此,我們可以使如下用握手協(xié)議方式處理跨時(shí)鐘域數(shù)據(jù)傳輸,只需要對雙方的握手信號(req 和 ack)分別使用脈沖檢測方法進(jìn)行同步。如下所示,假設(shè) req、ack、data 總線在初始化時(shí)都處于無效狀態(tài),發(fā)送域先把數(shù)據(jù)放入總線,隨后發(fā)送有效的 req 信號給接收域,接收域在檢測到有效的 req 信號后鎖存數(shù)據(jù)總線,然后回送一個(gè)有效的 ack 信號表示讀取完成應(yīng)答,發(fā)送域在檢測到有效 ack 信號后撤銷當(dāng)前的 req 信號,接收域在檢測到 req 撤銷后也相應(yīng)撤銷 ack 信號,此時(shí)完成一次正常握手通信。

圖片

基于握手協(xié)議的跨時(shí)鐘域處理方式

??此后,發(fā)送域可以繼續(xù)開始下一次握手通信,依次循環(huán)。該握手協(xié)議方式能夠保證接收到的數(shù)據(jù)穩(wěn)定可靠,有效的避免了亞穩(wěn)態(tài)的出現(xiàn),但是,控制信號握手檢測會(huì)消耗通信雙方較多的時(shí)間和資源。這樣的通信協(xié)議類似于 AXI4-Stream 流協(xié)議,當(dāng)然,前者是一次握手發(fā)送一次數(shù)據(jù),后者是一次握手可以連續(xù)發(fā)送數(shù)據(jù),AXI4-Stream 流協(xié)議的主要通信信號為 tvalid 和 tready,這個(gè)協(xié)議在視頻流傳輸中非常重要且實(shí)用,大家可以去學(xué)一學(xué)。

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

    關(guān)注

    1621

    文章

    21511

    瀏覽量

    599060
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    382

    瀏覽量

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

    關(guān)注

    10

    文章

    1676

    瀏覽量

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

    關(guān)注

    14

    文章

    1990

    瀏覽量

    60878
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

    的三種方法時(shí)鐘處理方法如下:  1. 打兩拍;  2. 異步雙口RAM;  3. 格雷碼轉(zhuǎn)換?! 》椒ㄒ唬捍騼膳摹 〈蠹液芮宄?b class='flag-5'>處理
    發(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í)鐘
    發(fā)表于 11-01 07:44

    FPGA時(shí)鐘處理簡介

    (10)FPGA時(shí)鐘處理1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4)FPGA
    發(fā)表于 02-23 07:47

    揭秘FPGA時(shí)鐘處理的三大方法

    時(shí)鐘處理是 FPGA 設(shè)計(jì)中經(jīng)常遇到的問題,而如何處理
    的頭像 發(fā)表于 12-05 16:41 ?1543次閱讀

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

    總線半握手時(shí)鐘處理 簡要概述: 在上一篇講了單bit脈沖同步器時(shí)鐘
    的頭像 發(fā)表于 04-04 12:32 ?2642次閱讀
    總線半握手<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b>

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

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

    介紹3種方法時(shí)鐘處理方法

    時(shí)鐘處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問題,而如何處理時(shí)
    的頭像 發(fā)表于 09-18 11:33 ?2.2w次閱讀
    介紹3種方法<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b>方法

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

    時(shí)鐘處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問題,而如何處理時(shí)
    的頭像 發(fā)表于 10-18 09:12 ?6811次閱讀

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

    時(shí)鐘操作包括同步時(shí)鐘操作和異步
    的頭像 發(fā)表于 05-18 09:18 ?619次閱讀
    <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 ?1745次閱讀
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b><b class='flag-5'>處理</b>方法(一)

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

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

    如何處理時(shí)鐘這些基礎(chǔ)問題

    對于數(shù)字設(shè)計(jì)人員來講,只要信號從一個(gè)時(shí)鐘跨越到另一個(gè)時(shí)鐘,那么就可能發(fā)生亞穩(wěn)態(tài)。我們稱為“時(shí)鐘
    發(fā)表于 01-08 09:39 ?433次閱讀
    如何<b class='flag-5'>處理</b><b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>這些基礎(chǔ)問題