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

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

这样的概念对吗?

 

mangui zhang:看一下时序就很明白了确定需要连接的总线,FPGA也就是一个外设,通过CS片选
当选中FPGA时FPGA获取总线,进行数据读取和数据送出,不被片选了FPGA总线设置为高祖

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

这样的概念对吗?

 

mangui zhang:

参考附件接口

1323.CPLD.rar

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

这样的概念对吗?

 

Wen-Gou Lin:

回复 Green Deng:

假设有如下的程序,

FpgaRegs.FPGACTRL.all   = CTRL_REG_CONFIG;

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

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

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

这样的概念对吗?

 

mangui zhang:

回复 Wen-Gou Lin:

只要配置好接口对软件这边就没什么要求了根据手册时序波形FPGA端只需解析
读走数据或者将数据送到总线上让你读走

赞(0)
未经允许不得转载:TI中文支持网 » F28379S 的 EMIF
分享到: 更多 (0)