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.

F28379S 的 EMIF

我打算采用EMIF来做F28379S和FPGA的通讯,假如硬件的接线都没问题,韧体对于接脚的设定也都没问题:有一根CS、WR、OE、Data bus和Address Bus。但我纳闷的是,F28379S的技术手册是有描述EMIF,可我有点摸不透:要存取FPGA的时候,我们需要设定地址吗?我们需要把数据放在Data bus上?

下列是我手头上的范例程序:

在cmd档案中,有规划技术区块,其中【0x0300000】是否意味着EMIF所管的地址起点?可是我并没有在技术手册里有看过相关的描述..

MEMORY {
PAGE 0: /* Program Memory */
PAGE 1: /* Data Memory */
FPGA_EMIF : origin = 0x0300000, length = 0x000030
}

SECTIONS {
FPGARegsFile : > FPGA_EMIF, PAGE = 1
}

在C档案中,

#pragma DATA_SECTION(FpgaRegs,"FPGARegsFile");
volatile struct FPGA_REGS FpgaRegs;  //把FpgaRegs放在FPGA_EMIF地址中

//FPGA_REGS是个结构,其包含FPGACTRL的字段

FpgaRegs.FPGACTRL.all   = CTRL_REG_CONFIG;

对于上行程序,我不了解,但的确可以执行,而且FPGA也真的把资料写入相对的内存中

我在猜想:因为FpgaRegs是放在EMIF的地址里(?),所以F28379S会让EMIF主动将地址放在Address Bus上,数据放在

Data Bus上,然后其他诸如CS、WR、OE也会根据初始设定,来变更他的状态,故写软件时,【FpgaRegs.FPGACTRL.all 】这个就可视为对内存进行读写

这样的概念对吗?

 

  • 不需要,比如上述cmd中的0x0300000就是CS3对应的首地址,MCU可以直接读写相应的地址,不需要设定地址。
    每个片选对应的地址可以查看芯片手册中的表 6-4. EMIF Chip Select Memory Map:
    www.ti.com/.../tms320f28377s.pdf
  • 看一下时序就很明白了 确定需要连接的总线,FPGA也就是一个外设,通过CS片选
    当选中FPGA时FPGA获取总线,进行数据读取和数据送出,不被片选了FPGA总线设置为高祖
  • 假设有如下的程序,

    FpgaRegs.FPGACTRL.all   = CTRL_REG_CONFIG;

    我可以理解成,EMIF会根据先前设定,打出诸如CS、OE、WR、RD、DataBus和Addr Bus上的各种波形,以便让外界的FPGA去读取。

    整个过程,软件工程师是不需要做其他动作,对吗?

  • 只要配置好接口 对软件这边就没什么要求了 根据手册时序波形FPGA端只需解析
    读走数据或者将数据送到总线上让你读走
x 出现错误。请重试或与管理员联系。