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

6678通过SRIO接收数据并搬移到DDR3出现错误

        最近在调试6678与FPGA通过SRIO通信,相同的板卡做了两块,只是焊接的时候6678外挂的DDR3不一样,第一块外挂了四块镁光的4Gb(MT41J256M16HA-125),第二块挂了四片镁光的2Gb(MT41J128M16HA-15E),这两种DDR3芯片的封装完全一样,只是4Gb的是15根地址线,2Gb的是14根地址线,原理图设计是参考开发板的设计,连接方式完全相同。

        调试的程序流程是:DSP端用开发板的gel文件进行初始化,FPGA通过SRIO向DSP的DDR3两块地址(0x90000000和0x90010000)进行兵乓传输,传输的数据为自定义的递增数据(1,2,3,4,5……),并在DSP中将收到的数据用DMA搬移到0xa0000000处进行存储。

        遇到的问题:

        (1)调试4Gb DDR3的板卡时,没有出现什么问题,传输的数据都正确。

        (2)调试2Gb DDR3的板卡时,FPGA通过SRIO直接传输数据到乒乓地址(0x90000000和0x90010000)时,会发生数据错乱,例如:FPGA发送64位的数据1,2,3,4,5,6,7,8,时,收到就是3,4,5,6,7,8,1,2,。后续的数据都是每八个数据发生如此的错乱。

        (3)将数据发送到MSMC中的乒乓地址,数据是正确的,再通过DMA搬移到MSMC中也是正确的,但是如果搬移到DDR3中,就又发生了(2)中出现的错乱。

        (4)写了一个简单的DSP程序,从0x80000000地址开始写入一个递增数列,在memeroy中查看是正确的。再将该递增数列写入L2或者MSMC中,并用DMA搬移到DDR3,数据也是正确的。

        总结了一下:通过(3)中的描述,说明FPGA与DSP之间的SRIO传输是没有问题的,通过(4)的描述,说明DMA搬移是没有问题的。但为什么联合起来传输就出现错乱了呢,跪求大神解答!

Andy Yin1:

不能完全使用EVM配套的gel文件进行ddr的初始化,DDR控制器的配置与layout及DDR选型有关,请根据你的设计及选型将参数填到下面链接的spreadsheet中,之后会自动生成相应的参数,

DDR3 Spreadsheet:http://www.ti.com/dsp/docs/litabsmultiplefilelist.tsp?sectionId=3&tabId=409&literatureNumber=sprabl2a&docCategoryId=1&familyId=1995

对DDR3初始化代码建议参考如下STK中memory test程序中keystone_DDR_init.c中的函数C6678_EVM_DDR_Init。

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

赞(0)
未经允许不得转载:TI中文支持网 » 6678通过SRIO接收数据并搬移到DDR3出现错误
分享到: 更多 (0)