FPGA和SDRAM共用的EMIF地址线和数据线,会不会冲突啊。程序不知道那部分的问题,DSP给FPGA一个数据后,SDRAM中的数据在变化;更改FPGA程序后,DSP给SDRAM赋值不成功,无法初始化数组,这到底可能是谁在影响啊
Shine:
FPGA和SDRAM在同一个CE空间吗?
穷寇莫追:
回复 Shine:
不在,SDRAM在CE0,FPGA在CE2.
Shine:
回复 穷寇莫追:
你在操作FPGA的时候,看一下CE0片选信号是否有效?接的是多大的SDRARM? CECTL0-3,SDCTL是怎么配置的?
穷寇莫追:
回复 Shine:
好像不是上面的问题了。。我用DSP给FPGA发送数据(一个启动信号bit1)
//启动信号 PFPGA=(int *)(FPGA_baseAddr+4*(FPGA_writeAddr+CHANNEL_SYS+FPGA_restAddr)); *PFPGA=0x0;
运行完这一句后,DSP内存里原来的数据和SDRAM里的数据值都被改变了,然后PFPGA指针不再指向0xA00004000,而是变成0x0000FFF8和刷新后变成0x00380038这两个值。。就是说DSP给FPGA发送数据后,DSP内存受到影响了。感觉不是硬件问题,其他例程都好好的。为什么啊
/* EMIF配置 */ *(int *)EMIF_GCTL = 0x00003060;/* EMIF global control register */ *(int *)EMIF_CE1 = 0xFFFFFF23; /* CE1 – 16-bit asynch access */ *(int *)EMIF_CE0 = 0xFFFFFF30; /* CE0 – SDRAM */ *(int *)EMIF_CE2 = 0x3233C823; /* CE2 – 32-bit asynch on daughterboard */ *(int *)EMIF_CE3 = 0xFFFFFF13; /* CE3 – 32-bit asynch on daughterboard */ *(int *)EMIF_SDRAMCTL = 0x57117000; /* SDRAM control register (100 MHz)*/ *(int *)EMIF_SDRAMTIMING = 0x0000061a; /* SDRAM Timing register */
SDRAM是128M大小
Shine:
回复 穷寇莫追:
DSP给FPGA能正确发数据给FPGA吗?还是发了以后这个启动信号的运行影响了DSP?
穷寇莫追:
回复 Shine:
DSP可以给FPGA发送数据也能发送启动信号,但是这时候不能从SDRAM中读数据,我单步调试的时候出现错误
PFPGA=(int *)(FPGA_baseAddr+4*(FPGA_writeAddr+CHANNEL_NO3+NAV_HEAD)); *PFPGA=20-CNT_1ms[2];
//启动信号 PFPGA=(int *)(FPGA_baseAddr+4*(FPGA_writeAddr+CHANNEL_SYS+FPGA_restAddr)); *PFPGA=0x0; //发送导航电文 PFPGA=(int *)(FPGA_baseAddr+4*(FPGA_writeAddr+CHANNEL_NO3+NAV_DATA)); //以上可以正常运行 for(j=1500+CNT_20ms[2];j<37500;j++) { temp0=bits[2][j]; temp0=temp0-48; *PFPGA=temp0; }
这段代码中单步运行到temp0=bits[2][j]出现错误,bits是在SDRAM 0x80000000地址的大数组,还是不能读SDRAM。。。之前也有读FLASH数据的程序,也是同样的错误
穷寇莫追:
回复 穷寇莫追:
beginif((TCE2n==0)&&(TEA==20'h01310)&&(TSDWEn==0)) fifo_in13<=TED[0];endalways@(posedge TECLKOUT)beginif((TCE2n==0)&&(TEA==20'h01000)&&(TSDWEn==0)) reset1<=TED[0];end
reg [15:0] delay_nav13;always@(posedge TECLKOUT)beginif((TCE2n==0)&&(TEA==20'h01320)&&(TSDWEn==0)) delay_nav13<=TED[15:0];end这是部分FPGA程序
Shine:
回复 穷寇莫追:
如果DSP能往FPGA正确写数据,那你查FPGA那边的问题了。
TI中文支持网

