关于SDRAM--MT48lc4m32b2 和dsp6701的配置的一些个人心得。
时间:10-02
整理:3721RD
点击:
这两天一直在弄一个板子,板子上dsp和sdram以及flash sbsram 都是通过fpga连接到一起的。换句话说 也就是dsp 和 sdram 都挂在fpga上。
软件环境:ccs5.2 dsp:6701 sdram:MT-MT48lc4m32b2
1. 首先通过fpga将dsp和 sdram互联,其他都看着管脚联就可以。注意一下 地址线。SDRAM RAS行地址 12根线 A11:A0 分别连接到dsp的{EA13,SDA10,EA11:EA2}. SDRAM CAS 共有八根地址线A7:A0,连接到DSP的EA9:EA2.
2.连线后,配置dsp寄存器。相关寄存器有四个。下面就是大概的描述下 具体 寄存器哪个bit代表什么意思 看datasheet就可以。
a.全局寄存器 地址是0x01800000 要将SDCEN 使能为1 其他的使能 自己看自己的需要就可。 最后为0xF9;
b.CE0 空间寄存器 地址是0x01800008 因为我用的ce0空间 因此只需配置这个空间。其他的选择默认值就行。将mtype 也就是6:4位 设置成011 代表的SDRAM32 最后为0xFFFF3F33。这个值应该都是这样的。
c. SDTCEL 此寄存器 设置一些SDRAM 一些参数 。sdwid 设置成1 RFEN 设置成1 INIT 设置成1 TRCD TRP TRC 是根据计算得来的。这颗sdram 这三个参数为 18ns 18ns 60ns 如果SDRAM f为144MHZ/2 那周期就是13.8ns 那么 TRCD>(18/13.8-1) 所以 TRCD 取1即可 同理 TRP取1 TRCD取4.
最后此寄存器的值为0x07114000.
d.SDTIM 这个就是设置刷新peirod的。通用的方法就是(64ms/4096)/13.8 最后取值约为1125 也就是ox465 我最后配置成了0x00465465
软件环境:ccs5.2 dsp:6701 sdram:MT-MT48lc4m32b2
1. 首先通过fpga将dsp和 sdram互联,其他都看着管脚联就可以。注意一下 地址线。SDRAM RAS行地址 12根线 A11:A0 分别连接到dsp的{EA13,SDA10,EA11:EA2}. SDRAM CAS 共有八根地址线A7:A0,连接到DSP的EA9:EA2.
2.连线后,配置dsp寄存器。相关寄存器有四个。下面就是大概的描述下 具体 寄存器哪个bit代表什么意思 看datasheet就可以。
a.全局寄存器 地址是0x01800000 要将SDCEN 使能为1 其他的使能 自己看自己的需要就可。 最后为0xF9;
b.CE0 空间寄存器 地址是0x01800008 因为我用的ce0空间 因此只需配置这个空间。其他的选择默认值就行。将mtype 也就是6:4位 设置成011 代表的SDRAM32 最后为0xFFFF3F33。这个值应该都是这样的。
c. SDTCEL 此寄存器 设置一些SDRAM 一些参数 。sdwid 设置成1 RFEN 设置成1 INIT 设置成1 TRCD TRP TRC 是根据计算得来的。这颗sdram 这三个参数为 18ns 18ns 60ns 如果SDRAM f为144MHZ/2 那周期就是13.8ns 那么 TRCD>(18/13.8-1) 所以 TRCD 取1即可 同理 TRP取1 TRCD取4.
最后此寄存器的值为0x07114000.
d.SDTIM 这个就是设置刷新peirod的。通用的方法就是(64ms/4096)/13.8 最后取值约为1125 也就是ox465 我最后配置成了0x00465465
自我感觉配置的没有什么问题,可是当在dsp中运行读写sdram的程序的时候。出现如下描述的错误。
程序是将0 2 4....写到sdram中 也就是dsp的ce0空间 对应的起始地址是0x0040 0000。程序执行后 通过查看memory browser 发现 已经将数据写到了相应的地址中。
但是当读取 相应地址的值得时候 却读到ffffffff .比如 0x0040 0004写上去的应该是2 可读到的确是ffffffff。
请问 应该是哪里的问题呢?