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

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

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

FPGA中同步異步時(shí)鐘域信號的處理

FPGA設(shè)計(jì)論壇 ? 來源:博客園 ? 作者:雨航 ? 2021-09-13 09:29 ? 次閱讀

最常用的約束有IO管腳位置約束和電平幅度約束,這個(gè)很好理解。另外,就是對時(shí)鐘網(wǎng)絡(luò)約束。這個(gè)是很重要的。比如你的系統(tǒng)中,驅(qū)動(dòng)的電路的時(shí)鐘是27M的,那么你需要在約束文件中增加類似如下的約束語句

NET REF_CLK27M TNM_NET = REF_CLK27M_grp;

TIMESPEC TS_REF_CLK27M = PERIOD REF_CLK27M_grp : 37ns HIGH 50 %;

這樣的話,工具在布線的時(shí)候,就會(huì)知道這個(gè)時(shí)鐘所驅(qū)動(dòng)的所有網(wǎng)絡(luò)必須滿足至少27M速度的要求,占空比為50%。它會(huì)任意布線,就有可能出現(xiàn)信號翻轉(zhuǎn)的很慢,或者延時(shí)很長,建立時(shí)間保持時(shí)間不足,在實(shí)際中造成timing錯(cuò)誤。一般來說,十幾兆以上的時(shí)鐘網(wǎng)絡(luò)最好都加類似的約束,在時(shí)鐘上就可以了,工具會(huì)幫你把它所驅(qū)動(dòng)的所有網(wǎng)絡(luò)都加上約束的。

另外,常用的約束還有delay,skew等,具體的你可以到Xilinx網(wǎng)站上下載專門有關(guān)Constains的文檔學(xué)習(xí)一下。

我們將問題分解為2部分,來自同步時(shí)鐘域信號的處理和來自異步時(shí)鐘域信號的處理。前者要簡單許多,所以先討論前者,再討論后者。

1.同步時(shí)鐘域信號的處理

一般來說,在全同步設(shè)計(jì)中,如果信號來自同一時(shí)鐘域,各模塊的輸入不需要寄存。只要滿足建立時(shí)間,保持時(shí)間的約束,可以保證在時(shí)鐘上升沿到來時(shí),輸入信號已經(jīng)穩(wěn)定,可以采樣得到正確的值。但是如果模塊需要使用輸入信號的跳變沿(比如幀同步信號),千萬不要直接這樣哦。

always @ (posedge inputs)

begin

...

end

因?yàn)檫@個(gè)時(shí)鐘inputs很有問題。如果begin ... end語句段涉及到多個(gè)D觸發(fā)器,你無法保證這些觸發(fā)器時(shí)鐘輸入的跳變沿到達(dá)的時(shí)刻處于同一時(shí)刻(準(zhǔn)確的說是相差在一個(gè)很小的可接受的范圍)。因此,如果寫出這樣的語句,EDA工具多半會(huì)報(bào)clock skew 》 data delay,造成建立/保持時(shí)間的沖突。本人曾經(jīng)也寫出過這樣的語句,當(dāng)時(shí)是為了做分頻,受大二學(xué)的數(shù)字電路的影響,直接拿計(jì)數(shù)器的輸出做了后面模塊的時(shí)鐘。當(dāng)初用的開發(fā)工具是max+plusII,編譯也通過了,燒到板子上跑倒也能跑起來(估計(jì)是因?yàn)闀r(shí)鐘頻率較低,6M),但后來拿到QuartusII中編譯就報(bào)clock skew 》 data delay。大家可能會(huì)說分頻電路很常見的啊,分頻輸出該怎么用呢。我一直用的方法是采用邊沿檢測電路,用HDL語言描述大概是這樣:

always @ (posedge Clk)

begin

inputs_reg 《= inputs;

if (inputs_reg == 1‘b0 && inputs == 1’b1)

begin

...

end

...

end

這是上跳沿檢測的電路,下跳沿電路大家依此類推。

2.異步時(shí)鐘域信號的處理

這個(gè)問題也得分單一信號和總線信號來討論。

2.1單一信號(如控制信號)的處理

如果這個(gè)輸入信號來自異步時(shí)鐘域(比如FPGA芯片外部的輸入),一般采用同步器進(jìn)行同步。最基本的結(jié)構(gòu)是兩個(gè)緊密相連的觸發(fā)器,第一拍將輸入信號同步化,同步化后的輸出可能帶來建立/保持時(shí)間的沖突,產(chǎn)生亞穩(wěn)態(tài)。需要再寄存一拍,減少(注意是減少)亞穩(wěn)態(tài)帶來的影響。這種最基本的結(jié)構(gòu)叫做電平同步器。

如果我們需要用跳變沿而不是電平又該怎樣處理呢,還記得1里面講的邊沿檢測電路么?在電平同步器之后再加一級觸發(fā)器,用第二級觸發(fā)器的輸出和第三級觸發(fā)器的輸出來進(jìn)行操作。這種結(jié)構(gòu)叫做邊沿同步器。

always @ (posedge Clk)

begin

inputs_reg1 《= inputs;

inputs_reg2 《= inputs_reg1;

inputs_reg3 《= inputs_reg2;

if (inputs_reg2 == 1‘b1 && inputs_reg3 == 1’b0)

begin

...

end

...

end

以上兩種同步器在慢時(shí)鐘域信號同步入快時(shí)鐘域時(shí)工作的很好,但是反過來的話,可能就工作不正常了。舉一個(gè)很簡單的例子,如果被同步的信號脈沖只有一個(gè)快時(shí)鐘周期寬,且位于慢時(shí)鐘的兩個(gè)相鄰跳變沿之間,那么是采不到的。這時(shí)就需要采用脈沖同步器。這種同步器也是由3個(gè)觸發(fā)器組成,同時(shí)需要對發(fā)送信號做一些處理,具體結(jié)構(gòu)大家可以在網(wǎng)上搜。

2.2總線信號的處理

如果簡單的對異步時(shí)鐘域過來的一組信號分別用同步器的話,那么對這一組信號整體而言,亞穩(wěn)態(tài)出現(xiàn)的幾率將大大上升。基于這一觀點(diǎn),對于總線信號的處理可以有兩種方式。

如果這組信號只是順序變化的話(如存儲(chǔ)器的地址),可以將其轉(zhuǎn)換為格雷碼后再發(fā)送,由于格雷碼相鄰碼字只相差一個(gè)比特,上面說的同步器可以很好的發(fā)揮作用。

但是如果信號的變化是隨機(jī)的(如存儲(chǔ)器的數(shù)據(jù)),這種方法便失效了,這時(shí)可以采用握手的方式或者采用FIFO或DPRAM進(jìn)行緩存。RAM緩存的方式在突發(fā)數(shù)據(jù)傳輸中優(yōu)勢比較明顯,現(xiàn)在高檔一點(diǎn)的FPGA中都有不少的BlockRAM資源,且支持配置為DPRAM或FIFO,這種處理方法在通信電路中非常常用。

責(zé)任編輯:haq

聲明:本文內(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)注

    1625

    文章

    21639

    瀏覽量

    601359
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2774

    瀏覽量

    76552

原文標(biāo)題:FPGA中對異步信號的處理

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    怎么判斷同步清零和異步清零

    異步清零都是對寄存器或計(jì)數(shù)器進(jìn)行清零操作的方式,它們的主要區(qū)別在于清零信號的觸發(fā)方式。 同步清零:同步清零是指在時(shí)鐘
    的頭像 發(fā)表于 07-23 11:11 ?1700次閱讀

    異步置零和同步置零的區(qū)別在哪里

    異步置零和同步置零是數(shù)字電路設(shè)計(jì)兩種不同的置零方法。它們在實(shí)現(xiàn)方式、性能和應(yīng)用場景上有所不同。 實(shí)現(xiàn)方式: 異步置零:異步置零是指在數(shù)字電
    的頭像 發(fā)表于 07-23 11:09 ?1079次閱讀

    同步電路和異步電路怎么判斷正負(fù)極

    統(tǒng)一的時(shí)鐘信號進(jìn)行工作,各個(gè)部分的輸出與輸入之間存在固定的時(shí)序關(guān)系。同步電路通常用于數(shù)據(jù)傳輸、存儲(chǔ)器、處理器等高速電子系統(tǒng)。
    的頭像 發(fā)表于 07-22 17:37 ?329次閱讀

    同步電路和異步電路的優(yōu)缺點(diǎn)

    同步電路和異步電路是數(shù)字電路設(shè)計(jì)的兩種基本類型。它們在設(shè)計(jì)方法、性能、功耗、可靠性等方面存在顯著差異。 同步電路 定義 同步電路是指電路
    的頭像 發(fā)表于 07-22 17:35 ?1047次閱讀

    同步電路和異步電路的優(yōu)缺點(diǎn)有哪些

    同步電路和異步電路是數(shù)字電路設(shè)計(jì)的兩種基本類型,它們在設(shè)計(jì)方法、性能特點(diǎn)和應(yīng)用領(lǐng)域等方面存在顯著差異。 同步電路 定義 同步電路是指電路
    的頭像 發(fā)表于 07-22 17:01 ?928次閱讀

    FPGA同步復(fù)位和異步復(fù)位

    FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)的復(fù)位操作是設(shè)計(jì)過程不可或缺的一環(huán),它負(fù)責(zé)將電路恢復(fù)到初始狀態(tài),以確保系統(tǒng)的正確啟動(dòng)和穩(wěn)定運(yùn)行。在F
    的頭像 發(fā)表于 07-17 11:12 ?1268次閱讀

    FPGA異步信號處理方法

    FPGA(現(xiàn)場可編程門陣列)在處理異步信號時(shí),需要特別關(guān)注信號同步化、穩(wěn)定性以及潛在的亞穩(wěn)態(tài)問
    的頭像 發(fā)表于 07-17 11:10 ?1019次閱讀

    FPGA輸入的時(shí)鐘信號必須是方波么?正弦波會(huì)有影響么?

    FPGA設(shè)計(jì),時(shí)鐘信號通常需要滿足一定的要求。 首先,時(shí)鐘信號
    的頭像 發(fā)表于 01-31 11:31 ?3213次閱讀

    同步復(fù)位和異步復(fù)位到底孰優(yōu)孰劣呢?

    同步復(fù)位和異步復(fù)位到底孰優(yōu)孰劣呢? 同步復(fù)位和異步復(fù)位是兩種不同的復(fù)位方式,它們各自有優(yōu)勢和劣勢,下面將詳細(xì)介紹這兩種復(fù)位方式。 同步復(fù)位是
    的頭像 發(fā)表于 01-16 16:25 ?1596次閱讀

    異步電路時(shí)鐘同步處理方法

    異步電路時(shí)鐘同步處理方法? 時(shí)鐘同步
    的頭像 發(fā)表于 01-16 14:42 ?1052次閱讀

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

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

    FPGA設(shè)計(jì)技巧—多時(shí)鐘異步信號處理解決方案

    有一個(gè)有趣的現(xiàn)象,眾多數(shù)字設(shè)計(jì)特別是與FPGA設(shè)計(jì)相關(guān)的教科書都特別強(qiáng)調(diào)整個(gè)設(shè)計(jì)最好采用唯一的時(shí)鐘。
    的頭像 發(fā)表于 12-22 09:04 ?1413次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計(jì)技巧—多<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>和<b class='flag-5'>異步</b><b class='flag-5'>信號</b><b class='flag-5'>處理</b>解決方案

    異步信號同步電路交互的問題及其解決方法

    異步信號同步電路交互的問題及其解決方法? 異步信號同步電路的交互問題是指在使用
    的頭像 發(fā)表于 12-07 10:53 ?642次閱讀

    IC設(shè)計(jì):ram的應(yīng)用-異步時(shí)鐘位寬轉(zhuǎn)換

    在進(jìn)行模塊設(shè)計(jì)時(shí),我們經(jīng)常需要進(jìn)行數(shù)據(jù)位寬的轉(zhuǎn)換,常見的兩種轉(zhuǎn)換場景有同步時(shí)鐘位寬轉(zhuǎn)換和異步時(shí)鐘
    的頭像 發(fā)表于 11-23 16:41 ?789次閱讀
    IC設(shè)計(jì):ram的應(yīng)用-<b class='flag-5'>異步</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>域</b>位寬轉(zhuǎn)換

    什么是同步邏輯和異步邏輯?同步電路與異步電路有何區(qū)別?

    什么是同步邏輯和異步邏輯?同步電路與異步電路有何區(qū)別? 同步邏輯和異步邏輯是計(jì)算機(jī)科學(xué)
    的頭像 發(fā)表于 11-17 14:16 ?2220次閱讀