6649|24

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

问个内存电路接口以及访问问题 [复制链接]

昨天看了一下电路图,发现内存(SDRAM)和2440接口有点不可思议,后来仔细对比。
发现问题在LDQM,UDQM这两个引脚,他们接到2440的四个nWBE引脚。内存资料是这么说的:Data Input/Output Mask Controls output buffers in read mode and masks input data in write mode 一些中文文档是这么说的:在读模式下控制输出缓冲;在写模式下屏蔽输入数据。按照这种接法(2片内存都是错位2位,并且时钟分开)我觉得内存是分开高16位和低16位分别访问的(以前有人使用同一个时钟驱动导致失败就证明了这点),但是让我纳闷的是2440是怎么控制四个nWBE引脚来完成任务的?并且,我看访问内存的时候都是直接访问32位地址的。真的迷茫了,不知道2440是如何实现的。请高手指点一下。谢谢。

下图是内存连接图,关键部分我都大了红圈。
[url=http://p.blog.eeworld.net/images/p_blog_eeworld_net/gooogleman/EntryImages/20081113/2-32M SDRAM.jpg][/url]

最新回复

恩,路过,长进了一把  详情 回复 发表于 2010-4-1 12:14
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
搞错了,没有插入[img=http://p.blog.eeworld.net/images/p_blog_eeworld_net/gooogleman/EntryImages/20081113/2-32M SDRAM.jpg]图片[/img]
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
为什么问到和硬件相关的问题这里就没有人做声了呢?

我看内存初始化程序,只设置使用了nWBE就完了,-----------三星把很多东西都包起来。也不知道。

--------------请教高人指点,虽然我照抄也不会出现问题,但是我总觉得不爽啊。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
实际上,它把两片 16 位的内存组合成 32 位来用了,这两片内存都接在了控制芯片同一个 BANK 地址上,利用 地址线 数据线 SCLK LDQM UDQM 这 3 个引脚来控制 32 位数据的读写。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
访问控制信号:为了实现ARM存储器访问指令LDR/STR字节、半字和字访问的三种方式,在S3C2440的存储器组中,除了Bank0以外的所有地址空间都可以通过编程设置为8位、16位或32位对准访问,Bank0可以设置为16位或32位。引脚nWBE[3:0](写字节使能)实现8bit ROM芯片组的三种访问方式,或者SRAM不使用UB/LB(在BWSCON中设置)的情况下,与UB/LB连接。引脚nBE[3:0](在使用SRAM情况下的字节允许信号)在SRAM使用UB/LB(是否使用可在BWSCON中设置)的情况下与UB/LB连接。DQM[3:0](SDRAM数据屏蔽信号)引脚实现对SDRAM的三种访问。还有nWAIT、nXBREQ/nXBACK引脚。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个一点也不复杂。
内存的这种接法,使它可以以8位访问,也可以16位访问,也可以32位访问
那4个信号nWBE3~0,正是字节选通控制。

按8位访问,也就是代码中若有:
*(unsigned char *) 0x30000000 = 0x78;
就是一个字节写,这时只有nBWE0信号有效

如果是0x30000001,则只有nBWE1有效(低),其它无效(高)。

再举个例,如果是按16位访问呢?
如果是16位访问,代码一般就是:
*(unsigned short *)0x30000000 = 0x1978;
这是一个16位写。但此时要注意,最低位必须是0,而不能是1,比如地址0x30000001就会使CPU异常,因为必须16位对齐!
dat16 = *(unsigned short *)0x30000002;
这是一个16位读

在16位访问时,0x30000000地址写操作中,nWBE1, 0 = 低,nWBE3, 2 = 高。当0x30000002时,则是nWBE3,2为低,nWBE1,0为高(无效)

32位时则是4字节对齐,也就是最低的两个地址位A1,A0必须为0,即对于32位访问,0x30000001, 0x30000002, 0x30000003都会导致异常(出错)

对于32位访问,0x30000000的下一个地址是0x30000004,因为这个地址是字节地址,但一下子就访问了0x30000000~0x30000003四个字节,也就是nWBE3~0四个信号一起反应!!!


不同的CPU访问的机制是不一样的,这要具体看手册了,是分开片选的
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 3 楼 xajhuang 的回复:
实际上,它把两片 16 位的内存组合成 32 位来用了,这两片内存都接在了控制芯片同一个 BANK 地址上,利用 地址线 数据线 SCLK LDQM UDQM 这 3 个引脚来控制 32 位数据的读写。

-------------------------------------
访问控制信号:为了实现ARM存储器访问指令LDR/STR字节、半字和字访问的三种方式,在S3C2440的存储器组中,除了Bank0以外的所有地址空间都可以通过编程设置为8位、16位或32位对准访问,Bank0可以设置为16位或32位。引脚nWBE[3:0](写字节使能)实现8bit ROM芯片组的三种访问方式,或者SRAM不使用UB/LB(在BWSCON中设置)的情况下,与UB/LB连接。引脚nBE[3:0](在使用SRAM情况下的字节允许信号)在SRAM使用UB/LB(是否使用可在BWSCON中设置)的情况下与UB/LB连接。DQM[3:0](SDRAM数据屏蔽信号)引脚实现对SDRAM的三种访问。还有nWAIT、nXBREQ/nXBACK引脚。


谢谢两位。你们说的在那篇文章我都知道。只是我想了解的更加具体一点——可惜三星已经把所有东西包装得严严实实——很多东西通过硬件实现了。

----------现在我把我的理解发上来。

一、为什么会两片内存都连接相同的地址线?(我一直以为地址线必须是递增的
答案:因为这是两片独立内存,地址线都是固定的,如果地址递增会造成糟糕的后果(我还真以为是两片内存可以无缝连接呢!大错特错了。)
二、为什么两片内存都要错位两位?
答案:
因为两片内存是独立访问的,并且总线宽度都是32位(高16位数据和低16数据位分开读取。至于错位原因请看ARM字节对齐文章)。
但是难题来了,为什么三星访问内存时候并没有分开呢?LDQM UDQM 这两个引脚起作用了(用来屏蔽高低字节输出,相当于锁存)控制这两个引脚的是三星的nWBE
引脚,三星是怎么控制这些引脚的呢?我也很想知道,在这里我只能说出我的推测:2440/2410有个寄存器设置内存的大小,我想2440/2410就是根据这些信息来控制这些引脚,使最总实现32位一起访问。——所有东西包装得严严实实——很多东西通过硬件实现了。

如果我说的不对,请跟帖,两天后结贴。也让我彻底死心,彻底明白。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 zzqccc 的回复:
这个一点也不复杂。
内存的这种接法,使它可以以8位访问,也可以16位访问,也可以32位访问
那4个信号nWBE3~0,正是字节选通控制。

按8位访问,也就是代码中若有:
*(unsigned char *) 0x30000000 = 0x78;
就是一个字节写,这时只有nBWE0信号有效

如果是0x30000001,则只有nBWE1有效(低),其它无效(高)。

再举个例,如果是按16位访问呢?
如果是16位访问,代码一般就是:
*(unsigned short *)0x30000…


我觉得你说的并不对------你可以看内存初始化,总线款对是32位的。
按8位访问,也就是代码中若有:
*(unsigned char *) 0x30000000 = 0x78;
---------你这个类似强制转换了,根本不是什么什么多少位读取,而是你只要了八位,其他你不要了。但是内存还是32位读取的
你可以看看内存介绍,一次性访问4byte的
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
按8位访问,也就是代码中若有:
*(unsigned char *) 0x30000000 = 0x78;
--------------还有,如果内存这样去访问,我觉得会后患无穷
我以前的扩展串口就是这样,我没有错位连接地址线,但是我设定总线宽度是32——了解字节对齐的人就知道这样犯了什么错误。结果我死活查不出数据总是在高位产生有规律变化的原因。我把总线宽度改为8,OK了,世界就平静了。

——以字节方式访问错位的的32位位宽的内存,肯定会出问题。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
呵呵,我不懂硬件。问公司里的一个硬件工程师,他跟我说了这么一大堆。是对是错,期待有高手进来讨论,我跟着学习一下。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
这个问题我觉得一来怪我当年把单片机外围学得一塌糊涂,菜鸟一只,才会打死都要认为地址要递增的才行。
二来是三星的数据手册不够详细,就是一个寄存器设置表而已,通常要人去猜测,对一些功能不知所以然。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

12
 
只能按8位的整倍数访问,如果不是的话,就会出错。因为sdram 的存储是以8位为单位的(物理的)
而总线是32位所以 错开两位 左移2位

至于两块sdram 的并联,我的理解如下

c  U1               U2
0  0123456701234567 0123456701234567
1  0123456701234567 0123456701234567
2  0123456701234567 0123456701234567
3  0123456701234567 0123456701234567

两个16位的拼成一个32位的

cpu读 0那行的时候,通过nBWEx 控制UDQM, LDQM选择高低 半字 ,然后传数据到数据线上

虽然地址线共享,但数据线没有共享,所以我猜 他是同时的,只是通过nBWEx的控制对高低 半字分开读取,再传到相应的数据线上。


分时(或同时,具体也不清楚,只是个人猜测)



不知道大家能否看懂我的意思,表达力太差劲了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 7 楼 gooogleman 的回复:
引用 5 楼 zzqccc 的回复:
这个一点也不复杂。
内存的这种接法,使它可以以8位访问,也可以16位访问,也可以32位访问
那4个信号nWBE3~0,正是字节选通控制。

按8位访问,也就是代码中若有:
*(unsigned char *) 0x30000000 = 0x78;
就是一个字节写,这时只有nBWE0信号有效

如果是0x30000001,则只有nBWE1有效(低),其它无效(高)。

再举个例,如果是按16位访问呢?
如果是16位访问,代码一般就是:



8bit整倍数访问,这是物理的,如果软件 设计 违背了物理设计,你觉得会是什么结果 ?不出错才怪,cpu有异常处理srom可没有哦
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 11 楼 Gdatasheet 的回复:
只能按8位的整倍数访问,如果不是的话,就会出错。因为sdram 的存储是以8位为单位的(物理的)
而总线是32位所以 错开两位 左移2位

至于两块sdram 的并联,我的理解如下

两个16位的拼成一个32位的

cpu读 0那行的时候,通过nBWEx 控制UDQM, LDQM选择高低 半字 ,然后传数据到数据线上

虽然地址线共享,但数据线没有共享,所以我猜 他是同时的,只是通过nBWEx的控制对高低 半字分开读取,再传到相应的数据线上。


分时(或同时,具体也不清楚,只是个人猜测)


不知道大家能否看懂我的意思,表达力太差劲了



我看懂了,你的意思就是我上面红色字体说的意思。哈哈,终于找到个同志了,没有人说我是异想天开了。
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

15
 
路过,学习中。
感谢前人的劳动果实!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

16
 
dfdd
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

17
 
up楼主!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

18
 
进来跟高手们学学
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

19
 
受教了~~~~~~~
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

20
 
fdsadsfasdfa
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表