?

跨時鐘域傳遞位數據的同步方法

2020-10-12 09:20高煥琦岳亞杰高俊鋒
現代計算機 2020年24期
關鍵詞:觸發器電平脈沖

高煥琦,岳亞杰,高俊鋒

(哈爾濱理工大學軟件與微電子學院,哈爾濱150080)

0 引言

隨著微電子制造工藝技術的不斷發展,數字集成電路(Integrated Circuit,IC)的集成度也越來越高。為了提高電子產品的競爭力,降低產品的開發成本,數字集成電路芯片集成的功能也越來越多,逐漸向著系統級芯片(System on Chip,SoC)的趨勢發展[1]。系統級芯片也被稱為片上系統,它是將各種不同功能的模塊集成到一塊芯片上。從設計角度上來說,片上系統的內部結構非常復雜。為了滿足不同功能模塊的工作需求,片上系統中的時鐘信號源通常被劃分為若干個時鐘域(Clock Domain,CD)。通常情況下,功能模塊不同,它們工作的時鐘信號也不相同[2]。截至目前,采用單時鐘域的片上系統已經非常少見,通常它的內部都集成了多種時鐘域[3]。不同時鐘域之間,時鐘信號既可能是相關的,也可能是互不關聯的。如果兩種時鐘信號之間存在數據傳遞通道,那么就會存在跨時鐘域(Clock Domain Crossing,CDC)問題[4]。

如果數字信號在跨越不同時鐘信號傳遞的時候,它就會被對方時鐘域視為異步信號。如果不能很好地對這種異步信號進行處理,那么它就會產生亞穩態現象,嚴重影響電路系統的可靠性和穩定性。隨著大規模集成電路的設計越來越復雜,跨時鐘域傳遞數據信號的現象也越來越常見。因此,研究數據信號在不同時鐘域之間的傳遞問題,已經成為數字集成電路系統設計者普遍關注的熱點問題之一[5]。根據國內外的研究文獻和工程實踐經驗,保持數據同步能夠在很大程度上保證數據接收的準確性,這也是保障系統可靠性和穩定性的必要條件。

在片上系統設計中,跨時鐘域傳遞位數據的情況最普遍,這也是處理多數據信號跨時鐘域傳遞的技術基礎。因此,本文以位信號為研究對象,探討跨時鐘域傳遞位數據問題的根源。在此基礎上,根據實際應用的不同情況,探索各種可行的解決方案。

1 跨時鐘域傳遞數據的電路模型

在數字集成電路系統中,無論在片上系統內部模塊之間,還是在片上系統與外部設備之間,往往都需要進行通訊[6]。模塊A 向模塊B 傳送數字信號A,同時接收來自模塊B 的數字信號B,如圖1 所示。在大多數情況下,模塊A 和模塊B 屬于不同功能的模塊,且工作在不同的時鐘域。

眾所周知,數字信號的存儲和傳遞都是由觸發器來完成。無論數字信號在兩個模塊之間的傳遞過程有多么復雜,它最終都是通過兩個觸發器來完成數據交接。因此,跨時鐘域傳遞數據的問題可以通過兩個觸發器的電路模型來描述,如圖2 所示。在本質上,研究解決跨時鐘域傳遞數據的問題就轉化為解決兩個觸發器在不同時鐘信號下傳遞數據的問題。

圖2 跨時鐘域數據傳遞的電路模型

顯而易見,如果觸發器A 和觸發器B 的時鐘都來自相同的時鐘源或同一個時鐘域,那么就不存在跨時鐘域傳遞數據的問題。因此,跨時鐘域傳遞數據的問題根源是時鐘信號之間存在顯著差異。根據時鐘差異的不同特點,跨時鐘域的問題又可近一步劃分為同步跨時鐘域(Synchronous Clock Domain Crossings,SCDC)和異步跨時鐘域(Asynchronous Clock Domain Crossings,ACDC)兩種情況。

所謂同步跨時鐘域,它是指觸發器的時鐘信號之間存在某種同步關系,即兩者時鐘信號之間是相關的,存在著固定的頻率和相位關系。例如,一個時鐘與它自身的分頻時鐘就具有固定的相位關系,在它們之間傳遞數據就屬于同步跨時鐘域的情況。與之對應,如果觸發器的時鐘信號之間沒有必然的聯系,那么就無法預知兩者之間的關系,在它們之間傳遞數據就屬于異步跨時鐘域的情況。對于絕大多數集成電路系統設計而言,異步跨時鐘域的情況非常普遍。因此,異步跨時鐘域數據傳遞的處理方法是本文的重點研究內容。

2 跨時鐘域傳遞數據問題的提出

在圖2 的電路模型中,假定Aclk 與Bclk 來自不同時鐘域,如果觸發器A 輸出的信號data 到達觸發器B的時間沒有滿足觸發器B 的時序要求,例如建立時間(Setup Time,Tsu)或保持時間 Hold Time,Th),那么輸出信號Bdata 就會出現一種界于邏輯1 和邏輯0 之間的狀態[7]。這種狀態就被稱為亞穩態,亞穩態現象如圖3 所示。導致亞穩態現象發生的根本原因是觸發器B不能對輸入數據data 進行有效采樣。換句話說,當數據data 尚未保持穩定時,觸發器B 采樣的值是無效的。

圖3 亞穩態現象

亞穩態現象發生的幾率決定了數字集成電路系統的可靠性,它可以通過平均無故障時間(Mean Time Between Failures,MTBF)來評估。MTBF 表示觸發器采樣失敗的時間間隔,它與系統頻率和器件速度密切相關,它的計算方法如公式(1)所示。

其中,fMET是觸發器能夠在亞穩態輸出而不會引起故障的最長時間,即有效的亞穩態最大分辨時間;fclk是觸發器的時鐘頻率;fdata是輸入數據的變化頻率;C1和C2是與觸發器相關的具體參數,它們通常是由觸發器電氣特性決定的常數,用于表征觸發器翻轉速度的快慢。

由此可見,亞穩態現象是在數字集成電路系統設計中無法避免的問題,它是由于觸發器的固有屬性造成的結果。如果設計方案的MTBF 值很大,那么該方案就被認為是可行的,設計的電路系統在實際工作中能夠正常運行。否則,設計方案就會因為存在嚴重的亞穩態問題,而導致系統工作不穩定,甚至可能無法正常工作。

3 跨時鐘域傳遞數據的處理方法

為了盡可能減少發生亞穩態的可能性,研究跨時鐘域數據傳遞問題的解決方法就顯得尤為重要。對某一個時鐘域來說,它在操作輸入的異步數據信號之前,必須首先對異步信號進行同步處理,使異步信號變成本時鐘域的同步信號,然后再對數據進行后續的功能處理。這種處理方法是集成電路設計中經常采用的一種同步處理技術,它能夠在很大程度上減少亞穩態的傳播,增強數字集成電路系統的可靠性[8-10]??鐣r鐘域傳遞數據信號的問題非常復雜,因此數據信號同步處理的方法也不盡相同。根據跨時鐘域傳遞數據的方向,同步處理方法大致分為單向同步和雙向同步[11]。

3.1 單向同步的處理方法

在某個時鐘域電路中,如果該電路僅僅對外部輸入的異步數據信號進行同步處理,那么這種情況就屬于單向同步。單向同步的處理方法是一種最基本的同步處理技術,它主要包含了電平同步法、邊沿同步法和脈沖同步法三種方法。

(1)電平同步法

電平同步法也被稱為雙鎖存器法,它的電路原理如圖4 所示。在時鐘域A 中,數據信號Adata 經過最后一級觸發器輸出數據信號data。數據信號data 直接進入時鐘域B,中間不能存在任何組合邏輯電路。接著,在時鐘域B 中連續使用兩個觸發器來鎖存data 信號,并將同步后的數據信號Bdata 傳遞給時鐘域B 中的后續電路。

圖4 電平同步法

使用Verilog 硬件描述語言來實現電平同步法的關鍵代碼如下所示:

當某個數據信號從慢時鐘域電路向快時鐘域電路傳遞時,它的電路時序仿真如圖5 所示。從本質上看,電平同步法并不能完全消除亞穩態,而是減少了亞穩態的傳播。理論研究表明:這種同步方法可以將亞穩態的出現幾率降低到很小,使得MTBF 盡可能大,從而提高了系統的可靠性。

圖5 電路時序仿真圖

當從快時鐘域電路傳遞數據信號到慢時鐘域電路時,由于快時鐘域中信號Adata 的寬度可能小于慢時鐘域電路的一個采樣周期,從而導致數據信號Adata不能被來自慢時鐘域電路的時鐘有效采樣。如果快時鐘域電路的時鐘頻率是慢時鐘域電路的時鐘頻率N 倍時,那么快時鐘域電路輸出信號的寬度至少在快時鐘域中保持N 個時鐘周期。

(2)邊沿同步法

在某些實際應用中,同步輸出信號Bdata 并不一定與輸入信號Adata 在波形上保持一致,而是一個與數據信號Adata 變化保持同步的脈沖信號。在這種情況下,同步處理方法通常采用邊沿同步法,其中上升沿同步的電路原理如圖6 所示。

圖6 邊沿同步法

從圖中可以看出,邊沿同步法是在電平同步法基礎上,對后續時鐘域電路增加了一部分邊沿處理電路。每當Adata 出現上升沿的時候,Bdata 就輸出一個同步脈沖信號。使用Verilog 硬件描述語言來實現邊沿同步法的關鍵代碼如下所示:

上升沿同步電路的時序仿真如圖7 所示,從仿真波形上可以看出,邊沿同步法也通常適用于從慢時鐘域電路向快時鐘域電路傳遞數據信號的情況。在輸出信號上,邊沿同步法輸出的是同步脈沖信號,而電平同步法出的是同步電平信號。

圖7 電路時序仿真圖

(3)脈沖同步法

從前面的分析可以得知:從快時鐘域電路傳遞數據信號到慢時鐘域電路的時候,直接使用電平同步法和邊沿同步法就不能滿足同步處理的前提條件,可能存在采樣失效的問題。為了解決這種問題,必須保證前級時鐘域電路輸出的數據信號必須具有足夠長的保持時間,即至少在后級時鐘域電路中保持一個時鐘周期。在這種情況下,通常采用脈沖同步法,它的電路原理如圖8 所示。

圖8 脈沖同步法

從圖中可以看出,脈沖同步法是在邊沿同步法基礎上,對前面時鐘域電路增加了一部分邊沿處理電路。脈沖同步法首先將前級時鐘域電路的觸發器輸入數據Adata 由電平信號處理成一個時鐘周期的脈沖信號,接著對脈沖信號進行翻轉鎖存,輸出數據Toogle 具有足夠長的數據保持時間,使之能夠被后續時鐘域電路中的時鐘Bclk 進行有效采樣。因此,脈沖同步法并不關心兩個時鐘域之間的關系,它可以適用于任何時鐘域之間的數據傳遞。使用Verilog 硬件描述語言來實現脈沖同步法的關鍵代碼如下所示:

脈沖同步電路的時序仿真如圖9 所示,從時序分析可以得出:跨時鐘域信號Adata 相鄰兩個脈沖信號的間隔至少為后續時鐘域電路的兩個時鐘周期以上。同步輸出數據信號Bdata 也是脈沖信號,它與Adata 的變化保持一致。

圖9 電路時序仿真圖

3.2 雙向同步處理方法

所謂雙向同步是指一個時鐘域電路不僅對來自異步時鐘域的數據信號進行同步處理,還要向原時鐘域返回同步數據信號。據反饋信號的類型,雙向同步方法主要分為信號同步法和握手同步法兩種類型。從本質上說,雙向同步處理方法是建立在單向同步方法的基礎上。

(1)信號同步法

在某些應用中,數據傳遞之前通常要判斷異步時鐘域電路反饋的狀態標志。只有得到異步時鐘域電路的允許,它才會對數據進行同步處理。在同步數據輸出之前,向原時鐘域返回數據當前接收狀態的標識。這種情況通常采用信號同步法,信號同步法的典型應用如圖10 所示。

圖10 信號同步法的功能圖

使用Verilog 硬件描述語言來實現信號同步法的關鍵代碼如下所示:

從功能圖和實現代碼可以分析出:時鐘域A 首先鎖存了Adata 和Alag 的異或值,然后再將它輸出到時鐘域B 進行同步處理。在同步處理過程中,它采用了脈沖同步法。接著時鐘域B 又將同步后的數據重新返回到時鐘域A 中,同時設置對應的狀態標識Aflag。在返回狀態標志時,它采用了邊沿同步法,返回一個脈沖信號Aflag。

(2)握手同步法

雖然信號同步法能夠保證時鐘域A 傳遞的數據能夠被時鐘域B 正確采樣或有效接收,但是如果時鐘域B 的功能處理電路比較復雜,可能出現以前接收的數據還沒有被完全處理,而即將處理新數據的情況。在這種情況下,通常采用握手同步法,它的典型應用如圖11 所示。

圖11 握手同步法的功能圖

使用Verilog 硬件描述語言來實現握手同步法的關鍵代碼如下所示:

首先,當標志信號Aflag 為低電平時,時鐘域A 聲明它的請求信號并鎖定Aflag 為高電平。接著時鐘域B 檢測到該請求信號有效后,聲明它的響應信號Bstart,并鎖存Bflag 為高電平。當時鐘域B 電路完成后續的功能處理后,返回完成狀態標識Bend,同時清除Bflag 的鎖存標志。Bend 被時鐘域A 同步處理為Aend,同時清零Aflag。握手同步法的關鍵代碼如下所示,其中Astart 和Bend 都必須是各自時鐘域中的脈沖信號。

4 結語

在大規模集成電路設計中,異步電路之間的數據通信是一個設計重點和難點問題。針對不同的應用場合,選擇適當的同步方法不僅能有效減少亞穩態問題的傳播,還能顯著降低產品設計成本。本文以位信號為研究對象,在前人研究的基礎上,總結歸納了跨時鐘域傳遞位數據問題的解決方法,即對跨時鐘域傳遞數據進行同步處理。根據跨時鐘域傳遞數據的方向,同步處理方法大致分為單向同步和雙向同步。

電平同步法、邊沿同步法和脈沖同步法是三種基礎的單向同步處理方法。電平同步法連續使用兩級觸發器鎖存跨時鐘域的數據信號,從而實現數據同步。使用這種同步方法的前提條件是輸出數據的時鐘域要比接收數據的時鐘域更快的時鐘頻率。電平同步法可以降低亞穩態的出現機率,增大MTBF 的數值,從而提高了系統的穩定性和可靠性。邊沿同步法是以電平同步法為核心,通過增加部分后級電路來實現輸出脈沖信號與原數據信號在波形變化上保持一致。為了克服電平同步法的使用限制,脈沖同步法在邊沿同步法的基礎上,通過增加部分前級電路來鎖存輸入的脈沖信號,從而使它可以適用于任何時鐘域之間的數據傳遞。

信號同步法和握手同步法是兩種具有代表性的雙向同步方法。信號同步法僅僅關心后續時鐘域電路是否接收到發送的數據,而并不理會后續時鐘域電路能否及時處理這些數據。為了保證數據傳遞的準確性和可靠性,握手同步法在信號同步法的基礎上,通過增加處理狀態標志來判斷是否繼續發送新數據。

猜你喜歡
觸發器電平脈沖
考慮死區電壓矢量的三電平變換器模型預測控制
基于非因果濾波和零點法的近斷層脈沖型地震動識別方法
三電平PWM整流器下的地鐵牽引供電系統探討
配置觸發器有條件啟動Windows服務
基于Multisim14.0的雙D觸發器應用與仿真
觸發器在酒店管理系統中的應用
基于直流側電壓不均衡的CHB多電平逆變器SHEPWM控制技術
大射電
基于脈沖反射法電纜故障定位脈沖源的設計
基于電路原理的觸發器波形分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合