一种基于FPGA的嵌入式块SRAM的设计

2010-02-26 09:40胡小琴赵建明肖培磊
电子与封装 2010年6期
关键词:存储单元位线译码

胡小琴,赵建明,肖培磊

(1.电子科技大学,成都 610054;2.中国电子科技集团公司第58研究所,江苏 无锡 214035)

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

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

3.2 BRAM内部设计

BRAM为真正的双端口RAM,两个端口完全独立,每个端口可以配置为读写端口,并可以把BRAM配置成特定的数据宽度。

3.2.1 可配置数据位宽实现方法

配置逻辑中三位控制信号WIDTH_SEL<0∶2>连到BRAM中,同时对地址宽度、数据宽度进行控制。由于BRAM可以实现1、2、4、8、16位的任意位宽,所以地址总线宽度、数据总线宽度都必须满足其中任意一种模式下的要求。于是设计时使地址总线宽度为各种模式下的最大值,即1位时的地址宽度<11∶0>,其他模式下可使不用的地址位使能无效,进而获得所需的地址位。数据总线宽度也设置为各种情况下的最大值,即16位时的数据宽度<15∶0>,其他情况下选择有用的数据位进行存储。

表1可见WIDTH_SEL<0∶2>对地址使能的控制,主要在于对地址<11∶8>的控制,其他位地址<7∶0>则一直有效。

由WIDTH_SEL<0∶2>另外译码产生一组数据控制信号,分别为S_1、S_2、S_4、S_8、S_16控制数据如何分配到位线上。这当中64根位线实行了分片,每片4根:

S_1有效:DI<0>可分配到16片中的任何一片上。

S_2有效:DI<0∶1>可分配到<0∶1>、<2∶3>、<4∶5>…任何相邻两片上,每片1位数据。

S_4有效:DI<0∶3>可分配到<0∶3>、<4∶7>、<8∶11>、<12∶15>任何相邻四片上,每片1位数据。

S_8有效:DI<0∶7>可分配到<0∶7>或<8∶15> 8片上,每片1位数据。

S_16有效:DI<0∶15>刚好分配到16片上,每片1位数据。

至于上述究竟存储到哪些片上以及具体存储到片内哪根位线上则由列译码控制。

3.2.2 译码控制

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

图2 64选1行译码

列译码相对较复杂,首先将列地址分为两组,一组用于片选译,一组用于片内译码。片选地址由ADDR<11∶8>组成,片内译码由ADDR<7∶6>组成。片选地址译码由地址和地址使能组成,而地址使能则是由WIDTH_SEL<0∶2>配置决定的。

图3 片选译码

译码所得的A<11∶8>_DEC<0∶15>即可实现片选存储。当配置为1位时,4位地址均有效,译出的16位中只有1位有效,只能选择16片中的1片。当配置为2位时,ADDR<11>使能无效,译出16位中有连续2位有效,能选择16片中连续2片。当配置为4位时,译出16位中有连续4位有效,能选择16片中连续4片。配置为8位就能选择16片中的上8片或下8片。配置为16位,4个地址均无效,译出的16位全有效,16片全选。经过了片选的一级译码,列译码还需经过第二级的片内译码。

图4 片内译码

A<11∶8>_DEC与A7译码均为低有效,A6译码为高有效。之所以能够用或门译码,是因为没被译码的一对BL和BLN位线上的数据是不会被写入存储单元的,如A7<0>为1,A<11∶8>_DEC为1,BL<0>与BLN<0>均为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二进制乘法器:

Y[3∶0]×X[3∶0]=D[7∶0]

即由地址来查找数据,如同LUT。在FPGA中,还可用BRAM来实现FIFO中的存储体模块,CLB实现控制逻辑,设计紧凑,小巧灵活。

5 结论

如今系统越来越高级,数字电路也高度集成,存储器也越来越多地应用于嵌入式芯片中。本文设计了一种应用于FPGA的嵌入式存储器结构,符合一般的双端SRAM功能,且具有FPGA功能块的可配置选择,灵活性很高。

[1]RABAEY J M, CHANDRAKASAN A. Digital Integrated Circuits a Design Prespective[M]. 北京:清华大学出版社,2004.518-523.

[2]Jinn-Shyan Wang. Low-Power Embedded SRAM with the Current-Mode Write Technique [J]. IEEE Solid-State Circuits, 2000, 35: 119-124.

[3]甘学温. 数字CMOS VLSI分析与设计基础[M]. 北京:北京大学出版社,1999.

猜你喜欢
存储单元位线译码
一种28 nm工艺下抗单粒子翻转SRAM的12T存储单元设计
基于校正搜索宽度的极化码译码算法研究
一种新型密集堆垛式仓储系统设计
巧构中位线解题
构造三角形中位线,巧证几何题
浮点类型有效位数计算与应用分析
巧用三角形中位线定理解题
数据在计算机内存中的存储形式及实验验证
从霍尔的编码译码理论看弹幕的译码
活用中位线的性质解题