加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
d_sram_to_sram_like.v 1.68 KB
一键复制 编辑 原始数据 按行查看 历史
周逸群 提交于 2022-04-23 16:04 . time flies
module d_sram_to_sram_like(
input wire clk, rst,
//sram
input wire data_sram_en,
input wire [31:0] data_sram_addr,
output wire [31:0] data_sram_rdata,
input wire [3:0] data_sram_wen,
input wire [31:0] data_sram_wdata,
output wire d_stall,
//sram like
output wire data_req, //
output wire data_wr,
output wire [1:0] data_size,
output wire [31:0] data_addr,
output wire [31:0] data_wdata,
input wire [31:0] data_rdata,
input wire data_addr_ok,
input wire data_data_ok,
input wire longest_stall,
input wire [1:0] axi_size
);
reg addr_rcv; //地址握手成功
reg do_finish; //读写事务结束
always @(posedge clk) begin
addr_rcv <= rst ? 1'b0 :
data_req & data_addr_ok & ~data_data_ok ? 1'b1 : //保证先data_req再addr_rcv;如果addr_ok同时data_ok,则优先data_ok
data_data_ok ? 1'b0 : addr_rcv;
end
always @(posedge clk) begin
do_finish <= rst ? 1'b0 :
data_data_ok ? 1'b1 :
~longest_stall ? 1'b0 : do_finish;
end
//save rdata
reg [31:0] data_rdata_save;
always @(posedge clk) begin
data_rdata_save <= rst ? 32'b0:
data_data_ok ? data_rdata : data_rdata_save;
end
//sram like
assign data_req = data_sram_en & ~addr_rcv & ~do_finish;
assign data_wr = data_sram_en & |data_sram_wen;
assign data_size = axi_size;
assign data_addr = data_sram_addr;
assign data_wdata = data_sram_wdata;
//sram
assign data_sram_rdata = data_rdata_save;
assign d_stall = data_sram_en & ~do_finish;
endmodule
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化