徐新宇,徐玉婷,林斗勛
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
目前,現(xiàn)場可編程門陣列(FPGA)被廣泛用于數(shù)字系統(tǒng),而FPGA產(chǎn)品大多基于靜態(tài)存儲單元SRAM技術,通過采用SRAM單元陣列來存儲編程位,并由存放在SRAM中的程序來設置FPGA的工作狀態(tài)。
標準SRAM單元主要有三種結(jié)構:四管加TFT負載單元、四管加多晶負載單元和六管單元。其中采用六管單元設計的靜態(tài)存儲器生產(chǎn)工藝由于與CMOS工藝兼容性好,按比例縮小后其面積與多晶負載四管單元相當,在超大規(guī)模靜態(tài)存儲器設計中已被廣泛使用。
我們分析靜態(tài)存儲器六管單元的漏電原理,采用國內(nèi)某工藝線提供的40 nm的SPICE模型,對六管單元進行了仿真,設計完成SRAM單元以及其讀寫電路,并為靜態(tài)存儲器六管單元編寫了verilog語言描述的行為模型,用于FPGA芯片中大規(guī)模靜態(tài)存儲器的仿真驗證。
圖1為六管結(jié)構SRAM單元。兩個PMOS管M3和M4是負載管,主要是用來補償存儲管和開關管的漏端電荷的泄放。與M3和M4構成反相器對的兩個NMOS管M1和M2是存儲管,數(shù)據(jù)和數(shù)據(jù)的反分別存放在Q和QN點。而柵極與字線(WL)相連的兩個NMOS管M5和M6起開關的作用,BIT和BITN為兩條位線。
圖1 SRAM六管結(jié)構圖
以寫“1”為例來說明SRAM的寫過程。首先譯碼電路選中特定的存儲單元,然后使寫使能信號有效,將要寫入的數(shù)據(jù)“1”通過寫入電路變成了“1”和“0”后分別加到選中單元的兩條位線BIT和BITN上,此時選中存儲單元中的WL=“1”,晶體管M5和M6打開,把BIT和BITN上的信號分別傳送到Q和QN點,從而使Q=“1”,QN=“0”,這樣數(shù)據(jù)“1”就被鎖存在晶體管M1、M2、M3和M4所構成的鎖存器中。寫入數(shù)據(jù)“0”的過程與此類似。
以讀“1”為例來說明SRAM的讀過程。讀“1”時,首先預充電信號將BIT和BITN上拉,對BL和BL進行預充電,一般預充到電源電壓VDD,主要是為了防止發(fā)生誤操作。預充電后再通過行譯碼器選中某行,則某一存儲單元被選定,即WL選通。此時,由于其中存放的是“1”,Q=1,晶體管M2和M6導通,有電流經(jīng)過M2和M6到地,從而使BITN電位降低,BIT和BITN間產(chǎn)生電壓差;當電壓差增大到一定的程度后,打開靈敏放大器,對BIT和BITN間的電壓差進行放大;最后再將靈敏放大器的輸出接到三態(tài)輸出驅(qū)動器上,驅(qū)動器的輸出就是被讀出的數(shù)據(jù),完成了整個讀過程。
由于工藝進入40 nm后,SRAM的漏電流將大大增加,從而產(chǎn)生存儲器功耗的問題。而六管結(jié)構的SRAM單元在設計上沒有結(jié)構性的靜態(tài)電流,其靜態(tài)電流主要取決于工藝。而且在電路待機狀態(tài)下,通常將BIT和BITN設置為高電平狀態(tài),因此整個靜態(tài)存儲器的待機電流是由于MOS管的亞閾值電流引起的。
為了改善靜態(tài)存儲器的漏電流,我們采用高閾值晶體管替代普通晶體管設計完成SRAM單元設計,同時晶體管的W/L滿足SRAM設計的兩個基本條件,即數(shù)據(jù)讀取操作不破壞存儲單元存儲的信息和在數(shù)據(jù)寫入過程中存儲單元應該允許存儲信息的改變。采用不同閾值和溝長的MOS管構造的SRAM單元的漏電電流仿真結(jié)果如表1所示。
表1 SRAM單元待機電流仿真
從仿真結(jié)果可以看出,與溝長為40 nm(最小溝長)的MOS管相比,采用溝長為60 nm的MOS管構造的SRAM單元,其待機電流將減小一半左右。而且在版圖實現(xiàn)時,并不會大幅影響SRAM單元的面積。因此,將SRAM單元中MOS管的溝長修改為60 nm。
SRAM的外圍電路一般包括靈敏放大器、地址譯碼器、三態(tài)輸入/輸出緩沖器和控制邏輯等。靈敏放大器是靜態(tài)存儲器外圍讀寫控制電路的關鍵部件。它對整個存儲電路的性能有著極其重要的影響。由于存儲單元的器件充放電能力較弱,而它與連接的位線的電容較大,當對電路進行讀操作時,單元較弱的導電能力使位線的電壓擺幅很小,并且要使位線達到能拉動數(shù)字器件的擺幅需要很長的時間。因此,在位線的讀出輸出級必須設置靈敏放大器,加快電路的讀出速度。即當讀信號開始、被選中單元的傳輸管打開以后,存儲單元對位線放電(一般情況下,位線都會被預充到某一電平,讀出的過程是對單邊位線的放電過程)。當位線的電壓達到一定的擺幅,通常在幾百毫伏之內(nèi)時,就可以啟動靈敏放大器,將位線上的小擺幅電平迅速放大到邏輯電平“1”或“0”,送出到輸入端口。本文設計的靈敏放大器的結(jié)構如圖2所示,在讀信號readn為低電平有效時,靈敏放大器正常工作。
圖2 靈敏放大器電路圖
外圍電路中另一個重要的部件就是地址譯碼器。由于我們設計了3232行、1296×2列SRAM,地址線總線控制,數(shù)據(jù)線橫向控制,因此需要產(chǎn)生1296×2個地址,每個地址控制一列SRAM傳輸管的開啟。地址譯碼器的結(jié)構如圖3所示。
圖3 地址譯碼示意圖
由圖3可以看出,在地址譯碼電路里采用了級聯(lián)的方式。首先由分組地址cggroup[6]確定左右,cggroup[5:0]譯碼可以產(chǎn)生26=64個地址,此處采用前26個地址。每個group里又包含48個小地址,由cgaddr[5:0]譯碼產(chǎn)生。
SRAM單元的實現(xiàn)版圖如圖4所示,單個SRAM單元的面積約為0.73 μm2。
為了驗證單個SRAM單元工作的正確性,本文采用40 nm工藝SPICE模型和1.1 V電源電壓進行仿真。圖5和圖6表示寫操作1和寫操作0時的波形,圖7和圖8表示讀操作1和讀操作0時的波形。
基于SRAM陣列,我們設計的整個電路功能模塊如圖9所示??刂颇K負責產(chǎn)生電路所需的各類控制信號。數(shù)據(jù)移位寄存器將控制模塊送出的32位數(shù)據(jù)進行移位,形成3232位數(shù)據(jù),在數(shù)據(jù)線上準備好。當寫信號有效時,precharge信號無效,地址譯碼器將地址信號進行譯碼,將某列SRAM的WL線打開,將數(shù)據(jù)線上的數(shù)據(jù)寫入SRAM。寫操作完成后,precharge信號有效,將SRAM的data和datan拉高。當讀操作有效時,precharge信號無效,地址譯碼器將地址信號進行譯碼,將某列SRAM的WL線打開,將該列SRAM中存儲的數(shù)據(jù)讀出,再通過移位寄存器返回控制模塊。讀操作完成后,precharge信號有效,將SRAM的data和datan拉高。
圖4 SRAM實現(xiàn)版圖
圖5 寫“1”仿真波形
圖6 寫“0”仿真波形
圖7 讀“1”仿真波形
圖8 讀“0”仿真波形
圖9 電路簡化模塊圖
由于電路的規(guī)模比較大,而且涉及的模擬單元比較多,為了方便整體電路功能的仿真驗證,我們?yōu)樗械哪M單元編寫了用verilog語言描述的行為級模型。其中在SRAM的行為描述中,為了讀寫數(shù)據(jù)的不沖突,將BIT和BITN設置成了弱驅(qū)動。
我們采用JTAG模式對電路輸入32位數(shù)據(jù),分別對兩列SRAM進行讀/寫操作,NC-verilog仿真波形如圖10所示。
圖10 整體電路仿真波形
我們根據(jù)foundry提供的40 nm工藝的NMOS、PMOS管的SPICE模型,分別對采用不同閾值的MOS管構造靜態(tài)存儲器SRAM產(chǎn)生的待機漏電電流進行了仿真比較,提出了一種采用高閾值MOS管的漏電電流較小的SRAM單元結(jié)構,并設計完成了讀寫控制電路以及地址譯碼電路,同時為了大規(guī)模電路仿真和驗證的需求,為SRAM單元以及相關模擬電路用verilog語言編寫了行為模型,完成了整體電路的仿真。
[1] 王媛媛,王子歐,張立軍. 一種適用于小尺寸工藝的SRAM單元設計[J]. 蘇州大學學報,2012,32(3):51-55.
[2] SteevinckE, List FJ. Static-noise margin analysis of MOS SRAM cells[J]. IEEE JSSC,1987, 22(5): 748-754.
[3] MoshovosA,FalsafiB,NajmFN,et al. A case for asymmetriccell cache memories[J]. IEEE Transactions on Very Large Scale Integration System, 2005, 13(7): 877-811.