sl3340 发表于 2012-2-1 10:38:12

SDRAM---------------工作模式寄存器中得 突发长度设置的问题。

http://cache.amobbs.com/bbs_upload782111/files_51/ourdev_715340TWM28J.jpg
(原文件名:11.jpg)


Starting Column Address 是什么意思? A2 A1 A0 以及A3 不仅仅设定了顺序 交叉 突发长度   还有起始列地址 ? 为什么会有访问顺序? 交叉和连续的区别又是什么? 交叉有什么特殊的用处么?

superluan 发表于 2012-2-1 11:08:44

我试着回答部分。后面的补充。sdram很多具体操作我也没有深入研究过。
Starting Column Address:这个我在我手头的手册中没有看到和列地址相关的说明。burst长度是基本模式设置部分的。cas和ras都是低的时候进行操作的。
A2 A1 A0 以及A3 不仅仅设定了顺序 交叉 突发长度   还有起始列地址 :和起始地址是没有关系的。这个只在模式设置时起作用,和地址没有关系。
为什么会有访问顺序:从历史来说,应该是有这样的需求,才有这样的设计的。否则burst的顺序应该只能有一种顺序。
交叉和连续的区别又是什么:你比较你的表就看出来了。应该说连续是交叉的一个特例了。连续也是某种情况下的交叉。
交叉有什么特殊的用处么:用户的需求应该是千差万别的。比如某些情况下顺序采集到的数据存储到ram中,然后再对数据进行处理,这个时候可能会存在字节顺序交换或者先看后面的数据的情况再决定如何对前面的数据进行处理。

dr2001 发表于 2012-2-1 11:52:26

SDRAM具体的一些东西没有深入研究过,仅供参考:
- 此表应该是表达SDRAM Burst模式下,Burst Length,Type两个参数,在实际访问时,对给定起始列地址Burst出来的数据地址的影响。
- Starting Column Address指实际访问的时候,第一个访问的那个地址。根据Length,Type,如果用Burst操作,连续读数据,随后输出的数据地址是按照表格中的顺序来的。
- 选择何种Length和Type,取决于SDRAM控制器的:1、向上接口的协议(CPU侧);2、SDRAM的具体构成,几个芯片拼成的,etc。
Interleave那个Type,至少其中的一个目的,是为了满足比如32Bit对CPU总线,16Bitx1片SDRAM这样的情形,尽快凑够32Bit的数据用的。如4凑8/16/32,8凑16/32,16凑32,都是能支持的。这是因为CPU总线不一定读数据支持Byte Mask。
当然,这种凑数会导致读取的地址序会比较乱,但是对数据吞吐率而言有保证,电路复杂点也就认了。。。

Burst Length=8;Start Col Addr=3;Type=Interleave的一个潜在的例子:
- CPU Cache Line Size: 16Bytes;
- CPU访问(读)字节地址0x???3,导致Cache Miss,进而需要Fill Cache Line;
- CPU Core对外总线是32Bits,读数据不支持Byte Mask,即总是假设该32bits数据都是有效的;这样总线可以发一个4次连续读的Burst或者4次单独读请求。
- SDRAM控制器和Core对外总线连接,但是外部的SDRAM是一片16bit的芯片。为了满足总线的要求,SDRAM读数据总要尽快凑够32Bit数据才能完成一次数据传输。
这时候,就可以设置成Burst Length=8,Type=Interleave,用尽可能少的周期以及CPU对外总线延迟完成操作。
缺点就是地址序可能不单调的,SDRAM控制器可能需要内部几个字节的缓冲或者要和CPU Cache控制器行为去匹配,etc,总之会复杂,但是延迟小了。

基本上就是这个意思了。

sl3340 发表于 2012-2-1 12:12:39

回复【2楼】dr2001
-----------------------------------------------------------------------

谢谢你的回复,我举个例子:

我想顺序读长度8的8个数据, A3~A0:0011,地址 ad 0 ~ ad7的数据要读出,最后给出的读命令中的列地址是ad0,那么出来的数据第一个其实是ad3的数据然后依次是 ad4、ad5、ad6、ad7、ad0、ad1、ad2?

sl3340 发表于 2012-2-1 12:13:21

回复【2楼】dr2001
-----------------------------------------------------------------------

你好,可否加Q 详细请教一下 , 664365692

fishplj2000 发表于 2012-2-1 14:20:30

Burst R/W是循环寻址的!

给你说详细点:
1.设定好Burst Length后,每个Page(整行)操作分成了以Burst Length为长度的多个均匀小块;
2.Starting Column Address可以让:
   (a)Sdram定位是哪个小块在进行Burst操作;
   (b)以Starting地址为起点,然后在这个小块中进行首尾衔接的环形寻址;
   (c)寻址到当前小块的边界时,调头!不会越界进入下一个小块内,


不知道你明白没有!

sl3340 发表于 2012-2-2 08:18:09

回复【5楼】fishplj2000
-----------------------------------------------------------------------

有些明白了···谢谢 ···你真是超赞呢···

ye_song 发表于 2012-2-16 23:43:22

mark

mailtoyj518168 发表于 2012-2-17 10:00:01

mark
页: [1]
查看完整版本: SDRAM---------------工作模式寄存器中得 突发长度设置的问题。