紀斌
(中國西南電子技術研究所,成都610036)
Xilinx FPGA 上電時序分析與設計?
紀斌
(中國西南電子技術研究所,成都610036)
提出了由于FPGA容量的攀升和配置時間的加長,采用常規設計會導致系統功能失效的觀點。通過詳細描述Xilinx FPGA各種配置方式及其在電路設計中的優缺點,深入分析了FPGA上電時的配置步驟和工作時序以及各階段I/O管腳狀態,說明了FPGA上電配置對電路功能的嚴重影響,最后針對不同功能需求的FPGA外圍電路提出了有效的設計建議。
電路設計;FPGA配置;時序分析
隨著半導體和芯片技術的飛速發展,現在的FPGA集成了越來越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內部RAM資源,使其在國防、醫療、消費電子等領域得到了越來越廣泛的應用。但是FPGA大多數是基于SRAM工藝的,具有易失性,因此FPGA通常使用外部存儲器件(如PROM)存儲必需的配置信息,防止設備掉電后FPGA丟失自我配置能力。但FPGA配置在一定的條件和時間下才能成功完成,隨著FPGA容量的不斷攀升,配置時間也被大大加長,上電時如不充分考慮FPGA的配置時序以及對其他器件的影響,根據常規經驗設計電路,往往會影響系統其他外圍器件的正常工作,嚴重時會導致整個系統的失效。因此,FPGA的配置方式和上電時序已成為系統設計的重要一環。
Xilinx FPGA支持多種配置方式,其中包括串行主模式(Master Serial)、串行從模式(Slave Serial)、并行主模式(Master SelectMAP)、并行8位從模式(Slave SelectMAP8)、并行32位從模式(Slave SelectMAP32),以及邊界掃描模式(JTAG)[1],Virtex5器件后還增加了對SPI和BPI接口Flash的支持[2]。
現在設計中通常用到的是串行主模式和并行主模式兩種配置方式,它們共同的特點是電路硬件設計時不需再接入一個配置時鐘,配置時由FPGA自身提供時鐘,這樣減小了PCB設計難度以及時鐘帶來的時序干擾。但是它們也有各自的優缺點。并行配置的電路設計相對復雜,需要使用到一些多功能的配置引腳,如果在復雜或高速的配置電路中還要考慮到數據線的阻抗匹配和等長[3],從而加大了PCB設計難度。因此,在選擇FPGA配置方式時需要根據外圍器件的上電初始化時間和受FPGA配置影響程度以及電路復雜特性等正確選擇,同時也需要對必要的配置管腳做相應處理,后面會進行詳細分析。表1為FPGA重要的配置管腳和定義,可以看到,有些配置管腳在并行模式下才需要用到。

表1 FPGA重要配置管腳Table 1 Important configuration pins of FPGA
FPGA和CPLD不同,上電不能直接工作,它需要一個配置過程。Xilinx FPGA需要經過8個步驟才能運行正常的運行用戶邏輯,整個流程[4]如圖1所示。

圖1 FPGA上電配置步驟Fig.1 FPGA power-on step
3.1 FPGA上電啟動
FPGA工作的第一步就是給器件加電。Xilinx要求VCCINT(核心電壓)先啟動,然后再是VCCO(I/O電壓),最壞情況是它們之間不能相差1 s以上。在并行配置模式下,VCCO-2要求參考電壓必須和PROM參考電壓相同,上電的過程[1]如圖2所示。其中,TPOR(Power-on-Reset)為5~30 ms,TPL(Program Latency)為Max 4ms,TICCK(CCLK(output)delay)為Min 500 ns。

圖2 FPGA上電時序Fig.2 FPGA power-on timing
在系統正常上電或者PROG-B是一個低脈沖時,FPGA開始配置寄存器空間。這段時間除定義好的配置管腳外,其他I/O管腳均被設置為高阻態(High-Z)。經多次測試,這個階段需要30ms左右的時間。
FPGA啟動階段最后一步就是配置啟動模式。在PROG-B變高時,FPGA開始采集配置方式引腳(M3、M2、M1),并同時驅動CCLK輸出。在這個階段,有兩種方法可以延遲FPGA的配置時序,一種是拉低INIT-B管腳,這是由于FPGA檢測到自身還沒有初始化完畢,不會進行接下來的操作步驟,直到INIT-B管腳變高。另一種就是拉低PROG-B管腳,使FPGA還處于等待配置狀態。
3.2 FPGA數據加載
FPGA正常數據加載前,需要做一個器件與PROM之間的同步檢查。方法是傳輸一個特殊的32位數值(0xAA995566)到FPGA中,提示FPGA下面開始傳輸的是配置數據。這個步驟對用戶來說是透明的,因為在Xilinx ISE Bitstream Generator中生成的.bit文件中已經自動加入了這個校驗碼。
在做完配置前的通信同步后,FPGA與PROM之間還無法識別相互間是個什么器件,于是Xilinx就給每一個型號的FPGA設計了一個唯一的器件ID號,這個ID號可以在Xilinx配置手冊中查到。如上述例子中用到的XC4VS35,其ID號為0x02088093。FPGA需要從PROM中讀出這個器件號和自身比對,如果相同就繼續下面的步驟,不同的話,配置失敗,并打印出配置故障信息。
所有準備工作正常完成后,FPGA開始載入配置文件。這一步對大多數用戶也是透明的,由器件自行完成。這也是配置過程中最耗時的步驟,時間從100ms到幾秒不等。這個過程中,FPGA的所有可配置I/O根據HSWAPEN管腳的設置變為弱上拉(HSWAPEN=1)或者高阻態(HSWAPEN=0)。這個階段的I/O管腳還沒有變為用戶需要的狀態,也最有可能影響到其他外圍電路的上電時序和運行。設計硬件電路時要特別注意并采取必要措施,如加入上下拉電阻,改變器件加電順序等來盡量避免或減少FPGA配置時對電路其他器件的影響。
配置文件載入完成后,為了驗證數據的正確性,FPGA還自動設置了CRC校驗(這個在ISE配置選項中也可以去掉,但是為了確保載入數據的正確性,這個是必須選擇的)。如果CRC校驗不正確,FPGA會自動把INIT-B拉低,放棄這次配置。用戶必須把PROG-B引腳拉低,才能進行重新配置。
3.3 啟動序列
CRC校驗正確后,FPGA不會馬上執行用戶的邏輯,它還要進行一些自身內部電路的配置,如DCM鎖定(DCMs to Lock)、全局寫信號使能(Global Write Enable)等,這些信號的啟動順序也是在ISE配置選項中設置的。必須的啟動序列[5]為:釋放DONE引腳;釋放GTS信號,激活IO管腳;設置全局讀寫使能,使能內部RAM和FIFOAssert;結束上電配置。
從上面論述可知,整個FPGA的上電配置正常時序如圖3所示。

圖3 FPGA配置時序圖Fig.3 FPGA configuration timings
FPGA上電配置整個過程大約需要200ms~2 s,這段時間其他外圍電路器件絕大部分都已經上電并正常工作了,而FPGA的通用I/O管腳還處于弱上拉(HSWAPEN=0)或者不定態(HSWAPEN=1),設計時就需要考慮到這些器件上電初始化和FPGA通用I/O管腳有無時序沖突。例如:上電時,外圍器件要求I/O管腳都為低電平,而FPGA默認是弱上拉,初始化電平產生了沖突;外圍器件要求在上電復位后馬上采集配置管腳進行初始化,而FPGA還處在配置狀態,沒法正確上拉或下拉I/O管腳,器件初始化錯誤;外圍器件要求上電初始化前需要時鐘鎖相,FPGA配置時產生不了時鐘,導致器件初始化失敗等。解決這些沖突大致有3種方法,但前提都是要正確配置HSWAPEN管腳。因為在FPGA執行“器件上電”步驟后(5~30ms時間),它輸出的I/O管腳狀態是可以通過HSWAPEN設定的。
方法1:在FPGA的I/O管腳外加上下拉電阻,阻值在1~10 kΩ之間,根據實際需要確定。FPGA在上電后10ms內能通過上下拉電阻把I/O管腳拉到用戶需要的電平上,這樣能解決上電較慢但是又要求固定電平的外圍電路,如功放發射開關和保護開關等。
方法2:FPGA可以在配置完成后產生一個全局復位信號,使外圍電路硬件復位,再進行一次初始化操作。這樣能解決PowrerPC、ARM這種上電初始化很快(在100ms內就能完成),而FPGA沒有配置完成,導致PowerPC初始化錯誤的問題。而且這種方式不用外接多余的上下拉電阻,減少了電路設計復雜性。
方法3:FPGA可以在配置完成后產生一個Power Good信號,系統根據此標志再給外圍其他有時序要求的器件上電,這樣能解決DSP或者高速AD這種需要時鐘鎖定后再進行初始化的器件。
這三種方法也可根據具體情況混合使用,能達到更好的效果。
通過上述分析可知,FPGA上電是一個短暫而復雜的過程,設計時需要充分考慮FPGA上電配置時序和在這過程中I/O管腳的各種狀態對外圍電路的影響。根據系統設計的具體情況,通過選用最合理的配置方式以及外圍電路連接,達到了既不影響其他器件性能和整個系統功能,同時又簡化和完善了整個電路設計的效果。
[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可編程邏輯器件高級應用于設計技巧[M].北京:電子工業出版社,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的配置及其接口電路的設計[J].電子測量與儀器學報,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]張承暢,嚴單貴,楊力生,等.基于XCF32P的多FPGA配置方案[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
紀斌(1981—),男,四川廣漢人,2007年于電子科技大學獲電路與系統專業碩士學位,現為工程師,主要研究方向為雷達終端顯示控制。
Email:ziyoudianzi1981@yahoo.com.cn
JIBin was born in Guanghan,Sichuan Province,in 1981.He