您的位置 首页 系统

一种根据FPGA的嵌入式块SRAM的规划

文章中提出了一种应用于FPGA的嵌入式可配置双端口的块存储器。该存储器包括与其他电路的布线接口、可配置逻辑、可配置译码、高速读写电路。在编程状态下,可对所有存储单元进行清零,且编程后为两端口独立的双端

1 导言

  关于逻辑芯片的嵌入存储器来说,嵌入式SRAM 是最常用的一种,其典型的使用包含片上缓冲器、高速缓冲存储器、寄存器堆等。除非用到某些特别的结构,规范的六管单元(6T)SRAM 关于逻辑工艺有着很好的兼容性。关于小于2Mb 存储器的使用,嵌入式SRAM 或许有更好的本钱功率并一般首要考虑。

  Xilinx 公司SRAM型FPGA 首要由装备存储器、布线资源、可编程I/O、可编程逻辑单元CLB、块存储器BRAM 和数字时钟办理模块组成。它包含了分布式RAM,坐落CLB中。每个CLB包含了16 × 1bit的SRAM结构。BRAM的参加既添加了RAM的容量,也可构成大型LUT,更完善了CLB 的功用。

  2 BRAM块区分

  现代数字体系对存储器容量的存储速率要求越来越高,读拜访时刻便是一个重要参数,它是从地址信号的呈现到存储在该地址上的数据在输出端呈现的时刻推迟。进步BRAM 读取速度的一个有用办法是减小位线和字线上的总负载电容,这能够通过削减连接在同一字线和位线上的存储单元数目来完结,即选用存储阵列分块技能。本电路选用规划多个BRAM的办法,每个BRAM都有自己的译码电路、灵敏放大器和数据通道,各个BRAM 独立作业,每个BRAM 的读取时刻得到了大大进步。

  3 BRAM块规划

  3.1 BRAM与布线资源接口

  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上。


图1 BRAM周围布线

  相邻BRAM 的RAMLINE 也可通过三态门连到下一级的RAMLINE,所以整列中的BRAM 可同享RAMLINE 上的数据。每个BRAM与FPGA其他电路的相连首要通过水平方向的4 组首要互连线完结。

  3.2 BRAM内部规划

  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∶15> 8片上,每片1 位数据。

  S_16 有用:DI0∶15>刚好分配到16片上,每片1 位数据。

  至于上述终究存储到哪些片上以及详细存储到片内哪根位线上则由列译码操控。

  3.2.2 译码操控

  行译码选用了常用的3-8 译码器,3-8 译码器内由与门组成。榜首级用两个3-8 译码器,输入端接入行地址ADDR5∶0>,第二级用64 个与门把榜首级译码进一步译出来,可完结64 行中选出1 行。


图2 64 选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 在进行写操作时,也可镜像地输出写入的数据,即也做了读操作。为了更好地在写入时也读出,且满意频率要求,有必要添加这一充电管。

 
图5 Pre1_BL 信号发生电路


图6 位线充电电路

  4 BRAM使用

  作为随机存取存储器,BRAM 除了完结一般的存储器功用外,还可完结不同数据宽度的存储,且可用作ROM,以完结组合逻辑函数。最初始化了BRAM后,一组地址输入就对应了一组数据的输出,依据数据和地址的对应联系,就能完结必定的函数功用,BRAM 之所以能完结函数逻辑,原因是它具有满足的存储单元,能够把逻辑函数一切或许的成果预先存入到存储单元中。如完结4 × 4 二进制乘法器:

  即由地址来查找数据,好像LUT。在FPGA 中,还可用BRAM来完结FIFO中的存储体模块,CLB完结操控逻辑,规划紧凑,细巧灵敏。


图7 4 位乘法器

  5 定论

  现在体系越来越高档,数字电路也高度集成,存储器也越来越多地使用于嵌入式芯片中。本文规划了一种使用于FPGA 的嵌入式存储器结构,契合一般的双端SRAM 功用,且具有FPGA 功用块的可装备挑选,灵敏性很高。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/196446.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部