<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA 的嵌入式塊SRAM 的設計

          基于FPGA 的嵌入式塊SRAM 的設計

          作者: 時間:2011-02-24 來源:網絡 收藏

            譯碼所得的A11∶8>_DEC0∶15>即可實現片選存儲。當配置為1 位時,4 位地址均有效,譯出的16位中只有1 位有效,只能選擇16 片中的1 片。當配置為2 位時,ADDR11>使能無效,譯出16位中有連續(xù)2 位有效,能選擇16 片中連續(xù)2 片。當配置為4 位時,譯出16 位中有連續(xù)4 位有效,能選擇16 片中連續(xù)4 片。配置為8 位就能選擇16 片中的上8 片或下8 片。配置為16 位,4 個地址均無效,譯出的16 位全有效,16 片全選。經過了片選的一級譯碼,列譯碼還需經過第二級的片內譯碼。

           片內譯碼

          圖4 片內譯碼

            A11∶8>_DEC與A7 譯碼均為低有效,A6譯碼為高有效。之所以能夠用或門譯碼,是因為沒被譯碼的一對BL 和BLN 位線上的數據是不會被寫入存儲單元的,如A70>為1,A11∶8>_DEC為1,BL0>與BLN0>均為1,即使字線打開了,它們也是不會被寫入存儲陣列的。而被譯碼選中的一對位線,BL與BLN 互補,它們上的數據即可被寫入存儲單元。

            3.2.3 位線充電電路

            對位線的充電共有兩對充電管和一對上拉管,寬長比在設計上也是有講究的。上拉管一直開啟,為倒比管。柵極接平衡管的M1 和M2 時序要求較高,因為它們的寬長比較大,為主要充電管。在BRAM總使能信號ENA和時鐘CLK有效時工作,進行預充電。在CLK 下降沿,M1 和M2 短暫關閉可執(zhí)行讀操作。M1、M2和平衡管都在Pre1_BL信號控制下工作。

            Pre1_BL 需在數據線與位線之間的開關管打開時關閉,不影響數據的讀操作。Pre1_BL信號受到數據線與位線的開關管控制信號A 的約束,圖4 的結構即可避免Pre1_BL與A的時序沖突,在A有效時,Pre1_BL無效,且當A 關閉時,Pre1_BL 延遲開啟。

            而M3 和M4 管則由Pre2_BL信號控制,Pre2_BL由BRAM全局信號ENA、CLK 和WE 一起控制。由于BRAM 在進行寫操作時,也可鏡像地輸出寫入的數據,即也做了讀操作。為了更好地在寫入時也讀出,且滿足頻率要求,有必要增加這一充電管。

          Pre1_BL 信號產生電路

           圖5 Pre1_BL 信號產生電路

           位線充電電路

          圖6 位線充電電路

            4 BRAM應用

            作為隨機存取存儲器,BRAM 除了實現一般的存儲器功能外,還可實現不同數據寬度的存儲,且可用作ROM,以實現組合邏輯函數。當初始化了BRAM后,一組地址輸入就對應了一組數據的輸出,根據數據和地址的對應關系,就能實現一定的函數功能,BRAM 之所以能實現函數邏輯,原因是它擁有足夠的存儲單元,可以把邏輯函數所有可能的結果預先存入到存儲單元中。如實現4 × 4 二進制乘法器:


            即由地址來查找數據,如同LUT。在 中,還可用BRAM來實現FIFO中的存儲體模塊,CLB實現控制邏輯,設計緊湊,小巧靈活。


          圖7 4 位乘法器

            5 結論

            如今系統(tǒng)越來越高級,數字電路也高度集成,存儲器也越來越多地應用于芯片中。本文設計了一種應用于存儲器結構,符合一般的雙端 功能,且具有 功能塊的可配置選擇,靈活性很高。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          關鍵詞: FPGA SRAM 嵌入式

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();