王 文,曹 靚,王 棟
(中國電子科技集團公司第五十八研究所,江蘇無錫 214072)
FPGA能夠為用戶提供大量高性能可編程資源,支持靈活的現(xiàn)場可編程能力。因為其集成度高、靈活性高、開發(fā)周期短、可靠性高等特性,在電子系統(tǒng)領(lǐng)域得到越來越廣泛的應(yīng)用,成為電子系統(tǒng)中的一個關(guān)鍵器件。在FPGA電路中,為了實現(xiàn)數(shù)據(jù)的快速存取,需要采用片上SRAM來滿足數(shù)據(jù)的存儲需要,同時提高數(shù)據(jù)訪問的效率。
傳統(tǒng)的SRAM設(shè)計以及各個工藝廠提供的SRAM IP,都是定制化的SRAM存儲器。其數(shù)據(jù)位寬、存儲數(shù)據(jù)的數(shù)量都是固定的。FPGA作為通用的可編程器件,應(yīng)用于各種不同數(shù)據(jù)、信號處理領(lǐng)域,可能需要存儲不同位寬和不同數(shù)量的數(shù)據(jù),所以傳統(tǒng)的SRAM設(shè)計難以滿足FPGA高靈活性的需求,無法在各種不同的應(yīng)用需求下保持較高的資源利用率。本文提出了一種用于FPGA的片上可配置SRAM存儲器設(shè)計,可以根據(jù)用戶的需要自主配置SRAM的數(shù)據(jù)位寬和存儲容量,從而提高存儲器資源的利用效率。
根據(jù)FPGA設(shè)計的需要,設(shè)計的可配置SRAM總?cè)萘繛?608 Bits。在實際使用時可以通過配置分別實現(xiàn) 128×36、256×18、512×9、1 k×4、2 k×2、4 k×1 共 6 種存儲方式。設(shè)計的可配置SRAM為雙端口存儲器,具有一個讀端口和一個寫端口。2個端口完全獨立,可以同時對存儲器進行訪問,同時兩個端口的配置模式完全獨立,根據(jù)實際需要和配置可以實現(xiàn)不同的寫入數(shù)據(jù)位寬和讀出數(shù)據(jù)位寬。寫端口和讀端口數(shù)據(jù)位寬的配置通過WW<2∶0>和RW<2∶0>來進行控制。位寬配置如表1所示。
表1 RW、WW值和配置結(jié)果
可配置SRAM中,不同位寬、不同存儲容量的控制由RW和WW來配置,具體分別由寫控制電路和讀控制電路來實現(xiàn),寫電路根據(jù)位寬配置和地址信號控制對應(yīng)的數(shù)據(jù)寫入存儲陣列中,讀出電路讀出數(shù)據(jù)后控制選擇對應(yīng)位寬和地址的數(shù)據(jù)輸出。
傳統(tǒng)的SRAM設(shè)計一般采用6個晶體管構(gòu)成的6T SRAM單元,電路結(jié)構(gòu)如圖1所示。傳統(tǒng)的SRAM單元以6T SRAM單元為核心結(jié)構(gòu),包括2個互相耦合的反相器以及2個訪問管。寫訪問時,兩根位線BL和BLN根據(jù)寫入的數(shù)據(jù)分別驅(qū)動到VDD或者GND,訪問管的控制信號WL字線跳變到高電平,訪問管被打開,存儲節(jié)點Q和QN通過寫訪問管被拉到位線BL/BLN的電平,數(shù)據(jù)被寫入存儲單元中。讀訪問時兩根位線BL和BLN都被預(yù)充到VDD。字線WL被驅(qū)動到VDD電平,打開訪問管。當(dāng)Q存儲低電平時,BL的電平通過訪問管下拉,和BLN之間形成電壓差,通過靈敏放大器讀出。圖1所示的6T SRAM單元是一種比率特性的單元結(jié)構(gòu),晶體管的讀穩(wěn)定性、寫穩(wěn)定性和靜態(tài)噪聲容限受到單元中晶體管尺寸比率的極大限制[1-2]。
圖1 傳統(tǒng)的6T SRAM單元結(jié)構(gòu)
6T SRAM單元結(jié)構(gòu)中,讀穩(wěn)定性和寫穩(wěn)定性對SRAM單元期間尺寸比率的要求相互沖突,導(dǎo)致單元在低壓和先進工藝中難以實現(xiàn)良好的穩(wěn)定性[3-4]。
為了便于在不同數(shù)據(jù)位寬下能夠靈活控制寫入的數(shù)據(jù),在可配置SRAM中設(shè)計了如圖2所示的SRAM存儲單元。
圖2 可配置SRAM的存儲單元電路
當(dāng)存儲單元中存儲數(shù)據(jù)1,Q節(jié)點存儲VDD電平,QN節(jié)點存儲GND電平,寫字線WLA被驅(qū)動到高電平,打開寫訪問管MN2和MN3;寫位線BLA/BLAN被驅(qū)動到VDD/VDD,寫位線BLAN通過寫訪問管MN3將對QN節(jié)點充電,將QN電平上拉。由于BLA為VDD電平,所以Q節(jié)點電平VDD保持不變。Q點高電平使得下拉管MN0導(dǎo)通,對QN節(jié)點放電,將QN節(jié)點電平下拉。從圖2和表2中的晶體管尺寸可知,下拉管MN0的尺寸要大于寫訪問管MN3的尺寸。所以,QN一直保持較低的電平,不會發(fā)生翻轉(zhuǎn)。在寫操作結(jié)束后,訪問管MN2/MN3關(guān)閉,QN的電平恢復(fù)到GND,存儲單元的數(shù)據(jù)保持不變。
表2 可配置SRAM單元器件尺寸
圖2所示的存儲單元在SMIC 0.15 μm工藝下,設(shè)計的晶體管尺寸如表2所示。經(jīng)過特定設(shè)計,該存儲單元具有2個重要的特性。
(1)寫訪問中,當(dāng)BLA/BLAN都為VDD時,可以保證存儲單元中的數(shù)據(jù)不發(fā)生改變。當(dāng)存儲單元中存儲數(shù)據(jù)1,Q點為VDD電平,QN點為GND電平。WLA被驅(qū)動到VDD,2個寫訪問管打開,BLA/BLAN=VDD/VDD。寫位線BLAN通過寫訪問管MN3對QN節(jié)點充電,將QN的電平向上拉。但是由于BLA電平為VDD,使得Q點的電平保持VDD。下拉管MN0導(dǎo)通,將QN節(jié)點電壓下拉。由于下拉管MN0的尺寸和驅(qū)動能力要強于訪問管MN3,使得QN節(jié)點保持在低電平。在結(jié)束寫訪問后,2個訪問管MN2/MN3關(guān)閉,QN節(jié)點恢復(fù)到GND電平。存儲單元中存儲的數(shù)據(jù)保持不變。
(2)采用圖2中所示的2個PMOS管的讀出訪問結(jié)構(gòu),在讀出操作時BLB/BLBN上的充放電不影響存儲節(jié)點Q和QN的電平狀態(tài),存儲單元可以保持理想的讀穩(wěn)定性,且不受晶體管尺寸的影響。所以,該存儲單元結(jié)構(gòu)不存在讀穩(wěn)定性和寫穩(wěn)定性的沖突,可以將寫訪問管的尺寸減小,獲得良好的寫穩(wěn)定性[3-4],如圖2所示。同時,由于讀訪問電路不影響存儲單元的穩(wěn)定性,所以設(shè)計的讀訪問電路的器件尺寸較大,可實現(xiàn)高的訪問速度。
寫控制電路由 WW<2∶0> 和 WA<4∶0> 來實現(xiàn)對數(shù)據(jù)位寬和存儲深度的控制??膳渲肧RAM中由寫控制電路實現(xiàn)對寫數(shù)據(jù)的選擇,實現(xiàn)寫入不同位寬的數(shù)據(jù)到存儲器中,同時根據(jù)位寬調(diào)整SRAM的深度。SRAM中最大的數(shù)據(jù)位寬為36 Bit,所以設(shè)計了36個寫驅(qū)動電路,可以最多一次寫入36 Bit數(shù)據(jù)。寫驅(qū)動電路如圖3所示。每一個寫驅(qū)動電路輸入6個數(shù)據(jù),分別對應(yīng)6種不同的數(shù)據(jù)位寬,根據(jù)數(shù)據(jù)位寬選擇其中之一。同時寫驅(qū)動電路包括一個使能信號wrOE進行控制,wrOE為0時,所有4組位線對全部驅(qū)動到VDD/VDD。寫驅(qū)動電路輸出4組位線對,有4選1的列選擇信號進行選擇。沒被選中的列的BLA/BLAN被驅(qū)動到VDD/VDD,因而寫操作時不改變存儲單元的數(shù)據(jù)。
圖3 寫驅(qū)動電路
6種數(shù)據(jù)位寬的指示控制信號wriWidCon<5∶0>由配置信號WW<2∶0>譯碼產(chǎn)生,寫驅(qū)動電路的使能信號wrOE<35∶0>由位寬指示信號和寫地址 WA<4∶0>控制產(chǎn)生,如圖4所示。存儲器用WW<2∶0>來配置數(shù)據(jù)位寬,同時用WA<4∶0>來實現(xiàn)對存儲深度的擴展。當(dāng) WW<2∶0>=3’b010 時,數(shù)據(jù)位寬為 9 Bit,WA<4∶3>有效,控制將存儲器的存儲深度從128個擴展為512個數(shù)據(jù)。WW<2∶0>=3’b011 時,數(shù)據(jù)位寬為 1 Bit,WW<4∶0>將存儲深度擴展為4 k個,可以獨立寫入4 k個1 Bit數(shù)據(jù)到存儲陣列中。存儲器控制器根據(jù)配置提供相應(yīng)位寬的寫入數(shù)據(jù)。
圖4 寫位寬控制電路
SRAM的讀控制電路包括36個靈敏放大器電路,每個讀訪問讀出36 Bit數(shù)據(jù)。讀出的36 Bit數(shù)據(jù)由讀位寬控制電路根據(jù)讀位寬RW<2∶0>和地址RA<4∶0>進行選擇。其中靈敏放大器基于鎖存型靈敏放大器的結(jié)構(gòu)[5-6],實現(xiàn)高速度和高的判斷準(zhǔn)確率。在典型的鎖存靈敏放大器結(jié)構(gòu)上進行改進,增加了對讀位線的選擇部分,如圖5所示。
圖5 鎖存型靈敏放大器電路
每個靈敏放大器實現(xiàn)對4對讀位線檢測數(shù)據(jù),由列選擇信號選擇一對讀位線傳輸?shù)芥i存型靈敏放大器的輸入端。靈敏放大器使能信號OE1和OE2都被驅(qū)動到GND時,讀位線對上的電壓差傳輸?shù)浇徊骜詈系姆聪嗥鞯妮斎攵?,被放大到邏輯電平,讀出數(shù)據(jù)。數(shù)據(jù)讀出后,由位寬控制電路進行數(shù)據(jù)輸出選擇,電路如圖6所示的36-9 Bit讀位寬控制電路和圖7所示的4-1 Bit讀位寬控制電路兩個部分。其中36-9 Bit位寬控制電路每4個靈敏放大器對應(yīng)1個,總共9個,實現(xiàn)輸出36 Bit、2個18 Bit或4個9 Bit數(shù)據(jù)的輸出。
圖6所示的1個36-9 Bit讀位寬控制電路包括4級。第一級根據(jù)位寬配置和地址RA<4∶0>實現(xiàn)輸出4 Bit數(shù)據(jù),2種2 Bit數(shù)據(jù),4種1 Bit數(shù)據(jù),總共實現(xiàn)7種不同的數(shù)據(jù)輸出。第二級,MUX數(shù)據(jù)選擇實現(xiàn)Pipeline模式和Flowthough模式兩種讀出模式的選擇。數(shù)據(jù)經(jīng)過DFF寄存則為Pipeline流水線模式,數(shù)據(jù)增加一級時鐘延時,但相對讀時鐘的延時小,適合于高速系統(tǒng)。數(shù)據(jù)不經(jīng)過DFF寄存,則實現(xiàn)Flowthough模式,數(shù)據(jù)直接輸出,總讀出延時小。第三級,根據(jù)讀位寬配置,鎖存輸出數(shù)據(jù)或者輸出高阻。第四級電路,選擇1 Bit數(shù)據(jù)輸出。輸出的9 Bit數(shù)據(jù)中低8位提供給后面的4-1 Bit位寬控制電路。
圖6 36-9 Bit讀位寬控制電路
圖7 4-1 Bit讀位寬控制電路
圖7 所示的4-1 Bit讀出數(shù)據(jù)位寬控制電路,將8個輸入數(shù)據(jù)根據(jù)讀位寬配置,控制輸出2個4 Bit、4個2 Bit或8個1 Bit輸出數(shù)據(jù)。最后,存儲器控制器讀出相應(yīng)位寬的數(shù)據(jù)。
可配置SRAM根據(jù)配置,可實現(xiàn)6種寫位寬和6種讀位寬。根據(jù)可配置SRAM的電路設(shè)計,6種位寬對應(yīng)的數(shù)據(jù)位如表3所示。
表3 數(shù)據(jù)位寬和對應(yīng)的數(shù)據(jù)位
當(dāng)寫位寬和讀位寬相同時,對應(yīng)的寫入數(shù)據(jù)位和讀出數(shù)據(jù)位也相同,固定為特定的數(shù)據(jù)位。存儲器的控制器根據(jù)數(shù)據(jù)位寬的配置以及表3中的數(shù)據(jù)位,寫操作時對寫數(shù)據(jù)總線的特定位傳輸數(shù)據(jù),讀操作時讀取讀數(shù)據(jù)總線的特定位。
當(dāng)位寬小于36 Bit時,則需要利用WA<4∶0>和RA<4∶0>來進一步控制數(shù)據(jù)的地址。如讀取9 Bit數(shù)據(jù)中的2個4 Bit數(shù)據(jù),則需要RA<2>來進一步選擇。
在SMIC 0.15 μm工藝下,對設(shè)計的片上可配置SRAM進行仿真驗證,利用Hsim進行仿真。將寫數(shù)據(jù)配置為 9 Bit數(shù)據(jù)位寬,WW<2∶0>=3’b011。讀出時,先按照9 Bit數(shù)據(jù)位寬進行讀出,然后按照4 Bit進行讀出,分別讀出2個4 Bit數(shù)據(jù),片上數(shù)據(jù)輸出端加負載0.5 pF。仿真結(jié)果如圖8~10所示。
圖8 寫位寬控制和寫電路使能仿真結(jié)果
圖9 讀操作靈敏放大器控制信號和輸出
如圖8所示為寫位寬控制信號和對36個寫電路的使能信號。WW<2∶0>=3’b011,位寬控制為第四種,wriWid<5∶0>=6’h08,9 Bit寫數(shù)據(jù)位寬。wrOE<35∶0>控制在36個寫電路中選擇開啟9個寫電路,高電平有效。
如圖9所示為讀出靈敏放大器的控制信號和輸出。在讀時鐘信號reCLK上升沿時,讀譯碼使能信號和靈敏放大器開啟信號產(chǎn)生一個上升脈沖信號。讀字線驅(qū)動到GND電平,打開存儲單元,對讀位線充電。在靈敏放大器開啟信號Read_A的高脈沖期間,對讀位線BL/BLN的電壓差狀態(tài)進行讀出,輸出有效的邏輯數(shù)據(jù)。
圖10 讀寫數(shù)據(jù)仿真結(jié)果
圖10中的仿真結(jié)果顯示,先寫入9 Bit數(shù)據(jù),然后對相同的地址讀出4 Bit數(shù)據(jù),分別讀出2個4 Bit。其中9 Bit數(shù)據(jù)的最高位無法讀出。仿真結(jié)果顯示,讀出的2個4 Bit數(shù)據(jù)即為9 Bit數(shù)據(jù)中的低8 Bit數(shù)據(jù)。直通模式讀訪問,在SMIC 150 nm工藝下,輸出片上負載500 fF讀出數(shù)據(jù)的延時如表4所示。
表4 片上可配置SRAM讀出延時
傳統(tǒng)的SRAM中,36 Bit位寬的結(jié)構(gòu)即使是采用字節(jié)寫特殊功能,也最多能實現(xiàn)36 Bit、18 Bit和9 Bit的數(shù)據(jù)位寬。當(dāng)需要存儲和訪問4 Bit數(shù)據(jù)時,存儲器中存儲資源的有效利用率為44.4%。存儲和訪問2 Bit數(shù)據(jù)時存儲資源的有效利用率為22.2%,難以滿足FPGA適應(yīng)各種不同需求的靈活性要求。
而可配置SRAM中,如表2所示,當(dāng)位寬為36 Bit、18 Bit和9 Bit時,存儲器的總?cè)萘繛?608 Bit,當(dāng)位寬為4 Bit、2 Bit和1 Bit時,存儲器的總?cè)萘繛?096 Bit。此時,存儲器中存儲資源的有效利用率為88.9%。
針對傳統(tǒng)SRAM結(jié)構(gòu)難以滿足FPGA適應(yīng)各種不同數(shù)據(jù)位寬應(yīng)用需求的問題,我們設(shè)計了一種用于FPGA的可配置SRAM存儲器,可以根據(jù)用戶實際使用的需要,對SRAM的數(shù)據(jù)位寬進行配置,同時自動調(diào)整存儲器存儲的深度,在低數(shù)據(jù)位寬時能夠存儲更多的數(shù)據(jù),在各種位寬配置下都能保證存儲資源的有效利用率在88.9%以上。仿真結(jié)果表明,存儲器能夠?qū)崿F(xiàn)對位寬的配置,可以實現(xiàn)寫入位寬和讀出位寬獨立配置。在SMIC 0.15 μm工藝、TT工藝角下,存儲器直通模式下讀出延時為1.67 ns,實現(xiàn)了很高的訪問速度。
參考文獻:
[1]Cheng W,Chung Y.Bit-area efficient embedded pseudo-SRAM utilizing dual-threshold hybrid 2T gain cell[J].IET Circuits,Devices&Systems,2014,8(2)∶107-117.
[2]Andrei Pavlov.CMOS SRAM Circuit Design and Parametric Test in Nano-Scale Technologies[M].Springer,2008∶13-21.
[3]Lin S,Kim Y B,Lombardi F.Design and Analysis of a 32 nm PVT Tolerant CMOS SRAM Cell for Low Leakage and High Stability[J].INTEGRATION,the VLSI Journal,2010,43(2)∶176-187.
[4]Andrei Pavlov.Design and Test of Embedded SRAMs[D].Thesis of PhD.University of Waterloo,Ontario,Canada,2005.
[5]Wicht B,Nirshl T,Schmitt-Landsiedel D.Yield and Optimization of a Latch-Type Voltage Sense Amplifer[J].IEEE Journal of Solid-State Circuits,2004,39(7)∶1148-1158.
[6]Wicht B,Nirshl T,Schmitt-Landsiedel D.A Yield-Optimized Latch-Type SRAM Sense Amplifer.In∶Solid-State Circuits Conference[C].2003,ESSCIRC’03.Proceedings of the 29thEuropean,IEEE,2003∶409-412.