DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1549|回复: 1
打印 上一主题 下一主题

[待整理] 怎样控制sdram的存取呀?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 14:06:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样控制sdram的存取呀?

  因为贪图大容量,我要把数据存放在SDRAM里面,但我不知道用什么东西来控制好,单片机的地址线只有16位,而要控制的SDRAM应该都是24位或32位,怎么做呀?用串口转换行不行?请各位大虾指点一下。另外16m~64m的SDRAM芯片有哪些型号?

1、控制SDRAM的地址不需要24位,它是行地址,列地址分开的,一般只需12位~16位。

2、一般是外接一片CPLD作SDRAM控制器。sdram的控制用hdl写的话就是状态机,sdram有7个状态转移,网上有很多例子

3、我认为可以使用多i/o的高速单片机直接控制,如C8051F020,甚至可以直接控制普通内存条。www.elpida.com上有一篇“How to use SDRAM”,介绍得比较详细。
单片机控制sdram占用大量的资源,就算你控制了sdram,你还能干什么?
外接几片373即可解决占用I/O口多的问题;平时不存取sdram的时候可以
让它工作在自刷新状态,不影响你干其他事情;占不了多少代码空间,成
本也低,只是MCU的速度得快一点。


使用经验:

为什么对SDRAM控制时要Precharge(预冲),我现在正在用FPGA写SDRAM接口,但不明白为什么读完,写完后要“预冲”?至于读之前应该是可以理解的!我希望了解在何处需要Precharge(预冲),否则不采用Brust方式会很慢的,

我看了SDRAM的资料,好像说读之前必须把“字线”置1,就当它是预冲吧,只是我看到的SDRAM的DATASHEET中,好像读完,写完后一般也预冲的,我就不太明白了,本来吧,我加一条Precharge指令是没问题的,但是预冲完后必须保持一段时间才能继续“读写”。由于其他技术的要求,我用Burst方式又不太方便

precharge好象是把SDRAM从ACTIVE状态转换到IDLE状态,具体为什么偶也不知道,不过按我的理解,如果对同一行(不同列)操作,可以直接读写不必PRECHARGE。但是如果读写完后需要对其进行刷新,则一定要对其PRECHARGE方可施加刷新指令。

根据datasheet一般每64ms需要对某行刷新(或访问)一次,所以如果SDRAM行数比较多的话最好加入刷新指令,不过我试过几百ms刷新一次(或不刷新)也没有遇到什么问题。

近来Altera公司的SDRAM控制器IP已经开放,可到他们网上获得,其中有一种为双速的看来更适合大家,它获得数据一种速度,输出数据为另一种速度,可用于如高速的A/D和低速的单片机缓冲。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-17 13:47 , 耗时 0.110366 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表