前言

ram这种东西,可以用ip方便,也可以自己写代码描述它。

以下讨论单口ram;8bit*256

流程

1.IP:

使用IP当然是最方便的事情啦,但可移植性差而且可定制性较差。

仿真波形:

2.Verilog描述:

描述就得自己写自己调试代码了,不过写好就是一劳永逸啦。。。

开始写了第一版代码:

 //************************************************
// Filename : ram.v
// Author : Kingstacker
// Company : School
// Email : kingstacker_work@163.com
// Device : Altera cyclone4 ep4ce6f17c8
// Description : 8bit*256 ram
//************************************************
module ram #( parameter DATA_WIDTH = ,DEPTH = ,ADDR_WIDTH = )(
//input;
input wire clk,
input wire wren, //write high enable;
input wire [ADDR_WIDTH-:] address,
input wire [DATA_WIDTH-:] data,
//output;
output reg [DATA_WIDTH-:] q
);
reg [DATA_WIDTH-:] memory[:DEPTH-];
//read;
always @(posedge clk ) begin
q <= memory[address];
end //always
//write;
always @(posedge clk ) begin
if(wren) begin
memory[address] <= data;
end
end //always
endmodule

综合RTL:

仿真波形:读写同时的时候会有冲突导致xx。

第二版代码:地址寄存一拍。

 //************************************************
// Filename : ram.v
// Author : Kingstacker
// Company : School
// Email : kingstacker_work@163.com
// Device : Altera cyclone4 ep4ce6f17c8
// Description : 8bit*256 ram
//************************************************
module ram #( parameter DATA_WIDTH = ,DEPTH = ,ADDR_WIDTH = )(
//input;
input wire clk,
input wire wren, //write high enable;
input wire [ADDR_WIDTH-:] address,
input wire [DATA_WIDTH-:] data,
//output;
output wire [DATA_WIDTH-:] q
);
reg [DATA_WIDTH-:] memory[:DEPTH-];
reg [ADDR_WIDTH-:] address_reg;
//read;
always @(posedge clk ) begin
address_reg <= address;
end //always
assign q = memory[address_reg];
//write;
always @(posedge clk ) begin
if(wren) begin
memory[address] <= data;
end
end //always endmodule

综合rtl:

仿真波形:

以上。

最新文章

  1. sql server 取多个数字或者时间的最大值
  2. 【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!
  3. ios跳转
  4. 导出C++ dll文件
  5. python数据类型-布尔值
  6. qt info.plist 添加
  7. CheckBox in ListView
  8. QWebSocketServer
  9. 【爆料】-《伯明翰大学学院毕业证书》UCB一模一样原件
  10. CentOS7编译安装php7.1
  11. Switch语句的参数是什么类型的?
  12. Java并发编程(三)Thread类的使用
  13. PPPOE
  14. sticky-footer的三种解决方案
  15. Java学习笔记--Java开发坏境搭建
  16. 深入理解ajax系列第二篇——请求方式
  17. Openstack创建虚拟机 Restful api和RPC调用
  18. NoSQL and Redis
  19. zabbix修改和查看登录密码
  20. POJ 2886 Who Gets the Most Candies? (线段树)题解

热门文章

  1. 《React Native 精解与实战》书籍连载「React Native 网络请求与列表绑定」
  2. 开源后的.Net 如何选择使用
  3. CISCO交换机-SNMP配置
  4. Acceleration for ML 论文导读
  5. PS调出春夏外景婚纱照
  6. iOS开发造轮子 | 通用占位图
  7. 父级div宽度100%,子级一个div宽度固定,另一个宽度自适应
  8. MySQL数据性能优化-修改方法与步骤
  9. [转帖]学习关于TTL
  10. CMD &amp; Git Shell &amp; Bash Shell