//##################################################################################################
// Project : AMBA AHB RAM
// Author : Lyu Yang
// Date : 2020-05-10
// Description : AHB RAM
//##################################################################################################
module ahb_ram (
input wire hclk ,
input wire hreset_n ,
input wire hsel ,
input wire [:] htrans ,
input wire hwrite ,
input wire [:] hsize ,
input wire [:] haddr ,
input wire [:] hwdata ,
input wire hready_in ,
output reg [:] hrdata ,
output hready_out ,
output wire [:] hresp
); localparam MEM_SIZE = ; wire hbus_ena;
reg hbus_ena_d;
reg [:] mem_wstrb;
reg [:] mem [:MEM_SIZE-]; // Memory Init
initial $readmemh("../../frw/app_test.txt", mem); // AHB response always OKAY
assign hresp = 'h0;
assign hready_out = 'b1;
assign hbus_ena = hsel & hready_in & htrans[]; always @(posedge hclk, negedge hreset_n)
if(~hreset_n)
hbus_ena_d <= 'b0;
else
hbus_ena_d <= hbus_ena; always @(posedge hclk, negedge hreset_n)
if(~hreset_n)
mem_wstrb <= 'h0;
else if(hbus_ena & hwrite) begin
case(hsize)
'b000: begin
case(haddr[:])
'b00: mem_wstrb <= 4'b0001;
'b01: mem_wstrb <= 4'b0010;
'b10: mem_wstrb <= 4'b0100;
'b11: mem_wstrb <= 4'b1000;
endcase
end
'b001: begin
case(haddr[])
'b0: mem_wstrb <= 4'b0011;
'b1: mem_wstrb <= 4'b1100;
endcase
end
'b010: begin
mem_wstrb <= 'b1111;
end
default: begin
mem_wstrb <= 'b0000;
end
endcase
end
else begin
mem_wstrb <= 'b0000;
end always @(posedge hclk)
if(hbus_ena_d) begin
if(mem_wstrb[])
mem[haddr[:]][ : ] <= hwdata[ : ];
if(mem_wstrb[])
mem[haddr[:]][: ] <= hwdata[: ];
if(mem_wstrb[])
mem[haddr[:]][:] <= hwdata[:];
if(mem_wstrb[])
mem[haddr[:]][:] <= hwdata[:];
end always @(posedge hclk)
if(hbus_ena)
hrdata <= mem[haddr[:]]; endmodule

最新文章

  1. MySQL - 问题集 - 触发器更新本表数据异常&quot;Can’t update table ‘tbl’ in stored function/trigger because it is already used by statement which invoked this&quot;
  2. BZOJ2408 混乱的置换
  3. HTTP2试用小记
  4. Unity3d 解析文本执行已注册的自定函数
  5. Annotation注解(有源代码)
  6. Linq之Linq to Sql
  7. 【练习】使用接口回调和handler实现数据加载到listview
  8. [转]10个顶级的CSS UI开源框架
  9. 在hyper安装openwrt
  10. PHP获取当前页面完整url地址,包括参数的函数
  11. codechef Turbo Sort 题解
  12. webpack教程(六)——分离组件代码
  13. 实现数组元素互换位置(乘机理解java参数传递)
  14. AI五子棋需求规格说明书
  15. 【EMV L2】CDA复合动态数据认证/应用密文生成
  16. 3、SourceTree通过PUTTY连接GitLab
  17. HDOJ 2020 绝对值排序
  18. sed删除包含指定字符串的所有行
  19. es6 入坑笔记(一)---let,const,解构,字符串模板
  20. 格式化输出%02hhx

热门文章

  1. 20:django中的安全问题
  2. 【python】资料记录
  3. Django web框架之模板继承
  4. 禅道BUG管理工具使用链接存储
  5. 微信小程序实战篇-下拉刷新与加载更多
  6. Trapping Rain Water——经典的双边扫描问题
  7. 595. Big Countries
  8. AC日记——[SDOI2017]相关分析 洛谷 P3707
  9. CF1027C Minimum Value Rectangle【贪心/公式化简】
  10. div的border &amp; width