1 引言 FPGA的片上存儲資源有兩種實(shí)現方式:細粒式和粗粒式。所謂細粒式,是指每個(gè)基本邏輯單元可以配置成一個(gè)小的存儲器.若干個(gè)小存儲器冉通過(guò)合并進(jìn)行擴展。它不需要額外邏輯,但存儲密度較低,適用于存儲需求不多的應用。而粗粒式,就是將大容量的存儲器模塊嵌入到FPGA芯片中作為專(zhuān)用存儲單元,與細粒式相比具有存儲密度高的優(yōu)點(diǎn),適用于數據處理等需要大量片上存儲空間的情況。隨著(zhù)FPGA應用日益廣泛,大容量存儲需求越來(lái)越多,嵌入式存儲器模塊因此已經(jīng)成為FPGA芯片中十分重要的資源。并且與普通存儲器相比,它們具有更靈活的可配置性。 本文所設計的存儲器模塊是我們FPGA芯片的一部分,其功能、結構、布局都為整個(gè)芯片服務(wù)。它是一個(gè)基于0.13微米CMOS工藝的同步18Kb雙端口存儲器,可以配置成為ROM或SRAM,每個(gè)端口支持6種數據寬度和3種寫(xiě)入模式,并且可以選擇控制信號的極性,對每個(gè)輸出端口獨立地進(jìn)行置0/置1操作。在應用中,多個(gè)存儲器模塊可以通過(guò)合并實(shí)現深度或寬度的擴展,也可以作為FIFO或大的查找表使用。 2 存儲器模塊的設計 2.1層次結構 從FPGA芯片的角度,該電路分為邏輯層和配置層,如圖1所示。邏輯層是一個(gè)靜態(tài)存儲器,有A和B兩個(gè)獨立的端口。en為片選信號,we為讀寫(xiě)控制信號,ssr為間步預置控制信號。配置層的作用是為邏輯層提供配置信號,從而選擇存儲模塊的配置模式。每個(gè)配置信號對應配置層的一個(gè)6管配置單元,在FPGA初始化階段被賦值后送到邏輯層。 2.2存儲單元 存儲單元采用圖2(a)所示的8管雙端口結構,每個(gè)端口對應一條的字線(xiàn)和一對位線(xiàn)。當字線(xiàn)電位拉高時(shí),對應的兩個(gè)NMOS管打開(kāi),數據通過(guò)位線(xiàn)寫(xiě)入或者讀出。作為ROM使用時(shí),為了實(shí)現對存儲單元的初始化,必須提供一個(gè)從配置層到存儲單元的數據通道。我們的實(shí)現方式如圖2(b)所示,即在A(yíng)端口增加字線(xiàn)、位線(xiàn)選擇器。awl_lgc、abl_lgc為邏輯層中A端I=I的字線(xiàn)和位線(xiàn),cfgwl、cfgbl為來(lái)自配置層的字線(xiàn)和位線(xiàn)。當模式選擇信號modesel為低電位時(shí),配置層的字線(xiàn)和位線(xiàn)通過(guò),完成對存儲器的初始化。反之,邏輯層的字線(xiàn)和位線(xiàn)通過(guò),該存儲器即為普通靜態(tài)存儲器。 ![]() 圖1存儲器模塊層次結構 ![]() 圖2 存儲單元設計 ![]() 圖3三種寫(xiě)入模式示意圖 該存儲器模塊有三種寫(xiě)入模式,對應進(jìn)行寫(xiě)操作時(shí)輸出端口的三種狀態(tài)(圖3)。Read_First表示在寫(xiě)入新的數據之前,先把存儲單元中舊的數據讀出來(lái),即在一個(gè)時(shí)鐘周期內完成先讀后寫(xiě)兩步操作;Write_First表示寫(xiě)入的數據同時(shí)也是讀出的數據;Nochange表示在寫(xiě)操作過(guò)程中輸出端口狀態(tài)保持不變。Read First是默認模式,其實(shí)現的關(guān)鍵在于下面介紹的預充電電路。 因為讀寫(xiě)操作都必須經(jīng)過(guò)位線(xiàn),為了實(shí)現一個(gè)時(shí)鐘周期內先讀后寫(xiě)的功能,讀和寫(xiě)就必須在兩個(gè)不同的時(shí)間窗121進(jìn)行。為此設計如圖4(a)的預充電電路。dw、dwn是準備寫(xiě)入的數據,由輸入信號經(jīng)過(guò)一定邏輯產(chǎn)生;dr、dm是準備讀出的數據,經(jīng)過(guò)靈敏放大器等電路處理后送到輸出端。yi為預充電控制信號,rdctl為讀控制信號,wtcd為寫(xiě)控制信號,它們的時(shí)序關(guān)系如圖4(b)所示。yi為低電平期間兩條位線(xiàn)都被拉到VDD,讀寫(xiě)操作均被關(guān)閉。vi的高電平窗121約為0.5ns,此間先用半個(gè)窗口時(shí)間進(jìn)行讀操作(rdcfl拉低),再用后半個(gè)窗口時(shí)間進(jìn)行寫(xiě)操作(wIctl拉低)。這樣讀出的時(shí)候寫(xiě)入路徑關(guān)閉,寫(xiě)入的時(shí)候讀出路徑關(guān)閉,從而實(shí)現了先讀舊數據后寫(xiě)新數據的目的。 ![]() 圖4預充電電路 ![]() 圖5數據寬度選擇電路 2.4數據寬度選擇電路 經(jīng)過(guò)圖5所示的電路,存儲器模塊可以實(shí)現6種數據寬度的選擇(16Kxl,8Kx2.4Kx4。2Kx9,1Kxl8,5 12x36)。其中,每一個(gè)多路選擇器(MUX)由一位地址信號控制,起到地址譯碼的作用。寫(xiě)數據時(shí),總線(xiàn)選擇陣列從36個(gè)輸入數據中選出需要的數據,經(jīng)過(guò)多路選擇器的地址譯碼,寫(xiě)入相應的存儲單元。讀數據時(shí),每個(gè)多路選擇器或者輸出所需要的數據或者保持高阻狀態(tài),這些數據進(jìn)入總線(xiàn)選擇陣列并送到對應的輸出端口。所有數據寬度模式復用36個(gè)輸入端和36個(gè)輸出端,不同模式占用的端口不同。對于512x36模式,所有端口均被利用,但是對寬度小于36的模式就必然存在多余端口。為了避免這些不用的端口浮空可能引起的電路不穩定性,在使用時(shí)它們會(huì )被自動(dòng)接到VDD或GND。 3 驗證方法和結果 由于本文所設計的存儲器模塊信號數量多、工作模式的組合多樣,我們采用行為級仿真工具M(jìn)odelsim和晶體管級仿真工具Hsim協(xié)同仿真的方式對其進(jìn)行驗證。利用行為級仿真可以方便觀(guān)察電路的功能是否實(shí)現,加速驗證進(jìn)度,特別是當驗證電路擴展到存儲器陣列甚至整個(gè)FPGA芯片的時(shí)候。而通過(guò)晶體管級的仿真可以得到詳細而比較精確的時(shí)序參數,例如上升/下降時(shí)間、延時(shí)等。圖6為Modelsim中A端口Read_First和Write 兩種寫(xiě)操作模式的仿真波形,從中可以清楚地看出二者的特點(diǎn)和區別。 ![]() 圖6仿真波形 訪(fǎng)問(wèn)時(shí)間是存儲器性能的重要指標,我們選擇位于位線(xiàn)結構頂端的存儲單元作為關(guān)鍵路徑進(jìn)行讀寫(xiě)操作,測定數據在輸出端的有效時(shí)間相對時(shí)鐘上升沿的延遲。因為不同數據寬度模式下信號經(jīng)過(guò)的路徑長(cháng)短不同,它們的延遲也必然不同。仿真結果顯示:512x36模式下延遲時(shí)間最短為1.75ns,16Kxl模式下延遲時(shí)間最長(cháng)為2.7ns,與理論上一致。 4 版圖實(shí)現 我們以全定制的方式完成了該模塊的核心版圖部分,如圖7所示,稱(chēng)之為存儲器核。存儲單元陣列被分成兩部分,由位于中間的譯碼器和控制電路隔開(kāi)。圖中標示了主要功能模塊的相對位置。根據整個(gè)FPGA芯片的規劃,金屬層的分配方案如下:所有邏輯電路使用1至4層金屬,5和6層金屬則專(zhuān)用于配置層的字線(xiàn)和位線(xiàn)。 該存儲器模塊最終將應用到一系列FPGA芯片中。為了能與周?chē)ǖ滥K進(jìn)行無(wú)縫拼接,特定的芯片結構對存儲器模塊的端口位置有特定的要求。因此,需要根據芯片參數對上述存儲器核進(jìn)行布線(xiàn)包裝,把與周?chē)K相連的信號引到相應的位置。為了提高效率,我們采用Synopsys的自動(dòng)布局布線(xiàn)工具Astro來(lái)完成這一布線(xiàn)工作。用腳本命令從記錄芯片結構的文件中讀取必要參數,生成Astro所需文件,自動(dòng)布線(xiàn)完成后即得到適用于特定芯片的完整版圖,整個(gè)過(guò)程完全自動(dòng)化。圖8中深色部分即為自動(dòng)布線(xiàn)后產(chǎn)生的一個(gè)版圖,四周為FPGA通道模塊的示意圖(cbx,cby,sb)。 ![]() 圖7存儲器核版圖 ![]() 圖8一個(gè)包裝后的完整版圖 5 結論 本文介紹了一種0.13微米CMOS T藝下FPGA中嵌入式存儲器模塊的設計與實(shí)現。該模塊有兩個(gè)獨立端口,可以配置為只讀存儲器或靜態(tài)隨機存儲器,支持6種數據寬度和3種寫(xiě)入模式。采用行為級和晶體管級協(xié)同仿真的方法進(jìn)行驗證,表明電路性能良好。全定制設計完成的存儲器核,經(jīng)過(guò)自動(dòng)布局布線(xiàn)工具的包裝,得到了適用于特定芯片的完整版圖。 本文作者創(chuàng )新觀(guān)點(diǎn):本文設計的字線(xiàn)、位線(xiàn)選擇電路實(shí)現了配置層對存儲單元的初始化功能;獨特的預充電電路實(shí)現了一個(gè)時(shí)鐘周期內先讀后寫(xiě)的流水線(xiàn)模式;用自動(dòng)布局布線(xiàn)工具對全定制版圖進(jìn)行包裝處理的方法,對嵌入式模塊的設計有一定的啟發(fā)性。 作者:張會(huì ) 來(lái)源:《微計算機信息》(嵌入式與SOC)2009年第3-2期 |