在高速实时或许非实时信号处理体系傍边,运用大容量存储器完结数据缓存是一个必不可少的环节, 也是体系完结中的要点和难点之一。SDRAM(同步动态随机拜访存储器)具有价格低廉、密度高、数据读写速度快的长处,然后成为数据缓存的首选存储介质。可是SDRAM存储体结构与RAM有较大差异,其操控时序和机制也较杂乱,约束了SDRAM的运用。现在,尽管一些通用微处理器供给了和SDRAM的通明接口,但其可扩展性和灵活性不行,难以满意实践体系的要求,约束了SDRAM的运用。
在具体阅览SDRAM数据文档的前提下,参阅ALTERA公司的IP core,运用可编程器材(CPLD,FPGA)规划了一种通用的SDRAM操控器。它具有很高的灵活性,能够方便地和其它数据缓存接口电路进行衔接,被成功地运用在无线中频数据收集剖析体系中,如图1所示。在该体系中,以SDRAM存储阵列缓存中频来的高速数据。存满后,数据被慢速读出至数据处理模块。下面将对SDRAM操控模块的规划进行具体的描绘。
1 SDRAM内存条的结构
SDRAM内存条由SDRAM内存芯片构成,依据内存条的容量巨细决议内存条上内存芯片的个数。现以MICRON公司出产的MIT16LSDT6464A型SDRAM内存条为例,扼要介绍SDRAM的结构。
MIT16LSDT6464A内存条容量为512M Byte,由16片容量为32M Byte的内存芯片MT48LC32M8A2构成。16片内存芯片被分为两组,每个芯片的数据位宽为8bit。8片一组,64bit数据宽度。每个内存芯片的数据线和操控线均是复用的。对内存条的读写操作,是以内存芯片组为单位的,经过内存条的片选信号S0、S1、S2、S3决议组号。S0、S2操控芯片组1,S1、S3操控芯片组2。
SDRAM内存芯片的首要信号有操控信号、地址信号、数据信号,均为作业时钟同步输入、输出信号。
操控信号首要有:CS(片选信号),CKE(时钟使能信号),DQM(输入、输出使能信号),CAS、RAS、WE(读写操控指令字)。经过CAS、RAS、WE的各种逻辑组合,可发生各种操控指令(见表1)。
地址信号有:BA0和BA1页地址挑选信号,A0~A12地址信号,行、列地址挑选信号。经过分时复用决议地址是行地址仍是列地址。在读写操作中,在地址线上顺次给出页地址、行地址、列地址,终究确认存储单元地址。
数据信号有:DQ0~DQ7,双向数据。其使能受DQM操控。
SDRAM的作业形式经过LOAD MODE REGISTER指令对作业形式寄存器进行设置来挑选。设置参量(见表2)有Reserved(备用的人)Write Burst Mode(WB,写突发形式)、Operation Mode(Op Mode,作业形式)、CAS Latency(CAS推迟)、Burst Type(BT,突发类型)、Burst Length(突发长度)。
2 SDRAM的根本读写操作
SDRAM的根本读操作需求操控线和地址线相配合地宣布一系列指令来完结。先宣布BANK激活指令(ACTIVE),并锁存相应的BANK地址(BA0、BA1给出)和行地址(A0~A12给出)。BANK激活指令后有必要等候大于tRCD(SDRAM的RAS到CAS的推迟目标)时刻后,宣布读指令字。CL(CAS推迟值)个作业时钟后,读出数据顺次出现在数据总线上。在读操作的最终,要向SDRAM宣布预充电(PRECHARGE)指令,以封闭现已激活的页。等候tRP时刻(PRECHARGE指令后,相隔tRP时刻,才可再次拜访该行)后,能够开端下一次的读、写操作。SDRAM的读操作只要突发形式(Burst Mode),突发长度为1、2、4、8可选。
SDRAM的根本写操作也需求操控线和地址线相配合地宣布一系列指令来完结。先宣布BANK激活指令(ACTIVE),并锁存相应的BANK地址(BA0、BA1给出)和行地址(A0~A12给出)。BANK激活指令后有必要等候大于tRCD的时刻后,宣布写指令字。写指令能够当即写入,需写入数据顺次送到DQ(数据线)上。在最终一个数据写入后推迟tWR时刻,宣布预充电指令,封闭现已激活的页。等候tRP时刻后,能够翻开下一次操作。写操作能够有突发写和非突发写两种。突发长度同读操作。
tRCD、tRP、tWR的具体要求,详见SDRAM厂家供给的数据手册。所等候的作业时钟个数由tRCD、tRP、tWR的最小值和作业时钟周期一起决议。
由以上介绍能够得出,SDRAM的读、写操作均由一系列指令组成,因而读、写操作是有时钟损耗的,作业时钟速率不等于SDRAM能到达的读、写速率。可是因为SDRAM有突发读、写形式,也便是说能够读出和写入一串地址接连的数据,然后进步了功率。当突发长度为整页时,读、写速度到达最快。随机读、写速度的计算公式为:
fwrite/read=作业时钟频率(Hz)×数据宽度(bytes)×突发读写长度/操作所需的时钟数
为了进步存储密度,SDRAM选用硅片电容存储信息。电容总会有漏电流流过,所以为了不使信息丢掉,有必要定时地给%&&&&&%改写充电。外部操控逻辑有必要按要求定时向内存条宣布改写指令,确保在规则的时刻内对每一个单元都进行改写。
3 初始化操作
SDRAM在上电今后有必要对其进行初始化操作,具体操作如下:
(1)体系在上电后要等候100~200μs。在等候时刻到了今后至少履行一条空操作或许指令制止操作。
(2)对一切芯片履行PRECHARGE指令,完结预充电。
(3)向每组内存芯片宣布两条AUTO REFRESH指令,使SDRAM 芯片内部的改写计数器能够进入正常运转状况。
(4)履行LOAD MODE REGISTER指令,完结对SDRAM作业形式的设定。
完结以上进程后,SDRAM进入正常作业状况,等候操控器对其进行读、写和改写等操作。
4 SDRAM操控器规划
4.1 功用阐明
在以SDRAM作为缓存的体系中,运用可编程器材对其进行操控具有很强的灵活性。为了使规划具有模块化和可重复运用的长处,规划了一个简化的SDRAM接口电路。这样就屏蔽掉了SDRAM操作的杂乱性,而其它逻辑模块可经过接口电路对SDRAM进行拜访。此外,因为整个SDRAM操控器用VHDL言语编写,只要对其进行简略的修正就能够满意不同的需求,具有很强的灵活性。
参照图2,SDRAM操控器完结的首要功用是对CMD[2:0]的指令字和ADDR端的地址进行解析,发生相应的SDRAM的操控时序。
CLK为输入的作业时钟端口。
ADDR为输入地址端口。操控器将其解析为对应的片选、页以及行、列地址。以一条MIT16LSDT6464A内存条为例,其巨细为512Mbyte(229 byte)。数据位宽为64bit(8byte),则地址线ADDR应为26根。能够这样映射地址:ADDR[25]对应内存芯片组号;ADDR[24:23]对应页号;ADDR[22:10]对应行号;ADDR[9:0]对应列号。
DATAIN为写入数据端口,64bit位宽。
DATAOUT为读出数据端口,64bit位宽。
RD_OE为读出数据使能端口,当其为1时,表明从下一个时钟起,数据将顺次出现在DATAOUT口上。
WR_OE为写入数据使能端口,当其为1时,写入数据应该顺次出现在DATAIN口上。
CMD[2:0]为指令输入端口,别离表明读、写内存等操作,具体编码见表3。其间,CMD = “000”表明无操作,内存条交给操控器办理,定时完结改写作业;REFRESH指令由外部逻辑指定待改写的内存芯片组号,组号由ADDR的低位给出;LOAD_MODE指令履行内存条作业寄存器初始化作业,初始化值由DATAIN的低13位决议,内存芯片组号相同由ADDR的低位给出;同理,ADDR的低位也决议了预充电操作所对应的内存芯片组号。
CMDACK为指令应对端口,表明指令现已被履行,使外部逻辑能够向操控器宣布下一个动作。
4.2 状况机
图3是SDRAM操控器的状况搬运图。状况图中的各个状况内均包含一系列的子状况搬运(对SDRAM内存条宣布接连指令),每个子状况完结一个功用操作。初始化操作包含前面介绍的内存条初始化全进程,作业寄存器的默认值在VHDL程序中指定。今后能够经过LOAD_MODE指令改动内存条的作业形式。初始化完毕后,内存条进入Idel状况,改写计数器开端作业,操控器开端呼应外部逻辑的操作恳求。
改写计数器操作是一个独立的进程(process)。改写计数器的初值由内存芯片要求、内存条个数和操控器作业频率一起决议。例如,在本次规划中,所选用的MT48LC32M8A2内存芯片要求在64ms内至少改写8196次。而MIT16LSDT6464A型内存条共有两组内存芯片,也便是要求在64ms内要宣布8196×2条自改写(AUTO REFRESH)指令。体系作业时钟为46.66MHz,因而操控单条MIT16LSDT6464A时,改写计数器初值至多为(64ms/8196/2)×46.66MHz,即182。开端作业后,每逢改写计数器值减为0,便顺次向内存芯片组宣布改写指令,确保SDRAM中的数据不丢掉。改写恳求是内部恳求;读和写操作是外部恳求。在Idel状况中有恳求裁定逻辑,当内部和外部恳求一起出现时,优先确保内部恳求,状况搬运至改写操作。当改写操作完毕时,从头回来Idel状况,开端呼应外部恳求。呼应外部恳求后,应对信号CMDBAK出现正脉冲。它告诉外部逻辑,恳求现已被呼应,能够吊销恳求。在改写操作状况中,也有计数器计数,其巨细等于操控器办理的内存芯片组号。记载并判别此次改写操作所对应的内存芯片的组号,发生相应的片选信号。
呼应读、写恳求后,状况从Idel搬运到读、写状况。一起读、写地址和写入的数据锁存至操控器。操控器由读写地址解分出CS信号、页地址、行地址、列地址。向内存条宣布一系列指令(ACTIVE,READ/WRITE with AUTO PRECHARGE),完结读写操作。为了简化,此操控器向SDRAM宣布的都是带有AUTO PRECHARGE 的读、写指令,然后由SDRAM内部逻辑主动在读、写进程晚期宣布PRECHARGE指令(在发READ/WRITE指令时,地址线A10赋值1,翻开AUTO PRECHARGE功用)。图4和图5别离是运用该操控器完结读、写操作的时序图。读操作的CAS推迟为两个时钟。
该SDRAM操控器在中频数据海量存储体系中已得到运用。数据接纳逻辑将接纳到的中频采样数据收拾后(拼接成64bit),经过SDRAM操控器存入SDRAM阵列。存满后,数据输出逻辑将中频数据经过SDRAM操控器从内存条中取出,传输至上位机。其VHDL代码在ATERA公司的FPGA——EP1C6Q240中经过了QuartusII的仿真、归纳和布局、布线。占用499个logic cell,耗费了8%的逻辑资源。留有丰厚的资源可供给给其它逻辑单元运用。
上面介绍了SDRAM的根本作业原理和一种简略的通用SDRAM操控器的完结。SDRAM的操控机制比较杂乱,具有多种突发读、写方法和作业形式(具体内容请参阅SDRAM的数据手册)。可是,能够依据实践运用,完结其间的一个子集(根本读、写、改写操作)来满意实践体系的需求。用SDRAM完结大容量的高速数据缓存具有显着的优势,运用可编程器材完结SDRAM操控器则使之具有更高的灵活性,其运用远景宽广。