關(guān)于FPGA中的亞穩(wěn)態(tài)現(xiàn)象_第1頁(yè)
關(guān)于FPGA中的亞穩(wěn)態(tài)現(xiàn)象_第2頁(yè)
關(guān)于FPGA中的亞穩(wěn)態(tài)現(xiàn)象_第3頁(yè)
關(guān)于FPGA中的亞穩(wěn)態(tài)現(xiàn)象_第4頁(yè)
關(guān)于FPGA中的亞穩(wěn)態(tài)現(xiàn)象_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

VIP免費(fèi)下載

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE2亞穩(wěn)態(tài)及在FPGA中處理方法PAGE4第一章緒論第一章緒論1.1論文產(chǎn)生的背景對(duì)于研發(fā)人員來(lái)說(shuō),可靠性是必須保證的設(shè)計(jì)目標(biāo)之一。為了驗(yàn)證系統(tǒng)的可靠性,產(chǎn)品在出廠前都會(huì)進(jìn)行大量的整機(jī)測(cè)試,包括常溫測(cè)試、高低溫測(cè)試直到最終的外場(chǎng)測(cè)試,這些測(cè)試需要耗費(fèi)大量的人力和物力。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),通常這個(gè)階段出現(xiàn)的問(wèn)題也是最頭疼的,因?yàn)槠渲泻芏鄬儆谂及l(fā)性故障,難以復(fù)現(xiàn)。比如芯片上電初始化配置經(jīng)常失敗,或者正常運(yùn)行的系統(tǒng)突然發(fā)生復(fù)位,或者網(wǎng)口突然發(fā)生阻塞,或者常溫下的通過(guò)的指標(biāo),在進(jìn)行高低溫實(shí)驗(yàn)的時(shí)候出現(xiàn)了惡化。整機(jī)測(cè)試不同于平時(shí)研發(fā)的單板測(cè)試,測(cè)試手段受到很多限制。比如由于單板裝入了機(jī)殼,就不能使用JTAG口進(jìn)行實(shí)時(shí)監(jiān)測(cè),也不能使用示波器排查。但是如果在開(kāi)發(fā)初期,設(shè)計(jì)者能夠?qū)ο到y(tǒng)的各個(gè)環(huán)節(jié)進(jìn)行認(rèn)真的評(píng)估,充分考慮了可靠性問(wèn)題,那么在面對(duì)測(cè)試階段層出不窮的故障時(shí)便能輕松一些。關(guān)于可靠性問(wèn)題,幾乎所有的研究資料都推薦使用同步設(shè)計(jì)解決,因?yàn)橥皆O(shè)計(jì)可以保證時(shí)鐘觸發(fā)沿避開(kāi)輸入數(shù)據(jù)發(fā)生變化的區(qū)域,這也就避免了不穩(wěn)定采樣。的確,實(shí)際中復(fù)雜邏輯電路均采用同步設(shè)計(jì),F(xiàn)PGA廠家也只對(duì)客戶的同步設(shè)計(jì)給予技術(shù)支持。但是同步設(shè)計(jì)并非不需要考慮異步問(wèn)題,因?yàn)榻^大多數(shù)的設(shè)計(jì)都需要與外界通信,比如某項(xiàng)目中的FPGA的外圍設(shè)備包括CPLD、CPU、DSP和大量的射頻芯片,這些外圍器件的工作時(shí)鐘與FPGA的工作時(shí)鐘沒(méi)有任何關(guān)系。因此,每次FPGA與這些外圍設(shè)備通信都面臨著失敗的風(fēng)險(xiǎn),如何降低通信故障率是設(shè)計(jì)中的一個(gè)難點(diǎn)。本文將圍繞異步信號(hào)對(duì)同步系統(tǒng)的影響進(jìn)行詳細(xì)的理論分析,從數(shù)字電路的結(jié)構(gòu)出發(fā)討論亞穩(wěn)態(tài)發(fā)生的根源,并結(jié)合FPGA實(shí)際設(shè)計(jì)經(jīng)驗(yàn)介紹幾種解決方法。1.2發(fā)展歷史輸入數(shù)據(jù)與采樣時(shí)鐘發(fā)生沿打沿(marginaltrigger)的情況,雙穩(wěn)態(tài)電路不能在規(guī)定的時(shí)間(由廠家定義)進(jìn)入穩(wěn)態(tài)的現(xiàn)象稱為亞穩(wěn)態(tài)。一旦雙穩(wěn)態(tài)電路進(jìn)入亞穩(wěn)態(tài),那么在亞穩(wěn)態(tài)停留的時(shí)間將不可預(yù)知。在這段時(shí)間里,雙穩(wěn)態(tài)電路輸出的電壓處于非法的邏輯電平區(qū)間,具體的電壓值無(wú)法預(yù)測(cè),輸出還可能發(fā)生振蕩。此時(shí)如果兩個(gè)扇出對(duì)亞穩(wěn)態(tài)的輸出信號(hào)進(jìn)行采樣,由于扇出個(gè)體間及兩條信號(hào)線延遲的差異,不能保證兩個(gè)扇出能夠最終將其識(shí)別為相同的邏輯值。因此,處于亞穩(wěn)態(tài)的系統(tǒng)很容易發(fā)生功能故障[1]。從數(shù)字電路發(fā)展初期,人們就開(kāi)始廣泛的研究亞穩(wěn)態(tài)。剛開(kāi)始時(shí)人們重點(diǎn)關(guān)注電路發(fā)生亞穩(wěn)態(tài)的現(xiàn)象,提出了一些經(jīng)驗(yàn)數(shù)據(jù)[2,3,4]和抽象理論[5,6]以及亞穩(wěn)態(tài)的理論和經(jīng)驗(yàn)?zāi)P蚚7,8]。后來(lái)通過(guò)這些模型的研究,得到了由亞穩(wěn)態(tài)引起故障的概率[9,10]。利用同樣的方法,雙穩(wěn)態(tài)電路的研究得到了極大發(fā)展:出現(xiàn)了測(cè)量亞穩(wěn)態(tài)參數(shù)的方法[11,12,13],設(shè)計(jì)出了檢測(cè)亞穩(wěn)態(tài)現(xiàn)象的電路[14,15]和克服亞穩(wěn)態(tài)的同步器[16,17,18,19]等等。另一方面,微電子的飛速發(fā)展將亞穩(wěn)態(tài)的研究推到了更加重要的位置。事實(shí)上,因?yàn)橄到y(tǒng)復(fù)雜度的快速提高,出現(xiàn)沿打沿的概率變得越來(lái)越大,所以時(shí)序問(wèn)題變得越來(lái)越重要。系統(tǒng)工作頻率的提高使得留給器件從亞穩(wěn)態(tài)恢復(fù)到穩(wěn)態(tài)的時(shí)間變短。這些因素使得在FPGA設(shè)計(jì)中越來(lái)越重視亞穩(wěn)態(tài),大量的研究表明亞穩(wěn)態(tài)就是雙穩(wěn)態(tài)電路的模擬特性本質(zhì)的表現(xiàn)。會(huì)發(fā)生亞穩(wěn)態(tài)的電路很多,包括常用的AD、存儲(chǔ)器和總線控制器等等。不同的系統(tǒng)對(duì)故障率的要求也不同,比如語(yǔ)音通信中,由于人耳朵聽(tīng)覺(jué)特性,語(yǔ)音信號(hào)的誤碼率可以相對(duì)較高。但是對(duì)于其他數(shù)字處理領(lǐng)域,就會(huì)要求相對(duì)較低的誤碼率。在數(shù)字電路中,最容易出現(xiàn)問(wèn)題的就是總線控制器。圖1.1所示為一個(gè)外界異步信號(hào)與處理器通信的總線控制器的系統(tǒng)結(jié)構(gòu)。外界的異步信號(hào)經(jīng)過(guò)同步器同步后進(jìn)入總線控制器。如果異步信號(hào)的頻率較低,比如鍵盤(pán)輸入,那么系統(tǒng)的故障率(由MTBF衡量)也會(huì)相對(duì)較低。然而,如果外界異步信號(hào)來(lái)自高速I(mǎi)C,那么這個(gè)系統(tǒng)的故障率就會(huì)相應(yīng)變高。圖1.1一個(gè)與處理器通信的總線控制器結(jié)構(gòu)當(dāng)今的FPGA設(shè)計(jì)人員有許多工具軟件幫助完成百萬(wàn)門(mén)級(jí)的電路,但是這些工具并不能解決異步信號(hào)的同步問(wèn)題,這就要求設(shè)計(jì)者了解提高可靠性的技術(shù),減小跨時(shí)鐘域時(shí)的故障率。對(duì)于觸發(fā)器來(lái)說(shuō),在時(shí)鐘觸發(fā)沿附近的一個(gè)小的時(shí)間窗口內(nèi),輸入信號(hào)應(yīng)當(dāng)保持穩(wěn)定,其中時(shí)間窗口的寬度由廠家決定。FPGA生產(chǎn)廠家對(duì)其產(chǎn)品的可靠性負(fù)責(zé),他們使用MTBF(meantimebetweenfailure平均無(wú)故障時(shí)間)來(lái)描述發(fā)生亞穩(wěn)態(tài)的概率。每個(gè)廠家都要求輸入信號(hào)必須滿足器件的建立時(shí)間和保持時(shí)間。建立時(shí)間指在時(shí)鐘觸發(fā)沿到來(lái)前輸入信號(hào)必須保持穩(wěn)定的時(shí)間,保持時(shí)間指時(shí)鐘觸發(fā)沿到來(lái)后輸入信號(hào)必須保持穩(wěn)定的時(shí)間。這些參數(shù)指標(biāo)通常與工作電壓,工作溫度,信號(hào)質(zhì)量和工藝有關(guān)。如果輸入數(shù)據(jù)滿足這些參數(shù)指標(biāo),那么器件發(fā)生故障的概率就微乎其微。1.3本文的主要工作及內(nèi)容安排本文主要討論了數(shù)字電路設(shè)計(jì)中,尤其是FPGA的設(shè)計(jì)中遇到的亞穩(wěn)態(tài)的問(wèn)題。文章從數(shù)字電路的原理以及數(shù)字電路的基本組成單元的結(jié)構(gòu)出發(fā),研究了亞穩(wěn)態(tài)是如何發(fā)生的,并從亞穩(wěn)態(tài)的統(tǒng)計(jì)特性出發(fā)研究了對(duì)亞穩(wěn)態(tài)的計(jì)算及度量方法,最后結(jié)合具體實(shí)例重點(diǎn)討論了對(duì)亞穩(wěn)態(tài)的各種處理方法。本文的主要工作內(nèi)容如下:第一章為緒論,簡(jiǎn)單介紹了亞穩(wěn)態(tài)的發(fā)生和危害以及對(duì)亞穩(wěn)態(tài)的研究的重要性,并簡(jiǎn)述了亞穩(wěn)態(tài)的研究在國(guó)內(nèi)外的發(fā)展情況。第二章主要闡述了亞穩(wěn)態(tài)發(fā)生的根源,介紹了亞穩(wěn)態(tài)的具體含義,從數(shù)字電路的模擬特性,數(shù)字電路的基本組成單元RS鎖存器和D觸發(fā)器的結(jié)構(gòu)出發(fā),從根源上討論了亞穩(wěn)態(tài)的發(fā)生。第三章從觸發(fā)器的響應(yīng)曲線、亞穩(wěn)態(tài)窗及平均無(wú)故障時(shí)間三方面(統(tǒng)計(jì)學(xué)的角度)出發(fā)詳細(xì)討論了對(duì)亞穩(wěn)態(tài)的計(jì)算及度量方法。第四章是文章的重點(diǎn),從四個(gè)方面即兩級(jí)觸發(fā)器級(jí)聯(lián)、握手協(xié)議、開(kāi)環(huán)控制、及雙口RAM出發(fā),結(jié)合具體實(shí)例詳細(xì)介紹了實(shí)際中處理亞穩(wěn)態(tài)的方法。

PAGE8第二章亞穩(wěn)態(tài)發(fā)生的根源第二章亞穩(wěn)態(tài)發(fā)生的根源2.1亞穩(wěn)態(tài)概述對(duì)于數(shù)字電路設(shè)計(jì)者來(lái)說(shuō),設(shè)計(jì)的可靠性是極其重要的。而對(duì)于觸發(fā)器來(lái)說(shuō),只有滿足特定的時(shí)序關(guān)系才能保證電路可靠。如果不滿足這個(gè)關(guān)系,就可能發(fā)生亞穩(wěn)態(tài)。而亞穩(wěn)態(tài)意味著輸出信號(hào)不能在預(yù)定的時(shí)間內(nèi)進(jìn)入已知的狀態(tài),也就是說(shuō)器件的傳播延遲超過(guò)了額定值。當(dāng)發(fā)生亞穩(wěn)態(tài)后,即使最終輸出穩(wěn)定下來(lái),設(shè)計(jì)者也不能肯定輸出的邏輯值一定正確。在輸出信號(hào)從亞穩(wěn)態(tài)到穩(wěn)態(tài)的變化過(guò)程中,輸出信號(hào)也許長(zhǎng)期游離于非法的邏輯電平值,也可能發(fā)生振蕩,不論何種情況,對(duì)于下一級(jí)門(mén)電路這都將是一場(chǎng)災(zāi)難。在FPGA中,時(shí)鐘域是個(gè)很重要的概念,幾乎所有亞穩(wěn)態(tài)的發(fā)生都是由于跨時(shí)鐘域的問(wèn)題所引起的。要想理解跨時(shí)鐘域所引發(fā)的故障,首先要了解時(shí)鐘域,以及同步信號(hào)、異步信號(hào)的概念。所謂時(shí)鐘域,是指在FPGA內(nèi)部由單一時(shí)鐘或者由多個(gè)但是相位恒定的時(shí)鐘控制的區(qū)域。一個(gè)時(shí)鐘和其派生時(shí)鐘(通過(guò)PLL產(chǎn)生)屬于同一個(gè)時(shí)鐘域,反轉(zhuǎn)時(shí)鐘也屬于同一個(gè)時(shí)鐘域。如果時(shí)鐘之間的基準(zhǔn)不同,比如來(lái)自不同的晶振,即使標(biāo)稱頻率相同(通過(guò)頻率計(jì)能看到晶振的頻率漂移),也屬于不同的時(shí)鐘域。簡(jiǎn)單的講,同步信號(hào)是指屬于同一個(gè)時(shí)鐘域的信號(hào),異步信號(hào)就是指屬于不同的時(shí)鐘域的信號(hào)。也可以這樣解釋,同步信號(hào)是指信號(hào)與采樣時(shí)鐘之間具有穩(wěn)定的相位關(guān)系,異步信號(hào)是指信號(hào)與采樣時(shí)鐘之間沒(méi)有穩(wěn)定的相位關(guān)系。任何異步信號(hào)對(duì)于本地時(shí)鐘域系統(tǒng)都意味著一個(gè)不穩(wěn)定的源,因?yàn)榭偸谴嬖谶@種可能,時(shí)鐘會(huì)在異步信號(hào)變化的時(shí)候進(jìn)行了采樣。也就是說(shuō),因?yàn)楫惒叫盘?hào)會(huì)在相對(duì)于時(shí)鐘觸發(fā)沿的任何位置到達(dá),所以有這種可能,異步信號(hào)會(huì)在由建立和保持時(shí)間界定的時(shí)間窗中變化,這就違背了器件的正常工作條件。當(dāng)發(fā)生這種情況時(shí),芯片可能會(huì)出現(xiàn)3種不同的結(jié)果:(1)識(shí)別成功,穩(wěn)定的輸出新的數(shù)據(jù)(2)識(shí)別失敗,繼續(xù)穩(wěn)定的輸出舊的數(shù)據(jù)(3)識(shí)別失敗,進(jìn)入亞穩(wěn)態(tài)因?yàn)閷?shí)際中無(wú)法斷定究竟會(huì)出現(xiàn)上述哪一種結(jié)果,所以為了保證工作正常,所有跨時(shí)鐘域的信號(hào)即異步信號(hào)不能直接使用,必須全部進(jìn)行同步處理變?yōu)楸镜氐耐叫盘?hào)。下面以一個(gè)具體的亞穩(wěn)態(tài)發(fā)生的例子來(lái)引入對(duì)亞穩(wěn)態(tài)的討論。圖2.1所示為一個(gè)典型的數(shù)字設(shè)計(jì),時(shí)鐘域A向時(shí)鐘域B發(fā)送數(shù)據(jù),所以對(duì)于時(shí)鐘域B來(lái)說(shuō),輸入數(shù)據(jù)是異步數(shù)據(jù)。時(shí)鐘域B需要采用同步器才能保證接收正常。圖2.1一個(gè)典型的數(shù)字設(shè)計(jì)即使在第一次觸發(fā)的時(shí)候出現(xiàn)了亞穩(wěn)態(tài),只要輸入信號(hào)足夠長(zhǎng),在下一次觸發(fā)的時(shí)候就一定能夠保證采樣到穩(wěn)定的輸入數(shù)據(jù),如果從這個(gè)角度考慮,好像亞穩(wěn)態(tài)至多只是延長(zhǎng)了一個(gè)處理周期而已,比如傳輸一個(gè)足夠長(zhǎng)的控制信號(hào),即使這次判斷為無(wú)效,那么下次一定會(huì)被識(shí)別為有效,如圖2.2所示。但是實(shí)際情況并沒(méi)有這么簡(jiǎn)單,因?yàn)槿绻|發(fā)器擁有多個(gè)扇出,那么就不能保證所有的扇出將亞穩(wěn)態(tài)的信號(hào)識(shí)別為相同的邏輯電平值,如圖2.3所示。圖2.2亞穩(wěn)態(tài)的發(fā)生示意圖圖2.3亞穩(wěn)態(tài)對(duì)觸發(fā)器的影響示意圖2.2數(shù)字電路的模擬特性如果數(shù)字系統(tǒng)中只存在邏輯“0”和邏輯“1”,那么設(shè)計(jì)者也就不會(huì)面臨可靠性的問(wèn)題。然而實(shí)際上,所有的邏輯電路處理的都是模擬電壓信號(hào),后面將會(huì)發(fā)現(xiàn)可靠性問(wèn)題實(shí)際上均源于數(shù)字電路的模擬特性。下面以最常用的LVTTL33邏輯電平為例來(lái)說(shuō)明,LVTTL33邏輯電平如表2.1和圖2.4所示:表2.1LVTTL邏輯電平工作電壓VCC=3.3V輸出高電平VOH≥2.4V輸出低電平VOL≤0.4V輸入高電平VIH≥2V輸入低電平VIL≤0.8V圖2.4LVTTL邏輯電平示意圖對(duì)于輸出電平來(lái)說(shuō),大于VOH的電平將被解釋為邏輯“1”,小于VOL的電平將被解釋為邏輯“0”,介于VOH和VOL之間的電平屬于非法邏輯電平;對(duì)于輸入電平來(lái)說(shuō),大于VIH的電平將被解釋為邏輯“1”,小于VIL的電平將被解釋為邏輯“0”,介于VIH和VIL之間的電平屬于非法邏輯電平。顯然無(wú)論輸入電壓還是輸出電壓,進(jìn)行電平切換的時(shí)候,都將經(jīng)歷這段短暫的非法邏輯電平時(shí)間。以單觸發(fā)器為例,發(fā)生亞穩(wěn)態(tài)的觸發(fā)器的輸出情況可能有3種:(1)超過(guò)正常傳播延遲但是沒(méi)有超過(guò)一個(gè)時(shí)鐘周期,輸出穩(wěn)定的邏輯值“1”,雖然可能與前級(jí)的輸入值(2)超過(guò)正常傳播延遲但是沒(méi)有超過(guò)一個(gè)時(shí)鐘周期,輸出穩(wěn)定的邏輯值“0”,雖然可能與前級(jí)的輸入值(3)在本次觸發(fā)后的整整一個(gè)時(shí)鐘周期都處于非法邏輯電平,直到下一次穩(wěn)定的觸發(fā)后進(jìn)入穩(wěn)態(tài)。這3種情況對(duì)系統(tǒng)產(chǎn)生的影響正是本文討論的內(nèi)容,顯然如果在由組合電路構(gòu)成的反饋電路中出現(xiàn)了亞穩(wěn)態(tài),那么很容易波及到整個(gè)系統(tǒng)。2.3RS鎖存器通過(guò)分析雙穩(wěn)態(tài)電路中最簡(jiǎn)單的單元:RS鎖存器,可以很容易理解亞穩(wěn)態(tài)發(fā)生的原因。RS鎖存器是構(gòu)成各種功能鎖存器或觸發(fā)器的基本單元,它可以用兩個(gè)與非門(mén)或兩個(gè)或非門(mén)交叉耦合構(gòu)成。圖2.5所示為用兩個(gè)與非門(mén)搭建的RS鎖存器,它有兩個(gè)互補(bǔ)輸出端和,用端的邏輯值來(lái)表示鎖存器的狀態(tài)。=1,=0時(shí),稱鎖存器處于1狀態(tài);=0,=1時(shí),稱鎖存器處于0狀態(tài)。R、S為鎖存器的兩個(gè)輸入端(或稱激勵(lì)端),R被稱為清零端,S被稱為置位端,均為低電平有效。當(dāng)輸入信號(hào)R、S保持為1不變化時(shí),該鎖存器必定處于=1或=0的某一狀態(tài)保持不變,所以它是具有兩個(gè)穩(wěn)定狀態(tài)的雙穩(wěn)態(tài)鎖存器。表2.2所示為RS鎖存器的真值表。表2.2RS鎖存器的真值表RS00110101101011保持保持圖2.5與非門(mén)搭建的RS鎖存器PAGE14第二章亞穩(wěn)態(tài)發(fā)生的根源當(dāng)R為低電平,S為高電平的時(shí)候,和分別為低電平和高電平;當(dāng)R為高電平,S為低電平的時(shí)候,和分別為高電平和低電平;當(dāng)R和S均為低電平的時(shí)候,和全部變?yōu)楦唠娖剑藭r(shí)如果R先于S變高,那么仍然為高電平,變?yōu)榈碗娖剑绻鸖先于R變高,那么情況相反。但是當(dāng)R和S同時(shí)變高,情況就變的復(fù)雜起來(lái),圖2.6所示為RS鎖存器的波形圖,圖中的t7時(shí)刻就表示了這個(gè)時(shí)刻。下面將分析在這個(gè)時(shí)刻,RS鎖存器究竟發(fā)生了什么。圖2.6RS鎖存器的波形圖由與非門(mén)的特性可知,當(dāng)RS鎖存器的兩個(gè)輸入端口的任何一個(gè)為低電平時(shí),輸出端的狀態(tài)就能夠唯一確定,而當(dāng)兩個(gè)輸入端均為高電平時(shí),RS鎖存器就進(jìn)入反饋狀態(tài),這時(shí)輸出端和的值就由反饋建立之前的值來(lái)決定,這是因?yàn)锳&1=A所以建立反饋后的電路等效于兩個(gè)反向器串聯(lián),如圖2.7所示。圖2.7RS鎖存器進(jìn)入反饋狀態(tài)的等效電路圖2.8和的變化曲線由于反向器頭尾相接,所以和的變化趨勢(shì)正好相反,此時(shí)和的變化曲線如圖2.8所示,橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示電壓,粗線表示電壓由高電平變?yōu)榈碗娖剑?xì)線表示電壓由低電平變到高電平,兩條曲線的交點(diǎn)就是亞穩(wěn)態(tài)點(diǎn)。顯然對(duì)于上圖所示的等效電路來(lái)說(shuō),如果將或者的電壓置為亞穩(wěn)態(tài)點(diǎn),并且沒(méi)有外界的干擾,那么整個(gè)反饋系統(tǒng)就永遠(yuǎn)的停留在這個(gè)電壓上。實(shí)際工作中,可以通過(guò)調(diào)整R端和S端的時(shí)序達(dá)到這種效果。如果R端或者S端由高電平變化為低電平,那么即使在變化的過(guò)程中輸出端出現(xiàn)了毛刺,RS鎖存器的輸出終將是穩(wěn)定的。但是如果R端和S端同時(shí)由低電平向高電平變化(也就意味著正在建立反饋,鎖存器開(kāi)始由開(kāi)環(huán)狀態(tài)變?yōu)殚]環(huán)狀態(tài)),那么和的電壓就會(huì)同時(shí)開(kāi)始下降,從圖2.9可以看出,在同時(shí)下降到亞穩(wěn)態(tài)點(diǎn)時(shí),反饋環(huán)路已經(jīng)建立起來(lái),根據(jù)前面介紹的等效電路的分析可知,此時(shí)和將停止變化,如圖2.9所示。圖2.9R端和S端同時(shí)變高對(duì)輸出的影響示意圖如果R端和S端同時(shí)由高電平變?yōu)榈碗娖剑瑒t不會(huì)發(fā)生上述現(xiàn)象。因?yàn)楫?dāng)R端和S端為低電平時(shí),就會(huì)強(qiáng)迫和進(jìn)入穩(wěn)態(tài)高電平,所以和將最終穩(wěn)定在高電平狀態(tài)。但是如果R端和S端變化的時(shí)刻很接近,就可能在輸出端產(chǎn)生毛刺。出現(xiàn)毛刺就意味著在輸入變化之前和之后,輸出值都應(yīng)該處于相同的電平,只是在輸入端變化的過(guò)程中,輸出端出現(xiàn)了短暫的相反電平,如圖2.10所示。圖2.10毛刺的產(chǎn)生示意圖圖2.11毛刺的傳遞示意圖圖中,R端和S端在t0時(shí)刻都為高電平,且端為低電平,端為高電平。t1時(shí)刻,S端開(kāi)始由高電平變?yōu)榈碗娖剑瑢?dǎo)致端由低電平變?yōu)楦唠娖剑瑃2時(shí)刻,R端開(kāi)始由高電平變?yōu)榈碗娖?△t=t2-t1),那么在t1時(shí)刻之后的某個(gè)時(shí)刻,與非門(mén)將R端和端都識(shí)別為高電平,于是端開(kāi)始下降,但是因?yàn)镽端電壓在逐漸變低,所以與非門(mén)終將R端識(shí)別為低電平,所以端電壓在經(jīng)過(guò)短暫的下降后又被抬高,恢復(fù)成高電平,于是在端出現(xiàn)了一個(gè)毛刺。上面討論的都是輸入波形完整時(shí),由于時(shí)序的問(wèn)題導(dǎo)致RS鎖存器輸出出現(xiàn)毛刺的情況,假如由于前端的原因在輸入端出現(xiàn)了毛刺,那么RS鎖存器會(huì)將毛刺傳播下去,如圖2.11所示。圖中,S端和R端在t0時(shí)刻分別為高電平和低電平,端為低電平,端為高電平。t1時(shí)刻,S端出現(xiàn)了一個(gè)毛刺導(dǎo)致端電壓上升,在S端電壓恢復(fù)為高電平后,端電壓也恢復(fù)到低電平,這樣在端就出現(xiàn)了一個(gè)毛刺。由于R端一直為低電平,所以端鎖定在高電平不變。這就說(shuō)明,在使用RS鎖存器的時(shí)候,一定要保證R和S具有足夠的變化時(shí)間間隔△t,在FPGA中禁止使用RS鎖存器就是這個(gè)道理,通常FPGA內(nèi)部如果使用了RS鎖存器,且R和S端信號(hào)都走數(shù)據(jù)線,由于數(shù)據(jù)線的延遲相當(dāng)大(ns級(jí)),所以,即使在產(chǎn)生R和S信號(hào)的時(shí)候保證了足夠的時(shí)間余量,也不能保證在到達(dá)RS鎖存器端口的時(shí)候,仍然有足夠的時(shí)間間隔,這也是組合邏輯固有的弊病。從上面的分析可以確知,對(duì)于與非門(mén)來(lái)說(shuō),當(dāng)兩個(gè)端口同時(shí)發(fā)生變化的時(shí)候,與非門(mén)的判斷就出現(xiàn)困難,導(dǎo)致發(fā)生判斷錯(cuò)誤或者進(jìn)入亞穩(wěn)態(tài)。但是只要保證同一時(shí)刻對(duì)于與非門(mén)的兩個(gè)輸入端,只有一個(gè)端口變化,另一個(gè)端口穩(wěn)定就可以保證與非門(mén)輸出穩(wěn)定。假設(shè)與非門(mén)的傳播延遲為,那么保證RS鎖存器正常工作的條件就是R和S的變化間隔△t大于,即△t>。比如S端發(fā)生的變化導(dǎo)致變化,那么在穩(wěn)定之前(需要時(shí)間),R端不能發(fā)生變化。2.4D觸發(fā)器2.4.1D觸發(fā)器亞穩(wěn)態(tài)分析有了RS鎖存器的基礎(chǔ)知識(shí),就可以理解D觸發(fā)器會(huì)發(fā)生亞穩(wěn)態(tài)的原因。圖2.12所示為D觸發(fā)器的原理圖。D是數(shù)據(jù)輸入端口,CP是時(shí)鐘,和是兩個(gè)輸出端口。圖2.12D觸發(fā)器的原理圖簡(jiǎn)單的講,D觸發(fā)器在CP為低電平的時(shí)候?qū)⑤敵雠c輸入隔離,輸出端不會(huì)因?yàn)檩斎攵说淖兓兓贑P為高電平的時(shí)候,D觸發(fā)器依靠?jī)?nèi)部信號(hào)對(duì)輸入端的反饋,保證輸出端數(shù)據(jù)的穩(wěn)定,輸出端的變化僅僅依賴于CP觸發(fā)沿的一瞬間輸入的數(shù)據(jù),所以D觸發(fā)器比鎖存器提供了更高的可靠性。但是如果在時(shí)鐘觸發(fā)的時(shí)刻,輸入端的數(shù)據(jù)出現(xiàn)變化,仍然會(huì)將D觸發(fā)器帶入亞穩(wěn)態(tài)。下面將討論在這一瞬間,D觸發(fā)器究竟發(fā)生了什么。分兩種情況進(jìn)行討論:(1)D端由高電平變?yōu)榈碗娖剑?2)D端由低電平變?yōu)楦唠娖健榱吮阌诶斫猓僭O(shè)所有分析的時(shí)間起點(diǎn)均為CP為低電平,這并不會(huì)影響分析的合理性。(1)首先考慮D端由高電平變?yōu)榈碗娖降那闆r,如圖2.13所示。因?yàn)榇藭r(shí)W1為高電平,所以W4開(kāi)始從低電平變化為高電平,但是如果W4和CP同時(shí)由低電平變?yōu)楦唠娖剑敲淳陀羞@種可能,G3和G5組成的RS鎖存器進(jìn)入了亞穩(wěn)態(tài)。因?yàn)閃4和CP都將沒(méi)有額外延遲的變?yōu)楦唠娖剑詫?duì)于G4來(lái)說(shuō),決定其狀態(tài)的只有W3,假如W3進(jìn)入亞穩(wěn)態(tài),那么顯然G4也將進(jìn)入亞穩(wěn)態(tài),根據(jù)與非門(mén)的傳播路徑G4→G6→G5→G3,所有的與非門(mén)都進(jìn)入亞穩(wěn)態(tài),同時(shí)由G2和G1組成的RS鎖存器也進(jìn)入了亞穩(wěn)態(tài),并導(dǎo)致和也進(jìn)入亞穩(wěn)態(tài),圖中紅色部分所示為亞穩(wěn)態(tài)發(fā)生的起源。圖2.13D觸發(fā)器亞穩(wěn)態(tài)的發(fā)生示意圖一圖2.14D觸發(fā)器亞穩(wěn)態(tài)的發(fā)生示意圖二(2)考慮D端由低電平變到高電平的情況,如圖2.14所示。如果D和CP同時(shí)由低電平變?yōu)楦唠娖剑捎贕6、G5和G3的傳播延遲,W3會(huì)保持的高電平,那么在這段時(shí)間,就有這種可能,G4和G6組成的RS鎖存器進(jìn)入了亞穩(wěn)態(tài)。根據(jù)與非門(mén)的傳播路徑G4→G6→G5→G3,所有的與非門(mén)都進(jìn)入亞穩(wěn)態(tài),同時(shí)G2和G1組成的RS鎖存器也進(jìn)入了亞穩(wěn)態(tài),并導(dǎo)致和也進(jìn)入亞穩(wěn)態(tài),同樣圖中紅線部分所示為亞穩(wěn)態(tài)發(fā)生的起點(diǎn)。根據(jù)上面的分析,為了確保D觸發(fā)器正常工作,在CP變化的瞬間之前,必須保持穩(wěn)定,即必須提前一個(gè)保持穩(wěn)定(因?yàn)橐簿褪禽敵鲭妷鹤兓枰臅r(shí)間,所以如果要求在t時(shí)刻輸出電壓穩(wěn)定,就必須要求在t-時(shí)刻輸入電壓穩(wěn)定,或者說(shuō),如果輸入電壓發(fā)生變化,那么輸出電壓在接下來(lái)的這段時(shí)間內(nèi)都是不穩(wěn)定的),那么D就必須提前CP兩個(gè)保持穩(wěn)定,這就對(duì)CP觸發(fā)沿到來(lái)前,D端變化的時(shí)間區(qū)域提出了要求。同樣在CP變化后,并且W1的反饋建立完成前,D不能發(fā)生變化,可以看到反饋的完成時(shí)間是一個(gè),所以在CP觸發(fā)沿到來(lái)后,對(duì)D變化的時(shí)間區(qū)域同樣提出了要求。這兩個(gè)要求對(duì)應(yīng)D觸發(fā)器的兩個(gè)技術(shù)指標(biāo):建立時(shí)間和保持時(shí)間。2.4.2靜態(tài)時(shí)序分析(STA)有了D觸發(fā)器的建立時(shí)間和保持時(shí)間的概念,就可以引出在FPGA的設(shè)計(jì)中最重要的環(huán)節(jié)之一:STA(StaticTimingAnalysis),即靜態(tài)時(shí)序分析。雖然STA不能檢查出邏輯設(shè)計(jì)錯(cuò)誤,但是它能夠很大程度上診斷設(shè)計(jì)的可靠性。圖2.15所示為兩級(jí)觸發(fā)器級(jí)聯(lián),以下的所有的STA均基于兩級(jí)觸發(fā)器級(jí)聯(lián)的模型。圖2.15兩級(jí)觸發(fā)器示意圖為了保證結(jié)果的可靠性,所有的分析都是在最惡劣的情況(worst-case)下進(jìn)行的,分析結(jié)果如下:(2-1)(2-2)其中,:觸發(fā)器要求的建立時(shí)間:觸發(fā)器要求的保持時(shí)間:系統(tǒng)時(shí)鐘周期:組合電路最大延遲:組合電路最小延遲:觸發(fā)器最大傳播延遲,也就是從時(shí)鐘觸發(fā)沿開(kāi)始到數(shù)據(jù)穩(wěn)定的出現(xiàn)在輸出端的最大延遲。:觸發(fā)器最小傳播延遲,也就是從時(shí)鐘觸發(fā)沿開(kāi)始到數(shù)據(jù)穩(wěn)定的出現(xiàn)在輸出端的最小延遲。:時(shí)鐘偏斜,這里定義skew=t2–t1,t2和t1如圖2.15中所示,它們的含義分別是時(shí)鐘沿到達(dá)兩個(gè)觸發(fā)器的時(shí)刻。對(duì)(2-1)式的說(shuō)明:為便于分析,先假定時(shí)鐘skew為0,當(dāng)前時(shí)鐘觸發(fā)沿結(jié)束后,第一級(jí)觸發(fā)器的D端數(shù)據(jù)最長(zhǎng)需要經(jīng)過(guò)時(shí)間到達(dá)第二級(jí)觸發(fā)器的D端,然后還必須等待,才能允許下一個(gè)時(shí)鐘沿的到來(lái)。所以是這條路徑上的最小時(shí)鐘周期,這也就限制了這條路徑上的最快的時(shí)鐘速度。對(duì)(2-2)式的說(shuō)明:當(dāng)前時(shí)鐘觸發(fā)沿結(jié)束后,第一級(jí)觸發(fā)器的D端數(shù)據(jù)最短需要經(jīng)過(guò)時(shí)間到達(dá)第二級(jí)觸發(fā)器的D端,這也是第一級(jí)觸發(fā)器的D端舊數(shù)據(jù)能夠保持的時(shí)間,所以一定要大于才可以。由上面的公式,很容易得到時(shí)鐘skew對(duì)建立和保持時(shí)間的影響:skew改善了建立時(shí)間的余量,但是惡化了保持時(shí)間的余量。下面通過(guò)圖2.16所示的兩級(jí)觸發(fā)器的時(shí)序圖來(lái)解釋skew對(duì)建立和保持時(shí)間的影響(為簡(jiǎn)化起見(jiàn),圖中所示的“建立時(shí)間”和“保持時(shí)間”,表示的是留給觸發(fā)器的建立時(shí)間、保持時(shí)間余量,而不是觸發(fā)器規(guī)定的建立時(shí)間、保持時(shí)間指標(biāo)),由于和觸發(fā)器之間的組合邏輯延遲,第一級(jí)觸發(fā)器的輸出信號(hào)不會(huì)馬上反應(yīng)到第二級(jí)觸發(fā)器的輸入端,從圖中可以看出在CLK2逐漸落后CLK1的過(guò)程中(也就是skew逐漸增大的過(guò)程),整個(gè)系統(tǒng)的建立時(shí)間余量逐漸變大,但是保持時(shí)間余量逐漸變小。如果由于skew過(guò)大導(dǎo)致違背觸發(fā)器的建立保持時(shí)間指標(biāo),觸發(fā)器就可能出現(xiàn)亞穩(wěn)態(tài)現(xiàn)象。在異步傳輸中,由于CLK1和CLK2屬于兩個(gè)不同的時(shí)鐘,沒(méi)有任何聯(lián)系,所以CLK1端輸出的數(shù)據(jù)可以在相對(duì)于CLK2觸發(fā)沿的任何位置出現(xiàn),所以如果不采取特殊的方法,整個(gè)系統(tǒng)是無(wú)法工作的。圖2.16兩級(jí)觸發(fā)器的時(shí)序圖在設(shè)計(jì)后期,為了改善FPGA中某一條路徑的建立保持時(shí)間余量,但又不希望牽扯其它邏輯的時(shí)候,可以調(diào)節(jié)觸發(fā)器之間的組合邏輯的延遲以及進(jìn)入第二級(jí)觸發(fā)器時(shí)鐘的相位。改變組合邏輯延遲可以通過(guò)改寫(xiě)代碼或者對(duì)綜合工具進(jìn)行設(shè)置實(shí)現(xiàn),改變時(shí)鐘的相位可以通過(guò)PLL實(shí)現(xiàn)。PAGE22第三章亞穩(wěn)態(tài)對(duì)故障率的影響

第三章亞穩(wěn)態(tài)對(duì)故障率的影響3.1觸發(fā)器響應(yīng)曲線圖第二章最后一節(jié)的分析指出保證觸發(fā)器的工作正常就必須保證輸入數(shù)據(jù)滿足觸發(fā)器的建立和保持時(shí)間要求,但是這并不意味著一旦輸入數(shù)據(jù)違背的建立和保持時(shí)間要求就必然出現(xiàn)亞穩(wěn)態(tài),也并不意味著一旦出現(xiàn)亞穩(wěn)態(tài)就必然使系統(tǒng)出現(xiàn)故障。為了解釋這里面的原因,繼續(xù)沿用上一小節(jié)的雙觸發(fā)器結(jié)構(gòu),但是為了簡(jiǎn)便起見(jiàn),省略掉了觸發(fā)器之間的組合邏輯延遲和時(shí)鐘skew,這并不會(huì)影響分析的有效性。圖3.1觸發(fā)器響應(yīng)曲線圖圖3.1所示為觸發(fā)器響應(yīng)曲線圖[20],橫坐標(biāo)表示輸入數(shù)據(jù)到達(dá)時(shí)刻,縱坐標(biāo)表示觸發(fā)器的傳播延遲時(shí)間。圖中,為觸發(fā)器的正常傳播延遲,其含義是在正常情況下,即輸入信號(hào)滿足觸發(fā)器的建立時(shí)間和保持時(shí)間的情況下,信號(hào)從觸發(fā)器的輸入端到達(dá)輸出端所需的平均時(shí)間。是觸發(fā)器所能允許的最大傳播延遲時(shí)間,如果傳播延遲超過(guò)了,就認(rèn)為觸發(fā)器發(fā)生了亞穩(wěn)態(tài),表示導(dǎo)致發(fā)生亞穩(wěn)態(tài)的輸入數(shù)據(jù)到達(dá)時(shí)刻的時(shí)間區(qū)域,在內(nèi)觸發(fā)器的傳播延遲時(shí)間呈指數(shù)倍的增加。假設(shè)觸發(fā)器的時(shí)鐘周期為,如果第一級(jí)觸發(fā)器發(fā)生了亞穩(wěn)態(tài),那么它的輸出值更新的時(shí)間就超過(guò)了(時(shí)間與器件的生產(chǎn)工藝有關(guān),它是一個(gè)變量,在觸發(fā)器的數(shù)據(jù)手冊(cè)中提供的實(shí)際上為,但是更多工作情況下器件的為,也就是說(shuō)實(shí)際中的應(yīng)該小于,廠家提供的產(chǎn)品指標(biāo)留有余量。為簡(jiǎn)單起見(jiàn),后面將不予區(qū)分,統(tǒng)一用表示,這并不影響分析的有效性)。將從結(jié)束時(shí)刻開(kāi)始到觸發(fā)器實(shí)際輸出最終恢復(fù)到正常邏輯電平的這段額外延遲時(shí)間稱為,將系統(tǒng)允許的最大額外傳播延遲稱為,根據(jù)上一節(jié)的知識(shí),顯然可以得到,表示一個(gè)時(shí)鐘周期中除去必須的和所剩下的時(shí)間,顯然越長(zhǎng)就越長(zhǎng)。正常觸發(fā)情況下的為零,亞穩(wěn)態(tài)會(huì)導(dǎo)致增加,但是只要,那么對(duì)于下一級(jí)觸發(fā)器來(lái)說(shuō),輸入數(shù)據(jù)就是安全的,也就是說(shuō)第二級(jí)觸發(fā)器就一定不會(huì)出現(xiàn)故障。但是如果,第一級(jí)觸發(fā)器的輸出在下一個(gè)時(shí)鐘觸發(fā)沿的建立和保持時(shí)間窗中仍然不穩(wěn)定,那么第二級(jí)觸發(fā)器就有可能繼續(xù)發(fā)生亞穩(wěn)態(tài),這就是亞穩(wěn)態(tài)的傳播。這里,表示了一個(gè)時(shí)間界限,如果觸發(fā)器的響應(yīng)時(shí)間超過(guò)這個(gè)界限,則可能將亞穩(wěn)態(tài)傳遞到下一級(jí),且可能會(huì)引發(fā)系統(tǒng)的故障(在后面的章節(jié)會(huì)介紹專門(mén)的參數(shù)來(lái)表征故障率的大小),將由這個(gè)界限確定的輸入數(shù)據(jù)的到達(dá)時(shí)刻的時(shí)間區(qū)域稱為亞穩(wěn)態(tài)窗,顯然如果取(此時(shí)觸發(fā)器工作在最高速度),那么亞穩(wěn)態(tài)窗就是。3.2亞穩(wěn)態(tài)窗圖3.2所示為亞穩(wěn)態(tài)窗與時(shí)鐘周期、建立時(shí)間及保持時(shí)間等之間的關(guān)系。結(jié)合上一節(jié)的觸發(fā)器響應(yīng)曲線圖,下面將對(duì)亞穩(wěn)態(tài)窗展開(kāi)詳細(xì)的討論。圖3.2亞穩(wěn)態(tài)窗示意圖由一些理論研究和經(jīng)驗(yàn)[21,22,23]可以得出亞穩(wěn)態(tài)窗口的寬度為,如果傳播延遲超過(guò)了,就認(rèn)為出現(xiàn)了亞穩(wěn)態(tài)的傳播(即第一級(jí)觸發(fā)器未能成功阻止亞穩(wěn)態(tài)的傳播)。顯然是時(shí)的亞穩(wěn)態(tài)窗口寬度的特例。其中和是觸發(fā)器的常數(shù)參量,由生產(chǎn)廠家的工藝和器件的工作環(huán)境(電壓、溫度)決定,所以采用相同工藝的器件在相同的工作環(huán)境中通常都有類似的參數(shù)和(精確獲知需要測(cè)量),表3.1所示為不同型號(hào)的器件的和[24]。下面的章節(jié)將詳細(xì)闡述確定和的方法。表3.1SN74ABT7819和SN74ACT7807的和參數(shù)的值[24]SN74ABT7819SN74ACT780725攝氏度4.5V0.3316.90.501.135V0.3070.402.055.5V0.2328.80.309.40如圖3.1和圖3.2所示,在建立保持時(shí)間窗口中,如果輸入數(shù)據(jù)的到達(dá)時(shí)刻沒(méi)有落入,那么傳播延遲為,如果數(shù)據(jù)落入了,那么傳播延遲就超過(guò)了,數(shù)據(jù)變化時(shí)刻離窗口的中心越近,輸出的傳播延遲就越大,當(dāng)數(shù)據(jù)變化時(shí)刻落入亞穩(wěn)態(tài)窗口的時(shí)候,額外輸出延遲就超過(guò)了,這時(shí)對(duì)于第二級(jí)觸發(fā)器來(lái)說(shuō)接收到的數(shù)據(jù)就不滿足建立和保持時(shí)間,有可能使第二級(jí)觸發(fā)器發(fā)生亞穩(wěn)態(tài)。從上面的分析可以看出,如果要求“保證”輸出數(shù)據(jù)的正確,輸入數(shù)據(jù)必須滿足建立和保持時(shí)間的要求,但是實(shí)際上即使輸入數(shù)據(jù)違背了建立或者保持時(shí)間,也并不意味著一定會(huì)發(fā)生亞穩(wěn)態(tài),只有落入了才會(huì)發(fā)生亞穩(wěn)態(tài),建立和保持時(shí)間界定的窗口中還存在著一個(gè)亞穩(wěn)態(tài)窗,只有輸入數(shù)據(jù)落入了亞穩(wěn)態(tài)窗,才認(rèn)為觸發(fā)器發(fā)生了故障。顯然觸發(fā)器的工作時(shí)鐘越快,便越小,亞穩(wěn)態(tài)窗口的寬度就越寬,觸發(fā)器也越容易發(fā)生故障。亞穩(wěn)態(tài)窗是一個(gè)真實(shí)的窗口,在文獻(xiàn)[20]中介紹了一種實(shí)際中測(cè)量亞穩(wěn)態(tài)窗的辦法(實(shí)際上是測(cè)量)。亞穩(wěn)態(tài)窗非常窄(寬度在皮秒級(jí)),是由確定的常量,但是亞穩(wěn)態(tài)窗的位置卻會(huì)隨著時(shí)間、溫度、供電電壓、系統(tǒng)噪聲以及其他一些因素的變化而變化,也就是說(shuō)亞穩(wěn)態(tài)窗的位置是漂移的,無(wú)法精確的確定窗口的位置,這也就解釋了為什么無(wú)法預(yù)測(cè)亞穩(wěn)態(tài)的脫離時(shí)間。但是在下面的章節(jié)將發(fā)現(xiàn),實(shí)際上亞穩(wěn)態(tài)窗口的位置并不重要,因?yàn)樗粫?huì)跨出建立和保持時(shí)間界定的窗口。亞穩(wěn)態(tài)窗口的寬度和的長(zhǎng)度由生產(chǎn)廠家的工業(yè)水平和器件的工作環(huán)境決定。通常情況下,觸發(fā)器都會(huì)立即回到穩(wěn)定的邏輯電平,雖然可能與期望值相反(比如輸入數(shù)據(jù)為“0”,并且變化時(shí)刻落入亞穩(wěn)態(tài)窗口內(nèi),觸發(fā)器在進(jìn)入亞穩(wěn)態(tài)后由于各種干擾又馬上恢復(fù)到穩(wěn)態(tài),但是輸出值卻是“1”)。下一節(jié)將介紹MTBF的概念,將看到亞穩(wěn)態(tài)窗口越窄,就越不容易進(jìn)入亞穩(wěn)態(tài),而且觸發(fā)器的MTBF就越大,但是無(wú)論亞穩(wěn)態(tài)窗如何變化,的上界永遠(yuǎn)是無(wú)限大的,此時(shí)觸發(fā)器處于亞穩(wěn)態(tài)點(diǎn),見(jiàn)圖2.8所示。亞穩(wěn)態(tài)并不一定造成不可預(yù)測(cè)的系統(tǒng)故障。如果等待時(shí)間足夠長(zhǎng),那么實(shí)際中的觸發(fā)器終將進(jìn)入穩(wěn)態(tài),在這個(gè)時(shí)候?qū)τ|發(fā)器的輸出進(jìn)行采樣,就不會(huì)造成亞穩(wěn)態(tài)的傳播。另外,如果第二級(jí)觸發(fā)器能夠成功的阻止亞穩(wěn)態(tài)的傳播,那么即使兩級(jí)觸發(fā)器的第一次判斷錯(cuò)誤,只要輸入數(shù)據(jù)保證足夠長(zhǎng)的有效時(shí)間,那么在下一個(gè)時(shí)鐘周期兩級(jí)觸發(fā)器必然會(huì)做出正確的判斷,這樣情況僅僅造成了系統(tǒng)響應(yīng)延緩了一個(gè)時(shí)鐘周期而已,通常并不會(huì)對(duì)系統(tǒng)的功能造成什么影響,當(dāng)然這需要針對(duì)當(dāng)前設(shè)計(jì)進(jìn)行仔細(xì)分析。3.3平均無(wú)故障時(shí)間(MTBF)3.3.1浴缸曲線(TheBathtubCruve)在開(kāi)始對(duì)MTBF(MeanTimeBetweenFailure)介紹之前,首先引入“浴缸曲線”[25]的概念,這是一個(gè)和產(chǎn)品的故障率相關(guān)的概念。如果對(duì)一批產(chǎn)品的故障率進(jìn)行研究,將發(fā)現(xiàn)產(chǎn)品故障率并不是一個(gè)常量,而是隨時(shí)間的推移而變化的。通常來(lái)說(shuō),產(chǎn)品生命周期分3個(gè)階段。在故障率的第一個(gè)階段,故障率相對(duì)較高,但是隨著時(shí)間的推移有下降的趨勢(shì),這個(gè)階段稱之為“早期故障期”(earlylifeperiod)。第二個(gè)階段故障率很低并且?guī)缀跏莻€(gè)常數(shù),這個(gè)階段稱為“常數(shù)故障率期”。第三個(gè)階段故障率又開(kāi)始增加,而且通常非常的迅速,這個(gè)階段稱為“損耗期”。當(dāng)將故障率的函數(shù)畫(huà)出圖來(lái)后,就會(huì)發(fā)現(xiàn)原來(lái)是一個(gè)類似浴缸的形狀,如圖3.3所示,稱之為“浴缸曲線”。電子產(chǎn)品制造商一般通過(guò)測(cè)試、篩選等手段將早期的故障盡量剔除,然后提供給客戶使用。當(dāng)使用期將盡,產(chǎn)品也將進(jìn)入故障高峰期,需要報(bào)廢或者更新?lián)Q代了。而在文章中提到的故障率實(shí)際上只和“常數(shù)故障率期”有關(guān),也就是說(shuō)關(guān)注的只是“常數(shù)故障率期”的MTBF。圖3.3“浴缸曲線”的示意圖3.3.2MTBF含義及計(jì)算MTBF(MeanTimeBetweenFailure)是評(píng)估故障率的一個(gè)指標(biāo),而故障率,其含義就是發(fā)生故障的平均概率,下面將針對(duì)一級(jí)觸發(fā)器結(jié)構(gòu)討論如何計(jì)算MTBF。由于異步輸入數(shù)據(jù)和本地時(shí)鐘沒(méi)有任何關(guān)系,所以可以認(rèn)為異步輸入數(shù)據(jù)可能出現(xiàn)在時(shí)鐘周期中的任何位置,并且服從均勻分布,但是一旦異步輸入數(shù)據(jù)落入了亞穩(wěn)態(tài)窗,那么數(shù)據(jù)的傳播延遲就會(huì)超過(guò),也就是說(shuō)發(fā)生了故障,所以系統(tǒng)發(fā)生故障的概率就是,其中TC表示觸發(fā)器的時(shí)鐘周期。設(shè)異步輸入信號(hào)的變化率為(是信號(hào)頻率的兩倍,因?yàn)椴徽撔盘?hào)從高電平切換到低電平還是從低電平切換到高電平,只要條件合適,都能夠引發(fā)亞穩(wěn)態(tài),所以在評(píng)估故障率的時(shí)候必須要考慮信號(hào)的變化率),那么在單位時(shí)間內(nèi)(比如這3個(gè)參數(shù)的單位都基于秒,那么這里所謂的單位時(shí)間就是每秒),觸發(fā)器出故障的次數(shù)為,的倒數(shù)就表示發(fā)生故障的平均時(shí)間間隔,稱為MTBF:(3-1)上面的計(jì)算對(duì)象是一個(gè)觸發(fā)器,但是在實(shí)際中不是使用這個(gè)公式計(jì)算出MTBF,而是廠家先通過(guò)特殊的測(cè)試手段得到產(chǎn)品的MTBF,然后再確定出公式中的參數(shù)指標(biāo)向外發(fā)布,用戶便可以根據(jù)這些參數(shù)指標(biāo)定量的控制當(dāng)前設(shè)計(jì)的可靠性,這就是上述分析的實(shí)際意義。MTBF雖然擁有時(shí)間的單位,但只有概率的意義,并且MTBF是相對(duì)于群體的特征,而不是針對(duì)個(gè)體的特征。它由大量的采樣樣本統(tǒng)計(jì)得出,所以也只能反映大量樣本的統(tǒng)計(jì)特性,而不是單個(gè)樣本的特性。下面討論確定和的方法,對(duì)MTBF公式兩邊同時(shí)取對(duì)數(shù)后,可以得到的表達(dá)式:(3-2)通過(guò)測(cè)試在不同的下對(duì)應(yīng)的MTBF,可以得到與MTBF的關(guān)系圖。如果x軸表示,y軸表示,根據(jù)上面的公式,將出現(xiàn)一條直線,由于直線斜率的倒數(shù)就是,隨意任取直線上兩點(diǎn)就可求出。根據(jù)MTBF的公式,很容易得到的表達(dá)式:(3-3)現(xiàn)在、和都已知,再任取一組和MTBF帶入上式,即可求出。3.3.3MTBF的改善從MTBF的公式可以看出,如果要提高M(jìn)TBF,只要增大或者減小、,但是增大意味著降低系統(tǒng)的工作頻率,這是設(shè)計(jì)者最不愿意看到的結(jié)果。減小、就意味著更換更先進(jìn)的觸發(fā)器,但是同一種FPGA內(nèi)部的觸發(fā)器全部屬于同一個(gè)型號(hào)。然而有一種方法簡(jiǎn)單而且有效,那就是使用兩級(jí)觸發(fā)器代替一級(jí)觸發(fā)器。后面的章節(jié)將從系統(tǒng)的角度闡述兩級(jí)觸發(fā)器對(duì)可靠性的改善,這里僅僅從MTBF的角度進(jìn)行分析。如果第一級(jí)觸發(fā)器成功的阻止了亞穩(wěn)態(tài)的傳播,那么它的輸出已經(jīng)屬于本地時(shí)鐘域,也就是說(shuō),對(duì)于第二級(jí)觸發(fā)器來(lái)說(shuō)接收到的是同步信號(hào),在這種情況下,電路功能完全正常。如果第一級(jí)觸發(fā)器沒(méi)能阻止亞穩(wěn)態(tài)的傳播,導(dǎo)致,那么這時(shí)第一級(jí)觸發(fā)器的輸出便不能滿足第二級(jí)觸發(fā)器的建立和保持時(shí)間的要求,所以對(duì)于第二級(jí)觸發(fā)器來(lái)說(shuō),第一級(jí)觸發(fā)器的輸出信號(hào)仍然屬于異步信號(hào),且異步信號(hào)的到達(dá)時(shí)間可能出現(xiàn)在相對(duì)于時(shí)鐘觸發(fā)沿的任何時(shí)候,因此對(duì)于第二級(jí)觸發(fā)器來(lái)說(shuō),異步信號(hào)的變化率是第一級(jí)觸發(fā)器MTBF的倒數(shù),顯然由于增加了一個(gè)時(shí)鐘周期的等待時(shí)間,使得進(jìn)入第二級(jí)觸發(fā)器輸入端的異步信號(hào)的變化率要遠(yuǎn)遠(yuǎn)小于進(jìn)入第一級(jí)觸發(fā)器輸入端的異步信號(hào)變化率,這也就減小了出故障的概率。(3-4)其中:進(jìn)入第一級(jí)觸發(fā)器輸入端的異步信號(hào)的變化率:進(jìn)入第二級(jí)觸發(fā)器輸入端的異步信號(hào)的變化率那么將帶入MTBF公式中,就得到兩級(jí)觸發(fā)器的MTBF公式:(3-5)由于對(duì)于整個(gè)系統(tǒng)來(lái)講就是,就是,所以將兩個(gè)參量替代后,得到最終公式:(3-6)從上式可以看出MTBF的分子和分母都出現(xiàn)平方,可能還不能直觀的看出MTBF的變化趨勢(shì),但是只要舉一個(gè)實(shí)際例子就可以展現(xiàn)出兩級(jí)觸發(fā)器的威力。這里引用Cypress在文獻(xiàn)[26]中使用的MTBF的公式:(3-7)其中等同于本文中的,W等同于本文中的。Cypress在測(cè)試PALC22V10(最高工作頻率41.6MHz)中,設(shè)計(jì)了這樣的工作環(huán)境:ps;ps;=41.6MHz;=20MHz由于當(dāng)前工作在最高頻率,所以那么此時(shí)的MTBF為:(s)初看起來(lái)這是個(gè)失敗的設(shè)計(jì),其實(shí)不是這樣的,因?yàn)樵谟?jì)算MTBF的時(shí)候,是假設(shè)輸入信號(hào)為異步信號(hào)時(shí),考察發(fā)生亞穩(wěn)態(tài)的概率,如果在這種情況下不為器件留出額外的分辨時(shí)間(resolvingtiming),任何廠家的產(chǎn)品都不可能有好的表現(xiàn)。如果為觸發(fā)器提供額外的1.6ns延遲,那么時(shí)鐘工作頻率就為39MHz,現(xiàn)在得到(s)還是不太好,那么將兩個(gè)觸發(fā)器級(jí)聯(lián),得到:(s)相當(dāng)于1376年,與一級(jí)觸發(fā)器的MTBF形成了巨大的反差,但這是以降低時(shí)鐘工作頻率為代價(jià)的。MTBF計(jì)算公式的意義就在于在預(yù)先設(shè)定的可容忍的故障率條件(MTBF)下,能夠確定設(shè)計(jì)中的工作頻率。

PAGE52第四章克服亞穩(wěn)態(tài)的方法第四章克服亞穩(wěn)態(tài)的方法由前面的分析可知,在FPGA的設(shè)計(jì)過(guò)程中,異步信號(hào)引起的亞穩(wěn)態(tài)現(xiàn)象是不可能根除的,設(shè)計(jì)者所能做的只能是盡量減小亞穩(wěn)態(tài)發(fā)生的概率或者通過(guò)特殊的處理手段使得亞穩(wěn)態(tài)不會(huì)導(dǎo)致系統(tǒng)發(fā)生功能性故障。實(shí)際中處理亞穩(wěn)態(tài)的方法有多種,本文將其分為四類,第一類是兩級(jí)觸發(fā)器級(jí)聯(lián),它是構(gòu)成實(shí)際當(dāng)中各種同步器的基本單元;第二類是采用握手協(xié)議,握手協(xié)議是利用請(qǐng)求和應(yīng)答信號(hào)實(shí)現(xiàn)對(duì)異步信號(hào)的正確接收的方式;第三類是開(kāi)環(huán)控制,所謂開(kāi)環(huán)控制,其實(shí)就是發(fā)送方和接收方之間沒(méi)有明顯的用于雙方通訊的握手信號(hào),只適用于特殊情況下的異步信號(hào)的正確接收,由于沒(méi)有完整的請(qǐng)求和應(yīng)答信號(hào),理論上講開(kāi)環(huán)控制的可靠性要弱于握手協(xié)議,但是控制速度也高于握手協(xié)議;第四類是雙口RAM,它實(shí)際上是一種特殊的握手協(xié)議,是對(duì)FIFO在某些情況下的改進(jìn)方法,但它比FIFO要靈活很多(實(shí)際上FIFO也是亞穩(wěn)態(tài)的處理方法之一,由于它比較常用,且在許多文獻(xiàn)中詳細(xì)介紹過(guò),本文就不過(guò)多的贅述)。這四種方法各有自己的應(yīng)用場(chǎng)合,下面的章節(jié)將結(jié)合具體項(xiàng)目實(shí)例對(duì)這幾種方法進(jìn)行詳細(xì)的介紹。4.1最常用的同步器:兩級(jí)觸發(fā)器兩級(jí)觸發(fā)器級(jí)聯(lián)是最簡(jiǎn)單,也是最常用的處理亞穩(wěn)態(tài)的方法。圖4.1所示為兩級(jí)觸發(fā)器級(jí)聯(lián)的原理圖。由第二章的STA小節(jié)以及第三章的分析可以看出兩級(jí)觸發(fā)器級(jí)聯(lián)并不能徹底解決亞穩(wěn)態(tài)的問(wèn)題,但是它可以大大降低系統(tǒng)發(fā)生故障的概率,這是因?yàn)槿绻谝患?jí)觸發(fā)器判斷失敗,未能阻止亞穩(wěn)態(tài)的傳播,那么第二級(jí)觸發(fā)器可以再次進(jìn)行判斷,所以可以進(jìn)一步減小故障率。圖4.1兩級(jí)觸發(fā)器級(jí)聯(lián)的示意圖第三章已經(jīng)從概率的角度解釋了兩級(jí)觸發(fā)器級(jí)聯(lián)對(duì)MTBF的改善,但是這種方法并不是在任何情況下都適用,如果輸入信號(hào)的長(zhǎng)度小于接收時(shí)鐘的一個(gè)周期,那么就可能沒(méi)有被本地時(shí)鐘采集到,如圖4.2所示。圖中信號(hào)A為高有效,由于有效時(shí)間太短導(dǎo)致接收方?jīng)]有響應(yīng)。圖4.2兩級(jí)觸發(fā)器級(jí)聯(lián)的失效示意圖在這種情況下,只要把信號(hào)A適當(dāng)延長(zhǎng),就可以保證接收成功。但是有的時(shí)候,信號(hào)A的長(zhǎng)度不可變,本地接收時(shí)鐘周期也不可變。為了避免這種情況的發(fā)生,可以使用圖4.3所示的脈沖觸發(fā)電路[27]。圖4.3脈沖觸發(fā)電路示意圖[27]在這個(gè)電路中,將外界輸入的異步信號(hào)連接到第一個(gè)觸發(fā)器的時(shí)鐘輸入端,這樣不論異步信號(hào)和本地接收時(shí)鐘的關(guān)系如何,第一個(gè)觸發(fā)器都能夠捕獲到異步信號(hào)的變化。假設(shè)所有觸發(fā)器輸出端的初始狀態(tài)都為低電平,在異步信號(hào)的上升沿到來(lái)的時(shí)候,信號(hào)A就發(fā)生一次翻轉(zhuǎn),在接下來(lái)的每個(gè)CLK上升沿到來(lái)的時(shí)候,都會(huì)將新值傳播到下一級(jí)觸發(fā)器,當(dāng)傳播到信號(hào)C的位置后,異或門(mén)將檢測(cè)到信號(hào)C和信號(hào)D的不同,于是輸出一個(gè)接收時(shí)鐘周期的高電平表示檢測(cè)到新的信號(hào)輸入。在下一個(gè)時(shí)鐘周期,信號(hào)C和信號(hào)D都將是新值,所以異或門(mén)又重新回到低電平,如圖4.4所示。圖4.4脈沖觸發(fā)電路的時(shí)序圖這里需要注意的一點(diǎn)是,即使異步信號(hào)高電平的長(zhǎng)度超過(guò)兩個(gè)時(shí)鐘周期,但是在最終的輸出端仍然只是出現(xiàn)一個(gè)時(shí)鐘周期寬的脈沖,所以設(shè)計(jì)者需要保證這種情況不會(huì)對(duì)系統(tǒng)功能產(chǎn)生影響,如圖4.5所示。圖4.5脈沖觸發(fā)電路的失效示意圖一脈沖觸發(fā)電路的另一個(gè)缺點(diǎn)是,如果輸入兩次的異步信號(hào)間隔太小,那么傳給下一級(jí)觸發(fā)器的信號(hào)就太過(guò)接近,導(dǎo)致最終輸出同步信號(hào)脈寬超過(guò)一個(gè)時(shí)鐘周期,如圖4.6所示。圖4.6脈沖觸發(fā)電路的失效示意圖二如果間隔更小,那么信號(hào)A對(duì)于后級(jí)觸發(fā)器來(lái)說(shuō)就跟毛刺一般,最終什么也檢測(cè)不到,如圖4.7所示。圖4.7脈沖觸發(fā)電路的失效示意圖三由此可以看出,如果要避免上面這三種情況,信號(hào)A的長(zhǎng)度一定要大于兩個(gè)時(shí)鐘周期。如果沒(méi)有對(duì)異步信號(hào)的波形進(jìn)行約束,僅僅根據(jù)最終輸出端的結(jié)果是不能確保已經(jīng)正常捕獲異步信號(hào)的。在傳輸并行數(shù)據(jù)的時(shí)候,有的設(shè)計(jì)者使用兩級(jí)觸發(fā)器對(duì)所有的數(shù)據(jù)位進(jìn)行同步,他們認(rèn)為只要打兩拍就能降低故障率,其實(shí)這種做法提高了故障率。以傳輸3位數(shù)組為例,如圖4.8所示。假設(shè)異步數(shù)據(jù)由全0變?yōu)槿?,這就意味著每一位都發(fā)生了變化,這在異步傳輸中是最容易出故障的情況,如圖4.9所示。圖4.8兩級(jí)觸發(fā)器級(jí)聯(lián)傳輸并行數(shù)據(jù)示意圖因?yàn)楫惒叫盘?hào)與本地時(shí)鐘沒(méi)有任何聯(lián)系,所以異步信號(hào)Asy[2:0]的變換沿到達(dá)時(shí)刻有可能違背了觸發(fā)器對(duì)建立或者保持時(shí)間的要求,考慮最壞的情況,當(dāng)Asy[2:0]從全“0”變?yōu)槿?”的時(shí)刻被本地時(shí)鐘采樣,那么兩級(jí)觸發(fā)器同步后的結(jié)果就有可能是Asy[2:0]所能表示數(shù)據(jù)范圍的任何值。如果這個(gè)被錯(cuò)誤識(shí)別的并行數(shù)據(jù)屬于狀態(tài)機(jī)的合法的狀態(tài)編碼,將造成系統(tǒng)狀態(tài)切換故障,如果屬于非法的狀態(tài)編碼,通常程序會(huì)自動(dòng)將非法狀態(tài)引到初始狀態(tài),但是顯然如果發(fā)生了這種情況,對(duì)系統(tǒng)來(lái)說(shuō)就意味著發(fā)生了故障,進(jìn)行中的處理流程就此中斷,重新回到了處理起點(diǎn)。如果這個(gè)并行數(shù)據(jù)是數(shù)據(jù)處理信號(hào),那么對(duì)于處理模塊來(lái)說(shuō)就屬于異常數(shù)據(jù),即使設(shè)置了濾波模塊,但是多次的數(shù)據(jù)異常最終將導(dǎo)致處理錯(cuò)誤。從MTBF的角度考慮,對(duì)于同一種觸發(fā)器,如果傳輸一位數(shù)據(jù)在單位時(shí)間內(nèi)出故障的次數(shù)是n次,那么同時(shí)傳輸m位數(shù)據(jù),在單位時(shí)間內(nèi)出故障的次數(shù)就變?yōu)閚*m次,也就是說(shuō)MTBF下降到了原來(lái)的m分之一。如果并行數(shù)據(jù)是連續(xù)遞增或者遞減的規(guī)律數(shù)據(jù),那么可以通過(guò)轉(zhuǎn)換為格雷碼傳輸緩解出現(xiàn)亞穩(wěn)態(tài)故障,但是這就增加了資源開(kāi)銷,而且對(duì)于前后值沒(méi)有確定關(guān)系的并行數(shù)據(jù)來(lái)說(shuō),格雷碼也無(wú)能為力。圖4.9兩級(jí)觸發(fā)器級(jí)聯(lián)傳輸并行數(shù)據(jù)發(fā)生亞穩(wěn)態(tài)時(shí)序圖即使在本地時(shí)鐘觸發(fā)時(shí),輸入數(shù)據(jù)滿足了建立和保持時(shí)間的要求,也不能完全相信接收下來(lái)的數(shù)據(jù)是正確的。這是因?yàn)殡m然數(shù)據(jù)在發(fā)出端口是完全對(duì)齊的(顯然是相對(duì)于發(fā)送時(shí)鐘),由于數(shù)據(jù)傳輸線的延遲,在輸入端也不可能對(duì)齊。仍然舉上面的例子,Asy[2:0]在發(fā)出時(shí),3位的變化沿全部對(duì)齊,但是在傳輸?shù)浇邮斩说臅r(shí)候,各位之間就出現(xiàn)了偏差,于是接收端出現(xiàn)錯(cuò)誤。如圖4.10所示。圖4.10兩級(jí)觸發(fā)器級(jí)聯(lián)傳輸并行數(shù)據(jù)發(fā)生錯(cuò)誤時(shí)序圖使用兩級(jí)觸發(fā)器的時(shí)候,還有一點(diǎn)需要注意,在跨時(shí)鐘域的通道上,也就是發(fā)送寄存器和接收寄存器之間不能有任何組合邏輯,如圖4.11所示。數(shù)據(jù)傳輸很重要的一點(diǎn)就是進(jìn)入接收時(shí)鐘域中第一級(jí)觸發(fā)器的輸入信號(hào)不能出現(xiàn)毛刺。因?yàn)樵诮邮斩说臅r(shí)鐘可能在輸入信號(hào)的任何位置采樣,所以可能采到毛刺。比如圖4.11中的組合邏輯在變化的時(shí)候就會(huì)不可避免的出現(xiàn)毛刺,那么就可能被接收端捕獲,這樣即使?jié)M足了建立保持時(shí)間的要求,捕獲的數(shù)據(jù)也是錯(cuò)誤的。在第二章的STA小節(jié)中,還沒(méi)有考慮時(shí)間,但是根據(jù)第三章MTBF章節(jié)的知識(shí),可以很容易得出,其中為從第一級(jí)觸發(fā)器輸出時(shí)刻開(kāi)始到遇到的第一個(gè)第二級(jí)觸發(fā)器采樣時(shí)刻的間隔,顯然增加的組合邏輯會(huì)減少時(shí)間,并且指數(shù)倍的降低可靠性。在FPGA程序的頂層文件中,連接兩個(gè)模塊的組合邏輯稱為gluelogic,這樣做使得工具在做綜合優(yōu)化時(shí)發(fā)生困難,因此同樣是禁止的。圖4.11兩級(jí)觸發(fā)器級(jí)聯(lián)電路中存在組合電路示意圖從以上分析可以看出,兩級(jí)觸發(fā)器并不能解決所有的異步問(wèn)題,它只適用于同步一位異步信號(hào)的情況,而且必須保證異步信號(hào)有效的時(shí)間足夠長(zhǎng),這樣即使第一次判定失敗,但是第二次也一定判斷成功,所以在這種情況下亞穩(wěn)態(tài)對(duì)系統(tǒng)的影響僅僅是處理時(shí)間延長(zhǎng)了一個(gè)周期,通常這并不會(huì)造成系統(tǒng)的功能故障,另外即使是傳輸1位數(shù)據(jù),也應(yīng)避免在傳輸路徑上出現(xiàn)組合邏輯。4.2握手協(xié)議在跨時(shí)鐘域傳輸數(shù)據(jù)時(shí),為了降低系統(tǒng)故障率就需要盡量減少跨時(shí)鐘域的信號(hào)數(shù)目。而使用握手協(xié)議,可以僅僅對(duì)請(qǐng)求信號(hào)REQ和應(yīng)答信號(hào)ACK進(jìn)行同步,在REQ有效的時(shí)間內(nèi),由發(fā)送端保證數(shù)據(jù)不變,所以握手協(xié)議能夠滿足并行數(shù)據(jù)傳輸安全的需要。握手協(xié)議最大的缺點(diǎn)就是每傳輸一次數(shù)據(jù)就要對(duì)所有的控制信號(hào)操作一遍,造成傳輸速度下降。為簡(jiǎn)化起見(jiàn),在本文中提到的握手協(xié)議都是單向握手協(xié)議。完整的單向握手協(xié)議流程是:發(fā)送端將并行數(shù)據(jù)放到數(shù)據(jù)線上,同時(shí)發(fā)出一個(gè)“數(shù)據(jù)有效”的請(qǐng)求信號(hào)REQ,當(dāng)本地時(shí)鐘識(shí)別到REQ有效后就開(kāi)始接收這組數(shù)據(jù),接收完成后便向發(fā)送端返回一個(gè)應(yīng)答信號(hào)ACK。當(dāng)發(fā)送端識(shí)別到這個(gè)應(yīng)答信號(hào)ACK后就撤銷請(qǐng)求信號(hào)REQ,最后接收端檢測(cè)到請(qǐng)求信號(hào)REQ無(wú)效后,也就撤銷了應(yīng)答信號(hào)ACK。發(fā)送端檢測(cè)到應(yīng)答信號(hào)ACK無(wú)效后便可以開(kāi)始新一輪的請(qǐng)求。假設(shè)CLK_R表示接收時(shí)鐘,CLK_T表示發(fā)送時(shí)鐘,如圖4.12所示。圖4.12握手協(xié)議的流程示意圖可見(jiàn),每完成一次傳輸,需要6個(gè)發(fā)送時(shí)鐘周期和6個(gè)接收時(shí)鐘周期,這就是完整的握手協(xié)議,足夠的耗時(shí)保證了足夠的可靠。實(shí)際當(dāng)中握手協(xié)議的實(shí)現(xiàn)電路可能有多種,下面介紹兩種實(shí)現(xiàn)握手協(xié)議的經(jīng)典電路。第一種是Xilinx在其TechXclusives[28]中提供的實(shí)現(xiàn)此握手協(xié)議的FPGA邏輯電路,如下圖所示:圖4.13握手協(xié)議的第一種實(shí)現(xiàn)電路[28]圖中兩個(gè)觸發(fā)器的清零端均為異步高電平清零。發(fā)送端先將并行數(shù)據(jù)放置在總線上,然后通過(guò)給觸發(fā)器A觸發(fā)來(lái)表示數(shù)據(jù)準(zhǔn)備好了,它的輸出將使收發(fā)雙方監(jiān)控的標(biāo)記(Flag)線置為高電平。一旦標(biāo)記為高,發(fā)送端就必須在總線上保持?jǐn)?shù)據(jù)以便接收端讀取。接收端讀完數(shù)據(jù)后,就觸發(fā)觸發(fā)器B,用它的輸出作為確認(rèn)。然后觸發(fā)器A就被清零,標(biāo)記被拉為低電平,這樣就導(dǎo)致觸發(fā)器B也被清零。文中稱此電路的這個(gè)握手協(xié)議的過(guò)程本身是沒(méi)有危險(xiǎn)的,不論發(fā)送時(shí)鐘和接收時(shí)鐘以及它們的時(shí)序之間是任意的關(guān)系還是沒(méi)有關(guān)系,這個(gè)設(shè)計(jì)都能夠可靠的工作。但是這個(gè)電路仍然存在問(wèn)題,首先這兩個(gè)觸發(fā)器的復(fù)位(清零)信號(hào)都來(lái)自異步時(shí)鐘域,使用的時(shí)候卻沒(méi)有進(jìn)行同步,這樣做會(huì)違背觸發(fā)器的recoverytime(即從復(fù)位信號(hào)的釋放時(shí)刻到其之后遇到的第一個(gè)時(shí)鐘觸發(fā)沿的最小時(shí)間間隔)和removaltime(即從復(fù)位信號(hào)的釋放時(shí)刻到其之前遇到的第一個(gè)時(shí)鐘觸發(fā)沿的最小時(shí)間間隔),造成設(shè)計(jì)的穩(wěn)定性問(wèn)題。正確的處理方法是在外界的復(fù)位信號(hào)進(jìn)入本地時(shí)鐘域的時(shí)候進(jìn)行兩級(jí)觸發(fā)器同步,如果不希望復(fù)位延遲,可以添加邏輯門(mén)實(shí)現(xiàn),如果是高復(fù)位,則使用或門(mén),如圖4.14所示;如果是低復(fù)位,則使用與門(mén),實(shí)現(xiàn)同步釋放。圖4.14第一種復(fù)位信號(hào)的同步電路示意圖圖4.15所示為另一種復(fù)位信號(hào)的同步電路,這個(gè)電路不論復(fù)位信號(hào)的脈寬和接收時(shí)鐘的周期如何都能夠確保穩(wěn)定復(fù)位。圖4.15第二種復(fù)位信號(hào)的同步電路示意圖圖中,DFF1為異步高電平復(fù)位,正常情況下所有觸發(fā)器的輸出和異步復(fù)位信號(hào)都停留在低電平,所以DFF1的清零端為低電平,當(dāng)異步復(fù)位信號(hào)的高電平來(lái)臨的時(shí)候,就引起DFF1的一次觸發(fā),邏輯“1”將最終傳輸?shù)紻FF3的輸出端,如果此時(shí)異步復(fù)位信號(hào)已經(jīng)返回低電平,那么與門(mén)將輸出一個(gè)高電平,因?yàn)镈FF2和DFF3的兩級(jí)延遲,所以異步復(fù)位信號(hào)的高電平持續(xù)的時(shí)間為兩個(gè)時(shí)鐘周期,然后同時(shí)變?yōu)榈碗娖健H绻?dāng)邏輯“1”最終傳輸?shù)紻FF3的輸出端時(shí),異步復(fù)位信號(hào)仍然處于高電平,那么與門(mén)將繼續(xù)保持低電平,直到異步復(fù)位信號(hào)變?yōu)榈碗娖揭l(fā)第一級(jí)觸發(fā)器復(fù)位,再經(jīng)過(guò)兩個(gè)時(shí)鐘周期將DFF3的輸出端置為低電平,與門(mén)輸出低電平,解除復(fù)位。第二種握手協(xié)議的實(shí)現(xiàn)電路來(lái)自文獻(xiàn)[29],如圖4.16所示。圖中,當(dāng)發(fā)送端有數(shù)據(jù)要發(fā)送時(shí),就將數(shù)據(jù)放到數(shù)據(jù)線上,同時(shí)將REQ信號(hào)置高,通過(guò)接收端的兩級(jí)觸發(fā)器同步后,接收端開(kāi)始接收數(shù)據(jù)線上的數(shù)據(jù),并將同步后的REQ信號(hào)作為ACK信號(hào)返回給發(fā)送端,發(fā)送端接收到ACK信號(hào)先將其同步,然后將REQ信號(hào)置低,并撤消掉數(shù)據(jù)線上的數(shù)據(jù),這樣就完成了一次數(shù)據(jù)的傳遞。因?yàn)檩敵龅腁CK就是同步后的REQ,所以能夠節(jié)省一個(gè)CLK2周期。圖4.16握手協(xié)議的第二種實(shí)現(xiàn)電路[29]4.3開(kāi)環(huán)控制如果異步信號(hào)變化的頻率很慢,也就是說(shuō)異步信號(hào)的周期相當(dāng)長(zhǎng),那么也可以不需要這么復(fù)雜的握手協(xié)議,Xilinx在其TechXclusives[28]中提供了一種簡(jiǎn)化方案,如圖4.17所示。圖4.17握手協(xié)議的簡(jiǎn)化方案[28]此方案中,發(fā)送端將N-1位數(shù)據(jù)和一個(gè)額外的用于指示新的數(shù)據(jù)字變換狀態(tài)的比特組合成N位數(shù)據(jù),然后將這N位數(shù)據(jù)通過(guò)本地觸發(fā)器后寫(xiě)入接收端的兩級(jí)觸發(fā)器。接收端的兩個(gè)觸發(fā)器的輸出接到一個(gè)一致性比較器上,只有兩個(gè)觸發(fā)器的輸出一致的時(shí)候才認(rèn)為數(shù)據(jù)是有效的,這樣可以有效的避免亞穩(wěn)態(tài)的傳遞。這里值得注意的是,發(fā)送端的那個(gè)額外的比特可以用以接收器區(qū)別一連串相同的字,但也可能是不必要的,這取決于系統(tǒng)的要求。從原理上講,這個(gè)電路沒(méi)有問(wèn)題,有的代碼會(huì)使用更多級(jí)的同步寄存器,實(shí)際上這種方法是一種延時(shí)去抖,但是如果并行數(shù)據(jù)極其龐大,那么接收寄存器和比較器也將極其龐大,由于耗費(fèi)了大量的系統(tǒng)資源,并且在識(shí)別“數(shù)據(jù)有效”信號(hào)的時(shí)候也需要一個(gè)觸發(fā)器,那么顯然比較器所在的這條路徑的時(shí)鐘速度不會(huì)太快。所以大型邏輯設(shè)計(jì)不會(huì)使用這種方法。下面介紹文獻(xiàn)[30]中提出的兩種情況下(從快時(shí)鐘域到慢時(shí)鐘域和從慢時(shí)鐘域到快時(shí)鐘域)的開(kāi)環(huán)控制電路,它們沒(méi)有握手協(xié)議那么復(fù)雜,發(fā)送方和接收方之間沒(méi)有顯式的請(qǐng)求和應(yīng)答等握手信號(hào),只是通過(guò)特殊的電路設(shè)計(jì)以確保異步信號(hào)的正確接收。首先介紹第一種開(kāi)環(huán)控制電路,其電路示意圖以及發(fā)送端和接收端收發(fā)數(shù)據(jù)的時(shí)序圖分別如圖4.18和4.19所示。圖中,發(fā)送端的時(shí)鐘ClockS比較慢,接收端的時(shí)鐘ClockF比較快。ClockF將ClockS通過(guò)三級(jí)觸發(fā)器打3拍,當(dāng)ClockF檢測(cè)到SyncSignal為高電平時(shí),將外界信號(hào)DataS讀入本地寄存器DataSinkS,完成了異步信號(hào)的同步。文中還強(qiáng)調(diào)在跨時(shí)鐘域的傳輸路徑上的組合邏輯延遲要小于n倍的ClcokF周期,即其實(shí)為了保證穩(wěn)定,應(yīng)該是保證在ClockF采集到SyncSignal有效的時(shí)候,DataS滿足接受端觸發(fā)器的建立時(shí)間和保持時(shí)間,顯然當(dāng)前已知的條件太少了,上式只不過(guò)是保證穩(wěn)定的必要條件。圖4.18第一種開(kāi)環(huán)控制電路的電路示意圖[30]圖4.19第一種開(kāi)環(huán)控制電路的時(shí)序圖[30]從原理上講,如果傳輸路徑上的組合邏輯延遲足夠小(實(shí)際上不應(yīng)當(dāng)存在組合邏輯,理由見(jiàn)第一節(jié)),就可以滿足接收端的建立時(shí)間,如果ClockS足夠慢也可以滿足接收端的保持時(shí)間,其實(shí)是將ClockS做為數(shù)據(jù)有效的控制信號(hào),但是如果在FPGA內(nèi)實(shí)現(xiàn)這種電路,是不推薦的。這是因?yàn)镕PGA芯片內(nèi)部設(shè)計(jì)了專門(mén)的高扇出、低偏斜(low-skew)的時(shí)鐘網(wǎng)絡(luò),在綜合的時(shí)候會(huì)自動(dòng)將接在觸發(fā)器時(shí)鐘端的信號(hào)連接到這個(gè)網(wǎng)絡(luò)中,但是如果設(shè)計(jì)者又將時(shí)鐘信號(hào)連接到其它觸發(fā)器的數(shù)據(jù)輸入端口,一些以前系列的芯片(比如FLEX和ACEX)就不再允許這個(gè)信號(hào)使用時(shí)鐘網(wǎng)絡(luò),由此造成的高skew對(duì)設(shè)計(jì)來(lái)說(shuō)將是災(zāi)難性的。即使是使用當(dāng)今的芯片,廠家也不建議用戶這樣設(shè)計(jì)。另外,工具也不再將此設(shè)計(jì)視為同步設(shè)計(jì),造成STA復(fù)雜而且困難。如果真的想實(shí)現(xiàn)這樣的效果,在FPGA中正確的做法應(yīng)該是,先產(chǎn)生與ClockS形狀一樣的數(shù)據(jù)信號(hào),然后將其送給ClockF。具體做法為:首先將ClockS兩分頻得到ClockS_div2_1,然后用下降沿打一次得到ClockS_div2_2,然后將這兩個(gè)信號(hào)異或,就得到了ClockS_o,最后將其送給ClockF,如圖4.20所示。圖4.20對(duì)開(kāi)環(huán)控制電路的時(shí)鐘信號(hào)的改進(jìn)下面介紹文獻(xiàn)[30]中的第二種情況下的開(kāi)環(huán)控制電路,其電路示意圖和時(shí)序圖分別如圖4.21和4.22所示。發(fā)送端的時(shí)鐘ClockF比較快,接收端的時(shí)鐘ClockS比較慢,ClockF將ClockS打3拍輸出SyncSignal,在SyncSignal為低電平期間,就將頭一個(gè)DataF的數(shù)值鎖定在DataFlocked中,提供給ClockS穩(wěn)定的采樣。圖4.21第二種開(kāi)環(huán)控制電路的電路示意圖[30]圖4.22第二種開(kāi)環(huán)控制電路的時(shí)序圖[30]這個(gè)電路除了上面提到的兩個(gè)問(wèn)題外,從功能上就值得懷疑。首先發(fā)送端向接收端提供的數(shù)值應(yīng)該是確定的,而這個(gè)電路提供的數(shù)值實(shí)際上是由ClockS和ClockF的相位關(guān)系決定,由于兩個(gè)時(shí)鐘沒(méi)有任何關(guān)系,所以提供的數(shù)值到底是DataF中的哪一個(gè)也不能預(yù)先確定,即使DataFlocked能夠在ClockS的觸發(fā)沿處保持穩(wěn)定,這個(gè)電路也沒(méi)有實(shí)際意義。實(shí)際上,如果如上圖所示的那樣,快時(shí)鐘ClockF的每一個(gè)時(shí)鐘周期都輸出一個(gè)新數(shù)值,那么慢時(shí)鐘ClockS必然無(wú)法采集到每個(gè)變化值。正確的做法是ClockF時(shí)鐘域在需要發(fā)送數(shù)據(jù)的時(shí)刻,將當(dāng)前DataF存入數(shù)據(jù)總線,并提供給ClockS時(shí)鐘域一個(gè)有效控制信號(hào),表示數(shù)據(jù)此時(shí)已經(jīng)穩(wěn)定,只要保證控制信號(hào)有效的長(zhǎng)度,并進(jìn)行兩級(jí)同步,就能實(shí)現(xiàn)傳輸數(shù)據(jù)的確定性和穩(wěn)定性。前面介紹的跨時(shí)鐘域控制信號(hào)(稱為開(kāi)環(huán)控制是因?yàn)榘l(fā)送端不需要應(yīng)答信號(hào)進(jìn)行確認(rèn))僅有1位。如果開(kāi)環(huán)控制電路的控制信號(hào)超過(guò)了1位,情況就變得復(fù)雜起來(lái)。在文獻(xiàn)[29]中提供了一個(gè)具有兩個(gè)控制信號(hào)的開(kāi)環(huán)控制電路,如圖4.23中(a)所示。接收端需要等待發(fā)送端發(fā)出的load信號(hào)和enable信號(hào)同時(shí)有效的時(shí)候,才會(huì)接收數(shù)據(jù)。但是即使在發(fā)送這兩個(gè)控制信號(hào)時(shí)沒(méi)有偏差,但是經(jīng)過(guò)傳輸后,還是會(huì)出現(xiàn)微小的偏差,結(jié)果造成了傳輸失敗,如圖4.23中(b)所示。對(duì)這種傳輸錯(cuò)誤的解決方法就是將兩個(gè)信號(hào)load和enable合并為一個(gè)信號(hào)傳輸,如圖4.24(a)所示,圖4.24(b)顯示傳輸成功。其實(shí)圖4.23最大的問(wèn)題不是兩個(gè)信號(hào)的時(shí)間偏移,而是信號(hào)有效的時(shí)間太短了,即使采用第二個(gè)圖,也只能保證兩個(gè)信號(hào)同時(shí)被采集到或者同時(shí)沒(méi)有采集到。實(shí)際中,為了保證接收端采集控制信號(hào)的可靠,通常會(huì)將控制信號(hào)拉長(zhǎng),所以即使采集兩個(gè)信號(hào)也可以保證穩(wěn)定。圖4.23具有兩控制信號(hào)的開(kāi)環(huán)控制電路及信號(hào)傳輸示意圖[29]圖4.24兩控制信號(hào)的開(kāi)環(huán)控制電路的改進(jìn)[29]在實(shí)際應(yīng)用中,有時(shí)發(fā)送端的控制信號(hào)不可能合并為一個(gè),比如雙向傳輸過(guò)程,主控制器連接了不同的外圍器件,同這些外圍器件通信全靠片選和地址線區(qū)分,讀操作和寫(xiě)操作也各需要一個(gè)控制信號(hào):讀使能和寫(xiě)使能。如果控制器不可編程,即使只向單一器件單向傳輸,設(shè)計(jì)者也不可能要求控制器將多個(gè)控制信號(hào)合并為一個(gè)。4.4雙口RAM處理跨時(shí)鐘域的常用方法是使用FIFO[31,32,33,34],F(xiàn)IFO的一個(gè)特點(diǎn)就是讀寫(xiě)操作的地址指針順序變化,這種方式提高了FIFO的工作速度,但是也造成了對(duì)FIFO控制的僵化。在需要對(duì)事先存儲(chǔ)數(shù)據(jù)進(jìn)行精確尋址(回讀)的時(shí)候,就需要使用雙口RAM。雙口RAM作為一種性能優(yōu)越的快速通信器件,適用于高速數(shù)字系統(tǒng)的設(shè)計(jì)中,它的優(yōu)點(diǎn)是:提供了兩路完全獨(dú)立的端口,每路端口都有完整的地址線、數(shù)據(jù)線和控制線,允許對(duì)雙端口存儲(chǔ)器的不同單元進(jìn)行同時(shí)存取。4.5克服亞穩(wěn)態(tài)的FPGA設(shè)計(jì)實(shí)例本章的前4節(jié)分析了同步電路能夠克服亞穩(wěn)態(tài)的原理,但是這對(duì)于解決亞穩(wěn)態(tài)還遠(yuǎn)遠(yuǎn)不夠,因?yàn)閷?shí)際中由亞穩(wěn)態(tài)引發(fā)的故障現(xiàn)象千奇百怪,這需要設(shè)計(jì)者能夠透過(guò)表象快速找到故障根源。下面將以工程實(shí)際為例,介紹處理亞穩(wěn)態(tài)的軟件設(shè)計(jì)技巧和硬件調(diào)試技巧。4.5.1軟件鎖相中的亞穩(wěn)態(tài)處理在某項(xiàng)目中,基帶處理板向射頻板輸出頻率準(zhǔn)確的時(shí)鐘,但是由于傳輸鏈路帶來(lái)的干擾增加了時(shí)鐘的相噪,所以射頻板沒(méi)有直接使用這個(gè)外界時(shí)鐘作為本板的工作時(shí)鐘,而是在射頻板上使用了普通的VCXO(),為了最終達(dá)到兩板之間的時(shí)鐘同步,射頻板上的FPGA和CPU合作實(shí)現(xiàn)了利用外界時(shí)鐘對(duì)本板工作時(shí)鐘的實(shí)時(shí)校準(zhǔn)功能。圖4.25所示為軟件鎖相的結(jié)構(gòu)框圖,其中鑒相功能和對(duì)DA的控制在FPGA內(nèi)部實(shí)現(xiàn),鎖相控制算法在BSP中實(shí)現(xiàn)。鑒相的基本思路是:如果本板VCXO非常準(zhǔn)確,那么每隔固定時(shí)間,兩個(gè)時(shí)鐘的上升沿必然會(huì)對(duì)齊一次。也就是說(shuō)滿足(其中和分別為兩個(gè)時(shí)鐘的周期,和分別為兩個(gè)時(shí)鐘周期的計(jì)數(shù)值),如圖2.26所示。在選取參數(shù)的時(shí)候,為了提高最小鑒相精度,在FPGA內(nèi)部對(duì)進(jìn)行了4倍頻處理,倍頻后的時(shí)鐘作為鑒相時(shí)鐘,為了增大累積相差,在FPGA內(nèi)部對(duì)進(jìn)行分頻處理,分頻后的時(shí)鐘為,設(shè)定分頻后的時(shí)鐘周期為,顯然如果VCXO頻率準(zhǔn)確,那么在一個(gè)中用計(jì)數(shù)結(jié)果應(yīng)當(dāng)是一個(gè)可預(yù)知的常量,但是如果VCXO頻率偏移,那么計(jì)數(shù)值也會(huì)偏移,CPU根據(jù)FPGA輸出的計(jì)數(shù)值(鑒相值)的偏移方向就可以推斷出VCXO頻率偏移的趨勢(shì),然后CPU根據(jù)鎖相算法輸出一個(gè)控制DA電壓值返回給FPGA,F(xiàn)PGA模擬DA的時(shí)序?qū)⒋丝貕褐递敵龅紻A的控制接口,每次調(diào)整的結(jié)果都是將VCXO的頻率向理想的時(shí)鐘頻率方向移動(dòng),這樣就實(shí)現(xiàn)了整個(gè)閉環(huán)鎖相流程。圖4.25軟件鎖相的結(jié)構(gòu)框圖圖2.26時(shí)鐘關(guān)系圖在鑒相過(guò)程中,由于兩個(gè)時(shí)鐘和不相關(guān),如何識(shí)別就成為設(shè)計(jì)中需要注意的問(wèn)題。實(shí)際設(shè)計(jì)中解決方法是對(duì)原始的先進(jìn)行同步處理然后再對(duì)同步后的進(jìn)行取上升沿操作,這樣就同時(shí)解決了異步時(shí)鐘域的隔離和識(shí)別的問(wèn)題。如圖4.27所示,整個(gè)處理流程都工作在下,顯然如此設(shè)計(jì)屬于同步設(shè)計(jì),然后在同步器中實(shí)現(xiàn)同步和取沿操作。圖4.28顯示了同步器的設(shè)計(jì),前面兩級(jí)觸發(fā)器實(shí)現(xiàn)了對(duì)異步信號(hào)的同步功能,后面兩級(jí)觸發(fā)器和異或門(mén)實(shí)現(xiàn)了取沿操作,當(dāng)然后面的兩級(jí)觸發(fā)器的使用同樣也降低了亞穩(wěn)態(tài)發(fā)生的概率。圖4.29清晰的顯示了同步器電路的時(shí)序圖。圖4.27鑒相流程圖2.28同步電路圖圖4.29同步電路時(shí)序圖鑒相器模塊的功能是在每個(gè)周期開(kāi)始的時(shí)刻計(jì)數(shù),在每個(gè)周期結(jié)束的時(shí)刻將計(jì)數(shù)值送給控制DA模塊,同時(shí)將計(jì)數(shù)值清零,也就是說(shuō)FPGA上報(bào)鑒相值的周期是,由于晶振的漂移效應(yīng),剛剛上電時(shí)的鑒相值相比理想值會(huì)偏離很遠(yuǎn),但是經(jīng)過(guò)幾分鐘的調(diào)整后,鑒相值的抖動(dòng)便限制在偏離理想值正負(fù)5之內(nèi),如果BSP將鑒相值打印出來(lái),那么從超級(jí)終端中看到的現(xiàn)象就是鑒相值快速的向理想值收斂,同時(shí)抖動(dòng)范圍也迅速減小。設(shè)計(jì)中遇到另一個(gè)會(huì)引發(fā)亞穩(wěn)態(tài)故障的設(shè)計(jì)部分來(lái)自控制DA模塊,控制DA的時(shí)鐘由輸入到FPGA內(nèi)部的CPU時(shí)鐘CLK_CPU計(jì)數(shù)產(chǎn)生,之所以使用計(jì)數(shù)產(chǎn)生是因?yàn)樵贔PGA內(nèi)部對(duì)CPU時(shí)鐘進(jìn)行降頻后產(chǎn)生信號(hào)送給外界的芯片作為工作時(shí)鐘使用,所以不必使用FPGA內(nèi)部的PLL產(chǎn)生,這樣設(shè)計(jì)唯一需要保證的就是接口的時(shí)序關(guān)系必須完全符合芯片手冊(cè)對(duì)建立保持時(shí)間和時(shí)鐘最高速度的要求。由于CLK_CPU比CLK_DA快的多,所以如果CLK_DA直接對(duì)CPU發(fā)出的中斷信號(hào)進(jìn)行采樣就不能保證每次都能夠成功采到,解決這個(gè)問(wèn)題的方法就是在CPU模塊中將接收下來(lái)的中斷信號(hào)進(jìn)行延拓,延拓的結(jié)果要求保證超過(guò)兩個(gè)CLK_DA的長(zhǎng)度,這樣CLK_DA就能夠準(zhǔn)確采集到控壓值,具體流程如圖4.30所示。圖4.30控制DA流程但是如此設(shè)計(jì)會(huì)引發(fā)另外一個(gè)問(wèn)題,如果控制DA模塊直接使用CLK_DA作為模塊的工作時(shí)鐘,實(shí)驗(yàn)表明很容易引發(fā)輸出信號(hào)線DATA_DA的紊亂。原因很簡(jiǎn)單,CLK_DA由CLK_CPU計(jì)數(shù)產(chǎn)生,由于FPGA內(nèi)部數(shù)據(jù)線的巨大延遲,根本無(wú)法保證CLK_DA能夠準(zhǔn)確的采集到來(lái)自CLK_CPU時(shí)鐘域的控壓值(雖然用modelsim進(jìn)行功能仿真的時(shí)候很正常),既然采集到的控壓值不正確,那么對(duì)其進(jìn)行并串轉(zhuǎn)換后的輸出結(jié)果DATA_DA必然也不正常。由于CLK_CPU和CLK_DA存在整數(shù)倍關(guān)系,所以解決這個(gè)問(wèn)題最簡(jiǎn)單的方法就是控制DA模塊不使用CLK_DA作為工作時(shí)鐘(雖然從外界看上去工作頻率是CLK_DA),而是利用觸發(fā)器的EN端,將所有觸發(fā)器的工作時(shí)鐘均設(shè)定為CLK_CPU,只是在每個(gè)CLK_DA周期的開(kāi)始將EN端置一個(gè)CLK_CPU周期的高電平有效,這樣雖然觸發(fā)器的工作時(shí)鐘是CLK_CPU,但是由于EN端的有效控制使得輸出DATA_DA的工作頻率是CLK_DA。當(dāng)中斷信號(hào)有效的時(shí)候就將控壓值讀入,然后經(jīng)過(guò)并串轉(zhuǎn)換依次送出到DATA_DA。如此一來(lái),整個(gè)設(shè)計(jì)便全部工作在同一個(gè)時(shí)鐘域中,如圖4.31所示。具體實(shí)現(xiàn)代碼如下:always@(posedgeCLK_CPUornegedgereset_n)if(!reset_n)DA_shiftreg16<=16'b0;elseif(CLK_DA_edge)…圖4.31并轉(zhuǎn)串模塊4.5.2電平標(biāo)準(zhǔn)不匹配引發(fā)亞穩(wěn)態(tài)某單板在常溫下測(cè)試48小時(shí)沒(méi)有出現(xiàn)誤碼,在進(jìn)行高低溫試驗(yàn)中,多次出現(xiàn)上行光口信號(hào)突然丟失的現(xiàn)象,如果重新插拔光纖,上行光口信號(hào)又恢復(fù)正常。更奇怪的是雖然上行光口經(jīng)常出現(xiàn)故障,但是下行光口信號(hào)無(wú)論在常溫還是在高低溫測(cè)試的時(shí)候均工作正常。單板光口通信部分的原理圖如下,PMC7832是一款支持CPRI協(xié)議的芯片,RBI接口的上行工作時(shí)鐘和下行工作時(shí)鐘均為122.88MHz,只是相位相反,數(shù)據(jù)位寬為10位。SERDES接口的上行工作時(shí)鐘和下行工作時(shí)鐘均為1.2288GHz,位寬為1位。圖4.32光口通信原理圖由于進(jìn)行高低溫試驗(yàn)不能使用示波器,所以只能在常溫測(cè)試時(shí)進(jìn)行故障排除。先從接口時(shí)序進(jìn)行分析,由于SERDES接口的工作頻率太高,基于先易后難的原則,首先對(duì)RBI接口的上行鏈路時(shí)序進(jìn)行測(cè)量,結(jié)果如下,其中綠線表示時(shí)鐘,黃線表示數(shù)據(jù)。測(cè)試結(jié)果為時(shí)鐘和數(shù)據(jù)的時(shí)序關(guān)系滿足手冊(cè)中定義的建立和保持時(shí)間要求。圖4.33常溫下的RBI接口時(shí)序圖本來(lái)測(cè)量RBI時(shí)序到此就結(jié)束了,但是在后續(xù)版本更新中,出現(xiàn)了一個(gè)在常溫下也會(huì)造成上行光信號(hào)丟失的FPGA版本,于是在此版本基礎(chǔ)上繼續(xù)用示波器測(cè)量RBI時(shí)鐘,得到如下波形。時(shí)鐘的峰峰值僅有500mV左右,并且整個(gè)時(shí)鐘信號(hào)抬高了1V,顯然FPGA送出的RBI工作時(shí)鐘出現(xiàn)了問(wèn)題。圖4.34不正常的RBI接口時(shí)鐘首先懷疑的是FPGA管腳速度太慢或者是驅(qū)動(dòng)能力不足,于是將管腳約束改為FAST。再次測(cè)量,得到如下的波形,時(shí)鐘信號(hào)的峰峰值變?yōu)?.5V左右,整個(gè)信號(hào)抬高幅度降低到500mV左右,稍有改善,但是仍然不正常。圖4.35管腳約束為FAST后的RBI接口時(shí)鐘接下來(lái)將FPGA管腳驅(qū)動(dòng)電流加大,再次測(cè)量時(shí)鐘信號(hào),得到如下波形,此時(shí)的時(shí)鐘信號(hào)已經(jīng)有了明顯的改善,而且無(wú)論是常溫測(cè)試還是高低溫測(cè)試,光口鏈路均工作正常。圖4.36增加驅(qū)動(dòng)電流后的RBI接口時(shí)鐘到此問(wèn)題已經(jīng)解決,但是后來(lái)經(jīng)過(guò)仔細(xì)研究PMC7832的芯片手冊(cè),發(fā)現(xiàn)PMC7832的RBI接口電平標(biāo)準(zhǔn)是SSTL2,而FPGA管腳電平標(biāo)準(zhǔn)采用的是默認(rèn)的LVCOMS25,兩個(gè)器件接口電平標(biāo)準(zhǔn)不匹配。于是修改FPGA接口管腳電平標(biāo)準(zhǔn)為SSTL2,將管腳驅(qū)動(dòng)電流恢復(fù)為默認(rèn)設(shè)置,再次測(cè)量,得到如下波形,時(shí)鐘完全恢復(fù)正常。圖4.37匹配接口電平標(biāo)準(zhǔn)后的RBI接口時(shí)鐘經(jīng)過(guò)這樣修改后再次進(jìn)行長(zhǎng)時(shí)間的常溫測(cè)試和高低溫測(cè)試,沒(méi)有出現(xiàn)上行信號(hào)丟失的問(wèn)題。設(shè)計(jì)人員往往只是關(guān)注接口時(shí)序,忽略了選擇合適的電平標(biāo)準(zhǔn)和不同電平標(biāo)準(zhǔn)的兼容性問(wèn)題。在低速信號(hào)設(shè)計(jì)中,低速TTL和低速CMOS電平對(duì)接,似乎沒(méi)有問(wèn)題,但是對(duì)于122.88MHz的高速信號(hào),電平標(biāo)準(zhǔn)不兼容和驅(qū)動(dòng)能力不足的矛盾就凸現(xiàn)出來(lái),并最終導(dǎo)致光口的可靠性降低。這就提示設(shè)計(jì)人員設(shè)計(jì)電路時(shí),特別是高速電路設(shè)計(jì),要注意選擇合適的電平標(biāo)準(zhǔn),并注意不同電平標(biāo)準(zhǔn)的兼容性問(wèn)題。4.5.3阻抗不匹配引發(fā)亞穩(wěn)態(tài)基站的下行鏈路如下圖所示,F(xiàn)PGA發(fā)出IQ數(shù)據(jù)送給DAC,然后經(jīng)過(guò)IQ調(diào)制器和功放發(fā)射出去。圖4.38基站的下行鏈路在后期用頻譜儀測(cè)試的時(shí)候發(fā)現(xiàn)射頻指標(biāo)不合格,由于整個(gè)射頻鏈路即DAC后端的鏈路已經(jīng)調(diào)試正常,所有性能指標(biāo)均合格,所以首先懷疑FPGA和DAC之間的時(shí)序關(guān)系不正確。用示波器測(cè)量DAC接口,結(jié)果如下圖所示,其中黃線是FPGA輸出給DAC的數(shù)據(jù)信號(hào)DATA_DA,綠線是FPGA輸出給DA的時(shí)鐘信號(hào)CLK_DA,從圖中可以看出在時(shí)鐘的上升沿(觸發(fā)沿)采集到了數(shù)據(jù)線的兩次下降沿,也就是說(shuō)在這兩個(gè)時(shí)間點(diǎn)沒(méi)有滿足建立保持時(shí)間的要求,顯然DA時(shí)序錯(cuò)誤導(dǎo)致出現(xiàn)誤碼,從而射頻指標(biāo)變差。圖4.39DAC接口時(shí)序圖仔細(xì)分析圖中的時(shí)序關(guān)系發(fā)現(xiàn),無(wú)論時(shí)鐘信號(hào)還是數(shù)據(jù)信號(hào)的下降沿都非常緩慢,數(shù)據(jù)信號(hào)的下降沿達(dá)到了10ns左右,而時(shí)鐘周期僅有16ns左右(時(shí)鐘頻率為61.44MHz),而且時(shí)鐘信號(hào)抬起了大約300mV。基于以上現(xiàn)象的分析,可以懷疑是FPGA輸出管腳的驅(qū)動(dòng)能力過(guò)小和接口電平標(biāo)準(zhǔn)不匹配造成的。DAC的電平標(biāo)準(zhǔn)是LVTTL3.3V,而FPGA管腳的默認(rèn)電平標(biāo)準(zhǔn)是LVCMOS25,所以先將FPGA管腳的電平標(biāo)準(zhǔn)改為L(zhǎng)VCOMS33,同時(shí)將管腳的驅(qū)動(dòng)電流增加,再次測(cè)量后得到如下波形:圖4.40匹配接口電平標(biāo)準(zhǔn)并且增加驅(qū)動(dòng)電流后的DAC時(shí)序圖這時(shí)雖然時(shí)鐘的觸發(fā)沿避開(kāi)了數(shù)據(jù)的下降沿,但是時(shí)序并沒(méi)有完全的改善,同時(shí)數(shù)據(jù)信號(hào)的上沖變大。仔細(xì)觀察時(shí)鐘信號(hào)可以發(fā)現(xiàn),時(shí)鐘的占空比明顯偏離了50%,也就是說(shuō)時(shí)鐘信號(hào)的波形是不正確的。因?yàn)檫@個(gè)時(shí)鐘是由FPGA內(nèi)部的DCM(數(shù)字時(shí)鐘管理模塊)產(chǎn)生,所以首先懷疑DCM的輸出是否就出現(xiàn)了占空比惡化的情況。恰好本板的硬件鎖相環(huán)輸出了一個(gè)與CLK_DA同頻的時(shí)鐘,所以先測(cè)量這兩個(gè)時(shí)鐘的關(guān)系,測(cè)量結(jié)果如下圖所示,其中綠線是硬件鎖相環(huán)輸出時(shí)鐘,黃線為CLK_DA。.圖4.41硬件鎖相環(huán)和DCM輸出時(shí)鐘的比較從圖中可以確定CLK_DA的占空比相對(duì)于正常的時(shí)鐘波形確實(shí)出現(xiàn)了明顯的惡化,于是就將問(wèn)題轉(zhuǎn)移到了如何解決占空比方面。首先考慮時(shí)鐘方案,設(shè)計(jì)中使用的全局時(shí)鐘方案是IBUFG+DCM+BUFG模式,框圖如下:圖4.42時(shí)鐘方案示意圖可以看出這種時(shí)鐘方案是合理的,于是就將排查重點(diǎn)放在了DCM核上面,但是在生成DCM的時(shí)候已經(jīng)設(shè)置了占空比校準(zhǔn),所以核的生成過(guò)程也不存在問(wèn)題,如下圖所示:圖4.43DCM核設(shè)置示意圖于是又懷疑是否由于DCM沒(méi)有鎖定導(dǎo)致輸出時(shí)鐘占空比變差,于是將DCM的鎖定信號(hào)分配到測(cè)試管腳上測(cè)量,引腳電平為高電平,表示DCM已經(jīng)鎖定。既然DCM的邏輯應(yīng)該不會(huì)有問(wèn)題,于是可以認(rèn)定是由于FPGA與DAC接口的阻抗不匹配導(dǎo)致的信號(hào)質(zhì)量惡化。對(duì)單板的匹配電阻更換后,時(shí)鐘信號(hào)的質(zhì)量有了很大的改善,測(cè)試結(jié)果如下圖所示,其中黃線表示時(shí)鐘信號(hào),綠線表示數(shù)據(jù)信號(hào)。圖4.44經(jīng)過(guò)管腳約束后的DAC時(shí)序圖在數(shù)字系統(tǒng)設(shè)計(jì)中,F(xiàn)PGA設(shè)計(jì)者往往只關(guān)心邏輯功能是否正確,又缺乏信號(hào)完整性的相關(guān)知識(shí),造成了調(diào)試?yán)щy。其實(shí)在遇到這類故障時(shí),如果首先將DA斷開(kāi)測(cè)量,就可以很容易的判斷出是由于單板阻抗不匹配造成的DA時(shí)序錯(cuò)誤。在通常的項(xiàng)目中,F(xiàn)PGA都處于比較核心的位置,與之相連的外圍器件非常多,這就要求設(shè)計(jì)者對(duì)每一個(gè)與FPGA相連的芯片和接口十分了解,對(duì)于接口時(shí)序關(guān)系要非常重視,因?yàn)闊o(wú)論前仿真正確還是后仿真正確,都不代表FPGA的實(shí)際工作情況正確。影響信號(hào)完整性的因素很多,F(xiàn)PGA設(shè)計(jì)者不但要了解邏輯設(shè)計(jì)而且要了解板級(jí)和系統(tǒng)級(jí)的知識(shí),這樣設(shè)計(jì)出來(lái)的產(chǎn)品才會(huì)更加穩(wěn)定。4.5.4CPU與FPGA之間的安全通信某項(xiàng)目使用了芯片廠商freescale生產(chǎn)的專用通信處理器系列中的一款CPU,它具有低價(jià)格,高集成度的特點(diǎn),被廣泛應(yīng)用于路由器,工業(yè)控制和電子測(cè)量等領(lǐng)域。此CPU屬于PowerQUICCtm家族,擁有更高的性能,更多的功能和更快的接口速度,在產(chǎn)品上市速度,價(jià)格,功耗和封裝方面具有明顯的優(yōu)勢(shì)。芯片中包含一個(gè)e300c2PowerPC核,屬于MPC603e(使用在早期的Power QUICCⅡ處理器當(dāng)中)的升級(jí)版本。升級(jí)的功能包括集成奇偶校驗(yàn),雙整數(shù)單元。CPU核心與MPC603e在軟件方面兼容,屬于32bits的PowerPC架構(gòu),提供了32bits寬的地址線和可選擇的數(shù)據(jù)寬度類型(8,16或者32bits),但是并不支持浮點(diǎn)運(yùn)算。CPU內(nèi)部集成了5個(gè)執(zhí)行單元:兩個(gè)整數(shù)單元(IU1和IU2),包含了完整的乘法器和除法器,一個(gè)分支處理單元(BPU)進(jìn)行靜態(tài)分支預(yù)測(cè),一個(gè)裝載/存儲(chǔ)單元(LSU)用于數(shù)據(jù)傳輸,一個(gè)系統(tǒng)寄存器單元(SRU)。e300c核心可以實(shí)現(xiàn)5條指令并行執(zhí)行。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論