打印
[读写时序]

SDRAM读写问题

[复制链接]
7698|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ttxs_2013|  楼主 | 2013-12-31 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SDRAM读写,感觉内容很多啊,数据手册上有一百多页,这几天看了一些,对SDRAM的整个工作原理有了一些认识,但就实验而言,感觉整个的思路还没理清楚,我是按照以实验代码为基础,哪里不明白研究哪里的,希望大家帮我捋一捋这几个问题:(用的是C5509A)

1、对SDRAM 的读写需要做哪些设置?或者说必要的设置有哪些?除了代码中出现的CE空间,还有SDRAM的几个寄存器外。
2我对CE空间的理解是这样的:

CE空间是存放的不同的外部存储器的地址的在内存中的映射空间,应该说不同CE0—CE3空间对应不同的外部存储器(异步存储器,同步突发静态、同步动态存储器),在程序中哪里可以体现出来,EMIF配置结构体里面所有的CE空间都进行了初始化,为什么不是用什么初始化什么?

3、数据手册中提到了刷新请求,自刷新,自动刷新 需不需要深入理解,SDRAM刷新时,会用到SDRAM周期寄存器和计数寄存器,而计数寄存器在程序中并没 有进行相应设置,不影响吗?

4、在SDRAM初始化和发送刷新命令时都有相应的时序图,对于这两个时序图,有一些疑点:
   (1)SRAM的初始化的为什么是CE空间,有什么作用?而不是初始化存储单元
   (2) 时序图中的tRP+ 、tRC+  、tMRD+   这几个时间间隔是不是就是SDRAM控制寄存器中出现的TRP  TRC  TMRD ? 为什么不同的命令之间会有时间间隔?
   (3)行列地址选通信号和写使能 应该是寻址L-bank和存储单元才用到,SDRAM初始化过程中怎么去理解?
   (4) 在SDRAM的读时序图中,地址总线上出现的COL1和COL2是什么意思?

5、什么是SDRAM的未激活状态?看数据手册没看明白。
(添加不了图片)

相关帖子

沙发
zhangmangui| | 2014-1-1 11:37 | 只看该作者
SDRAM可以和5509A无缝连接    至于配置我也没细细研究  
参考基于CSL的配置   然后只是基于基地址进行的读写

使用特权

评论回复
板凳
ttxs_2013|  楼主 | 2014-1-3 19:27 | 只看该作者
zhangmangui 发表于 2014-1-1 11:37
SDRAM可以和5509A无缝连接    至于配置我也没细细研究  
参考基于CSL的配置   然后只是基于基地址进行的读 ...

谢啦,我已经把思路理清楚了,其实上面的问题并不影响对整个实验的理解,知道最好,不知道没必要刨坑问底。

使用特权

评论回复
地板
ttxs_2013|  楼主 | 2014-1-3 19:32 | 只看该作者
ttxs_2013 发表于 2014-1-3 19:27
谢啦,我已经把思路理清楚了,其实上面的问题并不影响对整个实验的理解,知道最好,不知道没必要刨坑问底 ...

但是在下载程序的时候为什么迟迟没有测试结果?好像暂定运行也不行  资料上说如果SDRAM的配置不对,就会造成仿真死机现象,最好先用GEL文件进行初始化测试环境,方法是file—》load GEL ,但下载报错
GEL: Error loading file 'E:\ccs3.3\Code-Easy5509\EX14_SDRAM\c5509.gel': function 'StartUp()' already defined
你遇到过这种情况没?了解不?

使用特权

评论回复
5
zhangmangui| | 2014-1-3 19:45 | 只看该作者
ttxs_2013 发表于 2014-1-3 19:32
但是在下载程序的时候为什么迟迟没有测试结果?好像暂定运行也不行  资料上说如果SDRAM的配置不对,就会 ...

编译没有错误吗   还是只是下载的时候出的问题
如果只是下载出的问题   不知道程序跑起来结果是否正确
你双击打开c5509.gel看看StartUp这个函数

使用特权

评论回复
6
ttxs_2013|  楼主 | 2014-2-27 20:51 | 只看该作者
zhangmangui 发表于 2014-1-3 19:45
编译没有错误吗   还是只是下载的时候出的问题
如果只是下载出的问题   不知道程序跑起来结果是否正确
你 ...

下载gel 文件报错,错误就是StartUp这个函数已经定义了,打开gel文件,
/* The Startup() function is executed when the GEL file is loaded. */

StartUp()
{
        C5509_Init();

        GEL_TextOut("Gel StartUp Complete.\n");
}
这个能说明什么问题?在gel文件中能够看出什么?搞不懂

使用特权

评论回复
7
zhangmangui| | 2014-2-27 22:01 | 只看该作者
ttxs_2013 发表于 2014-2-27 20:51
下载gel 文件报错,错误就是StartUp这个函数已经定义了,打开gel文件,
/* The Startup() function is ex ...

我这边的也是这样    不知道什么原因 你的报错

使用特权

评论回复
8
ttxs_2013|  楼主 | 2014-2-27 22:10 | 只看该作者
zhangmangui 发表于 2014-2-27 22:01
我这边的也是这样    不知道什么原因 你的报错

观察databuffer的值的话,其值还是有的,是因为程序运行需要一定时间?这个也没道理呀
另外还发现,在程序还在运行时,进行其他操作,总会会出现报错信息,接着就死机,遇到很多次了,不知道版主有没有用过v4的?v4的支不支持现在的代码?

使用特权

评论回复
9
zhangmangui| | 2014-2-27 22:18 | 只看该作者
ttxs_2013 发表于 2014-2-27 22:10
观察databuffer的值的话,其值还是有的,是因为程序运行需要一定时间?这个也没道理呀
另外还发现,在程 ...

在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个人觉得还是与仿真器稳定性有关系
用3.3也经常遇到这种问题   与v4关系不大吧

使用特权

评论回复
10
ttxs_2013|  楼主 | 2014-2-27 22:27 | 只看该作者
zhangmangui 发表于 2014-2-27 22:18
在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个 ...

现在用的就是3.3的,嗯,可能是和仿真器有关系,我感觉我的仿真器就不太稳定,有时候发现显示和板子连接上的指示灯亮暗不一样,而且大部分情况连接不上,都要动动仿真器的USB线才好。

使用特权

评论回复
11
ttxs_2013|  楼主 | 2014-3-1 10:17 | 只看该作者
zhangmangui 发表于 2014-2-27 22:18
在程序运行的时候   比如进行右击add to buffer 或者view下观察时域波形等
出现突然断开或者死机   我个 ...

这两天又是频繁的死机或连不上,跟买家联系了,说让寄回去看看,有问题给修,我不知道是自己操作不规范还是说仿真器真的有问题,版主觉得是不是该拿去给看看啊?

使用特权

评论回复
12
zhangmangui| | 2014-3-1 10:23 | 只看该作者
ttxs_2013 发表于 2014-3-1 10:17
这两天又是频繁的死机或连不上,跟买家联系了,说让寄回去看看,有问题给修,我不知道是自己操作不规范还 ...

这个不好说  仿真器一般不会出什么问题
还是要确保你的板子这边   实在连不上考虑换个CCS版本
再试试 不行了就返厂家吧

使用特权

评论回复
13
0226| | 2014-3-1 10:30 | 只看该作者

使用特权

评论回复
14
ttxs_2013|  楼主 | 2014-3-1 11:02 | 只看该作者
zhangmangui 发表于 2014-3-1 10:23
这个不好说  仿真器一般不会出什么问题
还是要确保你的板子这边   实在连不上考虑换个CCS版本
再试试 不 ...

板子应该是没有问题的,可不可以同时安装v4.1,在一台机子上?

使用特权

评论回复
15
ttxs_2013|  楼主 | 2014-3-1 14:20 | 只看该作者
关于程序空间的内存分配:你为什么这样分配?
MEMORY
{
    PAGE 0:

        MMR     : origin = 0000000h, length = 00000c0h
        SPRAM   : origin = 00000c0h, length = 0000040h
        VECS    : origin = 0000100h, length = 0000100h
        DARAM0  : origin = 0000200h, length = 0003E00h
        DARAM1  : origin = 0004000h, length = 0004000h
        DARAM2  : origin = 0008000h, length = 0004000h
        DARAM3  : origin = 000c000h, length = 0004000h

        SARAM0  : origin = 0010000h, length = 0004000h
        SARAM1  : origin = 0014000h, length = 0005000h
        SARAM2  : origin = 0019000h, length = 0003000h
        SARAM3  : origin = 001c000h, length = 0004000h
        SARAM4  : origin = 0020000h, length = 0004000h
        SARAM5  : origin = 0024000h, length = 0004000h
        SARAM6  : origin = 0028000h, length = 0004000h
        SARAM7  : origin = 002c000h, length = 0004000h
        SARAM8  : origin = 0030000h, length = 0004000h
        SARAM9  : origin = 0034000h, length = 0004000h
        SARAM10 : origin = 0038000h, length = 0004000h
        SARAM11 : origin = 003c000h, length = 0004000h
        SARAM12 : origin = 0040000h, length = 0004000h
        SARAM13 : origin = 0044000h, length = 0004000h
        SARAM14 : origin = 0048000h, length = 0004000h
        SARAM15 : origin = 004c000h, length = 0004000h

        CE0     : origin = 0050000h, length = 03b0000h
        CE1     : origin = 0400000h, length = 0400000h
        CE2     : origin = 0800000h, length = 0400000h
        CE3     : origin = 0c00000h, length = 03f8000h

        PDROM   : origin = 0ff8000h, length = 07f00h
   /*   VECS    : origin = 0ffff00h, length = 00100h */ /* reset vector */
}      
而例程是这样的
MEMORY
{
PAGE 0:
    PROG0(RWX)    : origin = 04000h   length = 08000h  资料显示CE0是从040000开始的,写入的SDRAM数据的地址也是从040000开始的,这里怎么是04000h?
    P_VECT(RIX)   : origin = 0FF80h   length = 00080h
PAGE 1:
    DATA0(RW)     : origin = 0C000h   length = 04000h
}
有没有区别?

使用特权

评论回复
16
zhangmangui| | 2014-3-1 22:55 | 只看该作者
ttxs_2013 发表于 2014-3-1 11:02
板子应该是没有问题的,可不可以同时安装v4.1,在一台机子上?

可以  我就安装了  就是看看你的仿真器支持不?

使用特权

评论回复
17
zhangmangui| | 2014-3-1 22:58 | 只看该作者
ttxs_2013 发表于 2014-3-1 14:20
关于程序空间的内存分配:你为什么这样分配?
MEMORY
{

一个只是分的细而已  0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

使用特权

评论回复
18
ttxs_2013|  楼主 | 2014-3-2 09:18 | 只看该作者
zhangmangui 发表于 2014-3-1 22:58
一个只是分的细而已  0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

是啊,DRAM是从04000H开始的,按照例程的长度是08000H,结束地址是04000+08000H=0c000H,而0c000H
还在DRAM区,那怎么会分配到CE空间呢?

使用特权

评论回复
19
ttxs_2013|  楼主 | 2014-3-2 09:19 | 只看该作者
zhangmangui 发表于 2014-3-1 22:55
可以  我就安装了  就是看看你的仿真器支持不?

安装弹出了系统错误,没按成。

使用特权

评论回复
20
yangmm11| | 2014-11-17 17:09 | 只看该作者
zhangmangui 发表于 2014-3-1 22:58
一个只是分的细而已  0x4000H这是DSP内部的RAM区   0x40000开始才是CE0

0x4000H是内部的RAM区,为什么例程中.cmd可以这样分呢?
MEMORY
{
PAGE 0:
    PROG0(RWX)    : origin = 04000h   length = 08000h  资料显示CE0是从040000开始的,写入的SDRAM数据的地址也是从040000开始的,这里怎么是04000h?
    P_VECT(RIX)   : origin = 0FF80h   length = 00080h
PAGE 1:
    DATA0(RW)     : origin = 0C000h   length = 04000h
}
这样分之后写入SDRAM中的数据地址是存在了DSP内部的RAM区吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

125

帖子

4

粉丝