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