datasheet

利用FPGA解决TMS320C54x与SDRAM的接口问题

2008-05-14来源: 电子技术应用 关键字:SDRAM  接口芯片  列地址  接口单元  定时信号  行地址  DSP-IO  FPGA

  在DSP应用系统中,需要大量外扩存储器的情况经常遇到。例如,在数码相机和摄像机中,为了将现场拍摄的诸多图片或图像暂存下来,需要将DSP处理后的数据转移到外存中以备后用。从目前的存储器市场看,SDRAM由于其性能价格比的优势,而被DSP开发者所青睐。DSP与SDRAM直接接口是不可能的。

  FPGA(现场可编程门阵列)由于其具有使用灵活、执行速度快、开发工具丰富的特点而越来越多地出现在现场电路设计中。本文用FPGA作为接口芯片,提供控制信号和定时信号,来实现DSP到SDRAM的数据存取。

  1 SDRAM介绍

  本文采用的SDRAM为TMS626812A,图1为其功能框图。它内部分为两条,每条1M字节,数据宽度为8位,故存储总容量为2M字节。

  

  所有输入和输出操作都是在时钟CLK上升沿的作用下进行的,刷新时钟交替刷新内部的两条RAM。TMS626812A主要有六条控制命令,它们是:条激尖/行地址入口、列地址入口/写操作、列地址入口/读操作、条无效、自动刷新、自动刷新。SDRAM与TMS320C54x接口中用到的命令主要有:MRS、DEAC、ACTV、WRT-P、READ-P和REFR。这里,设计目的就是产生控制信号来满足这些命令的时序要求。关于TMS626812A的具体说明可以查看其数据手册。

  2 SDRAM与TMS320C54x之间的通用接口

  图2是DSP与SDRAM的通用接口框图,图中DSP I/F代表TMS320C54x端接口单元,SDRAM CNTL代表SDRAM端接口控制单元。SDRAM被设置成一次性读写128个字节,而DSP一次只读写一个字节,因而建立了两个缓冲区B0、B1来缓存和中转数据。B0、B1大小都为128字节,而且映射到DSP中的同一地址空间。

  

  尽管B0、B1对应于同一地址空间,但对两个缓冲区不能在同一时刻进行合法访问。实际上,当B0被DSP访问时,B1就被SDRAM访问,反之也成立。若DSP向B1写数据,SDRAM就从B0读数据;而当SDRAM的数据写到B0中时,DSP就从B1读数据。两者同时从同一缓冲区读或写都将激发错误。上边所述的数据转移方式有两种好处:一是加速了TMS320C54x的访问速度,二是解决了二者之间的时钟不同步问题。

  3 FPGA中的硬件设计

  TMS320C54x为外部存储器的扩展提供了下列信号:CLK、CS、AO~A15、D0~D15、RW、MATRB、ISTRB、IS,而SDRAM接收下列信号:CLK、CKE、CS、CQM、W、RAS、CAS、A0~A11。由于两端控制信号不同,需要在DSP与SDRAM之间加上控制逻辑,以便将从DSP过来的信号解释成SDRAM能够接收的信号,图3是用FPGA设计的顶层硬件接口图。

  图中主要由三个模块:DSP-IQ、DMA-BUF和SD-CMD。其中DSP-IO是DSP端的接口,用来解码TMS320C54x发送的SDRAM地址和命令。DMA-BUF代表缓冲区BO、B1。SD_CMD模块用来产生SDRAM访问所需的各种信号。

  DSP_IO模块又包括IO_DMA、DSP_BUF和DSP_READ。IO_DMA产生SDRAM的命令信号,即图3中的DSP_RDY、DSP_SD_RW、DSP_SD_BANK_SW、DSP_SD_ADDR[20..0]、DSP_SD_ADDR_RESET、DSP_SD_START。DSP_BUF产生访问B0、B1的地址、数据和控制信号,图3中指DSP_SD_BUFCLKI、DSP_SD_BUFCLKO、DSP_SD_BUFWE、DSP_SD_BUFADDR[6..0]、DSP_SD_BUFIN[7..0]。DSP-READ子模块用来控制DSP的读写方向。

  DMA_BUF分为B0、B1两个缓冲区,用来进行数据传送,每个缓冲区的输入输出信号包括:CLKI、CLKO、WE、ADDR[6-0]、DATA_IN[7-0]、DATA_OUT[7-0]。BANK_SW是一个开关信号,用于DSP和SDRAM对B0、B1的切换访问。

  SD_CMD模块包括刷新、读、写功能。当DSP芯片发出SDRAM读命令时,128字节的数据从SDRAM中读出来并被存储到B0或B1中,当DSP发出写命令之时,128字节的数据传到B0或B1之中并被最终写到SDRAM中。

  

  

  4 软件设计

  TMS626812A SDRAM有两兆字节的存储容量。所以DSP用两个I/O地址向FPGA传送访问SDRAM的高低地址。此文中,该两个I/O地址对应用图4中的03h(DMA_ADDH)和04h(DMA_ADDL)。另外,还有一个I/O地址(图4中的05h)用来向FPGA传送命令产生SDRAM访问的信号。

  DSP向SDRAM写数据时的操作步骤如下:

  (1)数据先被写到B0或B1。

  (2)SDRAM的访问地址经由DSP的I/O地址DMA_ADDH和DMA_ADDL发送到FPGA中。

  (3)DSP向FPGA发出一个命令(I/O地址为DMA_CTL)产生控制信号,使SDRAM从B0或B1中读取数值。

  DSP从SDRAM读数据的操作步骤如下:

  (1)DSP传送访问SDRAM的地址。

  (2)DSP经由FPGA传送一个命令,使得数据从SDRAM中读到FPGA中。

  (3)DSP从B0或B1中读得数据。

  

  图4为DSP中与数据传送相关的各类存储器的分配情况。

  具体设计时,应参考相关资料进行补充。不同的DSP与不同类型的SDRAM接口时,会有细微的区别,电路设计完毕后要进行认真而多方面的测试。

 

关键字:SDRAM  接口芯片  列地址  接口单元  定时信号  行地址  DSP-IO  FPGA

编辑:孙树宾 引用地址:http://www.eeworld.com.cn/mndz/2008/0514/article_14.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:第一页
下一篇:MAXl25型模/数转换器在电能质量监控系统中的应用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32学习之:FMC-扩展外部SDRAM

参考资料:《STM32F4xx 参考手册 2》、《STM32F4xx 规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于 SDRAM 存储器,请参考前面的“常用存储器介绍”,实验中 SDRAM 芯片的具体参数,请参考其规格书《IS42-45S16400J》来了解。1、 SDRAM 控制原理  STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器了。  STM32F429 系列芯片扩展内存时可以选择 SRAM 和 SDRAM,由于 SDRAM 的“容量/价格”比较
发表于 2018-10-21
STM32学习之:FMC-扩展外部SDRAM

ARM裸机程序之存储管理器控制SDRAM

文讲的是s3c2440A芯片的存储管理器,配套的开发板是友善之臂mini2440,首先贴出代码head.s的代码:.equ    MEM_CTL_BASE,    0x48000000        @定义13个寄存器的首地址.equ    SDRAM_BASE,      0x30000000        @定义SDRAM的首地址 .text.global _start_start: bl disable_watch_dog bl memsetup
发表于 2018-10-21

Exynos4412裸机SDRAM工作原理及时序分析

下一节准备将代码重定位到DDR SDRAM,所以本节先对一些基础知识进行学习一下。DDR出身自SDRAM,严格的说应该叫DDR SDRAM,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思,所以,有很大一部分,两者是一样的,理解SDRAM,然后再来理解DDR。在SDRAM上的改进,效果应该更好一些,本文参考大神Tekkaman Ninja的博客中介绍的,并加入了一些自己的讲解。先上一张SDRAM的结构图,如下图所示SDRAM结构图下面上一张简易的SDRAM工作流程图SDRAM的内部是一个存储阵列,阵列就如同表格一样,将数据“填”进去。在数据读写时和表格的检索原理一样,先指定
发表于 2018-10-14
Exynos4412裸机SDRAM工作原理及时序分析

Exynos4412裸机之DDR-SDRAM中重定位

),main.bin 文件的链接地址是0x43E00000(使用的并不是位置无关码,所有程序必须位于该地址处才能正常运行)。需要在SD卡上烧写三部分程序,分别是:1.BL1(由三星提供):实现一些初始化2.BL2(我们自己编写源码,用mkbl2工具生成):板级初始化,并完成代码重定位到DDR SDRAM,完成跳转3.主代码:实现我们想要的功能三部分代码在SD卡的位置如下:程序在SD卡的位置分布从图中可以看出,BL1.bin烧写到SD卡扇区1,BL2.bin烧写到sd卡的扇区17,main.bin烧写到sd卡的扇区49处。整个程序的运行过程大致如下:系统上电后,首先将sd卡扇区1处的bl1拷贝到IRAM的0x02020000地址处
发表于 2018-10-14
Exynos4412裸机之DDR-SDRAM中重定位

JZ2440裸板之SDRAM启动分析

启动文件head.S源码:@*************************************************************************@ File:head.S@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行@*************************************************************************       .equ        MEM_CTL_BASE,  
发表于 2018-10-14
JZ2440裸板之SDRAM启动分析

Tiny210裸机之DDR_SDRAM重定位

    // 得出FoutAPLL = 667MHz    APLL_CON = (1<<31)|(1<<29)|(0x29d<<16)|(0xc<<8)|(1<<0);}===================================================================memset.S中DDR初始化汇编源码:// SDRAM Controller #define APB_DMC_0_BASE      
发表于 2018-10-13

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">