【iCore1S 双核心板_FPGA】例程十四:FSMC总线通信实验——独立地址模式

实验原理:

  STM32F103上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA

之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC总线从STM32向

RAM块中写入数据,然后读取RAM出来的数据进行验证。

核心代码:

int main(void)
{
int i;
unsigned short int fsmc_read_data; HAL_Init();
system_clock.initialize(); led.initialize();
fsmc.initialize();
LED_GREEN_ON; while()
{
for(i=;i<;i++)
{
fpga_write(i,i); //дÊý¾Ý
}
for(i=;i<;i++)
{
fsmc_read_data=fpga_read(i); //¶ÁÊý¾Ý
if(fsmc_read_data!=i) //±È½ÏÊý¾Ý
{
LED_GREEN_OFF;
LED_RED_ON;
while();
}
}
}
}
module FSMC_Ctrl(
input [:]ab,
inout [:]db,
input wrn,
input rdn,
input csn,
input PLL_48M,
input RST_n
);
//------------------------wr_rd-----------------------------//
wire wr;
wire rd; assign wr = (csn | wrn); //提取写信号
assign rd = (csn | rdn); //提取读信号 //-------------------------clk------------------------------//
reg wr_clk1,wr_clk2;
wire clk; always@(posedge PLL_48M or negedge RST_n)
begin
if(!RST_n)
begin
wr_clk1 <= 'd1;
wr_clk2 <= 'd1;
end
else {wr_clk2,wr_clk1} <= {wr_clk1,wr};
end assign clk = (!wr_clk2 | !rd); //将读写信号转换为时钟信号 //-------------------------DB_OUT---------------------------//
wire [:]DB_OUT; assign db = !rd ? DB_OUT : 'hzzzz; //--------------------------ram-----------------------------//
//实例化ram
my_ram u1(
.address(ab),
.clock(PLL_48M),
.data(db),
.rden(!rd),
.wren(!wr),
.q(DB_OUT)
); //----------------------emdmodule---------------------------//
endmodule

实验方法及指导书:

链接:http://pan.baidu.com/s/1bpq7qyV 密码:kib5

【iCore1S 双核心板_FPGA】例程十四:FSMC总线通信实验——独立地址模式

上一篇:孤荷凌寒自学python第三十天python的datetime.datetime模块


下一篇:【iCore3 双核心板】例程十五:USB_CDC实验——高速数据传输