This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6713EMIF外接了SDRAM和FPGA,FPGA配置为32位异步器件,DSP怎么把SDRAM中的数据发送给FPGA

FPGA和SDRAM共用的EMIF地址线和数据线,会不会冲突啊。程序不知道那部分的问题,DSP给FPGA一个数据后,SDRAM中的数据在变化;更改FPGA程序后,DSP给SDRAM赋值不成功,无法初始化数组,这到底可能是谁在影响啊

  • FPGA和SDRAM在同一个CE空间吗?

  • 不在,SDRAM在CE0,FPGA在CE2.

  • 你在操作FPGA的时候,看一下CE0片选信号是否有效?

    接的是多大的SDRARM? CECTL0-3,SDCTL是怎么配置的?

  • 好像不是上面的问题了。。我用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大小

  • DSP给FPGA能正确发数据给FPGA吗?还是发了以后这个启动信号的运行影响了DSP?

  • 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数据的程序,也是同样的错误

  • begin
    if((TCE2n==0)&&(TEA==20'h01310)&&(TSDWEn==0))
             fifo_in13<=TED[0];
    end
    always@(posedge TECLKOUT)
    begin
    if((TCE2n==0)&&(TEA==20'h01000)&&(TSDWEn==0))
             reset1<=TED[0];
    end

    reg [15:0] delay_nav13;
    always@(posedge TECLKOUT)
    begin
    if((TCE2n==0)&&(TEA==20'h01320)&&(TSDWEn==0))
             delay_nav13<=TED[15:0];
    end
    这是部分FPGA程序

  • 如果DSP能往FPGA正确写数据,那你查FPGA那边的问题了。