《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 星載FPGA混合時鐘域設(shè)計
星載FPGA混合時鐘域設(shè)計
來源:電子技術(shù)應(yīng)用2010年第12期
黃 良1,2,韓誠山1,文 明1
1.中國科學(xué)院長春光學(xué)精密機械與物理研究所,吉林 長春130033;2.中國科學(xué)院研究生院,北京100039
摘要: 設(shè)計了以XC2V3000為核心處理芯片的星載FPGA系統(tǒng)的涵蓋高速、中速、低速和甚低速的混合時鐘域,對混合時鐘域可靠性設(shè)計中的關(guān)鍵問題,如資源降額、時序冗余、布局布線等,做了深入研究,提出了基于全局時鐘網(wǎng)絡(luò)、時鐘鑒相、FIFO緩沖的多時鐘同步設(shè)計解決方案,并在實際工程中驗證了方案的可行性和可靠性。
中圖分類號: TN431.2
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2010)12-0042-03
Design of multiple clocks in FPGA for spacecraft
HUANG Liang1,2,HAN Cheng Shan1,WEN Ming1
1.Changchun Institute of Optics, Fine Mechanics and Physics, Chinese Academy of Sciences, Changchun 130033,China;2.Graduate School of the Chinese Academy of Sciences, Beijing 130039,China
Abstract: This paper describes the design and implementation of multiple clocks in a spacecraft, using XC2V3000 as main processor, including high speed, medium speed, low speed and very low speed clocks. After plenty of research in the key points, such as source derating, sequence redundancy, plan and route, a fine resolution based on global clock networks, phase demodulation, FIFO memories is proposed, and finally used in later project. Implementation of synchronous system with multiple clocks proves that the proposed resultion is available and reliablel.
Key words : spacecraft;multiple clocks;clock reliability;synchronous design

    自從2003年XQVR4000XL成功運用于火星探測任務(wù)中后,國內(nèi)外航天領(lǐng)域?qū)ilinx FPGA產(chǎn)生了極其濃厚的興趣,這種SRAM工藝的FPGA被越來越多地運用到星載數(shù)字系統(tǒng)中,極大提高了系統(tǒng)的集成度。FPGA進行數(shù)據(jù)處理或數(shù)據(jù)傳輸時,需要使用到高速時鐘;而出于某些因素考慮,一些低速的接口、通信協(xié)議等模塊仍然繼續(xù)使用,而且與高速時鐘域還會有數(shù)據(jù)流交換、控制信號傳遞等操作,時鐘域間的操作對時序穩(wěn)定性提出了極其苛刻的要求。
    本文基于實際項目需求[1],結(jié)合核心處理芯片XC2-V3000的特點,提出了一種基于全局時鐘網(wǎng)絡(luò),時鐘鑒相和FIFO緩沖的混合時鐘域設(shè)計方案,解決了工作在各個時鐘頻段的時鐘驅(qū)動、控制信號傳遞、數(shù)據(jù)流交換的問題。經(jīng)過硬件在線調(diào)試,驗證了這種方案確實可行,可提供高可靠性的時鐘信號。
1 混合時鐘域系統(tǒng)時序設(shè)計
    FPGA內(nèi)時序電路根據(jù)時鐘驅(qū)動方式不同,可以分為同步時序電路和異步時序電路[2]。異步時序電路中觸發(fā)器的驅(qū)動是邏輯設(shè)計中的直接觸發(fā)事件,各觸發(fā)器的輸出并不同步變化,容易出現(xiàn)毛刺問題,一般很少采用。同步時序電路中,所有觸發(fā)器受同一個時鐘信號驅(qū)動,在時鐘信號的上升沿或下降沿到來時刻同步輸出結(jié)果。同步設(shè)計的系統(tǒng)功能可靠,實現(xiàn)簡單,絕大多數(shù)設(shè)計采用的都是這種設(shè)計方法。
    同步設(shè)計時鐘信號一般從FPGA特定管腳輸入,模塊設(shè)計可以使用它作為驅(qū)動時鐘,同時,這個輸入時鐘經(jīng)過鎖相分頻或同步計數(shù)分頻等處理后又可以產(chǎn)生內(nèi)部時鐘。默認(rèn)情況下,分頻時鐘經(jīng)由普通布線路徑驅(qū)動相應(yīng)的模塊,被驅(qū)動模塊與分頻器的布線距離不一定相同,這樣會帶來隱患。
    以兩個串聯(lián)模塊為例,如圖1所示,同一個時鐘通過不同路徑的可編程連線驅(qū)動這兩個模塊,其中模塊1的輸出作為模塊2的輸入。時鐘上升沿到來時刻,模塊2的次態(tài)取決于模塊1的現(xiàn)態(tài)。設(shè)tM1是模塊1的輸出建立時間,也就是時鐘上升沿到M1模塊輸出更新完畢的時間。設(shè)t1是分頻時鐘到達(dá)模塊1的時刻,t2是分頻時鐘到達(dá)模塊2的時刻。令&Delta;t=t1-t2,功能設(shè)計時假設(shè)&Delta;t=0,認(rèn)為時鐘到來時刻相同。由于分頻時鐘走的是普通可編程連線,&Delta;t并不等于0。若&Delta;t<0,模塊2先工作,模塊1 的輸出Data1尚未發(fā)生改變,模塊2的輸出仍然正確;若&Delta;t>tM1,即模塊1先工作,而且工作結(jié)束輸出穩(wěn)定后模塊2才開始工作,這樣模塊2接收到的是模塊1的次態(tài),系統(tǒng)工作異常;若&Delta;t在0到tM1之間,則系統(tǒng)工作在臨界狀態(tài)。在臨界狀態(tài)下,系統(tǒng)有可能工作正常,也有可能工作不正常。同步時序電路的時鐘偏差問題隱蔽性很強,不易分析。

    時鐘源到所有由該時鐘驅(qū)動的觸發(fā)器的最大延時之差稱為時鐘偏差。針對解決時鐘偏差問題,本文提出了將所有驅(qū)動時鐘引入全局時鐘網(wǎng)絡(luò),不能引入全局網(wǎng)絡(luò)的時鐘作為普通控制信號處理的方案。
    FPGA芯片內(nèi)部使用單獨的一層金屬布線層和相應(yīng)的可配置開關(guān),構(gòu)成一種接近中心散射的對稱梳妝全局時鐘網(wǎng)絡(luò),也稱作全局時鐘樹。全局時鐘網(wǎng)絡(luò)負(fù)載能力強,時鐘偏差、時鐘波形畸變小,工作可靠性好。在設(shè)計實現(xiàn)時,只要模塊使用全局時鐘作為驅(qū)動,設(shè)計工具會自動將工作在該時鐘域內(nèi)的所有觸發(fā)器平衡分布在時鐘樹上,使時鐘偏差最小。全局時鐘網(wǎng)絡(luò)驅(qū)動的同步時序電路時鐘偏差將不再影響系統(tǒng)正常工作。
    在設(shè)計全局時鐘網(wǎng)絡(luò)時,要注意幾個問題:
    (1)分頻時鐘信號質(zhì)量。計數(shù)分頻器產(chǎn)生的時鐘信號接入全局時鐘網(wǎng)絡(luò)前要手動添加一個寄存器,對該信號進行寄存器濾波,消除可能出現(xiàn)的信號毛刺。
    (2)時鐘網(wǎng)絡(luò)的覆蓋性[3]。在器件XC2V3000的所有16個全局時鐘接入點(BUFG)中,8個是主時鐘接入點,8個是次時鐘接入點,分別對應(yīng)一個主接入點,如圖2所示。主接入點和次接入點引入的時鐘覆蓋范圍不一樣。主接入點的8個時鐘都可以驅(qū)動全部4個時區(qū)(Quadrant NW/NE/SW/SE),如果系統(tǒng)內(nèi)需要超過8個全局時鐘信號,則需要使用次接入點。次接入點與主接入點在硬件上并沒有本質(zhì)區(qū)別,只是次接入點的時鐘不能工作在它所對應(yīng)的主接入點的時區(qū)內(nèi)。

    ISE在布局布線過程中會自動為設(shè)計代碼中的BUFG選擇合適的布局,低于8個全局時鐘信號時會全部選擇主接入點以獲得更優(yōu)化的布局,如有特殊情況需要進行手動布局,則需要留意這樣的位置約束。由于設(shè)計工具在布局時會沿著時鐘樹平衡分布,當(dāng)資源消耗量大的兩個或者多個時鐘網(wǎng)絡(luò)驅(qū)動同一個時區(qū)時,要充分考慮邏輯資源沖突問題。布局時資源緊張,不能進行優(yōu)化設(shè)計,可能產(chǎn)生臨界狀態(tài),并且導(dǎo)致功耗集中,局部發(fā)熱快、溫度高,長期工作會導(dǎo)致器件的性能下降。這種情況在邏輯資源比較緊張的設(shè)計中容易出現(xiàn),因此設(shè)計初期要進行資源預(yù)估,保證足夠的降額。Xilinx建議用戶設(shè)計資源利用率一般在60%~70%左右,超過這個范圍,系統(tǒng)性能將會受到影響。
    全局時鐘樹可以實現(xiàn)芯片內(nèi)高速、中速、低速和甚低速任意組合的混合時鐘域設(shè)計,有助于將印刷板上原本使用專用器件完成的功能移植到FPGA上實現(xiàn),提高系統(tǒng)的集成度,在航天器微型化的發(fā)展中起關(guān)鍵作用。
    使用全局時鐘樹實現(xiàn)的混合時鐘域設(shè)計中,時鐘域之間不可避免地會有控制信號傳遞和數(shù)據(jù)流的交換。如果這兩個時鐘有&ldquo;沿對沿&rdquo;的相位關(guān)系,可能會發(fā)生&ldquo;時鐘碰撞&rdquo;。觸發(fā)器工作過程中存在數(shù)據(jù)建立和保持時間的約束,如果不能滿足約束,觸發(fā)器就會進入某種不確定狀態(tài)&mdash;&mdash;亞穩(wěn)態(tài)。如圖3所示,Clk1和Clk2的相位關(guān)系使得在某些時刻Clk1時鐘域輸出的數(shù)據(jù)Data還未完全建立,Clk2的上升沿便觸發(fā)了對這個數(shù)據(jù)的采集,進入到Clk2時鐘域的數(shù)據(jù)Data_Clk2便處于亞穩(wěn)態(tài)。這個亞穩(wěn)態(tài)數(shù)據(jù)會對Clk2時鐘域的工作狀態(tài)產(chǎn)生不可預(yù)期的影響,可能導(dǎo)致連鎖反應(yīng),甚至引起整體系統(tǒng)功能混亂。


    為解決這個問題,提高同步時序設(shè)計可靠性,本文提出了基于時鐘鑒相和基于異步FIFO的解決方案。
    當(dāng)信號在兩個頻率相差較大的時鐘域間傳遞時,時鐘鑒相法可以保證信號的可靠傳遞。低速時鐘域的信號向高速時鐘域傳遞的時序如圖4所示。使用高速時鐘對低速時鐘波形進行采樣,分別記錄采樣現(xiàn)態(tài)CLK_SL和兩個先前態(tài)CLK_SL_DL1、CLK_SL_DL2,根據(jù)這3個狀態(tài)可以判斷低速時鐘的相位。令STATE=CLK_SL& CLK_SL_DL1&CLK_SL_DL2,當(dāng)STATE=&ldquo;100&rdquo;時認(rèn)為采到低速時鐘的上升沿,假設(shè)低速信號在這個上升沿開始變化,則在STATE=&ldquo;110&rdquo;時,低速信號輸出穩(wěn)定,用采樣時鐘將此時的信號寄存,這樣就完成了低速信號到高速時鐘域的傳遞。高速時鐘域的信號向低速時鐘域傳遞時,同樣使用高速時鐘對低速時鐘進行采樣,記錄現(xiàn)態(tài)和兩個先前態(tài)。假設(shè)低速時鐘域中,低速時鐘在時鐘的上升沿采集控制信號,則當(dāng)STATE=&ldquo;011&rdquo;時,認(rèn)為是低速時鐘的下降沿,執(zhí)行對信號的賦值操作。在低速時鐘的上升沿,高速信號不刷新,低速時鐘域可以正確接收信號。

    如果系統(tǒng)眾多時鐘里只有一個高速時鐘,其余都是低速或甚低速時鐘,可以利用時鐘鑒相法將混合時鐘域轉(zhuǎn)化為單一時鐘域。具體做法是使用高速時鐘觸發(fā)片內(nèi)所有觸發(fā)器,原低速時鐘驅(qū)動模塊改用高速時鐘驅(qū)動,低速時鐘作為一般控制信號或同步刷新信號使用。時鐘域單一化有利于實現(xiàn)同步設(shè)計,當(dāng)所用控制信號和數(shù)據(jù)流信號在同一個時刻觸發(fā)變化時,信號傳遞時的亞穩(wěn)態(tài)錯誤便不會存在,可以極大地提高系統(tǒng)的穩(wěn)定性。混合時鐘域單一化方法在模塊化設(shè)計中對每個觸發(fā)點都要做一次時鐘鑒相,增加了系統(tǒng)的資源消耗,而且設(shè)計代碼可讀性不強,移植性也不好。在大規(guī)模系統(tǒng)設(shè)計時,單一的高速時鐘驅(qū)動還會增加功耗。在大型復(fù)雜設(shè)計中并不推薦混合時鐘域單一化。
    當(dāng)信號跨越的兩個時鐘域時鐘頻率比較接近時,時鐘鑒相法不能有效地相互鑒別時鐘相位,亞穩(wěn)態(tài)問題仍然威脅系統(tǒng)的可靠性。在兩個都是低速時鐘域的情況下,可以先將信號從源時鐘域中轉(zhuǎn)到高速時鐘域,然后再傳遞到目標(biāo)時鐘域。但中轉(zhuǎn)傳遞降低了工作效率而且增加了資源消耗,因此較少采用。
    對于頻率比較接近的時鐘域間的信號傳遞,比較合理的方案是文獻(xiàn)[4]使用的異步FIFO數(shù)據(jù)緩存[4]。先進先出存儲器(FIFO)是一種專門用于數(shù)據(jù)緩沖和時鐘切換的存儲單元。FPGA內(nèi)支持同步和異步FIFO兩種IP核,時鐘域間數(shù)據(jù)傳遞使用的是異步FIFO。異步FIFO內(nèi)使用格雷碼計數(shù)器和交互握手信號,大大降低了兩個時鐘域的時鐘信號出現(xiàn)時鐘碰撞導(dǎo)致內(nèi)部狀態(tài)混亂的危險性。典型異步FIFO結(jié)構(gòu)如圖5所示。


    源時鐘域中需要向目標(biāo)時鐘域傳遞的信號,不論是控制信號還是數(shù)據(jù)流信號,統(tǒng)一組合成STD_LOGIC_VECTOR類型的數(shù)據(jù),在刷新同步信號到來時置寫使能WR_EN有效,在源時鐘域的時鐘上升沿,若FIFO未滿,則將數(shù)據(jù)寫入FIFO。目標(biāo)時鐘域接收數(shù)據(jù)時判斷FIFO是否為空,若非空,則將數(shù)據(jù)讀出,還原。使用異步FIFO可以進行連續(xù)、高數(shù)據(jù)率的數(shù)據(jù)傳遞,功能可靠,使用簡單。但受片內(nèi)資源的限制,不能大范圍使用,而且源時鐘域和目標(biāo)時鐘域的時鐘頻率不能相差太大,否則會造成數(shù)據(jù)擁堵,增加資源消耗。
2 實際工程應(yīng)用
    本文設(shè)計目標(biāo)系統(tǒng)是基于XC2V3000的極紫外探測器主控系統(tǒng),該系統(tǒng)外部輸入時鐘為100 MHz,系統(tǒng)內(nèi)共包含位置解碼算法模塊的驅(qū)動時鐘100 MHz,總線控制模塊的工作時鐘50 MHz,姿態(tài)調(diào)整機構(gòu)位置傳感器采樣時鐘12.5 MHz,LVDS數(shù)據(jù)傳輸驅(qū)動時鐘5 MHz,RS-422通信模塊工作時鐘500 kHz,以及姿態(tài)調(diào)整機構(gòu)驅(qū)動頻率400 Hz,跨越高速、中速、低速和甚低速4個時鐘域。根據(jù)本文提出的方案,將DCM和同步計數(shù)分頻器生成的時鐘全部通過主接入點導(dǎo)入全局時鐘網(wǎng)絡(luò),使這些時鐘均能覆蓋整個芯片面積。位置解碼算法模塊100 MHz時鐘域與總線控制模塊50 MHz時鐘域之間的信號傳遞使用異步FIFO,頻率在50 MHz以下的時鐘域使用時鐘鑒相法與50 MHz傳遞信號,相互之間不直接傳遞。
    經(jīng)過后仿真測試和硬件調(diào)試的驗證,證明了本文提出的混合時鐘域解決方案確實可行,有助于提高集成度,并能極大提高系統(tǒng)的可靠性。
參考文獻(xiàn)
[1] 尼啟良,劉世界,陳波.極紫外位置靈敏陽極光子計數(shù)成像探測器研究[J].中國光學(xué)與應(yīng)用光學(xué),2009(1):35-39.
[2] 杜文志.星載FPGA內(nèi)時序電路設(shè)計與時鐘控制技術(shù)分析[J].航天器工程,2008(5):58-63.
[3] Virtex-II Platform FPGA User Guide.www.xilinx.com,2007.
[4] 冼友倫,盧護林,蘇濤.基于FPGA的多通道高速實時信號處理系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2005(3):98-101.
 

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