專家教你如何設計高級FPGA時鍾域
發布時間:2014-04-19 責任編輯:xiongjianhua
整個設計最好采用唯一的時鍾域可以簡化時序分析以及減少很多與多時鍾域有關的問題,但是由於FPGA外各種係統限製,隻使用一個時鍾常常又不現實。FPGA時常需要在兩個不同時鍾頻率係統之間交換數據,在係統之間通過多I/O接口接收和發送數據,處理異步信號,以及為帶門控時鍾的低功耗ASIC 進行原型驗證。
這裏提到的時鍾域,是指一組邏輯,這組邏輯中的所有同步單元(觸發器、同步RAM塊以及流水乘法器等)都使用同一個網絡作為時鍾。假如設計中所有的觸發器都使用一個全局網絡,比如FPGA的主時鍾輸入,那麼我們說這個設計隻有一個時鍾域。假如設計有兩個輸入時鍾,如圖6-1所示,一個時鍾給接口1使用,另一給接口2使用,那麼我們說這個設計中有兩個時鍾域。

圖6-1:雙時鍾域設計
平時我們在設計中遇到的門控時鍾、衍生時鍾以及事件驅動的觸發器都可歸為時鍾域類別。如圖6-2所示,通過一個簡單門控時鍾創建了一個新的時鍾域。我們知道,這類時鍾控製在FPGA設計中並不被推崇(可以使用時鍾使能替代時鍾門控),然而它卻非常有利於我們理解時鍾域這一概念。
本章我們將著重詳細討論以下主題:
l 兩個不同時鍾域之間傳輸信號。
n 亞穩態的產生以及對設計的可靠性的影響
n 通過相位控製避免亞穩態
n 在時鍾域之間傳輸單個信號,將信號打兩拍
n 使用FIFO在時鍾域之間傳輸多位數據
n 使用分區同步器模塊提高設計的組織架構
l 處理ASIC驗證原型裏的門控時鍾
n 建立一個單時鍾模塊
n 自動門控移除

圖6-2:通過門控時鍾創建的時鍾域
[page]
6.1 跨時鍾域
設計中包含多時鍾域,首先要解決的是在不同時鍾域之間傳輸信號的問題。信號跨時鍾域傳輸將會是一個大問題,原因如下:
1、 信xin號hao跨kua時shi鍾zhong域yu傳chuan輸shu產chan生sheng的de故gu障zhang總zong是shi不bu太tai容rong易yi複fu現xian。設she計ji中zhong如ru果guo存cun在zai兩liang個ge異yi步bu時shi鍾zhong域yu,故gu障zhang往wang往wang與yu這zhe兩liang個ge時shi鍾zhong沿yan的de相xiang對dui時shi序xu有you關guan。來lai自zi片pian外wai時shi鍾zhong源yuan的de時shi鍾zhong通tong常chang與yu器qi件jian實shi際ji功gong能neng並bing無wu任ren何he關guan聯lian。
2、 根據技術的不同,問題也不一樣。(盡管由於其他因素的影響,這種情況並不總是成立)我(wo)們(men)常(chang)常(chang)會(hui)發(fa)現(xian),如(ru)果(guo)約(yue)束(shu)較(jiao)小(xiao)的(de)建(jian)立(li)和(he)保(bao)持(chi)時(shi)間(jian),從(cong)統(tong)計(ji)上(shang)來(lai)說(shuo)高(gao)速(su)設(she)計(ji)技(ji)術(shu)比(bi)低(di)速(su)設(she)計(ji)技(ji)術(shu)更(geng)不(bu)容(rong)易(yi)產(chan)生(sheng)故(gu)障(zhang)。同(tong)時(shi),其(qi)它(ta)因(yin)素(su),比(bi)如(ru)同(tong)步(bu)器(qi)件(jian)中(zhong)設(she)計(ji)實(shi)現(xian)對(dui)輸(shu)出(chu)的(de)緩(huan)衝(chong),也(ye)會(hui)對(dui)一(yi)個(ge)可(ke)能(neng)的(de)故(gu)障(zhang)產(chan)生(sheng)顯(xian)著(zhu)影(ying)響(xiang)。
3、 EDA工gong具ju一yi般ban不bu會hui探tan測ce和he標biao注zhu這zhe類lei問wen題ti,靜jing態tai時shi序xu分fen析xi工gong具ju是shi基ji於yu獨du立li的de時shi鍾zhong區qu域yu來lai進jin行xing時shi序xu分fen析xi,而er且qie隻zhi有you在zai特te定ding的de方fang式shi下xia根gen據ju指zhi定ding的de要yao求qiu才cai能neng進jin行xing跨kua時shi鍾zhong域yu的de時shi序xu分fen析xi。
4、 通(tong)常(chang)來(lai)說(shuo),如(ru)果(guo)沒(mei)有(you)很(hen)好(hao)地(di)理(li)解(jie),跨(kua)時(shi)鍾(zhong)域(yu)故(gu)障(zhang)難(nan)以(yi)探(tan)測(ce)且(qie)難(nan)以(yi)調(tiao)試(shi)。所(suo)以(yi)所(suo)有(you)跨(kua)時(shi)鍾(zhong)域(yu)接(jie)口(kou)都(dou)必(bi)須(xu)要(yao)在(zai)任(ren)何(he)功(gong)能(neng)實(shi)現(xian)之(zhi)前(qian)被(bei)很(hen)好(hao)地(di)定(ding)義(yi)和(he)處(chu)理(li)。
讓我們首先來看看在不同時鍾域之間傳輸信號到底會產生什麼錯誤。考慮圖6-3所示的情況,一個信號在兩個時鍾域之間傳播。
如圖6-4所示,低速時鍾的周期是高速時鍾周期的兩倍。低速時鍾上升沿與高速時鍾上升沿之間的間隔為常量,而且總是等於dC。由於這兩個時鍾的這種相位匹配關係,dC總是保持不變(假定頻率沒有漂移),而且在這個例子中,dC總是大於邏輯延時與高速時鍾驅動的觸發器建立時間之和。

圖6-3:時鍾域之間的簡單信號傳輸

圖6-4:兩個時鍾域之間的時序關係
當(dang)這(zhe)些(xie)時(shi)鍾(zhong)一(yi)啟(qi)動(dong),它(ta)們(men)之(zhi)間(jian)存(cun)在(zai)一(yi)個(ge)固(gu)定(ding)的(de)相(xiang)位(wei)關(guan)係(xi),如(ru)此(ci)可(ke)以(yi)避(bi)免(mian)任(ren)何(he)建(jian)立(li)時(shi)間(jian)和(he)保(bao)持(chi)時(shi)間(jian)違(wei)規(gui)。隻(zhi)要(yao)時(shi)鍾(zhong)沒(mei)有(you)漂(piao)移(yi),就(jiu)沒(mei)有(you)任(ren)何(he)時(shi)序(xu)違(wei)規(gui)出(chu)現(xian),並(bing)且(qie)器(qi)件(jian)會(hui)如(ru)預(yu)想(xiang)那(na)樣(yang)工(gong)作(zuo)。現(xian)在(zai)我(wo)們(men)再(zai)考(kao)慮(lv)另(ling)外(wai)一(yi)種(zhong)情(qing)況(kuang),同(tong)樣(yang)的(de)時(shi)鍾(zhong)上(shang)電(dian)後(hou)的(de)相(xiang)位(wei)關(guan)係(xi)如(ru)圖(tu)6-5所示。

圖6-5:會造成時序違規的時鍾相位關係
圖6-5中(zhong)兩(liang)個(ge)時(shi)鍾(zhong)之(zhi)間(jian)的(de)這(zhe)種(zhong)相(xiang)位(wei)關(guan)係(xi)就(jiu)會(hui)造(zao)成(cheng)時(shi)序(xu)問(wen)題(ti)。這(zhe)種(zhong)情(qing)況(kuang)會(hui)在(zai)任(ren)意(yi)頻(pin)率(lv)的(de)兩(liang)個(ge)時(shi)鍾(zhong)域(yu)之(zhi)間(jian)。然(ran)而(er),如(ru)果(guo)時(shi)鍾(zhong)的(de)頻(pin)率(lv)匹(pi)配(pei)不(bu)對(dui),這(zhe)種(zhong)時(shi)序(xu)問(wen)題(ti)在(zai)這(zhe)種(zhong)情(qing)況(kuang)下(xia)也(ye)不(bu)會(hui)發(fa)生(sheng)。
總結來說,時鍾同步問題在FPGA設she計ji中zhong通tong常chang是shi一yi種zhong不bu可ke複fu現xian的de問wen題ti,而er且qie會hui對dui設she計ji的de可ke靠kao性xing帶dai來lai嚴yan重zhong後hou果guo。後hou麵mian我wo們men會hui討tao論lun解jie決jue這zhe類lei問wen題ti的de方fang案an,在zai此ci之zhi前qian,我wo們men必bi須xu要yao討tao論lun當dang建jian立li和he保bao持chi時shi間jian違wei規gui時shi到dao底di會hui發fa生sheng什shen麼me。下xia一yi小xiao節jie就jiu是shi關guan於yu這zhe個ge主zhu題ti。
6.1.1 亞穩態
觸發器的建立時間和保持時間在時鍾上升沿左右定義了一個時間窗口,如果觸發器的數據輸入端口上數據在這個時間窗口內發生變化(或者數據更新),那麼就會產生時序違規。存在這個時序違規是因為建立時間要求和保持時間要求被違反了,此時觸發器內部的一個節點(一個內部節點或者要輸出到外部節點)可能會在一個電壓範圍內浮動,無法穩定在邏輯0或者邏輯1狀態。換句話說,如果數據在上述窗口中被采集,觸發器中的晶體管不能可靠地設置為邏輯0或者邏輯1對應的電平上。所以此時的晶體管並未處於飽和區對應的高或者低電平,而是在穩定到一個確定電平之前,徘徊在一個中間電平狀態(這個中間電平或許是一個正確值,也許不是)。如圖6-6所示,這就是所謂的亞穩態。

圖6-6:時序違規導致亞穩態
如圖6-6的波形所示,信號的跳變發生在建立和保持邊界組成的時間窗口內,這意味著輸出不會是邏輯0或邏輯1對(dui)應(ying)的(de)確(que)定(ding)電(dian)平(ping),而(er)是(shi)它(ta)們(men)之(zhi)間(jian)的(de)一(yi)個(ge)中(zhong)間(jian)電(dian)平(ping)。如(ru)果(guo)觸(chu)發(fa)器(qi)包(bao)含(han)有(you)一(yi)個(ge)輸(shu)出(chu)緩(huan)衝(chong),那(na)麼(me)亞(ya)穩(wen)態(tai)本(ben)身(shen)就(jiu)可(ke)以(yi)稱(cheng)為(wei)隨(sui)著(zhe)內(nei)部(bu)信(xin)號(hao)的(de)逐(zhu)漸(jian)穩(wen)定(ding)而(er)在(zai)輸(shu)出(chu)上(shang)表(biao)現(xian)的(de)雜(za)散(san)過(guo)渡(du)。輸(shu)出(chu)保(bao)持(chi)亞(ya)穩(wen)態(tai)的(de)時(shi)間(jian)是(shi)隨(sui)機(ji)的(de),甚(shen)至(zhi)可(ke)能(neng)在(zai)整(zheng)個(ge)時(shi)鍾(zhong)周(zhou)期(qi)內(nei)都(dou)保(bao)持(chi)亞(ya)穩(wen)態(tai)。那(na)麼(me),如(ru)果(guo)這(zhe)個(ge)亞(ya)穩(wen)態(tai)值(zhi)輸(shu)入(ru)到(dao)組(zu)合(he)邏(luo)輯(ji),根(gen)據(ju)邏(luo)輯(ji)門(men)電(dian)路(lu)的(de)切(qie)換(huan)門(men)檻(kan),錯(cuo)誤(wu)的(de)操(cao)作(zuo)就(jiu)可(ke)以(yi)發(fa)生(sheng)。從(cong)時(shi)序(xu)收(shou)斂(lian)的(de)角(jiao)度(du)來(lai)說(shuo),兩(liang)個(ge)觸(chu)發(fa)器(qi)之(zhi)間(jian)的(de)組(zu)合(he)邏(luo)輯(ji)延(yan)時(shi)都(dou)要(yao)求(qiu)要(yao)小(xiao)於(yu)最(zui)小(xiao)的(de)時(shi)鍾(zhong)周(zhou)期(qi),但(dan)是(shi)這(zhe)種(zhong)亞(ya)穩(wen)態(tai)信(xin)號(hao)保(bao)持(chi)亞(ya)穩(wen)態(tai)的(de)時(shi)間(jian),本(ben)身(shen)就(jiu)是(shi)變(bian)相(xiang)地(di)增(zeng)加(jia)了(le)邏(luo)輯(ji)延(yan)時(shi)。很(hen)顯(xian)然(ran),一(yi)個(ge)亞(ya)穩(wen)態(tai)信(xin)號(hao)會(hui)給(gei)設(she)計(ji)帶(dai)來(lai)致(zhi)命(ming)的(de)功(gong)能(neng)故(gu)障(zhang),而(er)且(qie)該(gai)信(xin)號(hao)也(ye)將(jiang)無(wu)法(fa)在(zai)各(ge)個(ge)時(shi)鍾(zhong)沿(yan)上(shang)采(cai)集(ji)到(dao)一(yi)致(zhi)的(de)結(jie)果(guo)。
事實上需要注意的是,在FPGAshejiliuchengzhongxiangtongguofangzhenlaiquedingyawentaiduishejideweihaishifeichangkunnande。chunshuzidefangzhenqibingbunengjianzhadaojianlihebaochiweigui,congerzaiweiguifashengshi,fangzhenchuyigeluoji“X”(未知)值。而普通的RTLfangzhen,bingbuhuichuxianjianlihebaochiweigui,suoyiyejiubuhuiyouxinhaochuxianyawentaizhuangtai。jinguanmenjifangzhendeshihouhuijianzhajianlihebaochishifouweigui,danshifangzhenyoulianggeyibuxinhaoduiqierdaozhiyigetongbuguzhangyiranshiyijianshifenkunnandeshiqing。youqikunnandeshi,shejihuozheyanzhenggongchengshibingbushizaishejiyishijizhazhaowenti。name,lijieruhebaochishejidekekaoxingyijiruhebimianxuyaotongguofangzhenlaijielushejidetongbuwenti,jiuxiandeshifenzhongyaole。jiejueyawentaidefangfayouhenduo,houmianwomenjiangzhuyijinxingtaolun。
[page]
6.1.2 解決亞穩態方案1:相位控製
考慮這樣一個設計,兩個時鍾域的周期不同,而且相位關係任意。如果至少有一個時鍾由FPGA內部的PLL或者DLL控製,而且在PLL或者DLL的精度範圍內,其中一個時鍾的周期是另外一個時鍾周期的數倍。那麼如圖6-7所示,通過相位對齊可以避免實現違規。
考kao慮lv這zhe樣yang一yi個ge例li子zi,一yi個ge信xin號hao從cong低di速su時shi鍾zhong域yu傳chuan遞di進jin入ru另ling一yi個ge時shi鍾zhong域yu,而er此ci時shi鍾zhong域yu的de周zhou期qi是shi低di速su時shi鍾zhong域yu的de一yi半ban。根gen據ju前qian麵mian的de分fen析xi,如ru果guo沒mei有you任ren何he相xiang位wei關guan係xi的de保bao證zheng,那na麼me時shi序xu違wei規gui就jiu有you可ke能neng發fa生sheng。然ran後hou,通tong過guo使shi用yongDLL由低速時鍾派生這個高速時鍾,那麼相位對齊就可以達成。
圖6-7中,DLL調整高速時鍾(采集)的相位來對齊低速時鍾(發送)。數據在兩個時鍾域之間傳遞的時間是dC,該(gai)傳(chuan)遞(di)時(shi)間(jian)總(zong)是(shi)處(chu)於(yu)其(qi)最(zui)大(da)可(ke)能(neng)值(zhi)。本(ben)例(li)中(zhong),隻(zhi)要(yao)從(cong)低(di)速(su)觸(chu)發(fa)器(qi)到(dao)高(gao)速(su)觸(chu)發(fa)器(qi)的(de)傳(chuan)播(bo)延(yan)時(shi)小(xiao)於(yu)高(gao)速(su)時(shi)鍾(zhong)周(zhou)期(qi),那(na)麼(me)就(jiu)不(bu)會(hui)有(you)建(jian)立(li)時(shi)間(jian)違(wei)規(gui)發(fa)生(sheng)。如(ru)果(guo)因(yin)為(wei)時(shi)鍾(zhong)歪(wai)斜(xie)不(bu)夠(gou)小(xiao)而(er)導(dao)致(zhi)保(bao)持(chi)時(shi)間(jian)要(yao)求(qiu)無(wu)法(fa)滿(man)足(zu),那(na)麼(me)可(ke)以(yi)通(tong)過(guo)配(pei)置(zhi)實(shi)用(yong)高(gao)速(su)時(shi)鍾(zhong)的(de)下(xia)降(jiang)沿(yan)來(lai)采(cai)集(ji)信(xin)號(hao),當(dang)然(ran)前(qian)提(ti)是(shi)有(you)足(zu)夠(gou)的(de)時(shi)序(xu)餘(yu)量(liang)能(neng)確(que)保(bao)建(jian)立(li)時(shi)間(jian)要(yao)求(qiu)得(de)到(dao)滿(man)足(zu)。

圖6-7:使用DLL對齊相位
總結來說,相位控製技術可以在一個時鍾頻率是另外一個時鍾的數倍且其中一個時鍾可以由FPGA內部PLL或者DLL控製時使用。
在很多例子中,設計控製時鍾域之間的相位關係是很奢侈的。尤其是時序要求由FPG**外的芯片施加,或者時鍾域之間沒有任何確定相位關係的時候。舉例來說,如果FPGAzailianggexitongzhijiantigongleyigejiekou,erzhelianggexitongshijiazaixinpianshurushuchuyanshishangdeshixuyaoqiufeichangjinzhang,tiaozhengrenhezhelianggexitongdeshizhongxiangweishibukenengde。leisizhezhonglizizaishijianzhonghuijingchangyudao,suoyixuyaoshiyongxindefangfalaijiejue,xiayijiejiangtaolunzhezhongxindefangfa。
6.1.3 解決亞穩態方案2:打兩拍處理,即寄存兩拍
跨(kua)越(yue)兩(liang)個(ge)異(yi)步(bu)時(shi)鍾(zhong)域(yu)傳(chuan)輸(shu)單(dan)比(bi)特(te)信(xin)號(hao)時(shi),可(ke)以(yi)使(shi)用(yong)打(da)兩(liang)拍(pai)技(ji)術(shu)。根(gen)據(ju)上(shang)一(yi)節(jie)的(de)討(tao)論(lun),建(jian)立(li)或(huo)保(bao)持(chi)時(shi)間(jian)違(wei)規(gui)會(hui)導(dao)致(zhi)一(yi)個(ge)觸(chu)發(fa)器(qi)內(nei)節(jie)點(dian)上(shang)電(dian)平(ping)徘(pai)徊(huai)在(zai)一(yi)個(ge)中(zhong)間(jian)狀(zhuang)態(tai),從(cong)而(er)產(chan)生(sheng)亞(ya)穩(wen)態(tai)問(wen)題(ti),而(er)且(qie)信(xin)號(hao)從(cong)這(zhe)種(zhong)中(zhong)間(jian)狀(zhuang)態(tai)到(dao)一(yi)個(ge)穩(wen)定(ding)狀(zhuang)態(tai)需(xu)要(yao)時(shi)間(jian),此(ci)時(shi)間(jian)的(de)長(chang)度(du)未(wei)知(zhi)。這(zhe)個(ge)未(wei)知(zhi)的(de)時(shi)間(jian)會(hui)被(bei)加(jia)入(ru)到(dao)時(shi)鍾(zhong)到(dao)輸(shu)出(chu)的(de)時(shi)間(jian)(Tco)裏(影響隨後路徑上的延時),且qie會hui在zai下xia一yi級ji導dao致zhi一yi個ge時shi序xu違wei規gui。如ru果guo該gai信xin號hao輸shu入ru到dao一yi個ge控kong製zhi分fen支zhi或huo者zhe一yi個ge判pan決jue樹shu,那na將jiang是shi非fei常chang危wei險xian的de。不bu幸xing的de是shi,沒mei有you很hen好hao的de辦ban法fa來lai預yu測ce這zhe種zhong亞ya穩wen態tai將jiang會hui持chi續xu多duo長chang時shi間jian,也ye沒mei有you很hen好hao的de辦ban法fa將jiang這zhe些xie信xin息xi反fan標biao注zhu到dao時shi序xu分fen析xi工gong具ju以yi及ji優you化hua工gong具ju。假jia定ding兩liang個ge時shi鍾zhong域yu之zhi間jian完wan全quan異yi步bu(即無法實現相位控製),那麼盡可能避免亞穩態的一個最簡單辦法就是使用雙觸發。在其它也許教科書中也稱這種方法為同步位、兩級觸發器或兩級同步器。
圖6-8所示的配置中,同步器電路(其輸入為Din)中的第一拍後也許會產生亞穩態,但是信號有機會在其被第二級鎖存以及被其它邏輯看到之前穩定下來,如圖6-9所示。

圖6-8:打兩拍處理

圖6-9:打兩拍重同步器
圖6-9中,Dsync是同步器中第一個觸發器的輸出,而Dout是第二個觸發器的輸出。Dout本(ben)質(zhi)上(shang)是(shi)等(deng)到(dao)同(tong)步(bu)後(hou)的(de)信(xin)號(hao)一(yi)旦(dan)穩(wen)定(ding)下(xia)來(lai)後(hou)將(jiang)其(qi)往(wang)下(xia)傳(chuan),並(bing)且(qie)確(que)保(bao)其(qi)它(ta)電(dian)路(lu)不(bu)會(hui)收(shou)到(dao)亞(ya)穩(wen)態(tai)信(xin)號(hao)。同(tong)步(bu)器(qi)兩(liang)級(ji)觸(chu)發(fa)器(qi)之(zhi)間(jian)不(bu)要(yao)添(tian)加(jia)任(ren)何(he)邏(luo)輯(ji),這(zhe)樣(yang)可(ke)以(yi)使(shi)得(de)信(xin)號(hao)獲(huo)得(de)盡(jin)可(ke)能(neng)長(chang)的(de)時(shi)間(jian)來(lai)回(hui)到(dao)穩(wen)定(ding)狀(zhuang)態(tai)。所(suo)以(yi)總(zong)結(jie)來(lai)說(shuo),打(da)兩(liang)拍(pai)同(tong)步(bu)器(qi)在(zai)單(dan)比(bi)特(te)信(xin)號(hao)跨(kua)異(yi)步(bu)時(shi)鍾(zhong)傳(chuan)輸(shu)時(shi),用(yong)來(lai)將(jiang)該(gai)單(dan)比(bi)特(te)信(xin)號(hao)重(zhong)新(xin)同(tong)步(bu)到(dao)異(yi)步(bu)時(shi)鍾(zhong)域(yu)。
lilunshanglaishuo,diyigechufaqideshuchuyinggaiyizhibaochibuquedingdeyawentai,danshizaixianshizhongtahuishoudaoshijixitongyixilieyinsuyingxianghouwendingxialai。dagebifang,xiangxiangyixiayigepiqiuwendingditingzhuzaiyigeshanjianshang,congrenhefangxiangshangqingtuiyixiaqiu,tadouhuiyouxiangfandefangxiangcongshanshanggunluo。tongyang,chuyuyawentaideyigeluojimen,youfare、輻射等產生的隨機波動都會促使該亞穩態回到邏輯0或者邏輯1對應的穩態。
使(shi)用(yong)打(da)兩(liang)拍(pai)技(ji)術(shu)采(cai)樣(yang)一(yi)個(ge)異(yi)步(bu)信(xin)號(hao)時(shi),無(wu)法(fa)完(wan)全(quan)預(yu)知(zhi)我(wo)們(men)想(xiang)要(yao)的(de)信(xin)號(hao)跳(tiao)變(bian),將(jiang)在(zai)當(dang)前(qian)時(shi)鍾(zhong)發(fa)生(sheng)還(hai)是(shi)下(xia)一(yi)個(ge)時(shi)鍾(zhong)發(fa)生(sheng)。當(dang)信(xin)號(hao)屬(shu)於(yu)一(yi)個(ge)數(shu)據(ju)總(zong)線(xian)中(zhong)的(de)一(yi)部(bu)分(fen)(有些數據位比其它比特晚一個時鍾周期跳變)shi,huozheguanjianshujubixuyaojingquedaodangeshizhongzhouqineidaodashi,zhezhongdaliangpaijishushimeiyoubangzhude。buguo,duiyukongzhixinhaolaishuo,ruguotamenkeyirenshouzhengfuyigehuogengduogeshizhongzhouqidebianhua,zhezhongjishuhaishifeichangyouyongde。
舉例來說,一個外部事件控製一個比特來觸發FPGA內(nei)部(bu)動(dong)作(zuo),這(zhe)個(ge)觸(chu)發(fa)動(dong)作(zuo)發(fa)生(sheng)的(de)頻(pin)率(lv)可(ke)以(yi)非(fei)常(chang)的(de)低(di),比(bi)如(ru)兩(liang)個(ge)事(shi)件(jian)之(zhi)間(jian)的(de)間(jian)隔(ge)可(ke)以(yi)達(da)到(dao)微(wei)秒(miao)甚(shen)至(zhi)毫(hao)秒(miao)級(ji)。在(zai)這(zhe)個(ge)例(li)子(zi)中(zhong),一(yi)些(xie)額(e)外(wai)的(de)數(shu)納(na)秒(miao)的(de)延(yan)時(shi)並(bing)不(bu)會(hui)影(ying)響(xiang)該(gai)事(shi)件(jian)的(de)行(xing)為(wei)。如(ru)果(guo)由(you)外(wai)部(bu)事(shi)件(jian)驅(qu)動(dong)的(de)改(gai)比(bi)特(te)輸(shu)入(ru)到(dao)一(yi)個(ge)狀(zhuang)態(tai)機(ji)的(de)控(kong)製(zhi)結(jie)構(gou)中(zhong),通(tong)過(guo)同(tong)步(bu)器(qi)打(da)兩(liang)拍(pai)處(chu)理(li),那(na)麼(me)想(xiang)要(yao)的(de)信(xin)號(hao)變(bian)化(hua)隻(zhi)是(shi)被(bei)延(yan)遲(chi)了(le)一(yi)個(ge)時(shi)鍾(zhong)周(zhou)期(qi)。然(ran)而(er),如(ru)果(guo)沒(mei)有(you)進(jin)行(xing)打(da)兩(liang)拍(pai)處(chu)理(li),那(na)麼(me)判(pan)決(jue)邏(luo)輯(ji)也(ye)許(xu)會(hui)從(cong)該(gai)異(yi)步(bu)信(xin)號(hao)的(de)亞(ya)穩(wen)態(tai)狀(zhuang)態(tai)解(jie)碼(ma)出(chu)不(bu)同(tong)狀(zhuang)態(tai)跳(tiao)轉(zhuan)信(xin)息(xi),並(bing)使(shi)得(de)狀(zhuang)態(tai)機(ji)同(tong)時(shi)跳(tiao)轉(zhuan)到(dao)不(bu)同(tong)的(de)分(fen)支(zhi)。
除了純數字係統外,還有一種混合信號係統,這種係統會通常會產生異步反饋信號到FPGA,如圖6-10所示。

圖6-10:重新同步模擬反饋
上述對異步信號打兩拍的同步器的Verilog代碼如下所示:
module analog_interface(
...
output regfbr2,
input feedback);
reg fbr1;
always @ (posedge clk) begin
fbr1<=feedback;
fbr2<=fbr1;//;doubleflop
end
...
反饋信號會產生時序違規,而且fbr1在時鍾沿後一個不確定的時間內處於亞穩態。那麼,其它邏輯隻可以使用的信號fbr2。
shiyongdaliangpaitongbuchulijishushizhidingshixuyueshushifeichangzhongyaode,xuyaoshijiadeyueshushijiangweiyudiyigehediergejicunqishizhongyuzhijiandexinhaolujingzhidingweijialujing,jirangshixufenxiqibufencilujing。yinweidaliangpaitongbuqijiegouyongyuzhongxintongbuxinhao,zaizhelianggeshizhongyuzhijianbingmeiyouxuyaofenxidetongbulujing。ciwai,ruqiansuoshuzhelianggechufaqizhijiandeshixuyaojinkenengdexiao,zheyangkeyijianxiaoyawentaibeichuanbodaodierjichufaqidekenengxing。
[page]
6.1.4 解決亞穩態方案3:使用FIFO結構
跨時鍾域傳輸數據用得最多的方法就是使用先入先出(即FIFO)結構。FIFO可以用於在兩個異步時鍾域之間傳輸多個比特信號。我們通常看到的FIFO應用包括在兩個標準總線之間傳輸數據,以及從可突發訪問的存儲器中讀出數據或者對其寫入數據。例如,如圖6-11所示,顯示的是一個可突發訪問存儲器與一個 PCI總線之間的接口。

圖6-11:FIFO在PCI應用中
在很多不同的應用中,FIFO都是一種非常有用的數據結構,不過這裏我們僅僅關注其處理跨時鍾域突發數據的能力。
FIFO非(fei)常(chang)類(lei)似(si)於(yu)在(zai)超(chao)市(shi)裏(li)的(de)結(jie)賬(zhang)通(tong)道(dao),每(mei)個(ge)客(ke)戶(hu)到(dao)達(da)結(jie)賬(zhang)台(tai)的(de)時(shi)間(jian)多(duo)少(shao)有(you)點(dian)隨(sui)機(ji)性(xing),結(jie)賬(zhang)速(su)度(du)在(zai)一(yi)定(ding)意(yi)義(yi)上(shang)說(shuo)是(shi)勻(yun)速(su)的(de)。有(you)時(shi)候(hou)結(jie)賬(zhang)客(ke)戶(hu)可(ke)能(neng)會(hui)很(hen)少(shao),而(er)其(qi)他(ta)某(mou)些(xie)時(shi)候(hou)又(you)會(hui)突(tu)發(fa)很(hen)多(duo)客(ke)戶(hu)需(xu)要(yao)結(jie)賬(zhang),收(shou)款(kuan)員(yuan)不(bu)可(ke)能(neng)立(li)刻(ke)為(wei)每(mei)個(ge)客(ke)戶(hu)服(fu)務(wu),所(suo)以(yi)需(xu)要(yao)排(pai)隊(dui)。抽(chou)象(xiang)地(di)來(lai)說(shuo),我(wo)們(men)稱(cheng)這(zhe)種(zhong)排(pai)成(cheng)一(yi)隊(dui)的(de)數(shu)據(ju)為(wei)一(yi)個(ge)序(xu)列(lie)。隨(sui)後(hou),收(shou)款(kuan)員(yuan)會(hui)以(yi)或(huo)多(duo)或(huo)少(shao)平(ping)均(jun)的(de)速(su)度(du)為(wei)每(mei)一(yi)個(ge)顧(gu)客(ke)服(fu)務(wu),並(bing)不(bu)會(hui)理(li)會(hui)隊(dui)列(lie)的(de)長(chang)度(du)。假(jia)如(ru)需(xu)要(yao)結(jie)賬(zhang)的(de)顧(gu)客(ke)湧(yong)入(ru)收(shou)銀(yin)台(tai)的(de)速(su)度(du)超(chao)過(guo)了(le)收(shou)款(kuan)員(yuan)的(de)服(fu)務(wu)速(su)度(du),那(na)麼(me)這(zhe)種(zhong)收(shou)款(kuan)結(jie)構(gou)就(jiu)無(wu)法(fa)支(zhi)撐(cheng)了(le)。那(na)麼(me)此(ci)時(shi),就(jiu)需(xu)要(yao)采(cai)取(qu)措(cuo)施(shi),要(yao)麼(me)加(jia)快(kuai)收(shou)款(kuan)員(yuan)的(de)服(fu)務(wu)速(su)率(lv),要(yao)麼(me)減(jian)少(shao)新(xin)增(zeng)顧(gu)客(ke)數(shu)。
同(tong)樣(yang)的(de)道(dao)理(li)也(ye)存(cun)在(zai)於(yu)數(shu)據(ju)傳(chuan)輸(shu)中(zhong),數(shu)據(ju)可(ke)能(neng)到(dao)達(da)某(mou)個(ge)時(shi)鍾(zhong)域(yu)的(de)間(jian)隔(ge)是(shi)完(wan)全(quan)隨(sui)機(ji)的(de),有(you)時(shi)候(hou)或(huo)許(xu)會(hui)麵(mian)臨(lin)一(yi)個(ge)很(hen)大(da)突(tu)發(fa)數(shu)據(ju)塊(kuai)。這(zhe)種(zhong)情(qing)況(kuang)下(xia),處(chu)在(zai)另(ling)一(yi)個(ge)時(shi)鍾(zhong)域(yu)的(de)接(jie)收(shou)設(she)備(bei)隻(zhi)能(neng)以(yi)指(zhi)定(ding)的(de)速(su)率(lv)來(lai)處(chu)理(li)數(shu)據(ju)。如(ru)圖(tu)6-12所示,一個FIFO被用於緩存數據,這樣在設備中就形成了一個數據序列。

圖6-12:異步FIFO
通過使用異步FIFO,數據發送端可以以隨意的間隔發送數據,而接收端也可以以其固有的帶寬從數據序列裏取出數據並進行處理。由於任何由FIFO實現的數據序列的長度都不能無限製,所以需要一些控製來防止FIFO溢出。這時候,有兩種選項可以采用:
l 事先定義好的發送速率(可突發或不可突發),最小接收速率以及對應最大的序列尺寸。
l 握手控製。
注意,發送設備的時鍾頻率沒有必要高於接收端設備,否則容易造成溢出。以較慢的頻率將數據送入FIFO,那麼數據寫入FIFO的(de)時(shi)鍾(zhong)周(zhou)期(qi)數(shu)要(yao)少(shao)於(yu)接(jie)收(shou)端(duan)將(jiang)要(yao)處(chu)理(li)數(shu)據(ju)的(de)時(shi)鍾(zhong)周(zhou)期(qi)數(shu)。那(na)麼(me),如(ru)果(guo)不(bu)采(cai)取(qu)握(wo)手(shou)控(kong)製(zhi),就(jiu)必(bi)須(xu)要(yao)理(li)解(jie)以(yi)上(shang)描(miao)述(shu)會(hui)產(chan)生(sheng)溢(yi)出(chu)的(de)最(zui)壞(huai)的(de)情(qing)況(kuang)。
在任何一段時間內,假設數據發送寫FIFO的de速su率lv大da於yu接jie收shou處chu理li數shu據ju的de速su率lv,那na麼me很hen輕qing易yi地di使shi係xi統tong無wu法fa維wei持chi。因yin為wei沒mei有you任ren何he存cun儲chu設she備bei可ke以yi存cun得de下xia無wu限xian的de數shu據ju,這zhe種zhong問wen題ti需xu要yao在zai係xi統tong結jie構gou層ceng級ji才cai能neng解jie決jue。通tong常chang來lai說shuo,突tu發fa發fa送song一yi般ban是shi以yi小xiao周zhou期qi性xing或huo非fei周zhou期qi性xing發fa生sheng。所suo以yiFIFO的最大尺寸要大於等於(具體還要根據數據接收器的屬性)突發的尺寸。
在很多例子中,不管是突發尺寸還是數據到達的分配都無法很好地定義。這種時候,就有必要使用握手控製來防止FIFO產生數據溢出。如圖6-13所示,這種握手控製通常由一些標誌信號來實現。這些標誌信號,一個是發送側的滿標誌,用於提示FIFO沒有多餘空間存儲數據了,另一個是而空標誌,用於提示接收側,FIFO中沒有數據需要處理了。管理這些握手信號可能還需要一個狀態機,正如圖6-13所示。

圖6-13:FIFO的握手控製
FIFO在FPGA內一般是通過封裝一個雙口RAM來(lai)實(shi)現(xian)。表(biao)麵(mian)上(shang)看(kan)微(wei)不(bu)足(zu)道(dao)的(de)標(biao)誌(zhi)信(xin)號(hao)如(ru)空(kong)和(he)滿(man)指(zhi)示(shi)等(deng),實(shi)際(ji)上(shang)是(shi)實(shi)現(xian)起(qi)來(lai)反(fan)而(er)比(bi)較(jiao)困(kun)難(nan)。原(yuan)因(yin)就(jiu)在(zai)於(yu)輸(shu)入(ru)控(kong)製(zhi)常(chang)常(chang)需(xu)要(yao)依(yi)據(ju)輸(shu)出(chu)來(lai)產(chan)生(sheng),同(tong)樣(yang)的(de)輸(shu)出(chu)控(kong)製(zhi)也(ye)常(chang)常(chang)需(xu)要(yao)依(yi)據(ju)輸(shu)入(ru)來(lai)產(chan)生(sheng)。例(li)如(ru),驅(qu)動(dong)輸(shu)入(ru)的(de)邏(luo)輯(ji)必(bi)須(xu)要(yao)知(zhi)道(dao)FIFO是否已滿,而這隻能通過獲取從輸出端讀出的數據數量才能得知。同樣的道理,在輸出側從FIFO讀數據的邏輯必須要了解FIFO中是否還有數據(即FIFO是否已空),而這隻能通過輸入端口的寫指針才能判決。
這裏我們探討使用FIFO在兩個異步時鍾域之間傳輸數據,不過同樣會麵臨實現FIFO本身時遇到的握手標誌問題。為了在兩個時鍾域之間傳遞必要的信號,我們必須重回上一節討論到的打兩拍技術。下麵我們以圖6-14所示的簡單異步FIFO框圖為例進行闡述。

圖6-14:異步FIFO簡單框圖
圖6-14中zhong,在zai產chan生sheng空kong和he滿man信xin號hao時shi,寫xie地di址zhi和he讀du地di址zhi都dou必bi須xu是shi異yi步bu傳chuan遞di到dao對dui方fang時shi鍾zhong域yu中zhong。這zhe樣yang在zai重zhong新xin同tong步bu多duo比bi特te地di址zhi總zong線xian時shi,問wen題ti就jiu來lai了le,即ji根gen據ju各ge個ge比bi特te不bu同tong的de走zou線xian,總zong線xian中zhong某mou些xie比bi特te可ke能neng會hui比bi其qi它ta比bi特te晚wan一yi個ge時shi鍾zhong周zhou期qi。換huan句ju話hua說shuo,由you於yu兩liang個ge時shi鍾zhong域yu異yi步bu的de自zi然ran屬shu性xing,使shi得de地di址zhi總zong線xian有you些xie比bi特te在zai一yi個ge時shi鍾zhong沿yan上shang被bei采cai集ji,而er另ling一yi些xie比bi特te卻que在zai下xia一yi個ge時shi鍾zhong沿yan上shang被bei采cai集ji,當dang然ran這zhe取qu決jue於yu數shu據ju是shi否fou在zai第di一yi個ge觸chu發fa器qi的de時shi鍾zhong沿yan到dao達da之zhi前qian提ti前qian足zu夠gou長chang時shi間jian有you效xiao。如ru果guo上shang述shu情qing況kuang發fa生sheng,那na麼me會hui給gei係xi統tong帶dai來lai嚴yan重zhong後hou果guo,因yin為wei二er進jin製zhi地di址zhi中zhong有you些xie位wei變bian化hua有you些xie位wei卻que沒mei有you,因yin此ci接jie收shou邏luo輯ji將jiang會hui得de到dao一yi個ge完wan全quan無wu效xiao的de地di址zhi,這zhe個ge地di址zhi既ji不bu是shi當dang前qian地di址zhi也ye不bu是shi上shang一yi個ge地di址zhi。
zhegewentikeyitongguojiangerjinzhidizhizhuanhuanweigeleimalaijiejue。geleimashiyizhongfeichangteshudejishuqi,lianggexianglindizhizhongzhiyouyigebiteshibutongde。suoyidangdizhigaibianshi,zhixuyaogaibiandizhizhongdeyigebitejike,zheyangjiukeyibimianshangmiantidaodewenti。ruguofashengbianhuadenagebitebingmeiyoubeixiayigeshizhongzhengquecaiji,dizhixianshanghui“同步地”保留舊的地址值。那麼,任何不正確的地址(即既不是當前地址也不是舊地址)操作都被消除了。所以總結來說,格雷碼常用來在異步時鍾域之間傳遞多比特計數值,且多用於FIFO內。
需(xu)要(yao)額(e)外(wai)注(zhu)意(yi)的(de)一(yi)點(dian)是(shi),由(you)於(yu)隻(zhi)有(you)讀(du)寫(xie)地(di)址(zhi)是(shi)需(xu)要(yao)在(zai)異(yi)步(bu)時(shi)鍾(zhong)域(yu)之(zhi)間(jian)傳(chuan)遞(di),所(suo)以(yi)地(di)址(zhi)就(jiu)有(you)可(ke)能(neng)比(bi)預(yu)想(xiang)的(de)晚(wan)一(yi)個(ge)時(shi)鍾(zhong)周(zhou)期(qi),同(tong)時(shi)意(yi)味(wei)著(zhe)空(kong)或(huo)者(zhe)滿(man)標(biao)誌(zhi)置(zhi)位(wei)晚(wan)一(yi)個(ge)時(shi)鍾(zhong)周(zhou)期(qi),但(dan)是(shi)這(zhe)並(bing)不(bu)表(biao)示(shi)錯(cuo)誤(wu)導(dao)致(zhi)了(le)數(shu)據(ju)溢(yi)出(chu)狀(zhuang)況(kuang)。如(ru)果(guo)這(zhe)種(zhong)情(qing)況(kuang)在(zai)傳(chuan)遞(di)地(di)址(zhi)到(dao)讀(du)時(shi)鍾(zhong)域(yu)時(shi),讀(du)邏(luo)輯(ji)將(jiang)簡(jian)單(dan)地(di)認(ren)為(wei)數(shu)據(ju)沒(mei)有(you)寫(xie)入(ru),且(qie)將(jiang)認(ren)為(wei)FIFO已空盡管此時 FIFO已經被寫入一個數據。這隻會對總的吞吐率有一些小影響,但是不會導致下溢(即讀已空的FIFO)狀況發生。同樣地,當地址被傳遞到寫時鍾域時,如果讀地址被延時了,那麼寫邏輯會認為FIFO裏沒有多餘空間,盡管此時FIFO還未滿。這同樣隻會對總的數據吞吐率有些微小影響,卻不會造成上溢(寫已滿的FIFO)發生。
FIFO是一種足夠通用的模塊,大部分FPGA供應商都提供了工具,可以讓客戶根據自己的要求來自動產生軟核。這些用戶FIFO可以像其它IP模塊那樣由用戶手動地在設計中例化。那麼,在一個FPGA設計中使用自己的FIFOshi,shangshutaolundewentihenkenengjiangbubiyoushejizijilaijiejue。dangran,tongyangdewentiyejingchangzaiyibushizhongyuzhijianchuandishujudeshihoufasheng,suoyilijiezheleishejishijianduiyuyigegaojiFPGA設計者來說非常重要。
[page]
6.1.5 設計分區同步器模塊
zaidingcengweishejihuafenhaoshejifenqushiyigehaodeshejishijianxingwei,zheyangrenhegongnengmokuaiwaimiandoubaohanyigedulidetongbuqimokuai。zheyangyouliyuzaihuafenmokuaidejichushangshixiansuoweidelixiangshizhongyuqingkuang(即整個設計模塊隻有一個時鍾),如圖6-15所示。

圖6-15:設計分區同步器模塊
duishejijinxingfenquyouhenduoliyou。shouxian,duimeigedulidegongnengmokuaijinxingshixufenxibiandejianyi,yinweimokuaidoushiwanquandetongbusheji。qici,zhenggetongbumokuaizhongdeshixuliwaiyehenrongyidedaodingyi。zaici,dicengmokuaidetongbuqijiashixuliwaizaidairudaoshejidingcengshi,dadajiangdileyouyurenweishiwuzaochengdeshulou。suoyi,tongbujicunqiyinggaizaigongnengmokuaiwaidandufenqu。haiyouhenduoleisideshejishijianzaishiyongFPGA作為ASIC的設計原型時得到應用,下一節我們將再進行詳細地討論。
6.2 ASIC原型設計中的門控時鍾
ASIC設計一般對功耗非常敏感,同時ASIC的時鍾樹設計又非常靈活,所以會在整個設計中經常使用門控時鍾在邏輯不需要活動的時候來去使能這些邏輯。雖然使用FPGA作為ASIC的原型可以模擬整個邏輯功能,但是二者之間的有些物理屬性,如功耗方麵,還是不太一樣。那麼,要求FPGA來模擬ASIC的整個低功耗優化是沒有必要的。實際上,正是由於FPGA的粗放式的時鍾資源,讓其模擬這方麵功能也是不太可能的。這一節我們將討論一些解決這個問題方法,並且再討論一些可以應用於ASIC設計的技術來使FPGA原型設計更加容易。對於門控時鍾更詳細的容易可以參考前麵第三章。
6.2.1 時鍾模塊
如果一個ASIC設計中使用了大量的門控時鍾,建議將所有這些門控操作統一放在一個專門的時鍾生成模塊中,並與功能模塊隔離,如圖6-16所示。

圖6-16:統一的時鍾模塊
通過將時鍾門控置於一個單一的模塊,不但可以是約束處理更簡單,而且當要對FPGAyuanxingjinxingrenhexiugaishiyegengrongyi。liru,ruguoshejizhexuanzemoucibianyishishanchusuoyoumenkongdanyuan,nameyigedanyidemokuailihenrongyishixian。xiayijiewomenjiangduicijinxingxiangxitaolun。
6.2.2 時鍾門控移除
有很多辦法可以從FPGA原型裏刪除時鍾門控,下麵的例子就顯示了一個很明顯,但卻也是很麻煩的一個方法。這個例子的代碼如下所示,該代碼是刪除FPGA原型裏所有的門控功能。
‘define FPGA
//‘define ASIC
module clocks_block(...)
‘ifdef ASIC
assign clock_domain_1=system_clock_1&clock_enable_1;
‘else
assign clock_domain_1=system_clock_1;
‘endif
如果上述代碼需要開放時鍾門控,那麼在FPGA原型設計中隻需要修改宏定義即可。不足之處是,任何時候要將FPGA原型轉化為ASIC設計時總是需要做出一些修改(其實就是修改宏定義)。很多設計者對此會感覺不是太舒服,因為他們認為二者使用的不是一樣的RTL。一yi個ge更geng好hao的de辦ban法fa是shi使shi用yong一yi個ge自zi動dong門men控kong刪shan除chu工gong具ju來lai消xiao除chu任ren何he認ren為wei造zao成cheng失shi誤wu的de可ke能neng。許xu多duo現xian代dai的de綜zong合he工gong具ju通tong過guo正zheng確que的de約yue束shu,現xian在zai都dou提ti供gong這zhe項xiang功gong能neng。例li如ru,Synplify就有一個稱為“Fix gated clocks”選項,就是用於自動地從時鍾線上將門控操作刪除,並將其移動到數據路徑上。我們來看下麵這個代碼示例:
module clockstest(
output reg oDat,
input iClk,iEnable,
input iDat);
wire gated_clock=iClk&iEnable;
always @ (posedge gated_clock)
oDat<=iDat;
endmodule
在上麵的代碼中,係統時鍾被一個使能信號門控產生一個門控時鍾。這個門控時鍾被用於驅動觸發器oDat,而oDat用於寄存器輸入iDat。如果沒有啟用“fixing the clock gating”選項,那麼綜合工具將會直接實現邏輯功能,如圖6-17所示。

圖6-17:直接時鍾門控
圖6-17的(de)邏(luo)輯(ji)實(shi)現(xian)中(zhong),在(zai)時(shi)鍾(zhong)線(xian)上(shang)放(fang)置(zhi)了(le)門(men)控(kong)操(cao)作(zuo)。那(na)麼(me)設(she)計(ji)中(zhong)現(xian)在(zai)有(you)了(le)兩(liang)個(ge)時(shi)鍾(zhong)域(yu),必(bi)須(xu)分(fen)別(bie)對(dui)它(ta)們(men)進(jin)行(xing)約(yue)束(shu),而(er)且(qie)必(bi)須(xu)分(fen)別(bie)將(jiang)它(ta)們(men)布(bu)局(ju)到(dao)時(shi)鍾(zhong)資(zi)源(yuan)。但(dan)是(shi),如(ru)果(guo)啟(qi)動(dong)了(le)時(shi)鍾(zhong)門(men)控(kong)刪(shan)除(chu),這(zhe)個(ge)邏(luo)輯(ji)門(men)就(jiu)會(hui)比(bi)較(jiao)容(rong)易(yi)地(di)被(bei)移(yi)動(dong)到(dao)數(shu)據(ju)路(lu)徑(jing)上(shang),如(ru)圖(tu)6-18所示。

圖6-18:時鍾門控刪除
現xian在zai大da部bu分fen邏luo輯ji器qi件jian裏li邏luo輯ji單dan元yuan都dou提ti供gong了le一yi個ge時shi鍾zhong使shi能neng輸shu入ru,有you了le該gai使shi能neng輸shu入ru就jiu可ke以yi不bu使shi用yong本ben方fang案an。然ran而er,如ru果guo一yi個ge特te定ding的de技ji術shu並bing未wei提ti供gong觸chu發fa器qi時shi鍾zhong使shi能neng,那na麼me隻zhi能neng使shi用yong本ben技ji術shu來lai刪shan除chu時shi鍾zhong門men控kong,隻zhi是shi這zhe樣yang就jiu將jiang會hui在zai數shu據ju路lu徑jing上shang增zeng加jia延yan時shi。
6.3要點總結
l 時鍾同步問題通常是不可複現的問題,並且會給FPGA設計帶來可靠性問題。
l 亞穩態會給FPGA帶來災難性故障。
l 相位控製技術在一個時鍾頻率是另外一個的數倍且其中一個時鍾可以由內部PLL或者DLL控製的時候使用。
l 打兩拍技術可用於在異步時鍾域之間同步單比特信號。
l 在打兩拍同步器中,時序分析應該忽略第一個觸發器,同時要確保兩個同步觸發器之間的延時最小。
l FIFO用於在兩個異步時鍾域之間傳遞多比特信號。
l 格雷碼用於在兩個異步時鍾域之間傳遞計數值數據,而且多用在FIFO內部。
l 同步寄存器應該在功能模塊外麵獨立分區。
l 如果可能,請盡量不要使用時鍾門控。若必須使用,請將所有的門控時鍾放置在一個專門的時鍾模塊中,並與其它功能模塊隔離。
相關閱讀:
【原創】初學者實用:數電和FPGA中常用觸發器的介紹
Altera的FPGA和SoC技術在DesignCon中贏得了設計創意獎
使用FPGA進行工業設計的五大優勢
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall




