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

DSP28335通过XINTF与FPGA进行数据交互,DSP->FPGA时,写入数据异常

XINTF配置如下

void InitXintf(void) {
// This shows how to write to the XINTF registers. The
// values used here are the default state after reset.
// Different hardware will require a different configuration.

// For an example of an XINTF configuration used with the
// F28335 eZdsp, refer to the examples/run_from_xintf project.

// Any changes to XINTF timing should only be made by code
// running outside of the XINTF.

// All Zones---------------------------------
// Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT
EALLOW;
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;
EDIS;



EALLOW;
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// No write buffering
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT is enabled
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK/2
XintfRegs.XINTCNF2.bit.CLKMODE = 1;

// Zone 0------------------------------------
// When using ready, ACTIVE must be 1 or greater
// Lead must always be 1 or greater
// Zone write timing
XintfRegs.XTIMING0.bit.XWRLEAD = 3;
XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
// Zone read timing
XintfRegs.XTIMING0.bit.XRDLEAD = 3;
XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
XintfRegs.XTIMING0.bit.XRDTRAIL = 3;

// double all Zone read/write lead/active/trail timing
XintfRegs.XTIMING0.bit.X2TIMING = 1;

// Zone will sample XREADY signal
XintfRegs.XTIMING0.bit.USEREADY = 1; //修改值,忽略xready信号
XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous

// Size must be either:
// 0,1 = x32 or
// 1,1 = x16 other values are reserved
XintfRegs.XTIMING0.bit.XSIZE = 3;
EDIS;

}

使用ZONE0区域 通信代码如下

void CommunicationFPGA(void)
{GpioDataRegs.GPACLEAR.bit.GPIO5 = 1;//D_G_A 使能A相数据总线收发器GpioDataRegs.GPASET.bit.GPIO30 = 1;//D_G_B 禁止B相总线收发器导通GpioDataRegs.GPBSET.bit.GPIO32 = 1;//D_G_C 禁止C相总线收发器导通GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;//A_G_A****地址线总线收发器使能,低电平使能GpioDataRegs.GPASET.bit.GPIO1 = 1;//A_G_B地址总线禁止GpioDataRegs.GPBSET.bit.GPIO39 = 1;//A_G_CGpioDataRegs.GPASET.bit.GPIO4 = 1;//D_DIR_A 总线收发器方向,DSP->FPGAGpioDataRegs.GPASET.bit.GPIO3 = 1;*(sendStart + 0) =Value;*(sendStart + 1) =Value;*(sendStart + 2) =Value;*(sendStart + 3) =Value;*(sendStart + 4) =Value;*(sendStart + 5) =Value;*(sendStart + 6) =Value;*(sendStart + 7) =Value;GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;//D_DIR_A 总线收发器方向,FPAG->DSPGpioDataRegs.GPASET.bit.GPIO3 = 1;/*  receFPGAmessage[0] = *(receStart + 0);//第一个子模块电压receFPGAmessage[1] = *(receStart + 1);//第二个子模块电压receFPGAmessage[2] = *(receStart + 2);//第三个子模块电压receFPGAmessage[3] = *(receStart + 3);//第三个子模块电压receFPGAmessage[4] = *(receStart + 4);//第四个子模块电压receFPGAmessage[5] = *(receStart + 5);receFPGAmessage[6] = *(receStart + 6);receFPGAmessage[7] = *(receStart + 7);//第六个子模块电压receFPGAmessage[8] = *(receStart + 8);//第七个子模块电压receFPGAmessage[9] = *(receStart + 9);//第七个子模块电压receFPGAmessage[10] = *(receStart + 10);//第八个子模块电压receFPGAmessage[11] = *(receStart + 11);//第八个子模块电压receFPGAmessage[12] = *(receStart + 12);//第八个子模块电压receFPGAmessage[13] = *(receStart + 13);//第八个子模块电压receFPGAmessage[14] = *(receStart + 14);//第八个子模块电压receFPGAmessage[15] = *(receStart + 15);//第八个子模块电压*/GpioDataRegs.GPASET.bit.GPIO5 = 1;//D_G_A 禁止A相数据总线收发器GpioDataRegs.GPASET.bit.GPIO2 = 1;//A_G_A禁止A相地址总线收发return;
}

Value值为9;

仿真时,通过查看memory观察,数据异常,而且没有什么规律

已经测试过FPGA时序是正常的

求大神告知

Susan Yang:

您是否有尝试  XINTF Power Up Workaround 的方法?

调试XINTF的最直接方法是在写入数据时使用示波器观察其引脚活动。这将使您能够验证控制信号的时序和逻辑电平。

user6394136:

回复 Susan Yang:

您好,我们通过ChipScope观察一些使能引脚时序,均为正常,在之前我们检查硬件问题时,发现若发送数据1,XD0电平应该是3.3V,但是实际上通过示波器观测电压只有1V。 但是这似乎不影响数据的传输,现在当FPGA像DSP接收数据时,DSP接受的数据基本正常(有些微小误差)但是当DSP发送数据给FPGA时,向地址写入数据,通过仿真器观察,这些地址的数据并不是我写入的数据。FPGA接受到的数据是我memory里面观测到的数据

Green Deng:

回复 user6394136:

看着好像XINTF和FPGA之间存在线路争用,XINTF和FPGA之间的争用很容易导致数据损坏,因为两个端点都试图同时控制总线。

user6394136:

回复 Green Deng:

您好,感谢您的答复!

我们目前有了新的进展,现DSP->FPGA时,FPGA可以接收到正确的数据,但是在接受数据期间会有多次跳变,如图所示

发送的数据依次为1,1,255,地址分别为0x4000  0x4001 0x4002. 可以看到第二个数据出现问题,在地址变为4001时,接受到了1,但是随后又跳变成为0,又跳变为1,又跳变为0,后面还有几组数据类似这种情况,是个很奇怪的问题,目前怀疑可能是FPGA的亚稳态问题或者是XINTF时序不匹配导致。

user6394136:

回复 Green Deng:

您好,我们检测到时硬件出现了问题,应该是三态缓冲器出错,目前已更换板子,并且按照您的建议修改了时序,消除了一些不利影响。十分感谢!!

Green Deng:

回复 user6394136:

客气了,祝你后期调试顺利

赞(0)
未经允许不得转载:TI中文支持网 » DSP28335通过XINTF与FPGA进行数据交互,DSP->FPGA时,写入数据异常
分享到: 更多 (0)