视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
EMIF寄存器设置
2025-10-03 15:07:35 责编:小OO
文档
SDRAM相关:

对于C6701,EMIF与SDRAM的接口时序由SDCTL寄存器控制。EMIF提供了5个时序参数,其中3个在SDCTL寄存器中设置,另外2个为固定值,如表4-4所列。在分析接口时序的配合情况时,需要计算“富裕时间”的大小,这是在考虑了SDRAM芯片的器件手册提供的最坏情况之后,得到的时序上的一个裕量,至于值的大小,是系统设计层需要考虑的问题,具体要求随不同的系统而异,而且与印制板的实际布线情况以及负载的情况密切相关。

SDCTL中需要设置的三个参数TRC、TRCD、TRP用以下三个公式来计算:

式中是指SDRAM芯片的时钟周期。

表4-4 C6701的SDRAM接口时序参数

参数控制内容相对于EMIF Clock的周期数

REFR命令到ACTV、MRS或是下一个REFR命令之间的时间

TRC+1
ACTV命令到READ或WAT命令之间的时间

TRCD+1
DCAB命令到ACTV、MRS、REFR命令之间的时间

TRP+1
ACTV命令到DEAC、DCAB命令之间的时间

7
读数据和DCAB命令之间的时间

2
在实际的系统实现中,C6701的CLKOUT1时钟频率为133MHz,故而SDRAM的实际工作频率为66.7MHz,(SDCLK=CLKOUT2=CLKOUT1 frequency/2),即。SDRAM分别被配置在CE2空间(起始逻辑地址为0x02000000)。

在需要配置的寄存器位段方面,EMIF全局控制寄存器中的SDCEN位,(位6)设置为1,用来使能SDRAM同步时钟SDCLK的输出。EMIFEC2空间控制寄存器中的MTYPE位段(位6~4)设置为011b,用来配置CE2为32位宽的SDRAM空间。由HY57V281620ET-H数据手册可查得、、,根据上面的计算公式,故而EMIF SDRAM控制寄存器中的TRC位段(位15~12)应设置为0100b,TRP位段(位19~16)应设置为0001b,TRCD位段(位23~20)应设置为0001b。INIT位(位24)置1,用来强制对SDRAM进行上电初始化。RFEN位(位25)置1,用来使能EMIF对SDRAM的刷新。SDWID位(位26)置1,用来向EMIF表明所使用的SDRAM芯片的字宽为16位,由于HY57V281620ET-H的刷新频率为每ms4096次,故根据公式c,EMIF SDRAM时序控制寄存器中的PERIOD位段(位11~0)被设置为0x209。

用C语言来实现完成上述初始化的操作如下所示[32,33,34]:

#define  EMIF_GCR    0x 0x01800000

#define  EMIF_CE2    0x 0x01800010

#define  EMIF_SDCTL  0x 0x01800018

#define  EMIF_SDTIM  0x 0x0180001C

void c6701_sdram_init()

{

CSL_init();

*(unsigned volatile int *)EMIF_GCR=0x3679;

*(unsigned volatile int*)EMIF_CE2=0xffff3f33;

*(unsigned volatile int*)EMIF_SDCTL=0x03114000;

*(unsigned volatile int*)EMIF_SDTIM=0x00138209;

}

FLASH相关:

在本系统中,FLASH芯片外接在DSP1的CE1空间。EMIF接口由一组存储器映射的寄存器进行控制与维护,包括配置各个空间存储器类型和设置读写时序等。和异步器件接口时需配置CE空间控制寄存器,由它来控制存储器的读写周期,本系统用到了CE1空间,故需要设置CE1空间控制寄存器的值。在设置CE1空间控制寄存器时,应满足以下条件:

1)异步读时:

2)异步写时:

3)附加参数:

对于本系统,从AM29LV320DB90的数据手册可以查出如下参数的值:、、、、、、、。而DSP1的时钟信号CLKOUT1为133MHz,所以。根据以上的公式,对EMIF寄存器相关的读写参数作出如下的计算:

1)寄存器相关读参数:

设置SETUP=1,

根据公式:,

因此: 

取STROBE=15cycles,则;

因此: 

因为HOLD不能为负,所以取HOLD=0,则;

取HOLD=3cycles,。

SETUP+STROBE +HOLD=19cycles;可以满足条件。

2)寄存器相关写参数:

取STROBE=7cycles,则

因此:,

取SETUP=3cycles,则;

取HOLD=3cycles,则;

所以: =97.5ns>90ns,满足条件。

通过以上的计算,我们已经知道本系统中EMIF相关寄存器位段的值,在初始化EMIF时,只需将其值写入相应的寄存器即可,其C语言的实现和SDRAM初始化相似,在此不再详述。

FIFO相关:

相关的三个参数由以下公式来确定:

式中指的为C6701的时钟频率,而其他的相关参数、、、、、、等均可从器件手册或者由FPGA提供。下载本文

显示全文
专题