FPGA PS与PL通过BRAM 通信
open block design
打开ps添加AXI BRAM Contoller
generate block design 将自己的设计打包生成接口在 ps_subsystem_wrapper里面,供上层模块使用
定义上层模块定义BRAM 接线
在上层模块中 BRAM接线,与BRAM controller 相连
上层模块中,BRAM接线与BRAM相连
ram 定义
module ram_test(
input [11:0] bram_addr_a, //地址
input[32:0] bram_wrdata_a,//写数据
input[31:0] bram_rddata_a,//读数据
input bram_rst_a, //复位
input bram_clk_a, //时钟
input [3:0]bram_we_a,//
input rst_n, //
input dac_data_clk,
output wire[15:0] test_data_i,
output wire [31:16] test_data_q
);
wire [31:0] test_data;
wire [9:0] bram_addr_a0;
reg [11:0] r_addr;
//assign bram_addr_a0 = bram_addr_a>> 2;
assign {test_data_q,test_data_i}=test_data;
always @(posedge dac_data_clk)
begin
if(!(&r_addr))
r_addr <= r_addr + 1'b1;
else
r_addr <= 12'b0;
end
//-----------------------------------------------------------
//实例化RAM
ram_ip ram (
.clka (bram_clk_a ), //a口时钟
.wea (bram_we_a), //写使能
.addra (bram_addr_a), //BRAM地址
.dina (bram_wrdata_a), //BRAM A进入数据
.douta(bram_rddata_a),//BRAM a口输出数据
.clkb (dac_data_clk ),
.addrb (r_addr),
.doutb (test_data)
);
endmodule
run 综合
run 实现
生成bitstream
export handware (勾选 bitstream)
launch sdk
删除板级支持包
重新生成板级支持包 选好芯片psu_cortex5_0 , 支持包名字命名 r5_rf_cfg_bsp
班级支持包下面 include xbram_hw.h 两个函数
#define XBram_ReadReg(BaseAddress, RegOffset) \
XBram_In32((BaseAddress) + (RegOffset))
#define XBram_WriteReg(BaseAddress, RegOffset, Data) \
XBram_Out32((BaseAddress) + (RegOffset), (u32)(Data))
负责BRAM的读写
r5_rf_cg 里面main.c 写代码