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