解維坤,萬 清,章慧彬
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
目前FPGA大多采用基于查找表技術,主要由可編程輸入/輸出單元(IOB)、可編程邏輯單元(CLB)、可編程布線資源(PI)、配置用的SRAM、BlockRAM和數(shù)字延遲鎖相環(huán)(DLL)等部分組成[1]。對FPGA進行測試要對FPGA內(nèi)部可能包含的資源進行結構分析,經(jīng)過一個測試配置(TC)和向量實施(TS)的過程,把FPGA配置為具有特定功能的電路,再從應用級別上對電路進行測試,完成電路的功能及參數(shù)測試[2]。
對FPGA進行配置有多種方法可以選擇,包括邊界掃描配置方法、Xilinx公司專用的SPI/BPI FLASH配置方法、System ACE配置方法、CPLD+第三方FLASH配置方法、系統(tǒng)直接加載配置向量的配置方法。邊界掃描方法主要適合在線配置調(diào)試用,Xilinx專用Flash配置方法,每次只能在FLASH中存儲一段配置碼,不適合反復配置測試過程。System ACE方法需要專門的System ACE控制芯片和CF卡,應用比較麻煩。比較適合系統(tǒng)測試的主要是后兩種方法。
當采用的測試系統(tǒng)比較高級,比如Teradyne公司的UltraFLEX,該系統(tǒng)測試頻率高達500 MHz,測試通道數(shù)多達1024個,測試向量深度可達128 M,可以使用系統(tǒng)直接加載二進制配置向量對FPGA進行配置。能夠在同一個操作流程中完成FPGA芯片的多次“配置—測試”過程。該方法操作簡單,提高了FPGA芯片的測試效率,能夠?qū)崿F(xiàn)FPGA芯片的產(chǎn)業(yè)化測試。
當待測FPGA的配置代碼比較大,而測試系統(tǒng)(ATE)向量深度不足時,可以采用 CPLD+第三方FLASH的配置方法,其結構圖如圖1所示。
圖1 CPLD+FLASH配置結構圖
其中CPLD的設計是最重要的部分,它所實現(xiàn)的功能模塊包括接口模塊、控制模塊、地址發(fā)生器模塊。接口模塊實現(xiàn)與測試系統(tǒng)的通信,接收測試系統(tǒng)指令并作相應處理,同時將工作狀態(tài)反饋給測試系統(tǒng);控制模塊提供控制時序命令,操縱整個配置過程;地址發(fā)生器模塊為讀取閃存數(shù)據(jù)提供數(shù)據(jù)地址。CPLD內(nèi)部各功能模塊采用硬件描述語言實現(xiàn)。
Flash是配置文件的存儲器件,預先將多段16進制格式配置文件燒寫進Flash中。FPGA是系統(tǒng)中配置的目標器件。
本方法采用ATE控制CPLD讀取FLASH中不同地址范圍內(nèi)的配置代碼對FPGA進行配置,再在不掉電的情況下對配置好的FPGA進行功能和參數(shù)測試。
FPGA的配置模式有多種,而且不同系列FPGA的配置模式有一定的差別,主要的配置模式有:主串模式、從串模式、主并模式、從并模式和邊界掃描模式。通過設置三個模式選擇管腳M0、M1、M2可以選擇不同配置模式。配置模式如表1所示。用測試系統(tǒng)對FPGA進行測試大部分時間是用在配置上,配置時間根據(jù)配置碼大小不同可達幾毫秒到數(shù)十秒。為了提高配置速度,我們對FPGA進行配置選擇從并模式,可以最大地節(jié)省測試配置時間。以Virtex-II系列FPGA為例,其從并配置模式原理圖如圖2所示[3]。
表1 FPGA配置模式表
圖2 從并配置模式電路原理圖
FPGA配置碼要在Xilinx ISE開發(fā)環(huán)境下編寫配置程序,生成所需要的二進制格式配置文件,如圖3所示。
圖3 二進制配置碼
圖中1~7行屬于文件頭,需要刪除掉,第8~9行就是配置數(shù)據(jù)開始標志:FFFFFFFF AA995566,后面的都是配置數(shù)據(jù)。
配置文件數(shù)據(jù)寬度都是32位,還要根據(jù)不同系列FPGA的配置數(shù)據(jù)寬度進行修改。以Virtex-II系列為例,它的從并模式數(shù)據(jù)寬度是8位,我們需要編寫應用程序轉化成8位寬的數(shù)據(jù)。配置數(shù)據(jù)比特順序如表2所示,以8位寬數(shù)據(jù)為例,其D0為最高位[4]。
表2 比特順序
FPGA配置過程主要有四個步驟:清除配置存儲器、初始化、配置和啟動。以Virtex-II FPGA為例,配置過程的時序要求如圖5所示:系統(tǒng)上電后給PROG_B管腳一個低信號,F(xiàn)PGA便開始清除配置存儲器,F(xiàn)PGA內(nèi)部將INIT_B管腳和DONE管腳拉低。當配置存儲器清除完畢,INIT_B會變高,之后若CS_B為低有效,就可以傳送配置數(shù)據(jù)對FPGA進行配置,當管腳DONE由低變?yōu)楦撸銟酥拘酒呐渲猛瓿伞?/p>
圖4 FPGA 配置時序
用測試系統(tǒng)對FPGA進行測試可以把配置代碼和測試代碼分別做成不同的Pattern文件,把配置過程也作為一個功能測試項,這樣便可對被測FPGA電路進行反復的配置——測試。配置pattern文件如圖5所示。
FPGA配置完畢后,便具有一定的功能,可以像其他電路一樣進行功能和參數(shù)測試。
本文詳細介紹了FPGA配置方法、配置模式選擇和配置碼的生成方法,并以Virtex-II系列FPGA XC2V250為例詳細介紹了用測試系統(tǒng)Ultra-FLEX對FPGA的配置與測試過程。 該方法可廣泛應用于各種FPGA的測試,具有較強的通用性,對于實現(xiàn)FPGA的產(chǎn)業(yè)化測試具有重要意義。
圖5 FPGA配置Pattern
[1] 唐恒標,馮建華,等. 基于測試系統(tǒng)的FPGA邏輯資源的測試[J]. 微電子學,2006.
[2] Van Huylenbroeck S, Sibaja-Hemandez A, Piontek A, et al. Lateral and vertical scaling of a QSA HBT for a 0.13 μm 200 GHz SiGe∶ C BiCMOS Technology[A]. Proc Bipolar/BiCMOS Circuit and Technology Meeting [C].Montréal, Canada, 2004.
[3] Xilinx Data Book. Virtex-II Platform FPGA User Guide[Z]. Xilinx Inc. November 2007.
[4] Xilinx Data Book. Virtex-6 FPGA Configuration User Guide[Z]. Xilinx Inc. September 2012.