郭京,沈華,段小虎
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
摘要:基于Xilinx芯片的FPGA集成了越來(lái)越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內(nèi)部RAM 資源。在FPGA的電路設(shè)計(jì)中,上電配置電路至關(guān)重要。其中,DONE信號(hào)上拉電阻阻值的選擇很容易被人忽略,錯(cuò)誤的阻值選擇往往會(huì)導(dǎo)致意想不到的情況。通過(guò)采用4.7 kΩ電阻上拉DONE信號(hào)產(chǎn)生的試驗(yàn)結(jié)果,來(lái)分析DONE信號(hào)上拉電阻必須為330 Ω的原因。
關(guān)鍵詞:FPGA;上拉電阻;DONE信號(hào)
中圖分類(lèi)號(hào):TP302.7文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.10.011
引用格式:郭京,沈華,段小虎.基于Xilinx芯片的FPGA的DONE信號(hào)上拉電阻阻值分析[J].微型機(jī)與應(yīng)用,2017,36(10):37-39.
0引言
隨著半導(dǎo)體和芯片技術(shù)的飛速發(fā)展, 現(xiàn)在的現(xiàn)場(chǎng)可編程門(mén)陣列(FieldProgrammable Gate Array, FPGA)集成了越來(lái)越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內(nèi)部RAM 資源, 使其在國(guó)防、醫(yī)療、消費(fèi)電子等領(lǐng)域得到了越來(lái)越廣泛的應(yīng)用。但是FPGA 大多數(shù)是基于SRAM 工藝的, 具有易失性, 因此FPGA 通常使用外部存儲(chǔ)器件(如PROM) 存儲(chǔ)必需的配置信息, 防止設(shè)備掉電后FPGA丟失自我配置能力。但FPGA 配置在一定的條件和時(shí)間下才能成功完成, 隨著FPGA 容量的不斷攀升,配置時(shí)間也被大大加長(zhǎng), 上電時(shí)如不充分考慮FPGA的配置時(shí)序以及對(duì)其他器件的影響, 根據(jù)常規(guī)經(jīng)驗(yàn)設(shè)計(jì)電路, 往往會(huì)影響系統(tǒng)其他外圍器件的正常工作, 嚴(yán)重時(shí)會(huì)導(dǎo)致整個(gè)系統(tǒng)的失效。因此, FPGA 的配置方式和上電時(shí)序已成為系統(tǒng)設(shè)計(jì)的重要一環(huán)[1]。本文主要分析在FPGA上電配置過(guò)程中,因DONE上拉電阻阻值的不同而引起的不同上電結(jié)果。
1FPGA的加載過(guò)程
FPGA加載過(guò)程分為8個(gè)序列[1],如圖1所示。
在前7個(gè)步驟完成后,配置數(shù)據(jù)的CRC校驗(yàn)完成,進(jìn)入最后的Startup序列,Startup序列所需要處理的事件如圖2所示。
這7個(gè)事件的前后關(guān)系是可以在FPGA的目標(biāo)碼bit文件生成選項(xiàng)中進(jìn)行設(shè)置的,默認(rèn)的設(shè)置順序如圖3所示。
所以,默認(rèn)狀態(tài)下,F(xiàn)PGA在配置數(shù)據(jù)加載完并且通過(guò)CRC校驗(yàn)后,依次完成以下工作:
?。?)釋放DONE信號(hào):配置數(shù)據(jù)加載期間FPGA驅(qū)動(dòng)DONE信號(hào)為低,到Startup序列后FPGA將DONE信號(hào)置為高阻態(tài),靠外部上拉電阻將DONE信號(hào)拉為高。
?。?)處理GTS事件:配置數(shù)據(jù)加載期間FPGA IO管腳為高阻態(tài)(或也可由FPGA的某個(gè)配置管腳將所有IO在配置數(shù)據(jù)加載期間設(shè)置為上拉,該管腳的名字通常為PUDC_B或HSWAPEN),到Startup序列后FPGA取消IO的高阻態(tài),使能其輸出。
(3)處理GWE事件:配置數(shù)據(jù)加載期間FPGA禁止RAM的寫(xiě)入和flipflop狀態(tài)的改變,到Startup序列后使能RAM的寫(xiě)入,并允許flipflop狀態(tài)發(fā)生改變。
默認(rèn)狀態(tài)下DLL和DCI不作為Startup序列的一部分,由FPGA自行處理完成后進(jìn)入Lock狀態(tài)。
2DONE信號(hào)上拉電阻與GTS事件
為了分析DONE信號(hào)上拉電阻阻值對(duì)上電配置的影響,本文將DONE信號(hào)上拉4.7 kΩ電阻來(lái)觀察造成的結(jié)果。使用一個(gè)離散量輸出作為GTS事件的標(biāo)志,該離散量在VHDL源碼中賦為“0”,由于FPGA電路配置為在加載期間IO上拉,從而該離散量信號(hào)在GTS事件之前時(shí)為高電平,在GTS事件后變?yōu)榈碗娖?,該信?hào)的電平變化就標(biāo)志了GTS事件的發(fā)生,離散量無(wú)變化即為GTS未發(fā)生。FPGA采用XCF32P PROM Flash的CLKOUT作為配置時(shí)鐘CCLK的時(shí)鐘源。默認(rèn)狀態(tài)下,該時(shí)鐘僅可輸出20 MHz或40 MHz時(shí)鐘,若使用MCS壓縮模式,該時(shí)鐘還可以輸出10 MHz時(shí)鐘。
當(dāng)DONE信號(hào)上拉電阻阻值為4.7 kΩ時(shí),經(jīng)過(guò)多種組合情況的測(cè)試,結(jié)果如表1所示。
通常而言,如果PCB走線較差,F(xiàn)PGA配置電路信號(hào)完整性不好,F(xiàn)PGA配置時(shí)鐘頻率較高時(shí)容易發(fā)生配置失敗,但這通常會(huì)使配置數(shù)據(jù)載入錯(cuò)誤,造成CRC校驗(yàn)錯(cuò)誤,從而導(dǎo)致配置失敗。而在這樣配置環(huán)境中,即使采用40 MHz的配置時(shí)鐘,CRC校驗(yàn)仍然不會(huì)發(fā)生錯(cuò)誤,所以離散量不輸出并不是信號(hào)完整性較差引發(fā)的,肯定有著與GTS事件處理直接相關(guān)的原因。
進(jìn)一步對(duì)GTS事件時(shí)配置電路的行為進(jìn)行波形捕獲與分析,在不同的配置時(shí)鐘頻率下,使用示波器對(duì)該離散量、DONE信號(hào)、配置時(shí)鐘進(jìn)行捕獲,獲得波形如圖4、圖5、圖6所示。
以上三幅圖中的T表示相應(yīng)情況下的時(shí)鐘周期??偨Y(jié)分析如表2所示。
不同配置時(shí)鐘頻率下“DONE信號(hào)爬升時(shí)間”有所差異,DONE信號(hào)的爬升速度緩慢造成了GTS事件的失敗,在較低頻率的配置時(shí)鐘下,DONE信號(hào)需要較少時(shí)鐘周期即可為高,而在較高頻率的配置時(shí)鐘下,DONE信號(hào)需要較多時(shí)鐘周期才能升高。所以配置時(shí)鐘頻率較高時(shí),發(fā)生GTS事件失敗的概率較高。
根據(jù)不同配置時(shí)鐘頻率下“DONE信號(hào)釋放到GTS事件時(shí)間”的差異,進(jìn)一步得出GTS事件的發(fā)生需要對(duì)DONE信號(hào)的電平狀態(tài)進(jìn)行回采,即FPGA在釋放DONE信號(hào)后,并不是在下一個(gè)時(shí)鐘周期立即執(zhí)行GTS事件,而是要在每個(gè)時(shí)鐘周期對(duì)DONE信號(hào)的狀態(tài)進(jìn)行采集判斷,直至外部上拉電阻將DONE信號(hào)電平拉高之后才會(huì)開(kāi)始執(zhí)行GTS事件。
根據(jù)GTS事件到配置時(shí)鐘終止時(shí)間,猜測(cè)XCF32P PROM Flash是根據(jù)FPGA的DONE信號(hào)電平狀態(tài)來(lái)決定何時(shí)終止CLKOUT配置時(shí)鐘的輸出,待其CE#管腳采集到DONE信號(hào)為高后,再給出7~8個(gè)配置時(shí)鐘周期,即終止配置時(shí)鐘。
至此,對(duì)GTS事件失敗的原因分析結(jié)果為:配置數(shù)據(jù)加載并校驗(yàn)完成之后,F(xiàn)PGA釋放DONE信號(hào),由外部上拉電阻將DONE信號(hào)拉為高,DONE信號(hào)開(kāi)始爬升。FPGA對(duì)DONE信號(hào)的實(shí)際電平狀態(tài)進(jìn)行回采,待其電平為高后執(zhí)行GTS事件。如果FPGA的DONE信號(hào)并未按照Xilinx手冊(cè)用330 Ω電阻上拉,而使用了4.7 kΩ電阻上拉,這就造成了DONE信號(hào)爬升太過(guò)緩慢,需要配置多個(gè)時(shí)鐘周期才可為高。這樣的話,在FPGA對(duì)DONE信號(hào)實(shí)際電平進(jìn)行回采時(shí),即有可能因?yàn)镈ONE信號(hào)有回溝而采集到混亂的DONE信號(hào)狀態(tài)(例如首先為高然后為低),這就可能造成GTS事件的失敗,從而造成FPGA 的IO管腳無(wú)法輸出,進(jìn)而影響整個(gè)系統(tǒng)。
3分析結(jié)果的驗(yàn)證
為驗(yàn)證以上分析,需要加快DONE信號(hào)爬升速度,來(lái)觀測(cè)GTS事件失敗的情況。
在FPGA的目標(biāo)碼bit文件生成選項(xiàng)中,選擇“Drive Done Pin High”選項(xiàng)來(lái)使FPGA在配置數(shù)據(jù)加載并校驗(yàn)完成之后,并不釋放DONE信號(hào),而是主動(dòng)將DONE信號(hào)驅(qū)動(dòng)為高。選擇該選項(xiàng)后,DONE信號(hào)不再需要外部上拉電阻來(lái)驅(qū)動(dòng),而是由FPGA直接從低驅(qū)動(dòng)為高,在這種情況下,示波器采集所獲波形如圖7所示?!?/p>
在這種情況下,F(xiàn)PGA對(duì)DONE信號(hào)實(shí)際電平進(jìn)行回采時(shí),就不會(huì)再采集到DONE信號(hào)的不定態(tài),GTS事件不會(huì)再失敗。離散量也就輸出正常。
經(jīng)此選項(xiàng)后,在40 MHz配置時(shí)鐘下多次試驗(yàn),GTS事件也不會(huì)再失敗。
通過(guò)FPGA的目標(biāo)碼bit文件生成選項(xiàng)可以更改GTS事件和GWE事件的前后關(guān)系。如果將GWE事件與GTS事件交換位置,則會(huì)發(fā)生GWE事件失敗而GTS事件成功的情況。這說(shuō)明DONE信號(hào)釋放后的第一個(gè)事件會(huì)受到影響,再之后的事件由于DONE信號(hào)已爬升為高,因而不會(huì)再失敗。
4結(jié)論
Xilinx不直接對(duì)DONE信號(hào)進(jìn)行驅(qū)高,而是由外部上拉電阻拉高,這樣可以讓多個(gè)FPGA的DONE信號(hào)連在一起,回采其信號(hào),從而可使所有FPGA都加載完成之后,同步開(kāi)始工作。
Xilinx要求使用330 Ω電阻對(duì)DONE信號(hào)進(jìn)行上拉的原因是,該阻值可以保證在所允許的最高頻率的配置時(shí)鐘下,DONE信號(hào)仍可在一個(gè)時(shí)鐘周期內(nèi)爬升為高,從而保證后續(xù)GTS事件的成功處理。
參考文獻(xiàn)
[1] 紀(jì)斌.Xilinx FPGA 上電時(shí)序分析與設(shè)計(jì)[J].電訊技術(shù),2012,52(4):591-594.