>
首页 » 业界动态 » FPGA与SRAM相结合完成大容量数据存储

FPGA与SRAM相结合完成大容量数据存储

作者:  时间:2007-08-29 17:30  来源:

摘要本文介绍了一种实现大容量数据存储的方法。采用先进的fpga(fieldprogrammablegatearray)技术结合sram专用控制器件来实现逻辑控制,以静态存储器sram(staticram)为存储器件实现了256k×16字节的高速异步存储。

关键字:fpga,sram,vhdl

1引言

随着数字信号处理技术的不断发展,大容量可编程逻辑器件的不断涌现,fpga技术越来越多地应用在大规模集成电路设计中。在此硬件系统设计中,经常会遇到需要大容量的数据存储的情况,下面我们将针对fpga中内部blockram有限的缺点,提出了将fpga与外部sram相结合来改进设计的方法,并给出了部分vhdl程序。

2硬件设计

这里将主要讨论以xilinx公司的fpga(xc2s600e-6fg456)和issi公司的sram(is61lv25616al)为主要器件来完成大容量数据存储的设计思路。

fpga即现场可编程门阵列,其结构与传统的门阵列相似,大量的可编程逻辑块(clb,configurablelogicblock)在芯片中央按矩阵排列,芯片四周为可编程输入/输出块(iob,input/outputblock),clb行列之间及clb和iob之间具有可编程的互连资源(icr,interconnectresource)。clb、iob和icr都由分布在芯片中的sram静态存储单元控制,sram中的数据决定fpga的功能,这些数据可以在系统加电时自动或由命令控制从外部存储器装入。

在进行数据存储时,可直接将数据写入fpga内部的blockram中,在一定程度上减少了fpga的资源分配。但fpga内部自带的ram块毕竟是有限的,当需进行大容量数据存储时这有限的ram块是远远不能满足系统设计要求的。此时,就需要将fpga与外部ram相结合完成大容量数据存储。具体硬件电路如图一所示:


图一硬件电路原理图

3is61lv25616al功能简介

is61lv25616al是integratedsiliconsolution公司(issi)的一款容量为256k×16的且引脚功能完全兼容的4mb的异步sram,可为xilinx公司的spartan-2e系列fpga提供高性能、高消费比的外围存储。除了256k×16异步sram外,issi还提供128k×16、512k×16、256k×8、512k×8和1m×8的异步sram。

is61lv25616al引脚结构框图如图二所示:



图二is61lv25616al结构框图

3.1主要特征
(1)工作电压:3.3伏;
(2)访问时间:10ns、12ns;
(3)芯片容量:256k×16;
(4)封装形式:44引脚tsopii封装,也有48引脚mbga和44引脚soj封装;
(5)采用0.18μm技术制造;

3.2引脚功能
(1)a0~a17:18位的地址输入线;
(2)io0~io15:16位的三态数据输入输出线;
(3):写控制线;
(4):片选信号;
(5):输出使能信号;
(6)、:低字节、高字节使能信号;
(3)~(6)的控制线均为低电平有效。

3.3控制逻辑电路设计
如图三所示,控制逻辑由fpga来实现。主要包括读地址产生器、写地址产生器、读写时钟信号产生器及读写控制等几部分。下面分别加以讲述。


图三原理框图

(1)写地址产生器:由于设计时采用256k×16的sram,故有18位地址,写地址产生器用18位计数器实现。靠外部时钟驱动,每进行一次写操作后,读写控制单元产生计数脉冲,使其增1,直到18位计数器计满再循环写入地址为0的空间。

(2)读地址产生器同上,也采用18位计数器实现,根据系统要求,每隔一定的采样周期将读地址指针偏移一定偏移量,并从该位置读取数据。

(3)读写地址选择器由于读写地址复用管脚,因此在读写操作时,必须选通相应的地址。这就需要由fpga控制芯片上的、、、等控制信号来对sram进行读写的操作。

(4)此外,由于读写之间的切换,数据线上的数据在切换瞬间如不加处理会出现混乱现象。因此,为避免读、写操作发生冲突,数据线呈三种状态,读数据、写数据及高阻态。在从写到读的过程中需给数据线上送高阻态。  

(5)当需要对sram进行写操作时,由fpga控制产生写地址选通信号,该选通信号为一单脉冲形式,如图四中、、,该脉冲下降沿触发sram,告知开始对ram进行写操作,使fpga输出写地址,同时给数据线上送数据。在写操作期间,、片选信号始终保持低电平,而写地址选通信号上升沿到来时使写地址计数器增1。以此类推,通过写地址选通信号高低电平变化完成对数据依次写入。需要注意的是,地址线和数据线在、、为高时可同时赋新值,但只有在变低后赋予数据线上的新值才有效。

图四ram写操作时序

对sram进行读操作相对较简单,在进行读操作期间,、、、始终为低电平,始终为高电平。每进行一次读操作,地址按系统要求变化一次。同时注意,地址的变化时刻总要先于数据的变化时刻。图五为ram读操作时序。

              图五ram读操作时序

以下是一段用vhdl语言描述的控制ram的读写操作时序的程序代码:
oe_sram<=lowlevel;
ce_sram<=lowlevel;
when0=>addr_sram<=temp_addr_sram;--writetosram
data_sram<=data_in;
we_sram<=1;
lb_sram<=1;
ub_sram<=1;
when1=>we_sram<=0;
lb_sram<=0;
ub_sram<=0;
when2=>we_sram<=1;
lb_sram<=1;
ub_sram<=1;
when3=>we_sram<=1; --readfromsram
lb_sram<=0;
ub_sram<=0;
data_sram<=b"zz_zzzz_zzzz_zzzz_zzzz";--给数据线上送高阻
addr_sram<=temp_addr_sram;
when4=>data_out<=data_sram;

程序中,在进行读写操作时,片选使能信号ce_sram及输出使能信号oe_sram始终为低电平。
·第0时刻到第2时刻在进行写操作:第0时刻地址线addr_sram和数据线data_sram同时赋新值,控制线we_sram、lb_sram、ub_sram要经历一个窄脉冲的变化过程,ram在获取到此控制线下降沿信息后,便知开始进行写操作。需要注意的是,虽然数据在第0时刻已赋到数据线上,但因为写操作是控制线低电平有效,所以数据线上真正发生数据更新是在控制线变为低电平之后,因此,数据线上的实际更新时刻是在第2个时刻。

·第3、4状态是进行读操作:在读写转换时刻,也就是在第3时刻如前所述需给数据线上送高阻态。这样,读取数据的时序关系由系统时钟进行控制,在第3时刻给地址线上送要读取的地址,第4时刻将数据端口上的数据送出。这里需注意的是,读取数据要比读取地址晚一个时刻。从而,完成了对外部ram的读写操作控制。

4结论

该系统已应用在罗兰—c导航接收机的信号处理中。实验证明,此设计可靠稳定地完成了大容量高速异步数据存储,进一步提高了系统的性能。


参考文献
[1]孙红胜,岳春生用.dram、fpga实现大容量fifo存储器.信息工程学院学报.1997(9):38~41
[2]datasheetis61lv25616al2004.5.5
[3]kevenskahill.可编程逻辑系统的vhdl设计技术[m].朱明程,孙普译.东南大学出版社,2003

选自《2005年电子应用方案论文集》

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点