<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種基于FPGA的嵌入式塊SRAM的設計

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

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/201706/349243.htm

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

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

  2 BRAM塊劃分

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

  3 BRAM塊設計

  3.1 BRAM與布線(xiàn)資源接口

   中每個(gè)BRAM塊都嵌在內部連線(xiàn)結構中,與BRAM 直接相連的有RAMLINE、VLONG 和GLOBAL。左邊32根RAMLINE提供BRAM的地址輸入,也可以提供控制信號(CLK、WE、ENA、RST)的輸入。左邊兩組16 根RAMLINE 一起布線(xiàn)提供BRAM的數據輸入,右邊兩組RAMLINE提供BRAM數據輸出通道。4 根GLOBLE全局時(shí)鐘線(xiàn)優(yōu)化用作時(shí)鐘輸入,提供較短的延遲和最小的失真。VLONG也被專(zhuān)門(mén)用作BRAM中WE、ENA、RST的控制輸入。RAMLINE 為BRAM專(zhuān)有布線(xiàn),如從水平方向的SINGLE、UNIHEX、BIHEX通過(guò)可編程開(kāi)關(guān)矩陣PSM 把信號輸送到RAMLINE 上,進(jìn)而送到BRAM 用作地址、數據。而B(niǎo)RAM 的輸出也通過(guò)RAMLINE最終送到HLONG上。


圖1 BRAM周?chē)季€(xiàn)

  相鄰BRAM 的RAMLINE 也可通過(guò)三態(tài)門(mén)連到下一級的RAMLINE,于是整列中的BRAM 可共享RAMLINE 上的數據。每個(gè)BRAM與其他電路的相連主要通過(guò)水平方向的4 組主要互連線(xiàn)完成。

  3.2 BRAM內部設計

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

  3.2.1 可配置數據位寬實(shí)現方法

  配置邏輯中三位控制信號WIDTH_SEL0∶2>連到BRAM中,同時(shí)對地址寬度、數據寬度進(jìn)行控制。

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

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


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

  由WIDTH_SEL0∶2>另外譯碼產(chǎn)生一組數據控制信號,分別為S_1、S_2、S_4、S_8、S_16 控制數據如何分配到位線(xiàn)上。這當中* 根位線(xiàn)實(shí)行了分片,每片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∶15> 8片上,每片1 位數據。

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

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

  3.2.2 譯碼控制

  行譯碼采用了常用的3-8 譯碼器,3-8 譯碼器內由與門(mén)組成。第一級用兩個(gè)3-8 譯碼器,輸入端接入行地址ADDR5∶0>,第二級用64 個(gè)與門(mén)把第一級譯碼進(jìn)一步譯出來(lái),可實(shí)現64 行中選出1 行。


圖2 64 選1 行譯碼

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

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


圖3 片選譯碼

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


圖4 片內譯碼

  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 功能塊的可配置選擇,靈活性很高。



關(guān)鍵詞: 塊存儲器 雙端口 FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>