FPGA的FSMC代码怎么写,利用Verilog HDL代码写出FPGA与STM32的通信接口,并实现数据通信。
FSMC 接口要是完全实现,还是很复杂的,要考虑中断、地址复用、FIFO读写。
我只实现最简单的,只实现读写寄存器。相当于一个 128*8 的RAM
下面的代码没验证过,是随手写的
module fsmc
(
input clk, //100MHz
input rst_n,
input cs_n,
input wr_n,
input rd_n,
input [7:0] addr,
inout [7:0] data
);
reg [7:0] fsmc_reg [127:0]; //定义 128 个寄存器
reg [7:0] data_r;
assign data = (cs_n == 0 && rd_n == 0) ? data_r:8'bzzzzzzzz;
always@(posedge clk)
begin
if(rst_n == 0)
data_r <= 0;
else if(cs_n == 0 && rd_n == 0) //读
begin
data_r <= fsmc_reg[addr];
end
end
always@(posedge clk)
begin
if(cs_n == 0 && rd_n == 0) //写
fsmc_reg[addr] <= data;
end
endmodule