中國(guó)航天科工集團(tuán)第三研究院第三〇三研究所 張金鳳 唐金慧 馬成英
FPGA按照工藝來(lái)分,大致可分為SRAM型、FLASH型和反熔絲型FPGA。SRAM型FPGA速度快且具有可重編程能力;但由于掉電時(shí)無(wú)法保存數(shù)據(jù),因此需要增加一個(gè)昂貴的配置芯片,功耗較大[1]。反熔絲型FPGA具有高抗干擾性和低功耗的特點(diǎn),不過(guò)只能一次性編程。FLASH 型FPGA具有非易失性和重配置性,且在低功耗、安全性方面具有很大的優(yōu)勢(shì);但較之SRAM型它的速度慢,寫入周期長(zhǎng)。不過(guò)FLASH型FPGA非易失性、低功耗、安全性的特性也贏得了越來(lái)越多用戶的親睞。隨著FLASH型FPGA在航空航天領(lǐng)域及武器型號(hào)中廣泛應(yīng)用,其可靠性問(wèn)題變得越來(lái)越突出。因此對(duì)FLASH型FPGA的測(cè)試和可靠性試驗(yàn)尤為重要,對(duì)其測(cè)試方法開展研究也是非常必要的。
FLASH型FPGA在工藝上采用了先進(jìn)的FLASH開關(guān)。FLASH開關(guān)僅由兩個(gè)晶體管組成:一個(gè)用于對(duì)此開關(guān)進(jìn)行擦除、編程、校驗(yàn)等操作,另一個(gè)用于開關(guān)的選通。它具有占用硅片面積小、低阻抗和容性負(fù)載、非易失性等特點(diǎn),其內(nèi)部結(jié)構(gòu)如圖1所示。它由兩個(gè)具有懸浮特性的MOS晶體管保存可編程信息,它通過(guò)充電或者放電來(lái)決定兩個(gè)金屬線路之間的開關(guān)狀態(tài)。其實(shí)對(duì)FPGA進(jìn)行編程就是對(duì)這些開關(guān)進(jìn)行控制,實(shí)現(xiàn)連線的過(guò)程[1]。
圖1 FLASH開關(guān)結(jié)構(gòu)
FLASH型FPGA的開關(guān)結(jié)構(gòu)決定了它具有以下獨(dú)特的性能:一、掉電非易失性。FPGA一旦被編程,配置數(shù)據(jù)就成為其結(jié)構(gòu)的一個(gè)固有部分,系統(tǒng)上電時(shí)不需要通過(guò)外部的配置芯片加載數(shù)據(jù)。二、低功耗。由于FLASH型FPGA不需要配置過(guò)程且上電也不需要很大的啟動(dòng)電流,所以沒(méi)有配置功耗和上電功耗;從開關(guān)功耗上分析,由兩個(gè)晶體管構(gòu)成FLASH型FPGA較之由六個(gè)晶體管構(gòu)成SRAM型FPGA開關(guān)消耗要低很多。另外,F(xiàn)LASH型FPGA有無(wú)可挑剔的穩(wěn)定性,它對(duì)于固件錯(cuò)誤有很好的免疫作用。
在諸多的FPGA生產(chǎn)廠家中,ACTEL是世界上主流的FLASH型FPGA制造商,在非易失性FPGA領(lǐng)域處于領(lǐng)先地位。本文的測(cè)試方法正是基于ACTEL公司ProASIC3系列FLASH型FPGA,針對(duì)其結(jié)構(gòu)特點(diǎn)和工作原理,對(duì)其內(nèi)部資源進(jìn)行分別測(cè)試。
ACTEL公司ProASIC3系列FLASH型FPGA主要包含以下部分模塊:輸入輸出模塊(IOB)、可編程邏輯單元(Tiles)、內(nèi)嵌RAM模塊(BRAM)、時(shí)鐘調(diào)整電路模塊(CCC)[2]。另外,有些系列FPGA還包含1kbit FlashROM。測(cè)試中將根據(jù)器件的內(nèi)部電路結(jié)構(gòu)來(lái)設(shè)計(jì)編程,分別針對(duì)這些模塊設(shè)計(jì)配置程序,每個(gè)模塊對(duì)應(yīng)的配置程序?qū)⒛K中的資源最大限量的考察到。使用硬件編程語(yǔ)言編寫各工程的設(shè)計(jì)輸入,然后將設(shè)計(jì)輸入編譯仿真,形成可下載文件及仿真波形,將仿真波形加工整理為測(cè)試系統(tǒng)可用測(cè)試向量。
IOB是FPGA中的一項(xiàng)重要資源。它可以提供給系統(tǒng)足夠的輸入輸出來(lái)實(shí)現(xiàn)用戶的設(shè)計(jì)。而且由于可編程器件特性中I/O的電壓標(biāo)準(zhǔn)是可以配置的,所以可以實(shí)現(xiàn)系統(tǒng)中不同電壓標(biāo)準(zhǔn)間設(shè)備的通信功能。ACTEL公司ProASIC3系列的FPGA I/O為雙向管腳,測(cè)試時(shí)要考慮到所有I/O管腳雙向工作的能力。我們?cè)谶M(jìn)行IOB測(cè)試時(shí),將其平均分為兩組,通過(guò)方向控制端(DIR)控制其分別做輸入管腳或輸出管腳,對(duì)IOB功能進(jìn)行考察。
ACTEL公司ProASIC3系列FLASH型FPGA每個(gè)邏輯單元Tile有3個(gè)輸入1個(gè)輸出,可以配置成兩種模式。一種是帶清除和置位的鎖存器或觸發(fā)器模式,這種模式比較簡(jiǎn)單、容易實(shí)現(xiàn);另外一種是LUT模式,如ProASIC3系列就可以實(shí)現(xiàn)這種模式。為了將器件中的Tile進(jìn)行遍歷性測(cè)試,本文決定利用器件的若干個(gè)Tile設(shè)計(jì)一個(gè)最小的邏輯單元Basic_Tiles,此最小邏輯單元能夠?qū)崿F(xiàn)輸出等于輸入,便于測(cè)試過(guò)程中進(jìn)行跟蹤測(cè)試;再將上一個(gè)Basic_Tiles的輸出作為下一個(gè)Basic_Tiles的輸入,如此進(jìn)行多次級(jí)連組成一個(gè)陣列。這樣做的優(yōu)點(diǎn)是占用了很少的I/O管腳即測(cè)試了器件95%以上的Tiles。
以LUT模式為例,我們簡(jiǎn)單來(lái)描述一下邏輯單元Tiles遍歷測(cè)試的一個(gè)過(guò)程。
我們首先設(shè)計(jì)一個(gè)最小邏輯單元Basic_Tiles。由于其LUT為3輸入結(jié)構(gòu),因此本文設(shè)計(jì)的最小邏輯單元為一個(gè)3輸入3輸出的邏輯器件,利用異或邏輯實(shí)現(xiàn)此最小邏輯單元的設(shè)計(jì),具體如下:一個(gè)3輸入異或結(jié)構(gòu)假如為Y=A 1^A2^A 3,若要多項(xiàng)式在經(jīng)過(guò)一個(gè)異或門成為A 1、A2或A3,則需要A1=A1^0,即A1=A1^A2^A2^A3^A3=Y^A2^A3,這樣占用2個(gè)3輸入LUT,利用2次異或完成了A1的輸出,同理可得輸出A 2=Y^A 1^A 3、A 3=Y^A 1^A 2。這樣可以有效的占用了4個(gè)LUT,即4個(gè)Tiles實(shí)現(xiàn)了最小邏輯單元Basic_Tiles的設(shè)計(jì)。如圖2所示。之后我們將Basic_Tiles進(jìn)行多次級(jí)聯(lián)就可以實(shí)現(xiàn)所有邏輯單元Tiles的測(cè)試。
圖2 LUT模式最小邏輯單元RTL示圖
內(nèi)嵌RAM是FPGA中的一項(xiàng)重要資源,ACTEL FLASH型FPGA不同系列不同型號(hào)內(nèi)嵌的RAM數(shù)目不等,但結(jié)構(gòu)和功能類似,具有靈活的可配置端口。如ProASICPLUS系列端口可配置256*9、512*9、512*18等多種模式[3];ProASIC3系列端口可配置為256*18、512*9、1K*4、 2K*2、4K*1等多種模式;支持全雙口工作模式,可配置為單口RAM、簡(jiǎn)單雙口RAM、FIFO等多種模式。
ACTEL公司ProASIC3系列FLASH型FPGA含有的內(nèi)嵌RAM數(shù)量多,比如A 3P1000中含有32個(gè)4608BitRAMBlock。但是受器件I/O口數(shù)目限制,無(wú)法同時(shí)將所有的RAM均連接出來(lái)進(jìn)行測(cè)試;因此在測(cè)試時(shí),我們利用軟件開發(fā)工具將內(nèi)嵌RAM配置成以上模式中的一種,并將所有的存儲(chǔ)器進(jìn)行并聯(lián),之后將配置好的內(nèi)嵌RAM預(yù)裝載數(shù)據(jù)。這樣的設(shè)計(jì)可以在寫入一個(gè)存儲(chǔ)器時(shí)能同時(shí)對(duì)所有并聯(lián)的存儲(chǔ)器進(jìn)行相同內(nèi)容的寫入,只是在內(nèi)容驗(yàn)證時(shí)需設(shè)計(jì)片選控制端以決定哪個(gè)RAM內(nèi)容輸出到I/O口。
ACTEL不同系列不同型號(hào) FLASH型FPGA含有的CCC個(gè)數(shù)不同,種類也不盡相同,但基本原理相似。具有以下特點(diǎn):對(duì)時(shí)鐘信號(hào)進(jìn)行調(diào)整,可實(shí)現(xiàn)對(duì)輸入時(shí)鐘的倍頻或分頻輸出,可編程的延時(shí)、提前或相移等功能。對(duì)于CCC測(cè)試,我們將根據(jù)每種系列每種型號(hào)的特點(diǎn)利用軟件開發(fā)工具生成IP核來(lái)設(shè)計(jì) ACTEL 型號(hào)所包含的CCC。
例如ProASIC3系列中A3P1000,它包含6個(gè)CCCS,其中1個(gè)CCC帶有PLL,其他5個(gè)CCCS實(shí)現(xiàn)簡(jiǎn)單時(shí)鐘延遲。輸入時(shí)鐘頻率范圍是1.5MHz~350MHz,輸出時(shí)鐘頻率范圍是0.75MHz~350MHz。我們?cè)O(shè)定好輸入輸出時(shí)鐘頻率等參數(shù)生成PLL和CCC 功能塊后,在測(cè)試工程中調(diào)用功能塊即可。測(cè)試工程編譯后的RTL示圖如圖3所示。從圖中可看出,功能單元的覆蓋率為100%。
ACTEL公司ProASIC3系列FLASH型FPGA含有專門的非易失的FlashROM存儲(chǔ)器,其大小為1kbit。通過(guò)JTAG可以對(duì)FlashROM進(jìn)行讀寫和修改操作。只有FLASH結(jié)構(gòu)的FPGA才含有這種非易失性的存儲(chǔ)器。
對(duì)于FlashROM的測(cè)試,我們利用SmartGen軟件對(duì)其所有的字節(jié)進(jìn)行設(shè)置,并寫入數(shù)據(jù),生成FlashROM核。在測(cè)試工程中調(diào)用FlashROM核,編譯仿真后生成下載文件進(jìn)行測(cè)試。
圖3 鎖相環(huán)測(cè)試的RTL示圖
在測(cè)試時(shí),自動(dòng)測(cè)試系統(tǒng)給定是由0和1組成的測(cè)試圖形,也就是二進(jìn)制代碼。這些代碼的獲得主要通過(guò)軟件仿真來(lái)實(shí)現(xiàn)。對(duì)以上各個(gè)模塊的設(shè)計(jì)全部依托于ACTEL FPGA設(shè)計(jì)開發(fā)軟件IDE,并使用Verilog HDL硬件語(yǔ)言編寫測(cè)試工程代碼。我們根據(jù)所設(shè)計(jì)的各個(gè)功能測(cè)試工程,進(jìn)行ModelSim仿真生成波形文件。將波形文件保存成二進(jìn)制代碼數(shù)據(jù)文件,然后再按照ATE可識(shí)別的圖形向量文件格式整理,即可生成測(cè)試程序可調(diào)用的測(cè)試圖像向量。
以上內(nèi)容是對(duì)基于ACTEL公司ProASIC3系列FLASH型FPGA基本結(jié)構(gòu)功能測(cè)試的簡(jiǎn)單介紹。ProASIC3系列器件的基本結(jié)構(gòu)和測(cè)試原理相似,不同的是在一塊芯片中集成的規(guī)模大小不同,運(yùn)行速度高低不同,沒(méi)有什么質(zhì)的變化。而近幾年來(lái),F(xiàn)LASH型的FPGA有了一個(gè)很大的發(fā)展,從結(jié)構(gòu)到性能都上了一個(gè)大的臺(tái)階。如Fusion系列集成了12位A/D、ARM Cortex-M 3、RTC等功能部件;IGLOO系列具有獨(dú)特的Flash*Freeze睡眠模式,在該模式下最低功耗可達(dá)5uW;IGLOO+系列提供了超多的I/O口、支持斯密特觸發(fā)器輸入、熱插拔等特點(diǎn);Nano系列具有3mm×3mm的超小封裝,業(yè)界最低功耗的FPGA,最低功耗可達(dá)2uW。這些FPGA規(guī)模、性能和速度的不斷提高給測(cè)試程序開發(fā)人員也帶來(lái)了新的挑戰(zhàn)。
[1]周立功.單片機(jī)ACTEL系列FPGA的特點(diǎn)[J].電子產(chǎn)品世界,2009.
[2]Microsemi,Pro ASIC3 Flash Family FPGAS Datasheet[OL].2016.https://www.microsemi.com.
[3]Microsemi,Pro ASICPLUS Flash Family FPGAS Datasheet[OL].2010.https://www.microsemi.com.