DSP片外高速海量SDRAM存储系统设计

发布者:genius5最新更新时间:2006-04-11 来源: 单片机及嵌入式系统应用关键字:寄存器  时序  刷新 手机看文章 扫描二维码
随时随地手机看文章

在数字图像处理、航空航天等高速信号处理应用场合,需要有高速大容量存储空间的强力支持,来满足系统对海量数据吞吐的要求,通过使用大容量同步动态RAM(SDRAM)来扩展嵌入式DSP系统存储空间的方法,选用ISSI公司的IS42S16400高速SDRAM芯片,详细论述在基于TMS320C6201(简称C6201)的数字信号处理系统中此设计方法的具体实现。

  1 IS42S16400芯片简介

  IS42S16400是ISSI公司推出的一种单片存储容量高达64Mb(即8MB)的16位字宽高速SDRAM芯片。SDRAM的主要特点是:①同步访问,读写操作需要时钟;②动态存储,芯片需要定时刷新。IS42S16400采用CMOS工艺,它的同步接口和完全流水线的内部结构使其拥有极大的数据传输速率,可以工作在高达133MHz时钟频率下,刷新频率每64ms为4096次。该SDRAM芯片内部有4个存储体(bank),通过行、列地址分时复用系统地址总线,对不同存储体内不同页面的具体存储单元进行读写访问寻址。在进行读操作之间,必须预先激活SDRAM内对应的存储体,并选择存储器的某一行,然后送入列地址读取需要的数据。从输出列地址到SDRAM返回相应数据之间存在一个存取延迟。如果访问新的页面,则先需要关闭所有的存储体,否则已打开的页面将一直有效。在写操作之前,由于已经预先激活了有关的行地址,因此可以在输出列地址的同时输出数据,没有延迟。IS42S16400提供自刷新模式的设置,可以使芯片运行在低功耗的状态下,从而大大减少嵌入式系统的功率消耗。

  2 C6201与SDRAM的外部存储器接口

  DSP芯片访问片外存储器时必须通过外部存储器接口EMIF(External Memory Interface)。C6000系列DSPs的EMIF具有很强的接口能力,不仅具有很高的数据吞吐率(最高达1200MB/s),而且可以与目前几乎所有类型的存储器直接接口。在C6201系统中,提供了4个彼此独立的外存接口(CEx)。除CE1空间只支持异步接口外,所有的外部CEx空间都支持对SDRAM的直接接口。表1总结了C620X DSPs的EMIF所兼容的SDRAM配置。表2给出了C6000系列DSPs的EMIF所支持的SDRAM控制命令。

  
  

  2.1 SDRAM的刷新

  为了提高存储容量,SDRAM采用硅片电容来存储信息。随着时间的推移,必须给电容重新充电才能保持电容里的数据信息,这就是所谓的“刷新”,它的存在也使得SDRAM的应用变的略显复杂,带来了一定的应用难度。

  C6000系列DSPs有专门的SDRAM控制寄存器(SDTCL)和SDRAM时序控制寄存器(SDTIM),用来进行SDRAM的各种时序控制,大大减轻了设计人员的开发难度,SDCTL寄存器中的RFEN位控制是否由EMIF完成对SDRAM的刷新。如果RFEN=1,EMIF会控制向所有的SDRAM空间发出刷新命令(REFR);而SDTIM寄存器中的PERIOD位段则控制具体的刷新周期。

  在REFR命令之前,会自动插入一个DCAB命令,以保证刷新过程中所有的SDRAM都处于未激活状态。DCAB命令之后,EMIF开始按照SDTIM寄存器中PERD字段设置的值进行定时刷新。刷新前后,页面信息会变为无效。

  对于C620X,EMIF SDRAM控制模块内部有一个2位的计数器,用来监测提交的刷新申请的次数。每提交一个申请,计数器加1;每次刷新周期之后,计数器减1。复位时,计数器自动置为11b,以保证在存取访问之前先进行若干次刷新。计数器自动置为11b,代表紧急刷新状态,此时页面信息寄存器变无效,迫使控制器关闭当前的SDRAM页面。然后,EMIF SDRAM控制器在DCAB命令后执行3次REFR命令,使计数器的值减为0,再继续完成余下的存取操作。

  2.2 SDRAM的初始化

  当某个CE空间配置为SDRAM空间后,必须首先进行初始化。用户不需要控制初始化的每一个步骤,只需要向EMIF SDCTL寄存器的INIT位写1,申请对SDRAM作初始化。然后,EMIF就会自动完成所需要的各步操作。初始化操作不能在进行SDRAM存取过程中进行。整个初始化过程包括下面几个步骤:

  ①对所有的SDRAM空间发出DCAB命令;

  ②执行3个REFR命令;

  ③对所有的SDRAM空间发出MRS命令。

  2.3 页面边界控制

  SDRAM属于分页存储器,EMIF的SDRAM控制器会监测访问SDRAM时行地址的情况,避免访问时发生行越界。为了完成这一任务,EMIF在内部有四个页面寄存器,自动保存当前打开的行地址,然后与后续存取访问的地址进行比较。需要说明的是,当前存取操作结束并不会引起SDRAM中已经激活的行被立即关闭,EMIF的控制原则是维持当前的打开状态,除非必须关闭。这样做的好处是可以减少关闭/重新打开之间的命令切换时间,使接口在存储器访问的控制过程中充分利用地址信息。

  对于C620X,每个CE空间包含1个页面寄存器(只对配置为SDRAM空间有效),因此C620X每个CE空间1次只能激活1页。进行比较的地址位数取决于SDCTL寄存器中SDWID位的值。如果SDWID=0,该CE空间构成页面的大小为512,比较的逻辑地址是位23~11;如果SDWID=1,该CE空间SDRAM构成页面的大小为256,比较的逻辑地址是位23~10。一旦发现存取访问发生了页面越界,EMIF会自动执行DCAB操作,然后再开始新的行访问。

  2.4 访问地址的移位

  由于SDRAM行逻辑地址与列逻辑地址复用相同的EMIF引脚,所以EMIF接口需要对行地址与列地址进行相应的移位处理。地址的移位处理由SDCRL寄存器中的SDWID位控制。

  另外,对于SDRAM,因为输入地址也是控制信号,因此需要说明以下几点:

  ①RAS有效期间的高位地址信号会被EMIF内部SDRAM控制器锁存,以保证执行READ和WRT命令时选通正确的bank;

  ②READ/WRT操作期间,EMIF会保持pre-charge信号为低(C620X是SDA10),以防止READ/WRT命令执行后发生auto-pre-charge操作。

  2.5 接口时序的设计

  对于C620X,EMIF与SDRAM的接口时序由SDCTL寄存器控制。EMIF提供了5个时序参数,其中3个在SDCTL寄存器中设置,另外2个为固定值,如表3所列。在分析接口时序的配合情况时,需要计算“富裕时间”tmargin的大小,这是在考虑了SDRAM芯片的器件手册提供的最坏情况之后,得到的时序上的一个裕量,至于tmargin值的大小,是系统设计层需要考虑的问题,具体要求随不同的系统而异,而且与印制板的实际布线情况以及负载的情况密切相关。

  

  3 系统设计中IS42S16400芯片的应用

  3.1 C6201与IS42S16400的接口实现

  由于IS42S16400属于16位字宽的64Mb SDRAM芯片,而C6201的EMIF只提供32位字宽的同步外存储接口,为了使整个系统的存储空间保持连续,使用2片SDRAM与DSP芯片组成实际大小为16MB的外部存储系统,如图1所示。图1中IS42S16400芯片各引脚含义如下:CS,片选;CLK,系统同步时钟;RAS,行地址选择;CAS,列地址选择;WE,读/写使能;CKE,时钟使能,DQMU、DQML,高低字节使能;A[13:12],Bank地址选择线;A[11:0]行、列地址先;DQ[15:0],双向数据端口。

  

  由图1可以看出,虽然C6201提供32位地址寻址能力,但是经EMIF直接输出的地址信号只有EA[21:2]。一般情况下,EA2信号对应逻辑地址A2,但这并不意味着DSP芯片访问外存时只能进行word(32位)的存取,实际内部32位地址的最低2~3位经译码后由BEx输出,是能够控制字节访问的。更高位逻辑地址经译码后输出CE[3:0]。

  在实际的系统实现中,C6201的CLKOUT1时钟频率为200MHz,故而SDRAM的实际工作频率为100MHz,(SDCLK=CLKOUT2=CLKOUT1 frequency/2),即tcyc=10ns。SDRAM被配置在CE2空间(起始逻辑地址为0x02000000)。

  3.2 C6201 EMIF SDRAM寄存器设置

  表4列出了配置SDRAM需要设置的EMIF寄存器名称及相应的位或位段。

  

  EMIF全局控制寄存器中的SDCEN位,(位6)设置为1,用来使能SDRAM同步时钟SDCLK的输出。EMIFEC2空间控制寄存器中的MTYPE位段(位6~4)设置为011b,用来配置CE2为32位宽的SDRAM空间。由IS42S16400数据手册可查得tRC=70ns、tRP=18ns,tRCD=18ns,故而EMIF SDRAM控制寄存器中的TRC位段(位15~12)应设置为0110b,TRP位段(位19~16)应设置为0001b,TRCD位段(位23~20)应设置为0001b。INIT位(位24)置1,用来强制对SDRAM进行上电初始化。RFEN位(位25)置1,用来使能EMIF对SDRAM的刷新。SDWID位(位26)置1,用来向EMIF表明所使用的SDRAM芯片的字宽为16位,由于IS42S16400的刷新频率为每64ms4096次,故根据公式PERIOD=trefresh/tcyc,EMIF SDRAM时序控制寄存器中的PERIOD位段(位11~0)被设置为0x61A。

  3.3 CCS开发环境中SDRAM配置程序源代码

  TI公司的集成开发环境CCS(Code Composer Studio)中,IS42S16400SDRAM芯片的配置程序C代码如下:

  #include<emif.h> … /*其他用户程序*/ /*读出EMIF控制寄存器的默认设置*/
 
  unsigned int g_ctrl=GET_REG(EMIF_GCTRL);

  unsigned int ce0_ctrl=GET_REG(EMIF_CE0_CTRL);

  unsigned int ce1_ctrl=GET_REG(EMIF_CE1_CTRL);

  unsigned int ce2_ctrl=GET_REG(EMIF_CE2_CTRL);

  unsigned int ce3_ctrl=GET_REG(EMIF_CE3_CTRL);

  unsigned int sdram_ctrl=GET_REG(EMIF_SDRAM_CTRL);

  unsigned int sdram_ref=GET_REG(EMIF_SDRAM_REF);

  /*EMIF全局控制寄存器-使能SDCLK*/

  SET_BIT(&g_ctrl,SDCEN);

  /*设置CE2为SDRAM空间*/

  LOAD_FIELD(&ce2_ctrl,MTYPE_23SDRAM,MTYPE,MTYPE_SZ);

  /*设置SDRAM控制寄存器*/

  LOAD_FIELD(&sdram_ctrl,6,TRC,TRC_SZ);

  LOAD_FIELD(&sdram_ctrl,1,TRP,TRP_SZ);

  LOAD_FIELD(&sdram_ctrl,1,TRCD,TRCD_SZ);

  SET_BIT(&sdrrm_ctrl,SDWID);

  SET_BIT(&sdrrm_ctrl,INIT);

  SET_BIT(&sdrrm_ctrl,RFEN);

  /*设置SDRAM的刷新周期*/

  LOAD_FIELD(&sdram_ref,0x61A,PERIOD,PERIOD_SZ);

  /*重配制EMIF控制寄存器*/

  emif_inif(g_ctrl,ce0_ctrl,cel_ctrl,ce2_ctrl,ce3_ctrl, sdram_ctrl,sdram_ref);

  …/*其他用户程序*/

  结语

  以上介绍了TMS320C6201 DSP芯片与SDRAM(IS42S16400)的具体硬件接口实现。由于SDRAM具有的大容量、高速度和低价格的优势,使用SDRAM构建嵌入式应用海量存储系统会成为一种行之有效的方法。目前该系统已调试完毕。使用SDRAM作为DSP系统外接高速、大容量主存储器具有非常明显的优势,充分显示了SDRAM在嵌入式系统中的良好应用前景。

关键字:寄存器  时序  刷新 引用地址:DSP片外高速海量SDRAM存储系统设计

上一篇:NEC发布新款音频处理器,支持版权保护
下一篇:一种基于功耗管理的DSP处理器设计

推荐阅读最新更新时间:2024-05-02 20:21

Intel全新存储系统Wolf再次刷新记录,读写速度371GB/s
在HPC计算领域中,不止是CPU算力重要,IO系统的数据传输更是瓶颈,高带宽、低延迟的IO也是关键。Intel日前凭借新一代存储系统Wolf夺回了IO500第一,读写带宽高达371.67GB/s。 与TOP500超算排名不同,IO500没太大名气,主要关注HPC中的IO性能,在去年的SC19超算大会上,WekaIO公司凭借自家的WekaIO系统拿下了IO500第一,总分938.95分,带宽174.74GB/s,性能5045.33K IOPS。 当时Intel的Wolf系统以933.64分屈居第二,不过节点方面Intel极富优势,只用了26个节点就实现了,而WekaIO的节点数量高达345个。 在今天7月份ISC
[嵌入式]
Intel全新存储系统Wolf再次<font color='red'>刷新</font>记录,读写速度371GB/s
51单片机的GPIO配置
导语 通过单片机控制外围器件(LED,蜂鸣器,数码管,按键),本质上是对于单片机IO口的操作,相对于STM32,51单片机IO口模式较少,但了解IO的内部对于学习了解51单片机也由很大的帮助。 GPIO GPIO(General Purpose Input Output),通用输入输出。既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。可以通过软件去控制。 在大多数的时候,我们将IO口可以看为一个电子开关,通过向IO寄存器中写入相应的值,其输出的电平就随着寄存器的变化而变化,这是IO口的输出,在大多数的单片机中,需要去配置单片机的IO模式,是输入还是输出。 即需要预先初始化,配置GPIO的参数,再去使用
[单片机]
51单片机的GPIO配置
基于ARM和DSP的嵌入式智能仪器系统设计
1 引言 随着智能仪器及控制系统对实时性信号处理的要求不断提高和大规模集成电路技术的迅速发展。越来越迫切的要求有一种高性能的设计方案与之相适应,将DSP技术和ARM技术结合起来应用于嵌入式系统中,将会充分发挥两者优势以达到智能控制系统中对数据的实时性、高效性的通信要求。该嵌入式系统要求实时响应,具有严格的时序性。其工作环境可能非常恶劣,如高温、低温、潮湿等,所以系统还要求非常高的稳定性。 2 嵌入式系统的总体设计 2.1 核心器件的主要功能 ARM和DSP分别选用Cirrus Logic公司的EP7312、TI公司的TMS320VC5402。充分利用ARM丰富的片上资源和DSP强大的信号处理功能,实现高效性、实时性的信号处理及网络通
[嵌入式]
DM642和CPLD外部中断的寄存器式键盘设计
摘要:介绍了一种采用DM642和CPLD相配合的扩展键盘方法。CPLD管理键盘电路中的芯片逻辑,DM642的外部中断监控按键的状态。简单阐述了键盘的分类,给出系统的硬件电路原理图,在CCS软件中调试程序方法。仿真结果表明,设计可行,达到了预期效果。 关键词:键盘;DM642;CPLD;人机交互 引言 键盘是人机交互模块中必备的输入部分,在目前的嵌入式系统人机接口中通常采用专用的键盘处理芯片ZLG7290设计键盘。由于ZLG7290是一种64位LED显示和64个按键的键盘管理器件,会造成部分LED显示和按键空闲浪费并占用硬件资源比较多,使成本增加。随着DM642性价比的提高,它在图像处理系统和数字媒体系统中的应用越来越广泛,
[嵌入式]
DM642和CPLD外部中断的<font color='red'>寄存器</font>式键盘设计
C51---7定时器
定时器相关寄存器 定时器控制寄存器TCON 定时器工作模式寄存器TCON 代码1 通过定时器闪烁流水灯,实现按键控制流水灯的模式 main函数 #include REGX52.H #include Timer0.h #include Key.h #include INTRINS.H unsigned char KeyNum,LEDMode; void main() { P2=0xFE; Timer0Init(); while(1) { KeyNum=Key(); //获取独立按键键码 if(KeyNum) //如果按键按下 { if(Key
[单片机]
C51---7定时器
ATmega32 ALU
ALU- 算术逻辑单元AVR ALU 与32 个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU 运算只需要一个时钟周期。ALU 操作分为3 类:算术、逻辑和位操作。此外还提供了支持无/ 有符号数和分数乘法的乘法器。具体请参见指令集。
[单片机]
MSP430单片机标准寄存器和bit位的定义
一、标准bit位定义(STANDARD BITS) : WORD:字 15 14 7 1 0 BIT15
[单片机]
介绍下如何新建一个STM32寄存器版的工程
今天简单介绍下如何新建一个寄存器版的工程。 首先,新建一个文件夹用于存放工程项目。在文件夹中在分别新建CMSIS、inc、src、proj三个文件夹。CMSIS(Cortex Microcontroller Software Interface Standard)用于存放基于CMSIS应用程序的基本结构,CMSIS外设访问层的文件。inc用于存放头文件。src用于存放源文件。proj用于存放工程项目。 接着,打开官网下载的固件库文件,将需要的文件添加到CMSIS。最后添加完如下图所示。 点击project,新建工程项目。将工程项目保存到已经建好的文件夹中。选择对应的CPU型号。 弹出添加库文件,由于我们使用寄存
[单片机]
介绍下如何新建一个STM32<font color='red'>寄存器</font>版的工程
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved