由于国庆节假期,帖子审批以及工程师回复将会有所延迟,敬请谅解。

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 】这个就可视为对内存进行读写

这样的概念对吗?