引言
当今社会是数字化的社会,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,设计师们更希望在教研室里就能验证所设计的电路功能。FPGA的出现,使得芯片设计和应用跨入了一个新的领域。
研究背景
随着硬件方面的急速发展,与之相配套的软件也不断更新,更快﹑更智能的原理图编辑﹑设计实现和验证工具都被集成到EDA开发工具中。这些发展大大缩短了FPGA的开发周期,增强了FPGA设计的灵活性和可移植性,也避免了专用集成电路设计的高风险。但由于片内存储器受器件规模和生产成本的制约,其容量通常不能满足用户实际需求,这就需要使用半导体存储器件来扩展存储空间。针对这种情况,本文专门研究了FPGA与两种典型的存储器接口实现问题。在设计实现中采用了Xilinx公司Virtex-E系列的FPGA(XCV300E)﹑ISSI公司的高速静态存储器IS63LV1024和HYNIX公司的HY57V281620HC(L/S)T动态存储器。
XCV300E性能介绍
FPGA(现场可编程门阵列)是可编程逻辑器件的一种,它不仅可以提高系统的可靠性,使得系统结构更加紧凑,节省了电路板的面积,而且实现成本低﹑开发周期短,是进行原始设计的理想载体。Virtex-E系列产品对所有Virtex特性都进行了加强,采用领先的0.18m六层金属互连半导体工艺制造,大大提高了器件性能和密度,同时还提供了可进一步满足下一代数据通信和DSP应用带宽要求的高性能系统特性组合。Xilinx公司的VirtexEXCV300E,采用BGA432封装,片内BlockRAM为131,072比特,DistributedRAM为98,304比特,SystemGates为411,955门,LogicGates为82,944门。特性如下:
1.工作在1.8V电压下的快速﹑高密度FPGA器件;
3.采用高性能的链路选择技术;
4.精密复杂的存储器选择机制;
5.高性能的时钟管理电路;
6.具有能平衡速度与密度的灵活性体系结构;
7.基于SRAM方式的系统配置。
SRAM性能介绍
为了能更好﹑更有效的设计FPGA与IS63LV1024的接口实现,必须先了解IS63LV1024的性能特点。充分利用这些特点会使设计的实现变得事半功倍。IS63LV1024是128K8的高速静态存储器,性能特点包括:
1.工作在3.3V电压下,高速接入时间一般分为8、10、12和15ns;
2.高性能﹑低功耗器件(使用ICSI高性能COMS技术制作过程和使用新的电路设计技术);
3.通过选择CE和OE的状态可以比较简单的实现存储;
4.CE可以使器件进入power-down工作模式,即没有被选择时,器件进入一种挂起状态,使得功率消耗小于250W;
5.不需要时钟和更新,是全静态工作过程;
6.所有的输入和输出都是与TTL相兼容的。
除此之外,为了保证所传输的数据的正确性还必须要了解IS63LV1024的读写状态的时序和使能的要求。其读写时序状态如图1所示:
DRAM性能简介
DRAM与SRAM不同,它只能将数据保持很短的时间。为了保持数据,DRAM必须隔一段时间刷新一次,如果存储单元没有刷新,数据就会丢失。SRAM虽不需刷新,但断电后会丢失数据。SRAM的数据传输速率从10ns到30ns不等,DRAM要比它慢30ns左右。因此,SRAM通常用于高速缓冲存储器,而DRAM通常用来存储较大的数据。HY57V281620HC(L/S)T是4Banks2M16bit的同步动态存储器,性能特点包括:
1.工作在3.30.3V电压下;
2.所有器件管脚都与LVTTL接口兼容;
3.所有的输入和输出操作都是在时钟CLK上升沿的作用下进行;
4.通过UDQM或者LDQM来实现数据延时功能;
5.内部有四个bank可以进行操作;
6.自刷新功能,刷新周期为4096;
7.可编程的猝发类型、猝发长度;
8.可编程的的CAS延迟为2或3个时钟周期。
由上面的特性可知,DARM的读写操作与SRAM有较大的不同。根据HY57V281620HC(L/S)T的读写状态的时序要求,其读写时序状态如图2所示:
设计实现
当设计FPGA与SRAM的接口时,由于它的传输速度较快,所以只需着重考虑如何保证存储数据的正确性,而不需要考虑用其它方式来提高SRAM的存储速度。本设计的做法是一次性写满128k数据后,再一次性读出128k数据。为了保证数据的正确性,要求在写数据时不能读数据,而在读数据时不能写数据。
当设计FPGA与DRAM的接口时,为了能满足各种系统的使用要求,本设计创建了时钟频率、猝发长度、延时节拍等可编程参数。在具体操作DRAM时,首先,必须进行初始化配置,即写模式寄存器,以便确定DRAM列选延迟节拍数、猝发类型、猝发长度等工作模式。然后通过ACT命令激活对应地址的组,同时输入行地址。最后,通过RD或WR命令输入列地址,将相应数据读出或写入到对应的地址。操作完成后,用相关命令中止读或写操作。在没有操作的时候,每64ms必须对所有存储单元刷新一遍,防止数据丢失。
下面本文将指出在设计实现中需要特别注意的几个问题,并给出了相应的解决方法。
首先,是如何控制SRAM的读写功能。这就需要与IS63LV1024读写时序要求和真值表的描述相配合。本设计为了避免连读或连写数据时出错,考虑了一种通过读写数据请求的方法来尽量避免读或写数据出错的可能。即每写完或读完一个数据后都要先进行请求,然后才能继续读或写数据。ASRAM的状态转移图如图3所示:
下面给出了图3中各个状态所表示的意思:
DOREAD表示读数据的请求;
DOWRITE表示写数据的请求;
STIDLE表示存储器处于空闲状态;
STWRITE1表示存储器处于写准备状态,准备写数据;
STWRITE2表示存储器处于写状态,开始写数据;
STREAD1表示存储器处于读准备状态,准备读数据;
STREAD2表示存储器处于读状态,开始读数据。
只有当系统时钟的上升沿到来时,才会触发这个状态机改变一次当前状态。
刚开始时,存储器的初始状态为空闲状态,当有请求来时才判断是读或写请求,如果没有请求就一直保持空闲状态。虚线表示自动按顺序进入下一个状态。
其次,是如何控制DRAM的各种状态。当设计FPGA与DRAM的接口时,由于它除了读写状态外还有较多的其它状态,所以需要着重设计好读写状态与其它状态之间的转换控制。为了解决这个问题,本设计采用了状态机来控制这些状态之间的关系,DRAM的状态转移图如图4所示:
下面给出了图中各个状态所表示的意思:
IDLE表示存储器处于空闲状态;
LMREG表示加载寄存器状态;
ACT表示活动状态;
AR2表示自动刷新有效状态;
AR表示自动刷新无效状态;
WRITESTATE表示读状态;
READSTATE表示写状态;
只有当系统时钟的上升延到来时,才会触发这个状态机改变一次当前状态。
刚开始时,存储器的初始状态为空闲状态,当有请求来时才会进入下一个状态,如果没有请求就一直保持空闲状态。虚线表示自动按顺序进入下一个状态。
最后,是FPGA的设计要求。一个优秀的FPGA设计不仅要达到系统的基本要求,同时必须满足可读性、可重复性和可测性。
可读性好的FPGA设计原理图和硬件描述语言设计应该包含足够详细的注释。每张原理图之间的关系及硬件描述模块间的互联关系的说明固然重要,但是每个模块本身的说明也是不能忽视的,例如状态机的文档应当包括状态图或功能描述。好的文档也许花不了很多的时间,但是却可以在调试﹑测试和维护设计上节省大量的时间。
可重复性指FPGA设计应该保证如果不同的人从不同的部位开始,并重新进行布局布线等,应该得到同样的结果。没有这个保证,验证以及其他形式的设计测试就毫无意义。设计者显然不希望在设计里出现这样的情况,具有相同的输入输出管脚和功能的器件,由于布局布线的差异,导致最后时序不一致。如果在实现的过程中,系统设计软件的参数或选项不一致,就会发生这种情况。因此FPGA的文档就应该包括必要的信息,即软件开发系统的版本号﹑软件的各个选项及参数设计。
可测性是FPGA设计的最后一个特征。系统级的测试要求设计者对整个设计流程及系统架构都要很清楚。随着设计层次的提高,使得设计者面对的电路规模越来越大,功能越来越复杂,相应电路的测试也变得越来越困难。在设计过程中综合考虑测试的设计问题并统一实施,将有效地缩短整个产品的开发时间、减少返工。
结束语
在开发过程中由于采用高级硬件编程语言-编程器件的设计实现过程,大大缩短了开发周期,增加了硬件设计的灵活性和可移植性,也避免了专用集成电路设计的高风险。采用逻辑仿真与后时序仿真相结合的验证方法,可以保证设计的可靠性。基于上述优点,这种开发方式在中小型集成电路开发中已得到广泛应用。随着工艺技术的发展与市场的需要,超大规模﹑高速﹑低功耗的新型FPGA将会不断推陈出新。现在新一代的FPGA甚至集成了中央处理器(CPU)或数字处理器(DSP)内核,在一片FPGA上进行软硬件协同设计,为实现片上可编程系统(SOPC,SystemOnProgrammableChip)提供了强大的硬件支持。