一種基于FPGA 的嵌入式塊SRAM 的設(shè)計(jì)
A11∶8>_DEC與A7 譯碼均為低有效,A6譯碼為高有效。之所以能夠用或門譯碼,是因?yàn)闆]被譯碼的一對(duì)BL 和BLN 位線上的數(shù)據(jù)是不會(huì)被寫入存儲(chǔ)單元的,如A70>為1,A11∶8>_DEC為1,BL0>與BLN0>均為1,即使字線打開了,它們也是不會(huì)被寫入存儲(chǔ)陣列的。而被譯碼選中的一對(duì)位線,BL與BLN 互補(bǔ),它們上的數(shù)據(jù)即可被寫入存儲(chǔ)單元。
3.2.3 位線充電電路
對(duì)位線的充電共有兩對(duì)充電管和一對(duì)上拉管,寬長(zhǎng)比在設(shè)計(jì)上也是有講究的。上拉管一直開啟,為倒比管。柵極接平衡管的M1 和M2 時(shí)序要求較高,因?yàn)樗鼈兊膶掗L(zhǎng)比較大,為主要充電管。在BRAM總使能信號(hào)ENA和時(shí)鐘CLK有效時(shí)工作,進(jìn)行預(yù)充電。在CLK 下降沿,M1 和M2 短暫關(guān)閉可執(zhí)行讀操作。M1、M2和平衡管都在Pre1_BL信號(hào)控制下工作。
Pre1_BL 需在數(shù)據(jù)線與位線之間的開關(guān)管打開時(shí)關(guān)閉,不影響數(shù)據(jù)的讀操作。Pre1_BL信號(hào)受到數(shù)據(jù)線與位線的開關(guān)管控制信號(hào)A 的約束,圖4 的結(jié)構(gòu)即可避免Pre1_BL與A的時(shí)序沖突,在A有效時(shí),Pre1_BL無(wú)效,且當(dāng)A 關(guān)閉時(shí),Pre1_BL 延遲開啟。
而M3 和M4 管則由Pre2_BL信號(hào)控制,Pre2_BL由BRAM全局信號(hào)ENA、CLK 和WE 一起控制。由于BRAM 在進(jìn)行寫操作時(shí),也可鏡像地輸出寫入的數(shù)據(jù),即也做了讀操作。為了更好地在寫入時(shí)也讀出,且滿足頻率要求,有必要增加這一充電管。
圖5 Pre1_BL 信號(hào)產(chǎn)生電路
圖6 位線充電電路
4 BRAM應(yīng)用
作為隨機(jī)存取存儲(chǔ)器,BRAM 除了實(shí)現(xiàn)一般的存儲(chǔ)器功能外,還可實(shí)現(xiàn)不同數(shù)據(jù)寬度的存儲(chǔ),且可用作ROM,以實(shí)現(xiàn)組合邏輯函數(shù)。當(dāng)初始化了BRAM后,一組地址輸入就對(duì)應(yīng)了一組數(shù)據(jù)的輸出,根據(jù)數(shù)據(jù)和地址的對(duì)應(yīng)關(guān)系,就能實(shí)現(xiàn)一定的函數(shù)功能,BRAM 之所以能實(shí)現(xiàn)函數(shù)邏輯,原因是它擁有足夠的存儲(chǔ)單元,可以把邏輯函數(shù)所有可能的結(jié)果預(yù)先存入到存儲(chǔ)單元中。如實(shí)現(xiàn)4 × 4 二進(jìn)制乘法器:
即由地址來(lái)查找數(shù)據(jù),如同LUT。在FPGA 中,還可用BRAM來(lái)實(shí)現(xiàn)FIFO中的存儲(chǔ)體模塊,CLB實(shí)現(xiàn)控制邏輯,設(shè)計(jì)緊湊,小巧靈活。
圖7 4 位乘法器
5 結(jié)論
如今系統(tǒng)越來(lái)越高級(jí),數(shù)字電路也高度集成,存儲(chǔ)器也越來(lái)越多地應(yīng)用于嵌入式芯片中。本文設(shè)計(jì)了一種應(yīng)用于FPGA 的嵌入式存儲(chǔ)器結(jié)構(gòu),符合一般的雙端SRAM 功能,且具有FPGA 功能塊的可配置選擇,靈活性很高。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論