龐立鵬,藺旭輝,馬金龍,曹 靚,沈丹丹,王曉玲,趙桂林
(中科芯集成電路有限公司,江蘇無錫 214072)
現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)芯片具有集成度高、靈活性強(qiáng)、開發(fā)成本低、開發(fā)周期短等優(yōu)勢,已經(jīng)成為數(shù)字系統(tǒng)應(yīng)用開發(fā)者的必備選擇。根據(jù)FPGA 內(nèi)部配置單元進(jìn)行區(qū)分,有SRAM 型、反熔絲型和Flash 型,各類FPGA 都有其優(yōu)缺點(diǎn)。SRAM 型FPGA 是各大廠商生產(chǎn)的主流FPGA,其配置單元是SRAM 單元,當(dāng)前規(guī)模已突破億萬門級,且隨著先進(jìn)工藝和設(shè)計技術(shù)的不斷突破,其集成規(guī)模和應(yīng)用場景一直在擴(kuò)大,但其掉電后配置信息丟失,需要配備外部存儲器來存儲配置數(shù)據(jù)。反熔絲型FPGA 的配置單元是反熔絲單元,是一次可編程器件(OTP),即當(dāng)反熔絲單元被高壓編程后,形成的穩(wěn)定導(dǎo)電細(xì)絲將內(nèi)部各種邏輯資源進(jìn)行連接,具有高可靠性,適用于航天等抗輻射復(fù)雜環(huán)境[1],但對應(yīng)用開發(fā)者而言成本很高。而Flash 型FPGA 解決了SRAM 型和反熔絲型FPGA 的不足,同時滿足非易失性和高可靠性等特點(diǎn),通過單粒子加固試驗(yàn)和電離總劑量驗(yàn)證,滿足空間抗單粒子要求[2-4],已應(yīng)用于航天航空工程和車載電子等諸多領(lǐng)域,且隨著對新型非易失存儲器件工藝的不斷研究,其規(guī)模和性能都越來越優(yōu)越。
Flash 型FPGA 內(nèi)部的核心可配置單元為非易失性Flash 單元,基于Flash 架構(gòu)的FPGA 可實(shí)現(xiàn)多次擦除、編程和校驗(yàn)。Flash 單元的特性決定了Flash 型FPGA 的重要特性,即掉電非易失性,當(dāng)FPGA 完成編程后,配置數(shù)據(jù)就成為其結(jié)構(gòu)的一個固有部分,系統(tǒng)上電時不需要外部的配置存儲芯片加載配置數(shù)據(jù),具有上電啟動速度快、保密安全性高和低功耗等優(yōu)勢,目前市場上的Flash 型FPGA 供應(yīng)廠商有Microsemi公司(原ACTEL)公司[5],國內(nèi)相關(guān)單位尚處于研究狀態(tài)。本文通過對Flash 型FPGA 配置架構(gòu)和Flash 單元特性的研究,設(shè)計了應(yīng)用于30 萬門Flash 型FPGA 的配置電路,并且對整體配置模塊和整體電路功能進(jìn)行了仿真和分析。
FPGA 器件內(nèi)部的核心模塊是可配置邏輯單元模塊,對FPGA 編程的過程就是通過配置電路對可配置邏輯模塊進(jìn)行配置,實(shí)現(xiàn)各種邏輯功能。Flash 型FPGA 內(nèi)核可配置的單元模塊包括Flash 單元陣列和可配置邏輯模塊Tile 陣列。
Flash 型FPGA 配置電路由JTAG 控制電路、各功能模塊控制電路、多組計數(shù)器電路模塊、模擬編程高壓產(chǎn)生電路、字線譯碼電路、位線譯碼電路,上電啟動電路等模塊構(gòu)成。JTAG 控制電路包括了TAP 狀態(tài)機(jī)、指令寄存器、指令譯碼電路、數(shù)據(jù)寄存器控制電路、多組計數(shù)器模塊等[6]。圖1 是一款30 萬門Flash 型FPGA 整體配置架構(gòu)圖,配置控制模塊由模擬電路和數(shù)字電路兩大部分組成。模擬電路包括電啟動電路、帶隙基準(zhǔn)、偏置電路和高低壓產(chǎn)生電路等模塊,作用是給Flash 單元在編程、擦除和校驗(yàn)階段提供不同的電源電壓和偏置電壓。
圖1 Flash 型FPGA 整體配置架構(gòu)圖
Flash 型FPGA 電路中的JTAG 接口電路兼容IEEE 1149.1 標(biāo)準(zhǔn)。用戶可以通過JTAG 接口對FPGA中的Flash 單元進(jìn)行編程,實(shí)現(xiàn)配置碼流加載。另外可以借助JTAG 接口進(jìn)行芯片內(nèi)部信號抓取,方便程序分析,輔助應(yīng)用開發(fā)。JTAG 電路邊界掃描測試需要的管腳及功能描述如表1 所示[7]。
表1 對比邊界掃描I/O 管腳功能
JTAG 接口電路主要作用是配置控制電路,通過指令寄存器和多條數(shù)據(jù)寄存器來傳輸數(shù)據(jù),實(shí)現(xiàn)擦除、編程、校驗(yàn)和測試的功能。30 萬門Flash 型FPGA指令寄存器為8 位寄存器IR<0:7>,設(shè)計指令集來控制電路各工作模式。多組不同長度的數(shù)據(jù)寄存器DR可以實(shí)現(xiàn)USERCODE、IDCODE、字線通道選擇、字線選擇、位線通道選擇、位線選擇、校驗(yàn)、多種計數(shù)器控制、BSR 等數(shù)據(jù)鏈功能。整體配置架構(gòu)如圖1 所示,可通過輸入不同的指令來選擇對應(yīng)的寄存器鏈功能。
JTAG 控制電路核心模塊TAP 控制器是一個16種狀態(tài)的狀態(tài)機(jī),TAP 狀態(tài)機(jī)流程圖如圖2 所示,4 個TAP 引腳控制數(shù)據(jù)如何被掃描進(jìn)各寄存器。在TCK上升沿采樣到的TMS 值決定了狀態(tài)機(jī)的翻轉(zhuǎn)。TAP狀態(tài)機(jī)在工作中有2 個主要順序,一個是把指令移入到指令寄存器中,另一個是把數(shù)據(jù)移入到數(shù)據(jù)寄存器中。
圖2 TAP 狀態(tài)機(jī)流程圖
Flash 型FPGA 最基本的可編程配置單元是Flash單元[8],它具有占用硅片面積小、低阻抗和非易失等特點(diǎn)。Flash 單元原理如圖3 所示,F(xiàn)lash 單元由一對共浮柵的Sense-Switch 結(jié)構(gòu)的Flash 晶體管構(gòu)成,一個是Sense 編程管,負(fù)責(zé)電路的擦除、編程、校驗(yàn)等操作,一個是Switch 開關(guān)管,負(fù)責(zé)配置FPGA 器件內(nèi)部連線的開斷。編程管和開關(guān)管共享浮柵結(jié)構(gòu),通過控制編程管的柵(Word 字線)、位線(BL)和源端(SL)的電壓,向浮柵注入電荷或者抽取電荷,即通過充放電來決定器件狀態(tài)進(jìn)而控制開關(guān)管的導(dǎo)通和截止?fàn)顟B(tài)[9]。當(dāng)選中的Flash 被編程后,Switch 開關(guān)管開啟后源漏兩端IN-OUT 導(dǎo)通,F(xiàn)PGA 內(nèi)部電路可以相互連接,實(shí)現(xiàn)各種邏輯功能。
圖3 Flash 單元原理
Flash 型FPGA 內(nèi)核可配置模塊由Flash 單元存儲陣列和可配置邏輯單元構(gòu)成。圖4 為Flash 型FPGA內(nèi)核可編程邏輯單元Tile(片),通過編程特定位置的Flash 單元,可以配置成組合邏輯和時序邏輯電路。可以被配置成可配置邏輯資源Tile 中包含3 個輸入信號(每一個輸入也可以通過編程路徑上的Flash 單元配置成反向輸入)和2 個輸出信號,除了3 輸入的XOR 功能,Tile 電路可以通過編程特定位置的Flash開關(guān),配置實(shí)現(xiàn)任意3 輸入1 輸出組合邏輯功能??膳渲脝卧猅ile 也可以配置實(shí)現(xiàn)時序邏輯功能,即一個帶有清零或者置位的鎖存器或觸發(fā)器功能,此時In1 為輸入信號,In2(CLK)為時鐘信號,In3(Reset)為清零或置位信號。Tile 單元有2 個輸出,其中一個為OUT_LOCAL,其直接到相鄰Tile 單元中,當(dāng)配置信號跨Spine 使用時,OUT_LONG 可以用于長線的布線通道。FPGA 通過相應(yīng)的開發(fā)軟件,通過配置碼流來配置內(nèi)核Tile 等資源,可實(shí)現(xiàn)整體邏輯功能。
圖4 內(nèi)核可配置單元Tile
字線控制模塊主要是給Flash 配置單元字線Word 提供相應(yīng)的電壓,包括字線譯碼電路、高壓控制電路、移位寄存器鏈、串并轉(zhuǎn)換電路和高低壓電平轉(zhuǎn)換電路等功能模塊。在配置過程中,通過8 位指令寄存器IR<0:7>輸入對應(yīng)的指令集組合和多種數(shù)據(jù)寄存器DR 來操作字線控制模塊工作。30 萬門Flash 型FPGA 電路中有89 塊水平字線通道,對應(yīng)有89 位字線通道移位寄存器鏈及對應(yīng)的串并轉(zhuǎn)換電路,每一塊字線通道中有32 根字線,對應(yīng)有32 位字線選擇移位寄存器鏈及對應(yīng)的串并轉(zhuǎn)換電路。
位線控制模塊主要是給Flash 配置單元位線BL端和位線SL 端提供相應(yīng)電壓,包括位線譯碼電路、高壓控制電路、移位寄存器鏈、串并轉(zhuǎn)換電路和高低壓電平轉(zhuǎn)換電路等功能模塊。在配置過程中,通過8 位指令寄存器IR<0:7>輸入對應(yīng)的指令集組合和多種數(shù)據(jù)寄存器DR 來操作位線控制模塊工作。30 萬門Flash型FPGA 電路中有10 塊豎直位線通道,對應(yīng)有10 塊位線通道選擇控制寄存器鏈及串并轉(zhuǎn)換電路。每一塊位線通道中包括83 位配置數(shù)據(jù),對應(yīng)有83 位配置數(shù)據(jù)寄存器鏈以及對應(yīng)的串并轉(zhuǎn)換電路。
FPGA 在配置過程中,通過JTAG 控制模塊和相關(guān)指令配置字線和位線相關(guān)電路,電源模塊通過字線和位線尋址到特定位置的Flash 單元,然后施加特定編程電壓進(jìn)行編程操作[10],F(xiàn)lash 型FPGA 大概的配置流程如圖5 所示。
圖5 Flash 型FPGA 配置流程
1)擦除:Flash 型FPGA 擦除過程中采用全片擦除模式,通過相應(yīng)的指令集、字線和位線控制電路,使能擦除相關(guān)電路模塊,各計數(shù)器開始工作,產(chǎn)生擦除階段所需要的各種電壓。在擦除命令控制下,電路中所有的字線和位線被選擇,將電路中所有的Flash 單元配置存儲信息全部擦除掉。
2)字線(WL)尋址:Flash 型FPGA 在配置過程中對具體的某根字線尋址時,先選擇這根字線所在的字線通道,然后再選擇字線通道中的字線。所有的字線通道和字線會被逐行遍歷到,具體某根字線是否被選中則通過指令集來控制,當(dāng)被選中時,才能對該字線上相應(yīng)的Flash 單元進(jìn)行編程配置,當(dāng)字線不選中時,直接跳到下一根字線地址進(jìn)行操作。通過輸入字線通道選擇指令,對89 位字線通道寄存器鏈寫入1 位“1”,該位數(shù)據(jù)“1”通過89 位寄存器鏈一直移位下去,確保當(dāng)前階段只選中一塊水平字線通道,后期通過字線通道移位指令將每一塊字線通道遍歷到,直到89 塊字線通道被全部遍歷完。字線選擇過程和字線通道選擇機(jī)理一樣,先選中某塊字線通道后,再通過輸入字線選擇指令,對32 位字線移位寄存器鏈寫入1 位數(shù)據(jù)“1”,確保當(dāng)前階段只選擇一根字線來操作,1 位數(shù)據(jù)“1”通過移位寄存器一直移位下去,直到32 位字線被全部遍歷到。
3)位線(BL)配置數(shù)據(jù)寫入:Flash 型FPGA 在編程配置數(shù)據(jù)寫入過程中,在位線數(shù)據(jù)清零指令、位線通道選擇指令,配置數(shù)據(jù)寫入等指令集操作下,先選擇具體的某塊位線通道,再給83 位移位寄存器鏈中寫入編程配置Bit 碼流,通過串并轉(zhuǎn)換電路,最終確定選中某位線BL,輸入的每一幀配置碼流定義了一根字線(Word)地址線上需要編程的Flash 單元信息。
4)編程:當(dāng)尋址到字線Word 和位線配置數(shù)據(jù)寫入后,通過對應(yīng)的指令集來控制電路中的各種計數(shù)器模塊,控制高低壓編程時間,對尋址到的Flash 單元依次進(jìn)行編程,將配置信息寫入到Flash 單元中。
5)校驗(yàn):當(dāng)電路中所需位置的Flash 單元被編程完成后,需要對編程后的Flash 單元進(jìn)行對比校驗(yàn),判斷Flash 編程的位置、數(shù)量、閾值電壓等是否滿足設(shè)計和工藝要求,當(dāng)以上所有步驟沒問題時,電路可以上電,實(shí)現(xiàn)所配置的整體功能,開啟正常工作狀態(tài)。
通過對設(shè)計的30 萬門Flash 型FPGA 電路搭建整體數(shù)字仿真環(huán)境, 使用Candence 自帶的NC_Verilog 仿真工具進(jìn)行仿真驗(yàn)證,對其配置過程以及整體配置后的電路功能進(jìn)行仿真驗(yàn)證。
Flash 型FPGA 在編程配置操作階段,通過JTAG控制模塊將與編程相關(guān)的模塊連接起來,通過專有指令控制編程時序和邏輯功能,從而實(shí)現(xiàn)對Flash 單元的編程。首先配置各計數(shù)器狀態(tài),接著在相關(guān)指令控制下,電路中字線被一根根逐步遍歷到。選擇一個字線通道,再次將字線通道中的每一根字選擇到,F(xiàn)lash單元在編程階段字線狀態(tài)是低電平“0”,該狀態(tài)下表明該條字線被尋址到。
同樣的道理,當(dāng)字線被尋址到后,該字線上所連接的位線數(shù)據(jù)也會被加載上去,在相關(guān)指令下,通過TDI 往83 位位線寄存器鏈中寫入位線配置數(shù)據(jù),首先寫入位線通道選擇指令84,每次只能打開一個位線通道,在位線寄存器控制指令E5 下,再寫入一拍編程配置碼流數(shù)據(jù)。在此過程中,最多可以打開10 個位線通道BL_BANK<0:9>,相應(yīng)的灌入同等節(jié)拍的位線Bit數(shù)據(jù)。圖6 截選了部分編程階段Flash 單元位線仿真波形。在編程時間等待指令下,被選擇到的Flash 單元電路處于被編程狀態(tài),當(dāng)Flash 單元完成編程后,Switch 開關(guān)管打開工作,起到電路連接的作用。
圖6 位線仿真波形
將Flash 型FPGA 通過相應(yīng)的FPGA 開發(fā)軟件配置成多種功能,加載配置信息碼流激勵到整體FPGA芯片邏輯網(wǎng)表中,進(jìn)行電路TOP 層數(shù)字化功能仿真驗(yàn)證,通過尋址到對應(yīng)的Flash 單元,將配置信息編程到Flash 單元,實(shí)現(xiàn)整個功能的配置。
整體功能案例1,配置了1 個輸入反相器功能,反相器輸入端口為IO<142>,輸出端口為IO<275>,反相器功能整體仿真波形如圖7 所示,仿真結(jié)果顯示配置后的反相器功能正常。
圖7 反相器功能整體仿真波形
整體功能案例2,配置了4 類功能,有組合邏輯也有時序邏輯,整體電路內(nèi)核邏輯資源利用率為99%,基本用遍了內(nèi)核Tile 可配置邏輯資源,整體數(shù)字仿真功能都正常,多種配置功能整體仿真波形如圖8 所示。
圖8 多種配置功能整體仿真波形
功能1:3 輸入與門AND3,輸入端口為IO<79>、IO<81>、IO<82>,輸出端口為IO<143>;
功能2:3 輸入或門OR3,輸入端口為IO<83>、IO<84>、IO<85>,輸出端口為IO<145>;
功能3:2 輸入異或門XOR2,輸入端口為IO<86>、IO<87>,輸出端口為IO<148>;
功能4:4 條2000 級的移位寄存器鏈,輸入端口為IO<6>、IO<28>、IO<255>、IO<253>,4 條鏈各自對應(yīng) 的 輸 出 端 口 為 IO<280>、IO<118>、IO<123>、IO<198>。
基于系統(tǒng)門數(shù)為30 萬門的Flash 型FPGA 電路,本文從最基礎(chǔ)、關(guān)鍵的Flash 配置單元特性開始到整體電路的配置方法和機(jī)理、配置電路架構(gòu)進(jìn)行研究,研究了Flash 型FPGA 的配置方法、指令集設(shè)計、寄存器設(shè)計、計數(shù)器設(shè)計等。經(jīng)過整體電路配置功能仿真驗(yàn)證,結(jié)果表明基于以上配置架構(gòu)設(shè)計的配置電路滿足該30 萬門Flash 型FPGA 的配置要求。在研究過程中初步掌握了Flash 型FPGA 配置電路整體架構(gòu)、配置方法和機(jī)理,后續(xù)可以將研究成果引用到系統(tǒng)門數(shù)規(guī)模更大的Flash 型FPGA 中進(jìn)行整體配置仿真驗(yàn)證,更加深層次地驗(yàn)證Flash 型FPGA 配置電路設(shè)計合理性,并進(jìn)行后續(xù)設(shè)計優(yōu)化。