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