TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6748: EMIFA对SDRAM的访问时序

Part Number:TMS320C6748

EMIFA按照SDRAM的接法接了FPGA,目前是想让FPGA模仿SDRAM的行为,将其用作同步外储

在DSP程序中对EMIFA接口的设置如下:

(第一个设置的是Self refresh mode,按照TRM文档18.3.2.1.1的说明,应先ENTER,再配置PLL,最后EXIT,由于我在GEL配置了PLL,把EMIFA的时钟配置为25M,所以直接EXIT. 中间三个关于我认为对时序的影响不大,所以就随意配了。)

我的访问方法是,定义一个数组emif_buf,通过链接脚本,配置到EMIFACS0的地址空间中,即 .far:.common:emif_buf > EMIFACS0,编译完成后在Memory Allocation的对应信息如下图所示。在主程序里,直接对这个数组进行操作,比如emif_buf[i] = (short)(i)

在FPGA端,采集到了一些信号,但我不明白应该如何处理。举个例子:

主程序中,对数组循环赋值:

在DEBUG模式下,expression窗口显示如下:

此窗口中显示的地址和数组下标是两倍的关系,我觉得这里能够对上RAM按字节存储,每单个地址对应一个字节,short是两个字节

FPGA采到的信号如下:command是对照TRM文档Table18-5设置的,11对应REFR,12对应PRE,13对应ACTV,14对应WRT,(15对应READ,下图没有READ命令),16对应BT,17对应NOP。clkin是时钟线,dqmnin是DQMn[0],addrin是地址总线,datain是数据总线,都是DSP引脚的信号

上图一共显示了两个burst

第一个13(ACTV)下面的0x005是row address,14(WRT)下面的0x144是column address,然后在16(BT)之前有两个数据,分别是WRT下的0x5544和NOP下的0x0000,分别对应的DQMn[0]是0和1

第二个13(ACTV)下面的0x005是row address,14(WRT)下面的0x144是column address,然后在16(BT)之前有两个数据,分别是WRT下的0x8000和NOP下的0x5545,分别对应的DQMn[0]是1和0

问题:

1:PIN脚的信号是否即TRM文档18.2.4.11提到的逻辑地址,此逻辑地址是否与物理地址一一对应?

      如,这里设置IBANK=0, PAGESIZE=2, 对照Table18-13,由上图信息可以得到4个逻辑地址,依次是0x2A88, 0x2A89, 0x2A89, 0x2A88。 那么这四个逻辑地址能否依次对应上EMIFACS0的物理地址0x40002A88,0x40002A89,0x40002A89,0x40002A88?

2:逻辑地址和数据是如何对应的?DQMn[0]为1时,写入高字节?为0时写入低字节?

      如,第一个burst,先在地址0x2A88写入WRT下0x5544的低字节0x44,再在地址0x2A89写入NOP下的0x0000的高字节0x0?第二个brust,先在地址0x2A89写入WRT下0x8000的高字节0x80,再在地址0x2A88写入NOP下的0x5545的低字节0x45?可是这样的解释说明往同一地址写入了两个不同数据。

3:emif_buf[i]这种直接数组访问有没有问题?而且这样是访问单个数据,此时看时序图,在burst进行两轮之后就被BT命令截断了,根据文档,C6748的burst size最大为8,如何访问,burst长度会为8?

Nancy Wang:

我已将你的帖子转给相关专家,请等待回复。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: EMIFA对SDRAM的访问时序
分享到: 更多 (0)