曹正州,查錫文
(1.無(wú)錫中微億芯有限公司,江蘇無(wú)錫 214072;2.無(wú)錫華普微電子有限公司,江蘇無(wú)錫 214072)
SRAM 型FPGA 由于其靈活可編程、邏輯資源豐富、集成度高和開(kāi)發(fā)周期短的優(yōu)點(diǎn),廣泛應(yīng)用在數(shù)據(jù)處理、衛(wèi)星通信、航天航空等領(lǐng)域[1]。其核心電路通過(guò)可編程邏輯塊(CLB)和可編程布線開(kāi)關(guān)矩陣(CSBM)來(lái)實(shí)現(xiàn)不同的用戶邏輯功能[2]。這些可編程的功能是通過(guò)配置SRAM 來(lái)實(shí)現(xiàn)的,通過(guò)電子設(shè)計(jì)自動(dòng)化(EDA)軟件,對(duì)代碼進(jìn)行邏輯綜合、布局布線后生成實(shí)現(xiàn)用戶邏輯功能的碼流[3]。在FPGA 上電時(shí)將碼流加載到配置SRAM 中,配置成功后FPGA 即開(kāi)始運(yùn)行用戶邏輯功能。但SRAM 型FPGA 也有著明顯的缺點(diǎn),由于SRAM 掉電后數(shù)據(jù)會(huì)丟失,所以FPGA 外圍需要配置非易失性存儲(chǔ)器(NVM)[4]來(lái)存儲(chǔ)配置碼流信息,該類(lèi)配置存儲(chǔ)器電路稱(chēng)為FPGA 配置存儲(chǔ)器。根據(jù)實(shí)現(xiàn)的技術(shù),F(xiàn)PGA 配置存儲(chǔ)器分為紫外光擦除電編程只讀存儲(chǔ)器(UV-EPROM)[5]、電擦除、電編程只讀存儲(chǔ)器(E2PROM)[6]、反熔絲只讀存儲(chǔ)器(Anti-Fuse PROM)[7]和快閃只讀存儲(chǔ)器(Flash PROM)。其中UV-EPROM 和Anti-Fuse PROM 為一次可編程器件,影響電路的上機(jī)率;E2PROM 為多次可編程器件,但存儲(chǔ)單元占用面積比較大,并且需要專(zhuān)門(mén)的編程器。隨著FPGA 在現(xiàn)代通信、人工智能領(lǐng)域可重構(gòu)[8]的應(yīng)用需求,配置存儲(chǔ)器中的碼流需要在線更新,顯然采用UV-EPROM、E2PROM 和Anti-Fuse PROM 設(shè)計(jì)的FPGA 配置存儲(chǔ)器并不能滿足新的技術(shù)需求。目前國(guó)內(nèi)研制Flash 型FPGA 配置存儲(chǔ)器的公司有復(fù)旦微電子、成都華微、紫光國(guó)微和中科芯等,已開(kāi)發(fā)出的幾款FPGA 配置存儲(chǔ)器由于存儲(chǔ)容量固定,對(duì)SRAM 型FPGA 的適用范圍較小。
基于FPGA 配置存儲(chǔ)器的上述缺點(diǎn),本文提出了基于Flash 存儲(chǔ)技術(shù)的可變?nèi)萘康腇PGA 配置存儲(chǔ)器,同時(shí)通過(guò)雙模的上電復(fù)位電路和存儲(chǔ)器內(nèi)建自測(cè)試(MBIST)設(shè)計(jì),使該FPGA 配置存儲(chǔ)器具有適用范圍廣、可靠性高的優(yōu)點(diǎn)。
本文設(shè)計(jì)的FPGA 配置存儲(chǔ)器基于0.18 μm 2P6M Flash 工藝,支持4 Mbit、16 Mbit 和32 Mbit 可配置,可實(shí)現(xiàn)配置存儲(chǔ)器電路一款多用;最高工作頻率為50 MHz,內(nèi)核工作電壓為2.5 V,端口工作電壓為2.5~3.3 V,可適應(yīng)多種電平標(biāo)準(zhǔn)[9];支持從串、從并等多種接口工作方式,可滿足多種FPGA 配置模式的需求[10]。
設(shè)計(jì)的FPGA 配置存儲(chǔ)器整體架構(gòu)如圖1 所示,主要由聯(lián)合測(cè)試工作組(JTAG)接口、低壓差線性穩(wěn)壓器(LDO)、上電復(fù)位與初始化電路、Flash 存儲(chǔ)陣列、擦寫(xiě)控制狀態(tài)機(jī)、地址偵測(cè)電路、串并轉(zhuǎn)換接口電路和MBIST 電路組成。
圖1 FPGA 配置存儲(chǔ)器整體架構(gòu)
采用標(biāo)準(zhǔn)商業(yè)線提供的Flash IP 作為存儲(chǔ)配置碼流的存儲(chǔ)單元,每個(gè)單元的容量為16 Mbit, 整個(gè)32 Mbit 的存儲(chǔ)空間由2 個(gè)對(duì)稱(chēng)的Flash IP 組成。Flash IP 的工作電壓為1.8 V,最大工作電流為30 mA,而該配置存儲(chǔ)器的電源工作電壓為2.5 V,所以為了給Flash IP 提供工作電壓,設(shè)計(jì)了一款基于零極點(diǎn)追蹤的片上無(wú)電容型的LDO[11],最大負(fù)載能力為100 mA,為2 個(gè)Flash IP 提供了高質(zhì)量的穩(wěn)定電源。
通過(guò)JTAG 接口將配置碼流寫(xiě)入Flash IP 中,而FPGA 加載數(shù)據(jù)同樣是通過(guò)JTAG 接口,所以基于Flash 技術(shù)的FPGA 配置芯片支持在線可編程(ISP)功能。JTAG 是業(yè)界標(biāo)準(zhǔn),使用IEEE Standard 1149.1 協(xié)議規(guī)定的TMS、TCK、TDI、TDO 4 個(gè)引腳實(shí)現(xiàn)芯片的測(cè)試、配置和下載功能。該電路的數(shù)據(jù)校驗(yàn)同樣使用JTAG 協(xié)議,通過(guò)回讀校驗(yàn)寄存器將數(shù)據(jù)從TDO 端口讀出,從而完成寫(xiě)入數(shù)據(jù)的回讀驗(yàn)證。
上電復(fù)位與初始化電路為配置存儲(chǔ)器提供2 個(gè)功能:1)RC 和電壓偵測(cè)的雙模復(fù)位電路支持寬范圍的上電時(shí)間,從而為配置存儲(chǔ)器內(nèi)部邏輯提供可靠的復(fù)位;2)初始化脈沖序列電路產(chǎn)生初始化脈沖,將Flash IP 特定區(qū)域的數(shù)據(jù)讀出并加載到配置模式控制寄存器中,該數(shù)據(jù)控制著配置存儲(chǔ)器的容量以及同F(xiàn)PGA的配置模式,同時(shí)從Flash 存儲(chǔ)陣列讀出第1 組數(shù)據(jù)并存儲(chǔ)到輸出寄存器中。之后,上電復(fù)位與初始化電路輸出初始化完成標(biāo)志信號(hào)OE(該信號(hào)同F(xiàn)PGA 的INIT 端相連)并完成握手協(xié)議。
本設(shè)計(jì)中的FPGA 配置存儲(chǔ)器采用商用工藝線提供的標(biāo)準(zhǔn)Flash IP,通常Flash IP 的數(shù)據(jù)接口位寬為32 bit,每次只能寫(xiě)入32 bit 的數(shù)據(jù)。為了兼容XILINX公司的ISE 軟件(每次寫(xiě)入的數(shù)據(jù)為4 096 bit),在該配置存儲(chǔ)器中設(shè)計(jì)了4096bit 的寄存器緩存,將4 096 bit數(shù)據(jù)分64 次寫(xiě)入。配置存儲(chǔ)器的接口電路主要包括并轉(zhuǎn)串電路和配置模式控制電路,可實(shí)現(xiàn)1 bit 的串行輸出或者8 bit 并行數(shù)據(jù)。
為了提高該配置芯片存儲(chǔ)空間的可靠性和縮短測(cè)試時(shí)間,設(shè)計(jì)了MBIST 電路。在傳統(tǒng)的March C 的基礎(chǔ)上提出了一種更全面的改進(jìn)型測(cè)試算法,有效提高了故障覆蓋率。
FPGA 配置存儲(chǔ)器的上電啟動(dòng)由上電復(fù)位與初始化電路實(shí)現(xiàn),該電路主要由帶隙基準(zhǔn)(VREF)、上電復(fù)位(PWR)、振蕩器(OSC)、系統(tǒng)穩(wěn)定時(shí)間計(jì)數(shù)(SST)和初始化脈沖產(chǎn)生(OPG)子電路組成,其中PWR 和OPG 電路原理如圖2、3 所示。
圖2 PWR 電路
圖2 中的RST_RC 信號(hào)為基于電阻和電容、利用電容兩端電壓不能突變的特性而產(chǎn)生的復(fù)位信號(hào),該類(lèi)型的復(fù)位適合電源快上電的應(yīng)用,當(dāng)電源上電斜率比較小時(shí),RST_RC 信號(hào)在電源電壓很低時(shí)便失效?;陔妷簷z測(cè)的復(fù)位信號(hào)RST_CMP 在電源上電斜率比較小時(shí)有效,反而在電源上電較快時(shí)由于VREF 信號(hào)未能及時(shí)建立而失效,所以將RST_RC 和RST_CMP結(jié)合起來(lái)可以有效解決復(fù)雜電源環(huán)境的復(fù)位問(wèn)題。
圖3 中SST 計(jì)數(shù)器輸出Q[16]、Q[3]和Q[1]的組合信號(hào),進(jìn)而觸發(fā)形成Pulse[2]、Pulse[1]和Pulse[0]脈沖信號(hào),利用這3 個(gè)脈沖信號(hào)進(jìn)行配置模式的控制和第1 組配置數(shù)據(jù)的讀取并加載到輸出寄存器中,等待FPGA 接收數(shù)據(jù)。
圖3 OPG 電路
碼流的寫(xiě)入是將ISE 或者VIVDO 軟件生成的配置碼流通過(guò)JTAG 端口寫(xiě)入到配置存儲(chǔ)器的存儲(chǔ)空間即Flash IP 中。不同于反熔絲型存儲(chǔ)器的編程[12],此處首先需要對(duì)Flash IP 進(jìn)行擦除操作,回讀校驗(yàn)全為“0”后再進(jìn)行寫(xiě)入的循環(huán)流程。每個(gè)寫(xiě)入的循環(huán)流程的數(shù)據(jù)為4 096 bit,因?yàn)镕lash IP 的數(shù)據(jù)接口位寬為32 bit,所以設(shè)計(jì)了數(shù)據(jù)寄存器緩存,通過(guò)寫(xiě)入控制電路將4 096 bit 分64 次寫(xiě)入。最后一幀數(shù)據(jù)寫(xiě)結(jié)束后會(huì)向Flash IP 的特定存儲(chǔ)空間寫(xiě)入配置模式控制和用戶的User-Code 等信息。最后進(jìn)行全部數(shù)據(jù)的回讀校驗(yàn),回讀校驗(yàn)通過(guò),對(duì)FPGA 配置存儲(chǔ)器的下載完成。碼流的寫(xiě)入、下載流程如圖4 所示。
圖4 碼流的寫(xiě)入、下載流程
擦除控制電路如圖5 所示,主要由擦除計(jì)時(shí)器、擦除時(shí)序發(fā)生器和擦除信號(hào)產(chǎn)生電路組成,其中計(jì)時(shí)器COUNT21 收到擦除指令后對(duì)OSC_CLK 時(shí)鐘進(jìn)行計(jì)數(shù),計(jì)數(shù)結(jié)果EQ[21:1]和EQN[21:1]被送給擦除時(shí)序發(fā)生器,經(jīng)過(guò)邏輯組合和毛刺消除后產(chǎn)生ERASE_T[1:4]信號(hào),該信號(hào)用于擦除信號(hào)產(chǎn)生電路的時(shí)鐘輸入,將“1”寫(xiě)入DFF,從而產(chǎn)生E_NVSTR 和E_ERASE 信號(hào)。其中E_ERASE 為進(jìn)入擦除狀態(tài)信號(hào),開(kāi)啟內(nèi)部的電荷泵電路,E_NVSTR 為有效擦除信號(hào),開(kāi)始15 ms的Flash 存儲(chǔ)空間擦除。
圖5 擦除控制電路
寫(xiě)入(編程)控制電路如圖6 所示,主要由編程計(jì)時(shí)器、編程時(shí)序產(chǎn)生器和編程信號(hào)產(chǎn)生電路組成。PROG 為進(jìn)入編程狀態(tài)信號(hào),啟動(dòng)內(nèi)部的電荷泵電路,YE 為數(shù)據(jù)和地址的鎖定信號(hào),W_NVSTR 為有效的編程信號(hào),對(duì)Flash 地址選中的存儲(chǔ)單元開(kāi)啟20 ms 的編程。
圖6 寫(xiě)入(編程)控制電路
碼流的讀出是將Flash 存儲(chǔ)陣列中的數(shù)據(jù)讀出[13],并通過(guò)串行或者并行的方式加載到FPGA 中。碼流的讀出加載流程如圖7 所示,首先上電復(fù)位,接著從Flash IP 特定存儲(chǔ)空間讀出配置模式控制信息并加載到配置模式控制寄存器中,再?gòu)腇lash IP 常規(guī)存儲(chǔ)空間讀出第1 組配置數(shù)據(jù)并加載到輸出緩存器中,初始化完成,等待FPGA 初始化結(jié)束,完成握手后開(kāi)始向FPGA 中加載碼流。
圖7 碼流的讀出加載流程
碼流讀出加載的主要控制電路如圖8 所示,主要由輸出控制電路(輸出計(jì)數(shù)器、32 位轉(zhuǎn)8 位信號(hào)選擇電路、8 位轉(zhuǎn)1 位信號(hào)選擇電路)、輸出緩存器、串行輸出電路和并行輸出電路組成。數(shù)據(jù)緩存器中的數(shù)據(jù)會(huì)在輸出控制電路的控制下從D[0]端口串行輸出或是從D[7:0]端口并行輸出。
圖8 碼流讀出加載的主要控制電路
地址偵測(cè)電路實(shí)現(xiàn)了該FPGA 配置存儲(chǔ)器容量的可變性。因?yàn)镕PGA 同F(xiàn)PGA 配置存儲(chǔ)器相連的端口D[7:0]為共用端口,F(xiàn)PGA 配置存儲(chǔ)器在完成向FPGA 加載數(shù)據(jù)后必須將數(shù)據(jù)輸出端口D[7:0]置為高阻抗?fàn)顟B(tài),否則會(huì)影響FPGA 的功能,在FPGA 配置完成后該端口可以作為普通的用戶I/O 端口來(lái)使用。所以作為一款多用的可變存儲(chǔ)容量的FPGA 配置存儲(chǔ)器,它需要在以非最大存儲(chǔ)容量使用時(shí)必須及時(shí)關(guān)閉數(shù)據(jù)輸出端口,使其處于高阻抗?fàn)顟B(tài),該功能由地址偵測(cè)電路來(lái)完成,地址偵測(cè)電路如圖9 所示。
圖9 地址偵測(cè)電路
地址偵測(cè)電路通過(guò)DFF 的輸出端QN 到輸入端D 的反饋實(shí)現(xiàn)鎖定功能,鎖定后DFF 的值無(wú)法改變。在初始化過(guò)程中,從Flash 特定區(qū)讀出的信息作為存儲(chǔ)容量的控制信號(hào),按容量大小選擇相應(yīng)的最高位地址線,當(dāng)最后一組32 位數(shù)據(jù)輸出完成后,P2S_READY為高電平,圖9 中的A 點(diǎn)即為邏輯“0”,從而將邏輯“1”寫(xiě)入到DFF 中,QN 從邏輯“1”變成邏輯“0”,這時(shí)即使A 點(diǎn)的值發(fā)生變化,DFF 值也無(wú)法改變。輸出的RD_READY 信號(hào)會(huì)將輸出端口D[7:0]置為高阻抗?fàn)顟B(tài),并且CEO 端口輸出高電平。
MBIST 模塊主要實(shí)現(xiàn)Flash 的內(nèi)建自測(cè)試功能。按照Flash 廠商提供的測(cè)試向量,先對(duì)Flash 進(jìn)行擦除后寫(xiě)入測(cè)試向量,再讀取做比對(duì)。通過(guò)MBIST 模塊,可大大減少芯片的測(cè)試時(shí)間,以4 Mbit 容量的Flash測(cè)試為例,使用J750 機(jī)臺(tái)對(duì)未采用MBIST 的一顆電路在一個(gè)溫度下完成全地址“00”、“FF”、“55”和“AA”測(cè)試需要約2 min,而對(duì)采用了MBIST 的一顆電路在同一溫度下完成上述測(cè)試僅需約0.5 min,節(jié)約了約75%的測(cè)試時(shí)間。
Flash 的MBIST 對(duì)存儲(chǔ)空間包括MAIN 區(qū)、NVR2 區(qū)、冗余區(qū)都進(jìn)行擦除、寫(xiě)、讀操作,如果讀操作的返回?cái)?shù)據(jù)與寫(xiě)入數(shù)據(jù)不一致,即認(rèn)為Flash 存儲(chǔ)出現(xiàn)壞點(diǎn),輸出相應(yīng)錯(cuò)誤標(biāo)志。
采用HSIM10.12 搭建混合仿真平臺(tái),對(duì)該FPGA配置存儲(chǔ)器上電復(fù)位及初始化功能、整體寫(xiě)功能和讀功能進(jìn)行仿真,仿真條件為T(mén)T、25 ℃、2.5 V。
10 μs 上電時(shí)間的快上電復(fù)位波形如圖10 (a)所示,在快上電過(guò)程中,基于電壓檢測(cè)的復(fù)位信號(hào)RST_CMP 失效而基于電阻電容的復(fù)位信號(hào)RST_RC有效。100 ms 上電時(shí)間的慢上電復(fù)位波形如圖10(b)所示,在緩慢的電源電壓上電過(guò)程中,RST_RC 信號(hào)失效而RST_CMP 信號(hào)有效。所以采用電阻電容復(fù)位和電壓檢測(cè)復(fù)位相結(jié)合的雙模復(fù)位電路可以使電路適應(yīng)復(fù)雜的電源環(huán)境,在10 μs~100 ms 的上電時(shí)間內(nèi)均能為電路提供有效的復(fù)位信號(hào)。
FPGA 配置存儲(chǔ)器的寫(xiě)數(shù)據(jù)波形如圖11 所示,在每幀4 096 bit 的寫(xiě)入過(guò)程中,YADR[5:0]遍歷1遍共64 次,2 個(gè)Flash IP 同時(shí)寫(xiě),每次共寫(xiě)入64 bit的數(shù)據(jù)。
圖11 FPGA 配置存儲(chǔ)器的寫(xiě)數(shù)據(jù)波形
以并行數(shù)據(jù)輸出為例,F(xiàn)PGA 配置存儲(chǔ)器的讀出數(shù)據(jù)波形如圖12 所示。OE 為高(初始化完成)即輸出第1 組數(shù)據(jù),將從Flash 存儲(chǔ)器中讀出的32 bit 數(shù)據(jù)轉(zhuǎn)化為8 bit 數(shù)據(jù)并從D[7:0]端口輸出。在每個(gè)32 bit 數(shù)據(jù)轉(zhuǎn)8 bit 數(shù)據(jù)的過(guò)程中,輸出第3 組數(shù)據(jù)的同時(shí)從Flash 存儲(chǔ)空間中開(kāi)始讀下一地址位的32 bit 數(shù)據(jù)。
圖12 FPGA 配置存儲(chǔ)器的讀出數(shù)據(jù)波形
本文設(shè)計(jì)的可變?nèi)萘康母呖煽啃訤PGA 配置存儲(chǔ)器解決了FPGA 配置存儲(chǔ)器的國(guó)產(chǎn)化問(wèn)題,可以替換XINLIX 公司的XC18V04、XC17V16 和XCF32P 3款電路,流片后電路的實(shí)測(cè)結(jié)果表明,本設(shè)計(jì)在工作電流、靜態(tài)電流和數(shù)據(jù)輸出延遲方面與國(guó)外電路相當(dāng),工作頻率稍優(yōu)于國(guó)外電路(最大40 MHz)。
本文設(shè)計(jì)了一種可變?nèi)萘康母呖煽啃訤PGA 配置存儲(chǔ)器,它支持4 Mbit、16 Mbit 或者32 Mbit 可配置。該FPGA 配置存儲(chǔ)器采用業(yè)界標(biāo)準(zhǔn)的JTAG 接口和商用工藝線提供的Flash IP,支持串行和并行數(shù)據(jù)輸出。通過(guò)設(shè)計(jì)的地址偵測(cè)電路、雙模上電復(fù)位電路,使Flash 型FPGA 配置存儲(chǔ)器在原有的面積小、支持ISP特點(diǎn)的基礎(chǔ)上增加了存儲(chǔ)容量可變、可靠性高的特點(diǎn),從而可以適用于多款SRAM 型FPGA 和更復(fù)雜的電源環(huán)境。該配置芯片中的MBIST 電路可以完成對(duì)整個(gè)存儲(chǔ)空間的全地址覆蓋測(cè)試,減少了約75%的測(cè)試時(shí)間,并且有效剔除了存儲(chǔ)單元失效的電路,相當(dāng)于提高了FPGA 配置存儲(chǔ)器存儲(chǔ)空間的可靠性。