郭 京,沈 華,段小虎
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
基于Xilinx芯片的FPGA的DONE信號上拉電阻阻值分析
郭 京,沈 華,段小虎
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
基于Xilinx芯片的FPGA集成了越來越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內(nèi)部RAM 資源。在FPGA的電路設(shè)計(jì)中,上電配置電路至關(guān)重要。其中,DONE信號上拉電阻阻值的選擇很容易被人忽略,錯(cuò)誤的阻值選擇往往會(huì)導(dǎo)致意想不到的情況。通過采用4.7 kΩ電阻上拉DONE信號產(chǎn)生的試驗(yàn)結(jié)果,來分析DONE信號上拉電阻必須為330 Ω的原因。
FPGA;上拉電阻;DONE信號
圖1 FPGA加載序列
隨著半導(dǎo)體和芯片技術(shù)的飛速發(fā)展,現(xiàn)在的現(xiàn)場可編程門陣列(Field-Programmable Gate Array,FPGA)集成了越來越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內(nèi)部RAM 資源,使其在國防、醫(yī)療、消費(fèi)電子等領(lǐng)域得到了越來越廣泛的應(yīng)用。但是FPGA 大多數(shù)是基于SRAM 工藝的,具有易失性,因此FPGA 通常使用外部存儲(chǔ)器件(如PROM) 存儲(chǔ)必需的配置信息,防止設(shè)備掉電后FPGA丟失自我配置能力。但FPGA 配置在一定的條件和時(shí)間下才能成功完成,隨著FPGA 容量的不斷攀升,配置時(shí)間也被大大加長,上電時(shí)如不充分考慮FPGA的配置時(shí)序以及對其他器件的影響,根據(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上電配置過程中,因DONE上拉電阻阻值的不同而引起的不同上電結(jié)果。
FPGA加載過程分為8個(gè)序列[1],如圖1所示。
在前7個(gè)步驟完成后,配置數(shù)據(jù)的CRC校驗(yàn)完成,進(jìn)入最后的Startup序列,Startup序列所需要處理的事件如圖2所示。
圖2 Startup序列
這7個(gè)事件的前后關(guān)系是可以在FPGA的目標(biāo)碼bit文件生成選項(xiàng)中進(jìn)行設(shè)置的,默認(rèn)的設(shè)置順序如圖3所示。
圖3 Startup事件默認(rèn)狀態(tài)
所以,默認(rèn)狀態(tài)下,F(xiàn)PGA在配置數(shù)據(jù)加載完并且通過CRC校驗(yàn)后,依次完成以下工作:
(1)釋放DONE信號:配置數(shù)據(jù)加載期間FPGA驅(qū)動(dòng)DONE信號為低,到Startup序列后FPGA將DONE信號置為高阻態(tài),靠外部上拉電阻將DONE信號拉為高。
(2)處理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的寫入和flip-flop狀態(tài)的改變,到Startup序列后使能RAM的寫入,并允許flip-flop狀態(tài)發(fā)生改變。
默認(rèn)狀態(tài)下DLL和DCI不作為Startup序列的一部分,由FPGA自行處理完成后進(jìn)入Lock狀態(tài)。
為了分析DONE信號上拉電阻阻值對上電配置的影響,本文將DONE信號上拉4.7 kΩ電阻來觀察造成的結(jié)果。使用一個(gè)離散量輸出作為GTS事件的標(biāo)志,該離散量在VHDL源碼中賦為“0”,由于FPGA電路配置為在加載期間IO上拉,從而該離散量信號在GTS事件之前時(shí)為高電平,在GTS事件后變?yōu)榈碗娖剑撔盘柕碾娖阶兓蜆?biāo)志了GTS事件的發(fā)生,離散量無變化即為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信號上拉電阻阻值為4.7 kΩ時(shí),經(jīng)過多種組合情況的測試,結(jié)果如表1所示。
表1 不同時(shí)鐘頻率下離散量輸出情況
通常而言,如果PCB走線較差,F(xiàn)PGA配置電路信號完整性不好,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ò)誤,所以離散量不輸出并不是信號完整性較差引發(fā)的,肯定有著與GTS事件處理直接相關(guān)的原因。
進(jìn)一步對GTS事件時(shí)配置電路的行為進(jìn)行波形捕獲與分析,在不同的配置時(shí)鐘頻率下,使用示波器對該離散量、DONE信號、配置時(shí)鐘進(jìn)行捕獲,獲得波形如圖4、圖5、圖6所示。
圖4 10 MHz配置時(shí)鐘GTS事件波形
圖5 20 MHz配置時(shí)鐘GTS事件波形
圖6 40 MHz配置時(shí)鐘GTS事件波形
以上三幅圖中的T表示相應(yīng)情況下的時(shí)鐘周期??偨Y(jié)分析如表2所示。
表2 不同時(shí)鐘頻率下的時(shí)序分析
不同配置時(shí)鐘頻率下“DONE信號爬升時(shí)間”有所差異,DONE信號的爬升速度緩慢造成了GTS事件的失敗,在較低頻率的配置時(shí)鐘下,DONE信號需要較少時(shí)鐘周期即可為高,而在較高頻率的配置時(shí)鐘下,DONE信號需要較多時(shí)鐘周期才能升高。所以配置時(shí)鐘頻率較高時(shí),發(fā)生GTS事件失敗的概率較高。
根據(jù)不同配置時(shí)鐘頻率下“DONE信號釋放到GTS事件時(shí)間”的差異,進(jìn)一步得出GTS事件的發(fā)生需要對DONE信號的電平狀態(tài)進(jìn)行回采,即FPGA在釋放DONE信號后,并不是在下一個(gè)時(shí)鐘周期立即執(zhí)行GTS事件,而是要在每個(gè)時(shí)鐘周期對DONE信號的狀態(tài)進(jìn)行采集判斷,直至外部上拉電阻將DONE信號電平拉高之后才會(huì)開始執(zhí)行GTS事件。
根據(jù)GTS事件到配置時(shí)鐘終止時(shí)間,猜測XCF32P PROM Flash是根據(jù)FPGA的DONE信號電平狀態(tài)來決定何時(shí)終止CLKOUT配置時(shí)鐘的輸出,待其CE#管腳采集到DONE信號為高后,再給出7~8個(gè)配置時(shí)鐘周期,即終止配置時(shí)鐘。
至此,對GTS事件失敗的原因分析結(jié)果為:配置數(shù)據(jù)加載并校驗(yàn)完成之后,F(xiàn)PGA釋放DONE信號,由外部上拉電阻將DONE信號拉為高,DONE信號開始爬升。FPGA對DONE信號的實(shí)際電平狀態(tài)進(jìn)行回采,待其電平為高后執(zhí)行GTS事件。如果FPGA的DONE信號并未按照Xilinx手冊用330 Ω電阻上拉,而使用了4.7 kΩ電阻上拉,這就造成了DONE信號爬升太過緩慢,需要配置多個(gè)時(shí)鐘周期才可為高。這樣的話,在FPGA對DONE信號實(shí)際電平進(jìn)行回采時(shí),即有可能因?yàn)镈ONE信號有回溝而采集到混亂的DONE信號狀態(tài)(例如首先為高然后為低),這就可能造成GTS事件的失敗,從而造成FPGA 的IO管腳無法輸出,進(jìn)而影響整個(gè)系統(tǒng)。
為驗(yàn)證以上分析,需要加快DONE信號爬升速度,來觀測GTS事件失敗的情況。
在FPGA的目標(biāo)碼bit文件生成選項(xiàng)中,選擇“Drive Done Pin High”選項(xiàng)來使FPGA在配置數(shù)據(jù)加載并校驗(yàn)完成之后,并不釋放DONE信號,而是主動(dòng)將DONE信號驅(qū)動(dòng)為高。選擇該選項(xiàng)后,DONE信號不再需要外部上拉電阻來驅(qū)動(dòng),而是由FPGA直接從低驅(qū)動(dòng)為高,在這種情況下,示波器采集所獲波形如圖7所示。
圖7 DONE信號被“Drive Done Pin High”選項(xiàng)驅(qū)動(dòng)
在這種情況下,F(xiàn)PGA對DONE信號實(shí)際電平進(jìn)行回采時(shí),就不會(huì)再采集到DONE信號的不定態(tài),GTS事件不會(huì)再失敗。離散量也就輸出正常。
經(jīng)此選項(xiàng)后,在40 MHz配置時(shí)鐘下多次試驗(yàn),GTS事件也不會(huì)再失敗。
通過FPGA的目標(biāo)碼bit文件生成選項(xiàng)可以更改GTS事件和GWE事件的前后關(guān)系。如果將GWE事件與GTS事件交換位置,則會(huì)發(fā)生GWE事件失敗而GTS事件成功的情況。這說明DONE信號釋放后的第一個(gè)事件會(huì)受到影響,再之后的事件由于DONE信號已爬升為高,因而不會(huì)再失敗。
Xilinx不直接對DONE信號進(jìn)行驅(qū)高,而是由外部上拉電阻拉高,這樣可以讓多個(gè)FPGA的DONE信號連在一起,回采其信號,從而可使所有FPGA都加載完成之后,同步開始工作。
Xilinx要求使用330 Ω電阻對DONE信號進(jìn)行上拉的原因是,該阻值可以保證在所允許的最高頻率的配置時(shí)鐘下,DONE信號仍可在一個(gè)時(shí)鐘周期內(nèi)爬升為高,從而保證后續(xù)GTS事件的成功處理。
[1] 紀(jì)斌.Xilinx FPGA 上電時(shí)序分析與設(shè)計(jì)[J].電訊技術(shù),2012,52(4):591-594.
Analysis of pull-up resistor of the DONE signal of FPGA based on Xilinx chip
Guo Jing,Shen Hua,Duan Xiaohu
(Xi’an Aeronautical Computing Technique Research Institute,AVIC,Xi’an 710068,China)
FPGA based Xilinx chip integrates more and more configurable logic resources,a wide variety of external bus interfaces and a wealth of internal RAM resources.In the circuit design of FPGA,the design of the power up circuit is very important.Among them,the DONE signal pull-up resistor is very easy to be ignored,the error resistor selection often leads to unexpected situations.In this paper,the reason that the pull-up resistor of the DONE signal must be 330 Ω is analyzed,by the test results generated by the 4.7 kΩ pull-up resistor of DONE signal.
FPGA; pull-up resistor; DONE signal
TP302.7
A
10.19358/j.issn.1674- 7720.2017.10.011
郭京,沈華,段小虎.基于Xilinx芯片的FPGA的DONE信號上拉電阻阻值分析[J].微型機(jī)與應(yīng)用,2017,36(10):37-39.
2016-10-26)
郭京(1989-),男,碩士研究生,助理工程師,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
沈華(1976-),男,研究員,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
段小虎(1986-),男,工程師,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。