《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 信號(hào)跨時(shí)鐘域問(wèn)題分析及驗(yàn)證方法研究
信號(hào)跨時(shí)鐘域問(wèn)題分析及驗(yàn)證方法研究
2017年電子技術(shù)應(yīng)用第1期
王 菲,,張莎莎,,王 茜
中國(guó)航天科技集團(tuán)公司第九研究院第七七一研究所,陜西 西安710119
摘要: 航天用FPGA設(shè)計(jì)復(fù)雜度越來(lái)越高,,其表現(xiàn)之一就是設(shè)計(jì)中存在多個(gè)時(shí)鐘域,,當(dāng)信號(hào)從一個(gè)時(shí)鐘域進(jìn)入另一個(gè)時(shí)鐘域,即不同時(shí)鐘域之間發(fā)生數(shù)據(jù)交互時(shí),,就會(huì)帶來(lái)信號(hào)跨時(shí)鐘域產(chǎn)生的亞穩(wěn)態(tài)問(wèn)題(CDC問(wèn)題),。亞穩(wěn)態(tài)問(wèn)題雖普遍存在,但依靠傳統(tǒng)的驗(yàn)證手段即功能仿真或者時(shí)序仿真是很難定位的,,提出一種分層次,、多模式的跨時(shí)鐘域驗(yàn)證方法,為跨時(shí)鐘域問(wèn)題分析確認(rèn)提供強(qiáng)有力的參考,。
中圖分類(lèi)號(hào): TN710
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.01.011
中文引用格式: 王菲,,張莎莎,王茜. 信號(hào)跨時(shí)鐘域問(wèn)題分析及驗(yàn)證方法研究[J].電子技術(shù)應(yīng)用,,2017,,43(1):43-45,49.
英文引用格式: Wang Fei,,Zhang Shasha,,Wang Xi. Research of clock domain crossing problems and a verification method[J].Application of Electronic Technique,2017,,43(1):43-45,,49.
Research of clock domain crossing problems and a verification method
Wang Fei,Zhang Shasha,,Wang Xi
771 Institute of China Aerospace,,Xi′an 710119,China
Abstract: The FPGA design used in aerospace is becoming more and more complex, which includes the appearance of multi clock domain in design. The issue with metastability will arise when a signal traverses from one clock domain into another,。Although the metastability exists widely, it is difficult to locate the issue based on traditional verification methods, including function simulation and timing simulation. This essay will propose a hierarchical and multi-mode verification method for clock domain crossing, which provides a strong reference for analyzing clock domain crossing issue.
Key words : FPGA,;clock domain crossing;metastable,;verification method

0 引言

    近些年,,FPGA設(shè)計(jì)已由過(guò)去的譯碼,、編碼等簡(jiǎn)單電路升級(jí)為各種復(fù)雜接口電路、通訊協(xié)議甚至專(zhuān)用算法處理器的實(shí)現(xiàn),,因此,,單時(shí)鐘設(shè)計(jì)遠(yuǎn)不能滿(mǎn)足要求,多個(gè)時(shí)鐘域并存已非常普遍,。這必然帶來(lái)信號(hào)跨時(shí)鐘域問(wèn)題,,如傳輸丟失、產(chǎn)生亞穩(wěn)態(tài)導(dǎo)致功能錯(cuò)誤等,。然而在實(shí)際中,,如何發(fā)現(xiàn)跨時(shí)鐘域問(wèn)題是一個(gè)難點(diǎn),本文提出一種跨時(shí)鐘域的驗(yàn)證方法,,對(duì)日常工作中發(fā)現(xiàn)及解決跨時(shí)鐘域問(wèn)題有著重要意義,。

1 信號(hào)跨時(shí)鐘域帶來(lái)的問(wèn)題分析

    信號(hào)跨時(shí)鐘域是影響FPGA設(shè)計(jì)的可靠性、安全性的重要因素,,究其根本原因都是由于亞穩(wěn)態(tài)[1]造成,。經(jīng)過(guò)深入的分析歸納,信號(hào)跨時(shí)鐘域問(wèn)題(CDC問(wèn)題)主要分為亞穩(wěn)態(tài)的傳播,、數(shù)據(jù)丟失和跨時(shí)鐘域信號(hào)再聚合時(shí)引起功能出錯(cuò)3類(lèi),。

1.1 亞穩(wěn)態(tài)的傳播

    如圖1所示,信號(hào)A違反了觸發(fā)器的建立-保持時(shí)間,,導(dǎo)致輸出B產(chǎn)生振蕩,,并持續(xù)一段時(shí)間,所以當(dāng)clk_B的第二個(gè)有效沿到來(lái)時(shí),,B有可能穩(wěn)定到一個(gè)中間電壓,,也有可能繼續(xù)震蕩,因此就會(huì)給系統(tǒng)帶來(lái)以下的問(wèn)題:

wdz8-t1.gif

    (1)不同的扇出會(huì)把不穩(wěn)定的B判定為不同的值,,這樣就使得系統(tǒng)進(jìn)入了一個(gè)未知的狀態(tài),,導(dǎo)致某些功能失效。

    (2)造成至少一個(gè)周期的傳播延時(shí),,導(dǎo)致時(shí)序問(wèn)題,。

1.2 數(shù)據(jù)丟失

    觸發(fā)器的輸入A從clk_A時(shí)鐘域(較快時(shí)鐘域)進(jìn)入clk_B時(shí)鐘域(較慢時(shí)鐘域)時(shí),,由于穩(wěn)定的時(shí)間不夠長(zhǎng)造成沒(méi)有被clk_B時(shí)鐘域采樣到,,從而丟失正確的數(shù)據(jù),如圖2所示,。

wdz8-t2.gif

1.3 跨時(shí)鐘域信號(hào)再聚合(Re-convergence)時(shí)引起功能出錯(cuò)

    當(dāng)跨時(shí)鐘域信號(hào)再聚合時(shí)會(huì)引起電路功能錯(cuò)誤,。由于亞穩(wěn)態(tài)的影響會(huì)造成接收到的CDC信號(hào)發(fā)生不可預(yù)測(cè)且可變的延遲,這些不同延遲的信號(hào)在重新聚合時(shí)就可能造成采樣失敗,,從而導(dǎo)致功能錯(cuò)誤,。圖3為跨時(shí)鐘域信號(hào)再聚合的問(wèn)題模型,。這種設(shè)計(jì)路徑常見(jiàn)于多位控制總線(xiàn)信號(hào)的跨時(shí)鐘域傳播,跨時(shí)鐘域再聚合波形分析如圖4所示,。

wdz8-t3.gif

wdz8-t4.gif

2 跨時(shí)鐘域驗(yàn)證方法

    對(duì)于跨時(shí)鐘域驗(yàn)證而言,,目前業(yè)界并沒(méi)有統(tǒng)一的、成熟的驗(yàn)證方法,,這里主要結(jié)合多年FPGA設(shè)計(jì)驗(yàn)證經(jīng)驗(yàn),,加入對(duì)業(yè)界領(lǐng)先技術(shù)的應(yīng)用,提出一種多模式,、互補(bǔ)型的跨時(shí)鐘域驗(yàn)證方法,。該方法從不同角度、多方位,、分階段對(duì)FPGA進(jìn)行檢查,,是一種以靜態(tài)分析為主要技術(shù)手段,輔助以動(dòng)態(tài)仿真驗(yàn)證的驗(yàn)證方法,,跨時(shí)鐘域驗(yàn)證的基本流程如圖5所示,。

wdz8-t5.gif

2.1 結(jié)構(gòu)驗(yàn)證

    結(jié)構(gòu)驗(yàn)證是跨時(shí)鐘域驗(yàn)證整個(gè)流程中的主要環(huán)節(jié),它是一種以靜態(tài)分析為主要技術(shù)手段的形式驗(yàn)證方法,,通過(guò)對(duì)FPGA設(shè)計(jì)綜合后存在數(shù)據(jù)跨時(shí)鐘域傳播的路徑進(jìn)行分析,,檢查是否存在跨時(shí)鐘域問(wèn)題。

    (1)檢查是否存在同步電路

    數(shù)據(jù)跨時(shí)鐘域傳播時(shí)(無(wú)論是從快時(shí)鐘域到慢時(shí)鐘域,,或是從慢到快時(shí)鐘域),,由于兩個(gè)時(shí)鐘域互不相關(guān),均存在亞穩(wěn)態(tài)的可能性,。因此需插入同步電路模塊,。沒(méi)有同步電路的設(shè)計(jì)結(jié)構(gòu)如圖6所示。

wdz8-t6.gif

    (2)檢查同步電路的正確性

    目前對(duì)于單bit信號(hào)的同步,,主要有電平同步器,、邊沿同步器及脈沖同步器3種形式。但是無(wú)論哪種形式,,同步電路的核心為兩級(jí)寄存器同步,。下面列出幾種在FPGA設(shè)計(jì)中常見(jiàn)的無(wú)效同步電路形式,如圖7~圖11所示,。

wdz8-t7.gif

wdz8-t8.gif

wdz8-t9.gif

wdz8-t10.gif

wdz8-t11.gif

    (3)檢查是否屬于多位信號(hào)的跨時(shí)鐘域問(wèn)題

    對(duì)于多位信號(hào),,主要是以握手協(xié)議、異步fifo的交互方式來(lái)完成信號(hào)的跨時(shí)鐘域傳播,。多bit信號(hào)在跨時(shí)鐘域傳播時(shí)不能簡(jiǎn)單地采用同步每位信號(hào)來(lái)完成,。這會(huì)帶來(lái)多位數(shù)據(jù)的一致性問(wèn)題,造成目的時(shí)鐘域采樣錯(cuò)誤。錯(cuò)誤電路結(jié)構(gòu)如圖12所示,。

wdz8-t12.gif

    (4)檢查是否屬于跨時(shí)鐘域信號(hào)再聚合問(wèn)題[4]

    跨時(shí)鐘域信號(hào)再聚合應(yīng)與多位數(shù)據(jù)跨時(shí)鐘域的問(wèn)題有所區(qū)分,,問(wèn)題電路結(jié)構(gòu)如圖3所示,源時(shí)鐘域可以是一個(gè)或多個(gè)時(shí)鐘域,,不同信號(hào)經(jīng)過(guò)目的時(shí)鐘域同步后由組合邏輯再聚合,,再聚合而成的信號(hào)在使用時(shí)會(huì)對(duì)后級(jí)電路造成威脅。其與多位時(shí)鐘跨時(shí)鐘域問(wèn)題的解決辦法均為在源時(shí)鐘域的輸入端引入多位編碼方式,,即格雷編碼,。

    通過(guò)目前的驗(yàn)證情況看,以上電路結(jié)構(gòu)形式基本可以涵蓋90%以上的設(shè)計(jì)形式,。

2.2 協(xié)議檢查

    協(xié)議檢查是對(duì)結(jié)構(gòu)驗(yàn)證的有力補(bǔ)充,,可以發(fā)現(xiàn)通過(guò)電路結(jié)構(gòu)檢查無(wú)法發(fā)現(xiàn)的跨時(shí)鐘域問(wèn)題,這里的協(xié)議檢查仍然以靜態(tài)分析為主要技術(shù)手段,。協(xié)議檢查的方法是通過(guò)對(duì)上級(jí)系統(tǒng)及任務(wù)需求等方面的深入分析,,確認(rèn)問(wèn)題設(shè)計(jì)路徑上信號(hào)的輸入形式、變化快慢,、保持時(shí)間等參數(shù),,從而確定是否存在跨時(shí)鐘域問(wèn)題。

    典型的協(xié)議檢查例如數(shù)據(jù)由快時(shí)鐘域向慢時(shí)鐘域傳播的情況,。如圖13的分析可知,,當(dāng)數(shù)據(jù)由快時(shí)鐘域向慢時(shí)鐘域傳播時(shí),如果數(shù)據(jù)保持時(shí)間不夠則目的時(shí)鐘域無(wú)法采樣到數(shù)據(jù),,這種情況會(huì)造成數(shù)據(jù)丟失,。這時(shí)就需要結(jié)合信號(hào)在實(shí)際電路中約定的協(xié)議來(lái)分析判斷跨時(shí)鐘域信號(hào)在源時(shí)鐘域是如何變化的,每次變化保持的時(shí)間是多長(zhǎng),。

wdz8-t13.gif

    經(jīng)協(xié)議分析檢查之后修改電路如圖14所示,,使得源時(shí)鐘域的數(shù)據(jù)保持兩個(gè)時(shí)鐘周期從而使目的時(shí)鐘域能夠穩(wěn)定采樣,避免數(shù)據(jù)丟失的問(wèn)題,,相比圖2波形發(fā)生的變化如圖15所示,。當(dāng)然,這種修改適用于目的時(shí)鐘域的時(shí)鐘頻率小于兩倍源時(shí)鐘域的情況,。

wdz8-t14.gif

wdz8-t15.gif

2.3 CDC動(dòng)態(tài)仿真

    前面的結(jié)構(gòu)驗(yàn)證和協(xié)議檢查的驗(yàn)證方法都是靜態(tài)分析的方法,,除此之外還可以采用動(dòng)態(tài)仿真的方法對(duì)跨時(shí)鐘域問(wèn)題進(jìn)行驗(yàn)證。這里的動(dòng)態(tài)仿真與功能驗(yàn)證中的仿真有很大區(qū)別,,CDC動(dòng)態(tài)仿真主要是引入斷言的方法針對(duì)數(shù)據(jù)跨時(shí)鐘域時(shí)可能存在問(wèn)題的時(shí)序點(diǎn)進(jìn)行仿真,。CDC仿真要在前面靜態(tài)分析的基礎(chǔ)上,在已知電路結(jié)構(gòu)存在跨時(shí)鐘域問(wèn)題的前提下,,有針對(duì)性地設(shè)計(jì)斷言,,驗(yàn)證時(shí)序的正確性。

    CDC動(dòng)態(tài)仿真分為以下3個(gè)步驟:(1)提取屬性,,(2)斷言設(shè)計(jì),,(3)斷言仿真。提取屬性和斷言設(shè)計(jì)這兩步可先由工具針對(duì)常見(jiàn)的CDC設(shè)計(jì)形式自動(dòng)產(chǎn)生,,這些自動(dòng)產(chǎn)生的CDC協(xié)議檢測(cè)器在仿真環(huán)境下運(yùn)行,,最后通過(guò)調(diào)用仿真環(huán)境(testbench)檢查設(shè)計(jì)的功能是否正確。很多情況下,,對(duì)于所需驗(yàn)證的時(shí)序點(diǎn),,需要人工進(jìn)行斷言的設(shè)計(jì),這也是這個(gè)環(huán)節(jié)的難點(diǎn),。

3 總結(jié)

    本文主要對(duì)目前FPGA設(shè)計(jì)中存在的跨時(shí)鐘域問(wèn)題進(jìn)行了深入的分析總結(jié),,提出了一種多模式、互補(bǔ)型的跨時(shí)鐘域驗(yàn)證方法,。詳細(xì)講解了如何分層次,、多方位地進(jìn)行跨時(shí)鐘域驗(yàn)證以確認(rèn)設(shè)計(jì)中的亞穩(wěn)態(tài)問(wèn)題,為發(fā)現(xiàn)目前FPGA產(chǎn)品研制中的跨時(shí)鐘域問(wèn)題提供了依據(jù),,后續(xù)會(huì)對(duì)方法中的斷言設(shè)計(jì)進(jìn)行進(jìn)一步的研究,。

參考文獻(xiàn)

[1] 周偉.FPGA跨時(shí)鐘域亞穩(wěn)態(tài)研究[J].電子世界,2012(3):87-89.

[2] Mike Stein,,Paradigm Works.Crossing the abyss:asynchronous signals in a synchronous world[].EDN magazine,,2003.

[3] San Jose.Real intent introduces CDC verification for altera customers.Real Intent Inc.2008.3.



作者信息:

王  菲,張莎莎,,王  茜

(中國(guó)航天科技集團(tuán)公司第九研究院第七七一研究所,,陜西 西安710119)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。