FPGA FSMC代码怎么写

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