《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 星載FPGA混合時(shí)鐘域設(shè)計(jì)
星載FPGA混合時(shí)鐘域設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2010年第12期
黃 良1,,2,,韓誠(chéng)山1,,文 明1
1.中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,,吉林 長(zhǎng)春130033;2.中國(guó)科學(xué)院研究生院,,北京100039
摘要: 設(shè)計(jì)了以XC2V3000為核心處理芯片的星載FPGA系統(tǒng)的涵蓋高速,、中速、低速和甚低速的混合時(shí)鐘域,,對(duì)混合時(shí)鐘域可靠性設(shè)計(jì)中的關(guān)鍵問題,,如資源降額,、時(shí)序冗余、布局布線等,,做了深入研究,提出了基于全局時(shí)鐘網(wǎng)絡(luò),、時(shí)鐘鑒相,、FIFO緩沖的多時(shí)鐘同步設(shè)計(jì)解決方案,并在實(shí)際工程中驗(yàn)證了方案的可行性和可靠性,。
中圖分類號(hào): TN431.2
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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成功運(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í)刻,。令&Delta;t=t1-t2,,功能設(shè)計(jì)時(shí)假設(shè)&Delta;t=0,認(rèn)為時(shí)鐘到來時(shí)刻相同,。由于分頻時(shí)鐘走的是普通可編程連線,,&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)有可能工作正常,也有可能工作不正常,。同步時(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í)鐘有&ldquo;沿對(duì)沿&rdquo;的相位關(guān)系,,可能會(huì)發(fā)生&ldquo;時(shí)鐘碰撞&rdquo;。觸發(fā)器工作過程中存在數(shù)據(jù)建立和保持時(shí)間的約束,,如果不能滿足約束,,觸發(fā)器就會(huì)進(jìn)入某種不確定狀態(tài)&mdash;&mdash;亞穩(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=&ldquo;100&rdquo;時(shí)認(rèn)為采到低速時(shí)鐘的上升沿,,假設(shè)低速信號(hào)在這個(gè)上升沿開始變化,,則在STATE=&ldquo;110&rdquo;時(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=&ldquo;011&rdquo;時(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.
 

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