文獻標識碼: A
文章編號: 0258-7998(2010)12-0042-03
自從2003年XQVR4000XL成功運用于火星探測任務中后,國內外航天領域對Xilinx FPGA產生了極其濃厚的興趣,這種SRAM工藝的FPGA被越來越多地運用到星載數字系統中,極大提高了系統的集成度。FPGA進行數據處理或數據傳輸時,需要使用到高速時鐘;而出于某些因素考慮,一些低速的接口、通信協議等模塊仍然繼續使用,而且與高速時鐘域還會有數據流交換、控制信號傳遞等操作,時鐘域間的操作對時序穩定性提出了極其苛刻的要求。
本文基于實際項目需求[1],結合核心處理芯片XC2-V3000的特點,提出了一種基于全局時鐘網絡,時鐘鑒相和FIFO緩沖的混合時鐘域設計方案,解決了工作在各個時鐘頻段的時鐘驅動、控制信號傳遞、數據流交換的問題。經過硬件在線調試,驗證了這種方案確實可行,可提供高可靠性的時鐘信號。
1 混合時鐘域系統時序設計
FPGA內時序電路根據時鐘驅動方式不同,可以分為同步時序電路和異步時序電路[2]。異步時序電路中觸發器的驅動是邏輯設計中的直接觸發事件,各觸發器的輸出并不同步變化,容易出現毛刺問題,一般很少采用。同步時序電路中,所有觸發器受同一個時鐘信號驅動,在時鐘信號的上升沿或下降沿到來時刻同步輸出結果。同步設計的系統功能可靠,實現簡單,絕大多數設計采用的都是這種設計方法。
同步設計時鐘信號一般從FPGA特定管腳輸入,模塊設計可以使用它作為驅動時鐘,同時,這個輸入時鐘經過鎖相分頻或同步計數分頻等處理后又可以產生內部時鐘。默認情況下,分頻時鐘經由普通布線路徑驅動相應的模塊,被驅動模塊與分頻器的布線距離不一定相同,這樣會帶來隱患。
以兩個串聯模塊為例,如圖1所示,同一個時鐘通過不同路徑的可編程連線驅動這兩個模塊,其中模塊1的輸出作為模塊2的輸入。時鐘上升沿到來時刻,模塊2的次態取決于模塊1的現態。設tM1是模塊1的輸出建立時間,也就是時鐘上升沿到M1模塊輸出更新完畢的時間。設t1是分頻時鐘到達模塊1的時刻,t2是分頻時鐘到達模塊2的時刻。令Δt=t1-t2,功能設計時假設Δt=0,認為時鐘到來時刻相同。由于分頻時鐘走的是普通可編程連線,Δt并不等于0。若Δt<0,模塊2先工作,模塊1 的輸出Data1尚未發生改變,模塊2的輸出仍然正確;若Δt>tM1,即模塊1先工作,而且工作結束輸出穩定后模塊2才開始工作,這樣模塊2接收到的是模塊1的次態,系統工作異常;若Δt在0到tM1之間,則系統工作在臨界狀態。在臨界狀態下,系統有可能工作正常,也有可能工作不正常。同步時序電路的時鐘偏差問題隱蔽性很強,不易分析。
時鐘源到所有由該時鐘驅動的觸發器的最大延時之差稱為時鐘偏差。針對解決時鐘偏差問題,本文提出了將所有驅動時鐘引入全局時鐘網絡,不能引入全局網絡的時鐘作為普通控制信號處理的方案。
FPGA芯片內部使用單獨的一層金屬布線層和相應的可配置開關,構成一種接近中心散射的對稱梳妝全局時鐘網絡,也稱作全局時鐘樹。全局時鐘網絡負載能力強,時鐘偏差、時鐘波形畸變小,工作可靠性好。在設計實現時,只要模塊使用全局時鐘作為驅動,設計工具會自動將工作在該時鐘域內的所有觸發器平衡分布在時鐘樹上,使時鐘偏差最小。全局時鐘網絡驅動的同步時序電路時鐘偏差將不再影響系統正常工作。
在設計全局時鐘網絡時,要注意幾個問題:
(1)分頻時鐘信號質量。計數分頻器產生的時鐘信號接入全局時鐘網絡前要手動添加一個寄存器,對該信號進行寄存器濾波,消除可能出現的信號毛刺。
(2)時鐘網絡的覆蓋性[3]。在器件XC2V3000的所有16個全局時鐘接入點(BUFG)中,8個是主時鐘接入點,8個是次時鐘接入點,分別對應一個主接入點,如圖2所示。主接入點和次接入點引入的時鐘覆蓋范圍不一樣。主接入點的8個時鐘都可以驅動全部4個時區(Quadrant NW/NE/SW/SE),如果系統內需要超過8個全局時鐘信號,則需要使用次接入點。次接入點與主接入點在硬件上并沒有本質區別,只是次接入點的時鐘不能工作在它所對應的主接入點的時區內。
ISE在布局布線過程中會自動為設計代碼中的BUFG選擇合適的布局,低于8個全局時鐘信號時會全部選擇主接入點以獲得更優化的布局,如有特殊情況需要進行手動布局,則需要留意這樣的位置約束。由于設計工具在布局時會沿著時鐘樹平衡分布,當資源消耗量大的兩個或者多個時鐘網絡驅動同一個時區時,要充分考慮邏輯資源沖突問題。布局時資源緊張,不能進行優化設計,可能產生臨界狀態,并且導致功耗集中,局部發熱快、溫度高,長期工作會導致器件的性能下降。這種情況在邏輯資源比較緊張的設計中容易出現,因此設計初期要進行資源預估,保證足夠的降額。Xilinx建議用戶設計資源利用率一般在60%~70%左右,超過這個范圍,系統性能將會受到影響。
全局時鐘樹可以實現芯片內高速、中速、低速和甚低速任意組合的混合時鐘域設計,有助于將印刷板上原本使用專用器件完成的功能移植到FPGA上實現,提高系統的集成度,在航天器微型化的發展中起關鍵作用。
使用全局時鐘樹實現的混合時鐘域設計中,時鐘域之間不可避免地會有控制信號傳遞和數據流的交換。如果這兩個時鐘有“沿對沿”的相位關系,可能會發生“時鐘碰撞”。觸發器工作過程中存在數據建立和保持時間的約束,如果不能滿足約束,觸發器就會進入某種不確定狀態——亞穩態。如圖3所示,Clk1和Clk2的相位關系使得在某些時刻Clk1時鐘域輸出的數據Data還未完全建立,Clk2的上升沿便觸發了對這個數據的采集,進入到Clk2時鐘域的數據Data_Clk2便處于亞穩態。這個亞穩態數據會對Clk2時鐘域的工作狀態產生不可預期的影響,可能導致連鎖反應,甚至引起整體系統功能混亂。
為解決這個問題,提高同步時序設計可靠性,本文提出了基于時鐘鑒相和基于異步FIFO的解決方案。
當信號在兩個頻率相差較大的時鐘域間傳遞時,時鐘鑒相法可以保證信號的可靠傳遞。低速時鐘域的信號向高速時鐘域傳遞的時序如圖4所示。使用高速時鐘對低速時鐘波形進行采樣,分別記錄采樣現態CLK_SL和兩個先前態CLK_SL_DL1、CLK_SL_DL2,根據這3個狀態可以判斷低速時鐘的相位。令STATE=CLK_SL& CLK_SL_DL1&CLK_SL_DL2,當STATE=“100”時認為采到低速時鐘的上升沿,假設低速信號在這個上升沿開始變化,則在STATE=“110”時,低速信號輸出穩定,用采樣時鐘將此時的信號寄存,這樣就完成了低速信號到高速時鐘域的傳遞。高速時鐘域的信號向低速時鐘域傳遞時,同樣使用高速時鐘對低速時鐘進行采樣,記錄現態和兩個先前態。假設低速時鐘域中,低速時鐘在時鐘的上升沿采集控制信號,則當STATE=“011”時,認為是低速時鐘的下降沿,執行對信號的賦值操作。在低速時鐘的上升沿,高速信號不刷新,低速時鐘域可以正確接收信號。
如果系統眾多時鐘里只有一個高速時鐘,其余都是低速或甚低速時鐘,可以利用時鐘鑒相法將混合時鐘域轉化為單一時鐘域。具體做法是使用高速時鐘觸發片內所有觸發器,原低速時鐘驅動模塊改用高速時鐘驅動,低速時鐘作為一般控制信號或同步刷新信號使用。時鐘域單一化有利于實現同步設計,當所用控制信號和數據流信號在同一個時刻觸發變化時,信號傳遞時的亞穩態錯誤便不會存在,可以極大地提高系統的穩定性。混合時鐘域單一化方法在模塊化設計中對每個觸發點都要做一次時鐘鑒相,增加了系統的資源消耗,而且設計代碼可讀性不強,移植性也不好。在大規模系統設計時,單一的高速時鐘驅動還會增加功耗。在大型復雜設計中并不推薦混合時鐘域單一化。
當信號跨越的兩個時鐘域時鐘頻率比較接近時,時鐘鑒相法不能有效地相互鑒別時鐘相位,亞穩態問題仍然威脅系統的可靠性。在兩個都是低速時鐘域的情況下,可以先將信號從源時鐘域中轉到高速時鐘域,然后再傳遞到目標時鐘域。但中轉傳遞降低了工作效率而且增加了資源消耗,因此較少采用。
對于頻率比較接近的時鐘域間的信號傳遞,比較合理的方案是文獻[4]使用的異步FIFO數據緩存[4]。先進先出存儲器(FIFO)是一種專門用于數據緩沖和時鐘切換的存儲單元。FPGA內支持同步和異步FIFO兩種IP核,時鐘域間數據傳遞使用的是異步FIFO。異步FIFO內使用格雷碼計數器和交互握手信號,大大降低了兩個時鐘域的時鐘信號出現時鐘碰撞導致內部狀態混亂的危險性。典型異步FIFO結構如圖5所示。
源時鐘域中需要向目標時鐘域傳遞的信號,不論是控制信號還是數據流信號,統一組合成STD_LOGIC_VECTOR類型的數據,在刷新同步信號到來時置寫使能WR_EN有效,在源時鐘域的時鐘上升沿,若FIFO未滿,則將數據寫入FIFO。目標時鐘域接收數據時判斷FIFO是否為空,若非空,則將數據讀出,還原。使用異步FIFO可以進行連續、高數據率的數據傳遞,功能可靠,使用簡單。但受片內資源的限制,不能大范圍使用,而且源時鐘域和目標時鐘域的時鐘頻率不能相差太大,否則會造成數據擁堵,增加資源消耗。
2 實際工程應用
本文設計目標系統是基于XC2V3000的極紫外探測器主控系統,該系統外部輸入時鐘為100 MHz,系統內共包含位置解碼算法模塊的驅動時鐘100 MHz,總線控制模塊的工作時鐘50 MHz,姿態調整機構位置傳感器采樣時鐘12.5 MHz,LVDS數據傳輸驅動時鐘5 MHz,RS-422通信模塊工作時鐘500 kHz,以及姿態調整機構驅動頻率400 Hz,跨越高速、中速、低速和甚低速4個時鐘域。根據本文提出的方案,將DCM和同步計數分頻器生成的時鐘全部通過主接入點導入全局時鐘網絡,使這些時鐘均能覆蓋整個芯片面積。位置解碼算法模塊100 MHz時鐘域與總線控制模塊50 MHz時鐘域之間的信號傳遞使用異步FIFO,頻率在50 MHz以下的時鐘域使用時鐘鑒相法與50 MHz傳遞信號,相互之間不直接傳遞。
經過后仿真測試和硬件調試的驗證,證明了本文提出的混合時鐘域解決方案確實可行,有助于提高集成度,并能極大提高系統的可靠性。
參考文獻
[1] 尼啟良,劉世界,陳波.極紫外位置靈敏陽極光子計數成像探測器研究[J].中國光學與應用光學,2009(1):35-39.
[2] 杜文志.星載FPGA內時序電路設計與時鐘控制技術分析[J].航天器工程,2008(5):58-63.
[3] Virtex-II Platform FPGA User Guide.www.xilinx.com,2007.
[4] 冼友倫,盧護林,蘇濤.基于FPGA的多通道高速實時信號處理系統設計[J].電子技術應用,2005(3):98-101.