|
首先弄清楚有哪些参数需要设置,对于C6211/C6711,有以下参数需要设置:
基本信息:位,BANK数,ROW SIZE,COLUMN SIZE共4项;
时序参数:TRC,TRP,TRCD,Refresh period(ECLKOUT CYCLES),Extra refreshes ctrl,
CAS latch (TCL),tras,trrd,Twr,Thzp(共10个参数);
附加时序:Read to read,Read to DEAC/DEAB,Read to write,Read to write with interrupt,
Write to write,Write to DEAC/DEAB,Write to read(共7个参数)。
此外CEn寄存器还有对异步时序的参数设计,如Read strobe width,Read setup width等,这些参数对SDRAM无影响。
各参数的具体意义不再废话多说了,记录一下各个参数的具体设置过程:
基本信息就太简单了,我用的是32bit、4banks的12(r)*9(l)的SDRAM;
时序参数可以通过SDRAM的datasheet直接查出来,值得提的是Refresh period,datasheet中刷新周期为64ms,因为该SDRAM有12个R地址线,即有2的12次方共4K需刷,CLK时钟为150MHz,CLK周期约为6ns,则设置的周期数为64ms/4K/6ns,结果约2605个周期。
附加时序的设置在SDRAM的datasheet中就找不到依据了,这个得参考TI的SPRA433B.PDF
文档,第34页有详细说明和推荐参数设置,按照推荐参数设置就OK了。
此外要提醒一下的是:利用CCS的CSL(片级支持库)进行设置时,留意各个参数的表达式。具体来说就是:时序参数(共10个)都不需要做加减处理,直接按照datasheet的参数填,而附加时序栏的参数则需要根据TI文档的推荐值加1。
最后我设置的关于现代的32位166MHz的SDRAM具体参数如下(ECLKOUT时钟为150MHz):
SDRAM相关设置
BANK数 | 4 | ||
ROW SIZE | RA0---RA11(12) | ||
COLUMN SIZE | CA0---CA8(9) | ||
SDRAM datasheet | Value in CCS | ||
TRC | 10CLKS (>60ns) | 10 | |
TRP | 3CLKS (>18ns) | 3 | |
TRCD | 3CLKS (>18ns) | 3 | |
Refresh period(ECLKOUT CYCLES) | 64ms/4K(12 row) | 2605 | |
Extra refreshes ctrl(XRFR) P28 controls the number of refreshes performed to SDRAM when the refresh counter expires | 仅两位(2bits) | 1 | |
CAS latch (TCL) | 3CLKS | 3 | |
tras | 7CLKS (42ns-100k) | 7 | |
trrd | 12ns (2CLKS) | 2 | |
Twr (Write recovery, time from last data out of C6000 (write data) to DEAC/DCAB Command) | 2CLKS | ||
Thzp (High Z from precharge, time from DEAC/DCAB to SDRAM outputs (read data) in high Z) | 3CLKS | 3 | |
Read to read (Eclkout cycles) | 需参照 SPRA433B.PDF P34 | 0(+1) | 需要在CSL中加上一 |
Read to DEAC/DEAB | 1(+1) | ||
Read to write | 4(+1) | ||
Read to write with interrupt | 2(+1) | ||
Write to write | 0(+1) | ||
Write to DEAC/DEAB | <FONT face
|