前言
本文简单介绍通过bram在ps和pl间进行数据的传输以及命令的交互
1.pl部分
1.1设计文件代码
module bram_pl
(
input clk,
input rst,
input [31:0] bram_dout,
output bram_en,
output[31:0] bram_din,
output[3:0] bram_we,
output[31:0] bram_addr
);
reg[31:0] addrb;
reg[1:0] bram_st;
reg[3:0] web;
reg[31:0] data;
always@(posedge clk)begin
if(rst)begin
addrb <= 32'h000003fc;
bram_st <= 2'd0;
web <= 4'b0000;
end else begin
case(bram_st)
0:begin
if(bram_dout == 32'h0000_00ff)begin
bram_st <= 2'd1;
addrb <= 32'h00000400;
end else begin
bram_st <= 2'd0;
addrb <= 32'h000003fc;
end
end
1:begin
addrb <= addrb + 4;
if(addrb == 32'h000007fc)begin
bram_st <= 2'd3;

本文介绍了如何在Zynq平台上,通过BRAM实现处理器系统(PS)与可编程逻辑(PL)间的数据传输。PL部分使用Verilog设计了一个模块,处理BRAM的读写命令,而PS部分使用C语言编写程序向BRAM写入数据。当PS写入特定结束标志后,PL开始继续写入新的数据。地址映射在PS和PL间有所不同,需注意地址转换。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



