摘 要
隨著科學(xué)技術(shù)的發(fā)展,在FPGA設(shè)計中多時鐘設(shè)計是一個經(jīng)常遇到而且因為功能的需要無法避免問題。在不同時鐘域之間傳輸數(shù)據(jù)或者控制信號,如果對其中出現(xiàn)的特殊情況估計不足,將會對設(shè)計造成災(zāi)難性的后果。因此,設(shè)計人員在設(shè)計電路時必須加入相應(yīng)的同步機制,確保信號在跨時鐘域傳輸時能夠可靠進行。本文從觸發(fā)器時序理論基礎(chǔ)為出發(fā)點,分析研究數(shù)字化電路設(shè)計中跨時鐘域傳輸信號時亞穩(wěn)態(tài)現(xiàn)象產(chǎn)生的原因以及危害,然后分析和研究了解決跨時鐘域傳輸過程中遇到的各種同步技術(shù),分析和比較在不同場合的應(yīng)用以及各自的優(yōu)缺點。
【關(guān)鍵詞】FPGA 跨時鐘域 亞穩(wěn)態(tài)
FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程期間的基礎(chǔ)上進一步發(fā)展起來的一種可編程門陣列。它是作為專用集成電路(ASIC)領(lǐng)用中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程期間門電路數(shù)目有限的缺點。
隨著計算機硬件以及電子技術(shù)飛速發(fā)展,F(xiàn)PGA設(shè)計中需要用到的邏輯門數(shù)目急速增長,其中難免會遇到亞穩(wěn)態(tài)以及電路中存在毛刺的現(xiàn)象,本文在通過深入分析研究,現(xiàn)將在FPGA設(shè)計中經(jīng)常會遇到和用到的方法進行講述。
1 應(yīng)用領(lǐng)域
在多時鐘設(shè)計中,跨時鐘域問題總是當(dāng)數(shù)據(jù)在時鐘的驅(qū)動下由一個觸發(fā)器傳送到另一個觸發(fā)器的時候產(chǎn)生,如圖1所示。
2 問題的定義
亞穩(wěn)態(tài)、毛刺、多扇出和重新收斂在異步設(shè)計中很有可能出現(xiàn),他們有可能使整個設(shè)計進入不穩(wěn)定狀態(tài),甚至最終會引起功能性錯誤。
亞穩(wěn)態(tài)現(xiàn)象:數(shù)字信號通過異步時鐘域時,如果時鐘信號不能滿足觸發(fā)器的建立時間或保持時間,此時很可能產(chǎn)生亞穩(wěn)態(tài)現(xiàn)象。
毛刺現(xiàn)象:同步邏輯電路中產(chǎn)生毛刺現(xiàn)象主要取決于數(shù)字信號傳播時延,這些毛刺有可能會被成功鎖存,也有可能導(dǎo)致錯誤脈沖在同步裝置中輸出。
多扇出現(xiàn)象:在同步邏輯電路中,由于不同的傳播延時,會產(chǎn)生不同值得同步邏輯輸出。
信號重匯聚:重匯聚信號當(dāng)經(jīng)過同步之后可能導(dǎo)致功能性錯誤。
3 解決方式
這部分主要介紹幾種正確處理跨時鐘域邏輯電路設(shè)計方式,這些設(shè)計方式可以保持?jǐn)?shù)據(jù)在跨時鐘域傳輸時的穩(wěn)定性。
3.1 多同步設(shè)計
對于有1bit跨時鐘域信號,通常的做法是使用兩個觸發(fā)器去然后再通往目的時鐘域。但是其前提條件是信號從源時鐘域通往目的時鐘域時必須有足夠的保持時間以供目的時鐘域采樣,即時鐘A的頻率應(yīng)該低于時鐘B的頻率。
當(dāng)我們使用兩個觸發(fā)器進行同步設(shè)計時設(shè)計者需要保證設(shè)計的CDC路徑中沒有組合邏輯,但是反相器和緩存器除外。否則毛刺現(xiàn)象和多扇出現(xiàn)象便會出現(xiàn)。
3.2 多結(jié)構(gòu)同步設(shè)計
對于多位信號在不同的時鐘域之間傳輸,多路復(fù)用設(shè)計可以保持跨時鐘域傳輸時的正確性,如下圖所示。多路復(fù)用設(shè)計可以適用于如下的設(shè)計中,一組數(shù)據(jù)需要從一個時鐘域傳輸?shù)搅硗庖粋€時鐘域;當(dāng)斷言時,有標(biāo)記的表明數(shù)據(jù)信號穩(wěn)定的一組信號。
3.3 握手設(shè)計
握手設(shè)計是基于以下協(xié)議進行設(shè)計的:源時鐘域向目的時鐘域發(fā)出請求,而且該請求信號一直保持著,直到源時鐘域接受到目的時鐘域的返回信號;目的時鐘域接收到請求信號之后,連續(xù)不斷地發(fā)送確認(rèn)信號,直到其接收到源時鐘域是重復(fù)斷言的。握手機制可以設(shè)計為簡單的反饋同步器,也可以設(shè)計為全握手機制或者半握手機制。
3.3.1 反饋同步設(shè)計
對于圖2所示,使用的是反饋同步設(shè)計實現(xiàn)的邏輯電路。對于該電路來講,時鐘A和時鐘B之間的頻率差值是沒有極限要求的,時鐘A的頻率可以比時鐘B的頻率低,也可以比時鐘B的頻率高。然而該電路使用的是信號A由一個時鐘周期組成,而且從當(dāng)前脈沖到下一個脈沖的時間間隔要大于兩倍的時鐘A和兩倍的時鐘B的時間之和。
3.3.2 請求-應(yīng)答設(shè)計
請求和回答傳輸方式在發(fā)送信號Tx和接收信號Rx之間需要雙重同步,而且數(shù)據(jù)的保持時間必須保持到發(fā)送信號Tx收到確認(rèn)無效之后,如圖3所示。
3.4 異步FIFO同步設(shè)計
當(dāng)有突發(fā)量數(shù)據(jù)在兩個時鐘域之間傳輸時,F(xiàn)IFO同步器是最常用的一種解決方案。如下圖,是使用FIFO實現(xiàn)的同步器示意圖。它包含雙端口RAM,讀寫控制模塊以及兩個同步觸發(fā)器。在使用FIFO實現(xiàn)同步時最關(guān)鍵的問題在于FIFO狀態(tài)信號的形成,包括滿信號、半滿信號、空信號以及半空信號。通常情況下,讀寫指針使用格雷編碼,他們可以使用兩個同步觸發(fā)器來保證同步的正確性,如圖4所示。
2n隊列FIFO是異步FIFO典型例子,它的深度是2n,是一個比較小的FIFO,根據(jù)設(shè)計的需要,n可以賦予任何的正整數(shù)值。理論上來講,2n隊列FIFO可以穩(wěn)定的傳輸信號,即使源時鐘頻率是目的時鐘頻率的n倍。
參考文獻
[1]王利祥,肖鐵軍.邊標(biāo)志算法的改進與硬件實現(xiàn)[J].計算機工程與設(shè)計,2014(08):2817-2821.
[2]孫曉東.FPGA毛刺產(chǎn)生的原因及其抑制放法[J].電腦編程技巧與維護,2010(05).
作者單位
河南護理職業(yè)學(xué)院 河南省安陽市 455000endprint