打印

s3c2416的SDRAM和flash怎么计算

[复制链接]
2052|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
joydone|  楼主 | 2013-12-27 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
通宵敲代码| | 2013-12-27 12:45 | 只看该作者
我也没玩过2416,不过从基本常识可以帮你分析一下。

数据线位数也叫总线宽度,只是确定一次读取的数据量,与寻址无关。
寻址只需看地址线数量,和片选线数量。

先看SDRAM
2^16B=2^6KB=64KB
与你所说的最大支持128MB,相去甚远,
建议你查查,是有存在片选线,或者确定一下是否采用了地址编码技术。

再看看Flash
2^26B=2^16KB=2^6MB=64MB
片选线有6根,我知道U盘上的Flash都是采用单线选择法,就是一个线对应一片Flash
这样的话,总容量就是64MB*6=384MB
但不排除可能会采用编码技术,尽管这很**(64片Flash可不是小数目啊)
那么容量就是64MB*2^6=64MB*64=4096MB=4GB,依然不是8GB。

两个结果都不对,可能是我的算法有问题,或者是我忽略了什么 ,也可能就是采用了编址技术。

等大神解答吧!

使用特权

评论回复
板凳
joydone|  楼主 | 2013-12-27 13:42 | 只看该作者
通宵敲代码 发表于 2013-12-27 12:45
我也没玩过2416,不过从基本常识可以帮你分析一下。

数据线位数也叫总线宽度,只是确定一次读取的数据量, ...

我的算法就是和你一样,所以我百思不得其解。。求论坛大侠们帮忙

使用特权

评论回复
地板
joydone|  楼主 | 2013-12-27 13:43 | 只看该作者
通宵敲代码 发表于 2013-12-27 12:45
我也没玩过2416,不过从基本常识可以帮你分析一下。

数据线位数也叫总线宽度,只是确定一次读取的数据量, ...

SDRAM 有2根片选

使用特权

评论回复
5
joydone|  楼主 | 2013-12-27 16:28 | 只看该作者

使用特权

评论回复
6
通宵敲代码| | 2013-12-27 19:13 | 只看该作者
哈哈哈哈,脑子又短路了,也让你问的问题给误导了。
现在才恍然大悟,咱们上面用的方法,只适合在数电里面用。
对于现在的操作系统,是不行的。

SC2416是SC2440的代替品,属于嵌入式系统开发平台,
采用的系统是WinCE或者是Linux,它们都属于现代操作系统。
用我们上面的办法肯定是行不通的。

再现代操作系统中,内存的管理采用的分段、分页等复杂的管理机制,在8086/8088系统中就采用了这种机制,分段便于存储器的管理,
使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B
这个在大学的《微机原理》中学过的,不知是怎么了,用的时候都记不起来了,不好意思啊。

具体实现也比较复杂,我也只是知道,恐怕也给你讲不太明白,就不误导你了。
附上几个链接,你可以看看。也可以查查《微机原理》《现代操作系统》等相关书籍。
好好加油!!

http://blog.csdn.net/wangrunmin/article/details/7967293
http://blog.sina.com.cn/s/blog_6720a9120100i02t.html

使用特权

评论回复
7
joydone|  楼主 | 2013-12-30 08:47 | 只看该作者
通宵敲代码 发表于 2013-12-27 19:13
哈哈哈哈,脑子又短路了,也让你问的问题给误导了。
现在才恍然大悟,咱们上面用的方法,只适合在数电里面 ...

谢谢!不过2440就是用上面的方法计算,答案是对的。就是2416不一样

使用特权

评论回复
8
norman33| | 2013-12-30 10:58 | 只看该作者
本帖最后由 norman33 于 2013-12-30 11:04 编辑

地址线确定内存的地址范围 数据线确定内存的每个数据的bit个数 26根地址线的寻址范围为 2^26 = 67108864 然后 67108864/1024/1024 = 64M 这里的64M是16bit位宽的 换算到8bit宽度就是128M
有6根片选线 就有 2^6 = 64 种组合 理论最大支持64片Memory 单片最大值是128M x 64 = 8192M = 8G

使用特权

评论回复
9
通宵敲代码| | 2013-12-30 11:29 | 只看该作者
joydone 发表于 2013-12-30 08:47
谢谢!不过2440就是用上面的方法计算,答案是对的。就是2416不一样 ...

找找差别,会有答案的。

可以把详细数据发上来,请大牛帮忙分析一下。

使用特权

评论回复
10
norman33| | 2013-12-30 11:40 | 只看该作者
关于DDR2的寻址 我转一篇给你看怎么计算 DDR2的容量是矩阵型的 x轴y轴通过地址线复用

DDR内部组成
DDR内部是由多个存储阵列组成的,我们称这些存储阵列为bank,早期的SDRAM内部分割成两个bank,后来是4个,这是SDRAM规范中规定的最大bank数,在DDR2标准中,BANK的数目提高到8个。

每一个存储阵列就像表格一样,表格的每一个单元格是最小存储单元,大小可以为4, 8, 16,也就是位宽,位宽决定了数据线位数。如果想使用32bit的数据总线宽度,那么可以使用单片32bit内存芯片,或者使用两片16bit位宽的芯片拼接出 32bit。

整个芯片的总容量用如下公式计算:

单元格数目 = 行数 * 列数

总容量(单位bit) = bank数 * 单元格数目 * 单元格大小 = bank数 * 行数 * 列数 * 单元格大小
以K4B4G1646B 4Gbit为例,从它的datasheet可以看出存储配置为256MB x 16bit,bank数是8,row地址线A0~A14, column地址线A0~A9
总容量 4Gbit= 256MB * 16bit = 8 * 32MB * 16bit = 8 * 32K * 1K * 16bit

共有8个bank,每个bank是32K x 1K的单元格阵列,每单元格存储16bit数据。


芯片位宽
在K4B4G1646B芯片手册上,4Gbit容量的芯片,有下面三种规格1GB x 4, 512GB x 8, 256GB x 16。在相同的容量下,位宽出现了多种设计。1GB x 4的位宽需要8个芯片才能组成32bit数据线,但是总容量可高达32Gbit;如果使用1GB x 16则只需2个芯片即可组成32bit数据线,总容量为8Gbit。从上面可以看出,在设计中需要权衡芯片数,总容量。


SDRAM/DDR是怎么寻址的?
为了读取特定单元格的数据,在寻址时要首先确定是哪一个bank,然后在这个选定的bank中进行行列的寻址。在实际工作中,bank的地址与相应的行地址是同时发出的,此时这个命令称之为"行有效"或者“行激活”。在此之后,发送列地址寻址命令和具体的操作命令(读或写),这两个命令也是同时发送的。行列地址是可以复用的,一般来说DDR芯片的地址线为A0~A15,低地址线会被行列复用。以K4B4G1646B 4Gbit 256MB x 16bit内存芯片为例,A0~A14用做行地址,A0~A9用做列地址,这款芯片同时含有B0~B2用来选择bank。

使用特权

评论回复
11
joydone|  楼主 | 2013-12-30 15:41 | 只看该作者
norman33 发表于 2013-12-30 10:58
地址线确定内存的地址范围 数据线确定内存的每个数据的bit个数 26根地址线的寻址范围为 2^26 = 67108864 然 ...

因为CPU地址是8bit一个字节?所以要把16bit的位宽换成8bit的吗??

使用特权

评论回复
12
joydone|  楼主 | 2013-12-30 15:43 | 只看该作者
norman33 发表于 2013-12-30 10:58
地址线确定内存的地址范围 数据线确定内存的每个数据的bit个数 26根地址线的寻址范围为 2^26 = 67108864 然 ...

为什么这里的64M是16bit位宽的?是怎么知道的呢

使用特权

评论回复
13
joydone|  楼主 | 2013-12-30 15:46 | 只看该作者
norman33 发表于 2013-12-30 10:58
地址线确定内存的地址范围 数据线确定内存的每个数据的bit个数 26根地址线的寻址范围为 2^26 = 67108864 然 ...

请问为什么2416的计算flash的方法和2440的不一样呢

使用特权

评论回复
14
norman33| | 2013-12-30 16:10 | 只看该作者
第一个问题 一般标注存储器容量都是按8bit算的 如果是16bit的话那就要x2 这个是约定俗成的 和cpu位宽没关系 第二个问题 数据线有多少根 一般数据位宽就是多少bit 第三个问题 不清楚2440怎么算的 无法回答 但是寻址地址空间大小都是按这么算的 除非像DDR2那样是复用地址线了

使用特权

评论回复
15
joydone|  楼主 | 2013-12-30 16:30 | 只看该作者
norman33 发表于 2013-12-30 16:10
第一个问题 一般标注存储器容量都是按8bit算的 如果是16bit的话那就要x2 这个是约定俗成的 和cpu ...

谢谢!!菜鸟我学习到了!!十分感谢!!

使用特权

评论回复
16
joydone|  楼主 | 2013-12-30 16:35 | 只看该作者
norman33 发表于 2013-12-30 16:10
第一个问题 一般标注存储器容量都是按8bit算的 如果是16bit的话那就要x2 这个是约定俗成的 和cpu ...

你好,请问上面的SDRAM的最大支持128M又是怎么计算出来的呢??

使用特权

评论回复
17
norman33| | 2013-12-31 09:09 | 只看该作者
本帖最后由 norman33 于 2013-12-31 09:12 编辑

看我转发的SDRAM计算方式 SDRAM地址是通过总线上的地址引脚两次复用后计算出来的 光给出地址总线引脚数没办法计算出来 比如地址有13根线 A0~A13 SDRAM寻址时候会发两次地址信号 一次代表内存中X轴坐标 第二次代表Y轴坐标 极限值就是
Xmax * Ymax * Bank数 * 位宽 * 片选  这个就是可以寻址的最大地址范围

使用特权

评论回复
18
joydone|  楼主 | 2013-12-31 15:12 | 只看该作者
norman33 发表于 2013-12-31 09:09
看我转发的SDRAM计算方式 SDRAM地址是通过总线上的地址引脚两次复用后计算出来的 光给出地址总线引脚数没办 ...

好的,我看看。谢谢!

使用特权

评论回复
19
bluesky_kun| | 2014-7-11 08:33 | 只看该作者
最近也在学习2416,涨姿势了

使用特权

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

本版积分规则

54

主题

279

帖子

0

粉丝