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