一種基于FPGA 的嵌入式塊SRAM 的設計-設計應用_第1頁
一種基于FPGA 的嵌入式塊SRAM 的設計-設計應用_第2頁
一種基于FPGA 的嵌入式塊SRAM 的設計-設計應用_第3頁
一種基于FPGA 的嵌入式塊SRAM 的設計-設計應用_第4頁
一種基于FPGA 的嵌入式塊SRAM 的設計-設計應用_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯一種基于FPGA的嵌入式塊SRAM的設計-設計應用摘要:文章中提出了一種應用于FPGA的嵌入式可配置雙端口的塊存儲器。該存儲器包括與其他電路的布線接口、可配置邏輯、可配置譯碼、高速讀寫電路。在編程狀態下,可對所有存儲單元進行清零,且編程后為兩端口獨立的雙端存儲器。當與FPGA其他邏輯塊編程連接時,能實現FIFO等功能。基于2.5V電源電壓、chart0.22μmCMOS單多晶五鋁工藝設計生產,流片結果表明滿足工作頻率200MHz,可實現不同位數存儲器功能。

1引言

對于邏輯芯片的嵌入存儲器來說,嵌入式SRAM是常用的一種,其典型的應用包括片上緩沖器、高速緩沖存儲器、寄存器堆等。除非用到某些特殊的結構,標準的六管單元(6T)SRAM對于邏輯工藝有著很好的兼容性。對于小于2Mb存儲器的應用,嵌入式SRAM可能有更好的成本效率并通常首先考慮。

Xilinx公司SRAM型FPGA主要由配置存儲器、布線資源、可編程I/O、可編程邏輯單元CLB、塊存儲器BRAM和數字時鐘管理模塊組成。它包含了分布式RAM,位于CLB中。每個CLB包含了16×1bit的SRAM結構。BRAM的加入既增加了RAM的容量,也可構成大型LUT,更完善了CLB的功能。

2BRAM塊劃分

現代數字系統對存儲器容量的存儲速率要求越來越高,讀訪問時間就是一個重要參數,它是從地址信號的出現到存儲在該地址上的數據在輸出端出現的時間延遲。提高BRAM讀取速度的一個有效辦法是減小位線和字線上的總負載電容,這可以通過減少連接在同一字線和位線上的存儲單元數目來實現,即采用存儲陣列分塊技術。本電路采用設計多個BRAM的方法,每個BRAM都有自己的譯碼電路、敏感放大器和數據通道,各個BRAM獨立工作,每個BRAM的讀取時間得到了大大提高。

3BRAM塊設計

3.1BRAM與布線資源接口

FPGA中每個BRAM塊都嵌在內部連線結構中,與BRAM直接相連的有RAMLINE、VLONG和GLOBAL。左邊32根RAMLINE提供BRAM的地址輸入,也可以提供控制信號(CLK、WE、ENA、RST)的輸入。左邊兩組16根RAMLINE一起布線提供BRAM雙端口的數據輸入,右邊兩組RAMLINE提供BRAM雙端口數據輸出通道。4根GLOBLE全局時鐘線優化用作時鐘輸入,提供較短的延遲和的失真。VLONG也被專門用作BRAM中WE、ENA、RST的控制輸入。RAMLINE為BRAM專有布線,如從水平方向的SINGLE、UNIHEX、BIHEX通過可編程開關矩陣PSM把信號輸送到RAMLINE上,進而送到BRAM用作地址、數據。而BRAM的輸出也通過RAMLINE終送到HLONG上。

圖1BRAM周圍布線

相鄰BRAM的RAMLINE也可通過三態門連到下的RAMLINE,于是整列中的BRAM可共享RAMLINE上的數據。每個BRAM與FPGA其他電路的相連主要通過水平方向的4組主要互連線完成。

3.2BRAM內部設計

BRAM為真正的雙端口RAM,兩個端口完全獨立,每個端口可以配置為讀寫端口,并可以把BRAM配置成特定的數據寬度。

3.2.1可配置數據位寬實現方法

配置邏輯中三位控制信號WIDTH_SEL0∶2連到BRAM中,同時對地址寬度、數據寬度進行控制。

由于BRAM可以實現1、2、4、8、16位的任意位寬,所以地址總線寬度、數據總線寬度都必須滿足其中任意一種模式下的要求。于是設計時使地址總線寬度為各種模式下的值,即1位時的地址寬度11∶0,其他模式下可使不用的地址位使能無效,進而獲得所需的地址位。數據總線寬度也設置為各種情況下的值,即16位時的數據寬度15∶0,其他情況下選擇有用的數據位進行存儲。

表1可見WIDTH_SEL0∶2對地址使能的控制,主要在于對地址11∶8的控制,其他位地址7∶0則一直有效。

表1不同數據位寬的地址使能

由WIDTH_SEL0∶2另外譯碼產生一組數據控制信號,分別為S_1、S_2、S_4、S_8、S_16控制數據如何分配到位線上。這當中*根位線實行了分片,每片4根:

S_1有效:DI0可分配到16片中的任何一片上。

S_2有效:DI0∶1可分配到0∶1、2∶3、4∶5?任何相鄰兩片上,每片1位數據。

S_4有效:DI0∶3可分配到0∶3、4∶7、8∶11、12∶15任何相鄰四片上,每片1位數據。

S_8有效:DI0∶7可分配到0∶7或8∶158片上,每片1位數據。

S_16有效:DI0∶15剛好分配到16片上,每片1位數據。

至于上述究竟存儲到哪些片上以及具體存儲到片內哪根位線上則由列譯碼控制。

3.2.2譯碼控制

行譯碼采用了常用的3-8譯碼器,3-8譯碼器內由與門組成。級用兩個3-8譯碼器,輸入端接入行地址ADDR5∶0,第二級用64個與門把級譯碼進一步譯出來,可實現64行中選出1行。

圖264選1行譯碼

列譯碼相對較復雜,首先將列地址分為兩組,一組用于片選譯,一組用于片內譯碼。片選地址由ADDR11∶8組成,片內譯碼由ADDR7∶6組成。

片選地址譯碼由地址和地址使能組成,而地址使能則是由WIDTH_SEL0∶2配置決定的。

圖3片選譯碼

譯碼所得的A11∶8_DEC0∶15即可實現片選存儲。當配置為1位時,4位地址均有效,譯出的16位中只有1位有效,只能選擇16片中的1片。當配置為2位時,ADDR11使能無效,譯出16位中有連續2位有效,能選擇16片中連續2片。當配置為4位時,譯出16位中有連續4位有效,能選擇16片中連續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短暫關閉可執行讀操作。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在進行寫操作時,也可鏡像地輸出寫入的數據,即也做了讀操作。為了更好地在寫入時也讀出,且滿足頻率要求,有必要增加這一充電管。

圖5Pre1_BL信號產生電路

圖6位線充電電路

4BRAM應用

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

即由地址來查找數據,如同LUT。在F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論