基于FPGA的嵌入式块SRAM的设计
时间:03-04
来源:互联网
点击:
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上。
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》则一直有效。
3.2.2 译码控制
行译码采用了常用的3-8 译码器,3-8 译码器内由与门组成。第一级用两个3-8 译码器,输入端接入行地址ADDR《5∶0》,第二级用64 个与门把第一级译码进一步译出来,可实现64 行中选出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_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》则一直有效。
表1 不同数据位宽的地址使能
- 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》组成。嵌入式 Xilinx FPGA 电容 电路 放大器 IDT 总线 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)