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

C6455: problems in EDMA3 and the timing of EMIFA

我的project是外部GPIO4中断触发edma,edma从EMIFA CE2搬运数据至L2 SRAM。EMIFA配置成64位数据宽度,同步FIFO读模式,时钟为100MHz。利用Chipscope查看EMIFA的时序存在一个奇怪的问题。EMIFA的时序受edma搬运的数据量影响。当一次的edma的数据量小于1024*64bits,EMIFA的时序正常;当一次的edma的数据量大于等于1024*64bits,EMIFA的时序出现问题,尤其是CE2和OE信号,这两个信号每隔15个数据点停一个周期,如图所示。

在正常情况下,CE2和OE信号应该保持低电平直到一次传输完毕,而上图显示的情况则是一次传输中会有多次停顿。

EMIFA配置成64位数据宽度,同步FIFO读模式,时钟为100MHz。下面是EMIFA的配置。

CSL_EmifaSync  syncMem = { (Uint8)CSL_EMIFA_SYNCCFG_READBYTEEN_DEFAULT, \

(Uint8)CSL_EMIFA_SYNCCFG_CHIPENEXT, \

(Uint8)CSL_EMIFA_SYNCCFG_READEN, \

(Uint8)CSL_EMIFA_SYNCCFG_WLTNCY_DEFAULT, \

(Uint8)CSL_EMIFA_SYNCCFG_RLTNCY_1CYCLE, \

(Uint8)CSL_EMIFA_SYNCCFG_SBSIZE_64BIT \

};

/* setting for synchronous type */

syncVal.ssel = 1;  //EMIFA_MEMTYPE_SYNC

syncVal.async = NULL;

syncVal.sync = &syncMem;

/* setup the hardware parameters */

hwSetup.asyncWait = NULL;

hwSetup.ceCfg[0] = &syncVal;    //CE2

hwSetup.ceCfg[1] = NULL; //CE3

hwSetup.ceCfg[2] = NULL;     //CE4

hwSetup.ceCfg[3] = NULL;        //CE5    

EDMA每次传输1024个64bit数据。下面是EDMA的配置。

   /* Setup the first param set */

   myParamSetup.option = CSL_EDMA3_OPT_MAKE (CSL_EDMA3_ITCCH_DIS, \

                                             CSL_EDMA3_TCCH_DIS, \

                                             CSL_EDMA3_ITCINT_DIS, \

                                             CSL_EDMA3_TCINT_EN,\

                                             0, CSL_EDMA3_TCC_NORMAL,\

                                             CSL_EDMA3_FIFOWIDTH_NONE, \

                                             CSL_EDMA3_STATIC_EN, \

                                             CSL_EDMA3_SYNC_AB, \

                                             CSL_EDMA3_ADDRMODE_INCR, \

                                             CSL_EDMA3_ADDRMODE_INCR  

                                            );          

   myParamSetup.srcAddr = EMIFA_CE2_BASE_ADDR;        

   myParamSetup.aCntbCnt =  CSL_EDMA3_CNT_MAKE(8,1024);  

   myParamSetup.dstAddr = L2_DATA_ADDR;        

   myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(8,8);    

   myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL,0);    

   myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,0);    

   myParamSetup.cCnt = 1;

如果将传输数据量改成1-1023之间任何数,EMIFA的时序都是正确的。如果数据量设置成大于等于1024,EMIFA的时序出现问题。

I need your help, thanks for your reply!

Jacob1:

你好,看你这个仿真软件是Chipscope,是否还连接了FPGA?

Thomas Young:

回复 Jacob1:

恩,是的,谢谢你的回答!我已经在TI E2E上找到解决方法了。

Jacob1:

回复 Thomas Young:

你好,能否将您找到的解决方法发出来,我们也好学习一下,呵呵。

赞(0)
未经允许不得转载:TI中文支持网 » C6455: problems in EDMA3 and the timing of EMIFA
分享到: 更多 (0)