作者:Tim Behne
軟件與信號(hào)處理部經(jīng)理
Microwave Networks公司
Email: timothyb@microwavenetworks.com
利用FPGA實(shí)現(xiàn)大型設(shè)計(jì)時(shí),可能需要FPGA具有以多個(gè)時(shí)鐘運(yùn)行的多重?cái)?shù)據(jù)通路,這種多時(shí)鐘FPGA設(shè)計(jì)必須特別小心,需要注意最大時(shí)鐘速率、抖動(dòng)、最大時(shí)鐘數(shù)、異步時(shí)鐘設(shè)計(jì)和時(shí)鐘/數(shù)據(jù)關(guān)系。設(shè)計(jì)過程中最重要的一步是確定要用多少個(gè)不同的時(shí)鐘,以及如何進(jìn)行布線,本文將對(duì)這些設(shè)計(jì)策略深入闡述。
FPGA設(shè)計(jì)的第一步是決定需要什么樣的時(shí)鐘速率,設(shè)計(jì)中最快的時(shí)鐘將確定FPGA必須能處理的時(shí)鐘速率。最快時(shí)鐘速率由設(shè)計(jì)中兩個(gè)觸發(fā)器之間一個(gè)信號(hào)的傳輸時(shí)間P來決定,如果P大于時(shí)鐘周期T,則當(dāng)信號(hào)在一個(gè)觸發(fā)器上改變后,在下一個(gè)邏輯級(jí)上將不會(huì)改變,直到兩個(gè)時(shí)鐘周期以后才改變,如圖1所示。 
圖一
傳輸時(shí)間為信號(hào)在第一個(gè)觸發(fā)器輸出處所需的保持時(shí)間加上兩級(jí)之間的任何組合邏輯的延遲,再加兩級(jí)之間的布線延遲以及信號(hào)進(jìn)入第二級(jí)觸發(fā)器的設(shè)置時(shí)間。無論時(shí)鐘速率為多少,每一個(gè)FPGA設(shè)計(jì)所用的時(shí)鐘必須具有低抖動(dòng)特性。抖動(dòng)S是觸發(fā)器的一個(gè)時(shí)鐘輸入到另一個(gè)觸發(fā)器的時(shí)鐘輸入之間的最大延遲。為使電路正常工作,抖動(dòng)必須小于兩個(gè)觸發(fā)器之間的傳輸時(shí)間。

圖二
圖2顯示了如果抖動(dòng)大于傳輸時(shí)間(S>P)將出現(xiàn)的情況,該電路用時(shí)鐘的兩個(gè)上升沿來延遲信號(hào)1。然而,信號(hào)1上的一個(gè)改變會(huì)在相同的時(shí)鐘周期上傳輸?shù)降男盘?hào)3上,從而引起信號(hào)2的改變。因?yàn)镾>P,電路將不能不正常。
須注意的是,時(shí)鐘速率與傳輸延時(shí)并沒有什么關(guān)系,甚至普通的100bps時(shí)鐘也會(huì)出現(xiàn)抖動(dòng)問題。這意味著雖然FPGA供應(yīng)商宣稱他們的芯片具有較短的傳輸時(shí)間和很高的時(shí)鐘速率,但抖動(dòng)問題可能會(huì)嚴(yán)重,甚至那些沒有運(yùn)行在最高速率上的設(shè)計(jì)也是如此。
好在FPGA供應(yīng)商已經(jīng)認(rèn)識(shí)到時(shí)鐘抖動(dòng)的影響,并在他們的芯片中提供低抖動(dòng)的布線資源。這些特殊的布線能夠在芯片中一個(gè)給定范圍內(nèi)的任何兩個(gè)觸發(fā)器之間提供一個(gè)確定的最大抖動(dòng)。部分產(chǎn)品的低抖動(dòng)資源覆蓋了整個(gè)芯片,而其它的則可能只覆蓋了FPGA邏輯塊中的一個(gè)特定的行或列。對(duì)于一個(gè)需要很多不同時(shí)鐘源的設(shè)計(jì),這些低抖動(dòng)FPGA是比較理想的選擇。
多時(shí)鐘設(shè)計(jì)的最嚴(yán)重問題之一是用異步時(shí)鐘將兩級(jí)邏輯結(jié)合在一起。由于異步時(shí)鐘會(huì)產(chǎn)生亞穩(wěn)態(tài),從而嚴(yán)重降低設(shè)計(jì)性能,或完全破壞設(shè)計(jì)所能實(shí)現(xiàn)的功能。在觸發(fā)器的時(shí)序要求產(chǎn)生沖突時(shí)(設(shè)置時(shí)間和保持時(shí)間)將產(chǎn)生亞穩(wěn)態(tài),觸發(fā)器的最終輸出是未知的,并使整個(gè)設(shè)計(jì)處于不確定狀態(tài)。如果有一級(jí)邏輯要將數(shù)據(jù)異步地發(fā)送到另一級(jí),圖3所示的情形將不能滿足觸發(fā)器的設(shè)置和保持時(shí)間要求。確切地說,如果設(shè)計(jì)中含有異步邏輯將有可能會(huì)產(chǎn)生亞穩(wěn)態(tài)。在處置異步資源時(shí)必需非常小心,因?yàn)檫@可能產(chǎn)生一些很嚴(yán)重的問題。

圖三
多時(shí)鐘設(shè)計(jì)
本文以電信應(yīng)用中的E3多路復(fù)用/解復(fù)用設(shè)計(jì)為例。如圖4所示,多路復(fù)用器接收來自一組獨(dú)立線路接口芯片的16個(gè)獨(dú)立E1信道,每一個(gè)信道都工作于2.048MHz;經(jīng)復(fù)用后,這些E1流組合成4個(gè)E2流,分別工作在8.0448MHz;4個(gè)E2流最后組合成一個(gè)E3流,以34.368Mbps的速率串行發(fā)送出去。在接收端執(zhí)行相反的操作:解復(fù)用器從E3流提取4個(gè)E2數(shù)據(jù)流,然后從E2流提取16個(gè)E1流,最終將E1流發(fā)送到接收端的線路接口芯片。