紀(jì)斌
(中國(guó)西南電子技術(shù)研究所,成都610036)
Xilinx FPGA 上電時(shí)序分析與設(shè)計(jì)?
紀(jì)斌
(中國(guó)西南電子技術(shù)研究所,成都610036)
提出了由于FPGA容量的攀升和配置時(shí)間的加長(zhǎng),采用常規(guī)設(shè)計(jì)會(huì)導(dǎo)致系統(tǒng)功能失效的觀點(diǎn)。通過(guò)詳細(xì)描述Xilinx FPGA各種配置方式及其在電路設(shè)計(jì)中的優(yōu)缺點(diǎn),深入分析了FPGA上電時(shí)的配置步驟和工作時(shí)序以及各階段I/O管腳狀態(tài),說(shuō)明了FPGA上電配置對(duì)電路功能的嚴(yán)重影響,最后針對(duì)不同功能需求的FPGA外圍電路提出了有效的設(shè)計(jì)建議。
電路設(shè)計(jì);FPGA配置;時(shí)序分析
隨著半導(dǎo)體和芯片技術(shù)的飛速發(fā)展,現(xiàn)在的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)的失效。因此,F(xiàn)PGA的配置方式和上電時(shí)序已成為系統(tǒng)設(shè)計(jì)的重要一環(huán)。
Xilinx FPGA支持多種配置方式,其中包括串行主模式(Master Serial)、串行從模式(Slave Serial)、并行主模式(Master SelectMAP)、并行8位從模式(Slave SelectMAP8)、并行32位從模式(Slave SelectMAP32),以及邊界掃描模式(JTAG)[1],Virtex5器件后還增加了對(duì)SPI和BPI接口Flash的支持[2]。
現(xiàn)在設(shè)計(jì)中通常用到的是串行主模式和并行主模式兩種配置方式,它們共同的特點(diǎn)是電路硬件設(shè)計(jì)時(shí)不需再接入一個(gè)配置時(shí)鐘,配置時(shí)由FPGA自身提供時(shí)鐘,這樣減小了PCB設(shè)計(jì)難度以及時(shí)鐘帶來(lái)的時(shí)序干擾。但是它們也有各自的優(yōu)缺點(diǎn)。并行配置的電路設(shè)計(jì)相對(duì)復(fù)雜,需要使用到一些多功能的配置引腳,如果在復(fù)雜或高速的配置電路中還要考慮到數(shù)據(jù)線的阻抗匹配和等長(zhǎng)[3],從而加大了PCB設(shè)計(jì)難度。因此,在選擇FPGA配置方式時(shí)需要根據(jù)外圍器件的上電初始化時(shí)間和受FPGA配置影響程度以及電路復(fù)雜特性等正確選擇,同時(shí)也需要對(duì)必要的配置管腳做相應(yīng)處理,后面會(huì)進(jìn)行詳細(xì)分析。表1為FPGA重要的配置管腳和定義,可以看到,有些配置管腳在并行模式下才需要用到。
表1 FPGA重要配置管腳Table 1 Important configuration pins of FPGA
FPGA和CPLD不同,上電不能直接工作,它需要一個(gè)配置過(guò)程。Xilinx FPGA需要經(jīng)過(guò)8個(gè)步驟才能運(yùn)行正常的運(yùn)行用戶邏輯,整個(gè)流程[4]如圖1所示。
圖1 FPGA上電配置步驟Fig.1 FPGA power-on step
3.1 FPGA上電啟動(dòng)
FPGA工作的第一步就是給器件加電。Xilinx要求VCCINT(核心電壓)先啟動(dòng),然后再是VCCO(I/O電壓),最壞情況是它們之間不能相差1 s以上。在并行配置模式下,VCCO-2要求參考電壓必須和PROM參考電壓相同,上電的過(guò)程[1]如圖2所示。其中,TPOR(Power-on-Reset)為5~30 ms,TPL(Program Latency)為Max 4ms,TICCK(CCLK(output)delay)為Min 500 ns。
圖2 FPGA上電時(shí)序Fig.2 FPGA power-on timing
在系統(tǒng)正常上電或者PROG-B是一個(gè)低脈沖時(shí),F(xiàn)PGA開(kāi)始配置寄存器空間。這段時(shí)間除定義好的配置管腳外,其他I/O管腳均被設(shè)置為高阻態(tài)(High-Z)。經(jīng)多次測(cè)試,這個(gè)階段需要30ms左右的時(shí)間。
FPGA啟動(dòng)階段最后一步就是配置啟動(dòng)模式。在PROG-B變高時(shí),F(xiàn)PGA開(kāi)始采集配置方式引腳(M3、M2、M1),并同時(shí)驅(qū)動(dòng)CCLK輸出。在這個(gè)階段,有兩種方法可以延遲FPGA的配置時(shí)序,一種是拉低INIT-B管腳,這是由于FPGA檢測(cè)到自身還沒(méi)有初始化完畢,不會(huì)進(jìn)行接下來(lái)的操作步驟,直到INIT-B管腳變高。另一種就是拉低PROG-B管腳,使FPGA還處于等待配置狀態(tài)。
3.2 FPGA數(shù)據(jù)加載
FPGA正常數(shù)據(jù)加載前,需要做一個(gè)器件與PROM之間的同步檢查。方法是傳輸一個(gè)特殊的32位數(shù)值(0xAA995566)到FPGA中,提示FPGA下面開(kāi)始傳輸?shù)氖桥渲脭?shù)據(jù)。這個(gè)步驟對(duì)用戶來(lái)說(shuō)是透明的,因?yàn)樵赬ilinx ISE Bitstream Generator中生成的.bit文件中已經(jīng)自動(dòng)加入了這個(gè)校驗(yàn)碼。
在做完配置前的通信同步后,F(xiàn)PGA與PROM之間還無(wú)法識(shí)別相互間是個(gè)什么器件,于是Xilinx就給每一個(gè)型號(hào)的FPGA設(shè)計(jì)了一個(gè)唯一的器件ID號(hào),這個(gè)ID號(hào)可以在Xilinx配置手冊(cè)中查到。如上述例子中用到的XC4VS35,其ID號(hào)為0x02088093。FPGA需要從PROM中讀出這個(gè)器件號(hào)和自身比對(duì),如果相同就繼續(xù)下面的步驟,不同的話,配置失敗,并打印出配置故障信息。
所有準(zhǔn)備工作正常完成后,F(xiàn)PGA開(kāi)始載入配置文件。這一步對(duì)大多數(shù)用戶也是透明的,由器件自行完成。這也是配置過(guò)程中最耗時(shí)的步驟,時(shí)間從100ms到幾秒不等。這個(gè)過(guò)程中,F(xiàn)PGA的所有可配置I/O根據(jù)HSWAPEN管腳的設(shè)置變?yōu)槿跎侠℉SWAPEN=1)或者高阻態(tài)(HSWAPEN=0)。這個(gè)階段的I/O管腳還沒(méi)有變?yōu)橛脩粜枰臓顟B(tài),也最有可能影響到其他外圍電路的上電時(shí)序和運(yùn)行。設(shè)計(jì)硬件電路時(shí)要特別注意并采取必要措施,如加入上下拉電阻,改變器件加電順序等來(lái)盡量避免或減少FPGA配置時(shí)對(duì)電路其他器件的影響。
配置文件載入完成后,為了驗(yàn)證數(shù)據(jù)的正確性,F(xiàn)PGA還自動(dòng)設(shè)置了CRC校驗(yàn)(這個(gè)在ISE配置選項(xiàng)中也可以去掉,但是為了確保載入數(shù)據(jù)的正確性,這個(gè)是必須選擇的)。如果CRC校驗(yàn)不正確,F(xiàn)PGA會(huì)自動(dòng)把INIT-B拉低,放棄這次配置。用戶必須把PROG-B引腳拉低,才能進(jìn)行重新配置。
3.3 啟動(dòng)序列
CRC校驗(yàn)正確后,F(xiàn)PGA不會(huì)馬上執(zhí)行用戶的邏輯,它還要進(jìn)行一些自身內(nèi)部電路的配置,如DCM鎖定(DCMs to Lock)、全局寫信號(hào)使能(Global Write Enable)等,這些信號(hào)的啟動(dòng)順序也是在ISE配置選項(xiàng)中設(shè)置的。必須的啟動(dòng)序列[5]為:釋放DONE引腳;釋放GTS信號(hào),激活I(lǐng)O管腳;設(shè)置全局讀寫使能,使能內(nèi)部RAM和FIFOAssert;結(jié)束上電配置。
從上面論述可知,整個(gè)FPGA的上電配置正常時(shí)序如圖3所示。
圖3 FPGA配置時(shí)序圖Fig.3 FPGA configuration timings
FPGA上電配置整個(gè)過(guò)程大約需要200ms~2 s,這段時(shí)間其他外圍電路器件絕大部分都已經(jīng)上電并正常工作了,而FPGA的通用I/O管腳還處于弱上拉(HSWAPEN=0)或者不定態(tài)(HSWAPEN=1),設(shè)計(jì)時(shí)就需要考慮到這些器件上電初始化和FPGA通用I/O管腳有無(wú)時(shí)序沖突。例如:上電時(shí),外圍器件要求I/O管腳都為低電平,而FPGA默認(rèn)是弱上拉,初始化電平產(chǎn)生了沖突;外圍器件要求在上電復(fù)位后馬上采集配置管腳進(jìn)行初始化,而FPGA還處在配置狀態(tài),沒(méi)法正確上拉或下拉I/O管腳,器件初始化錯(cuò)誤;外圍器件要求上電初始化前需要時(shí)鐘鎖相,F(xiàn)PGA配置時(shí)產(chǎn)生不了時(shí)鐘,導(dǎo)致器件初始化失敗等。解決這些沖突大致有3種方法,但前提都是要正確配置HSWAPEN管腳。因?yàn)樵贔PGA執(zhí)行“器件上電”步驟后(5~30ms時(shí)間),它輸出的I/O管腳狀態(tài)是可以通過(guò)HSWAPEN設(shè)定的。
方法1:在FPGA的I/O管腳外加上下拉電阻,阻值在1~10 kΩ之間,根據(jù)實(shí)際需要確定。FPGA在上電后10ms內(nèi)能通過(guò)上下拉電阻把I/O管腳拉到用戶需要的電平上,這樣能解決上電較慢但是又要求固定電平的外圍電路,如功放發(fā)射開(kāi)關(guān)和保護(hù)開(kāi)關(guān)等。
方法2:FPGA可以在配置完成后產(chǎn)生一個(gè)全局復(fù)位信號(hào),使外圍電路硬件復(fù)位,再進(jìn)行一次初始化操作。這樣能解決PowrerPC、ARM這種上電初始化很快(在100ms內(nèi)就能完成),而FPGA沒(méi)有配置完成,導(dǎo)致PowerPC初始化錯(cuò)誤的問(wèn)題。而且這種方式不用外接多余的上下拉電阻,減少了電路設(shè)計(jì)復(fù)雜性。
方法3:FPGA可以在配置完成后產(chǎn)生一個(gè)Power Good信號(hào),系統(tǒng)根據(jù)此標(biāo)志再給外圍其他有時(shí)序要求的器件上電,這樣能解決DSP或者高速AD這種需要時(shí)鐘鎖定后再進(jìn)行初始化的器件。
這三種方法也可根據(jù)具體情況混合使用,能達(dá)到更好的效果。
通過(guò)上述分析可知,F(xiàn)PGA上電是一個(gè)短暫而復(fù)雜的過(guò)程,設(shè)計(jì)時(shí)需要充分考慮FPGA上電配置時(shí)序和在這過(guò)程中I/O管腳的各種狀態(tài)對(duì)外圍電路的影響。根據(jù)系統(tǒng)設(shè)計(jì)的具體情況,通過(guò)選用最合理的配置方式以及外圍電路連接,達(dá)到了既不影響其他器件性能和整個(gè)系統(tǒng)功能,同時(shí)又簡(jiǎn)化和完善了整個(gè)電路設(shè)計(jì)的效果。
[1]Xinlix Semiconductor,Inc.Virtex-4 Configuration Guide[EB/OL].[2008-11-1].http://www.xilinx.com/support/documentation/virtex-4-user-guides.htm.
[2]Xinlix Semiconductor,Inc.Virtex-5 FPGA Configuration User Guide[EB/OL].[2010-5-17].http://www.xilinx. com/support/documentation/virtex-5-user-guides.htm.
[3]孫航.Xilinx可編程邏輯器件高級(jí)應(yīng)用于設(shè)計(jì)技巧[M].北京:電子工業(yè)出版社,2004:21-87. SUNHang.Advanced Application and Design Skill in Programmable Logical Device[M].Beijing:Publishing House of Electronics Industry,2004:21-87.(in Chinese)
[4]王靈芝,林培杰,黃春暉.FPGA的配置及其接口電路的設(shè)計(jì)[J].電子測(cè)量與儀器學(xué)報(bào),2007,21(2):109-111. WANG Ling-zhi,LIN Pei-jie,HUANG Chun-hui.Configuration of FPGA and Design of Its Interface Circuit[J]. Journalof Electronic Measurement and Instrument,2007,21(2):109-111.(in Chinese)
[5]張承暢,嚴(yán)單貴,楊力生,等.基于XCF32P的多FPGA配置方案[J].計(jì)算機(jī)工程,2010,36(15):259-261. ZHANGCheng-chang,YANDan-gui,YANG Li-sheng,et al.Multi FPGA Configuration Scheme Based on XCF32P[J]. Computer Engineering,2010,36(15):259-261.(in Chinese)
Power-on Tim ing Analysis and Design of Xilinx FPGA
JIBin
(Southwest China Institute of Electronic Technology,Chengdu 610036 China)
In view of the larger FPGA capacitance and longer configuration time,a pointof view thatusing regular designmay cause the failure of the system function is presented.All kinds of Xilinx FPGA configurations are deeply described and the advantage and disadvantage for the configuration are expatiated.At the same time,the power-on timing analysis and FPGA I/O pin′s status are detailed,which illustrates the serious influence of FPGA power-on on circuit function.Finally,reference for the FPGA peripheral circuit design is suggested.
circuit design;FPGA configuration;timing analysis
the M.S.degree from University of Electronic Science and Technology of China in 2007.He is now an engineer.His research concerns radar display and control R&D.
1001-893X(2012)04-0591-04
2012-01-03;
2012-03-16
TN702
A
10.3969/j.issn.1001-893x.2012.04.034
紀(jì)斌(1981—),男,四川廣漢人,2007年于電子科技大學(xué)獲電路與系統(tǒng)專業(yè)碩士學(xué)位,現(xiàn)為工程師,主要研究方向?yàn)槔走_(dá)終端顯示控制。
Email:ziyoudianzi1981@yahoo.com.cn
JIBin was born in Guanghan,Sichuan Province,in 1981.He