欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对SDRAM的理解总结

程序员文章站 2022-04-01 22:04:17
...
  1. Physical Bank,下文简称P-Bank
    Logical Bank,下文简称L-Bank.
  2. 地址
    对SDRAM的理解总结

sequential与interleave的区别

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,总之会复杂,但是延迟小了。
  • Interleave也可以是BANK的交替读或写。如下面两幅时序图
    对SDRAM的理解总结
    对SDRAM的理解总结

full page

关键点一:从address A增加到end of this page,不会停止,然后再从the starting address of this page增加,如此循环
关键点二:直到burst stop命令才停止
对SDRAM的理解总结

相关标签: FPGA sdram