题解 | #RAM的简单实现#

RAM的简单实现

https://www.nowcoder.com/practice/2c17c36120d0425289cfac0855c28796

需要注意的点:

1.题目要求的是双端口RAM,执行的读写操作互不干扰,因此需要写两个always块

2.采用for循环语句对RAM进行初始化,不能写成RAM[addr] <= 'b0的形式

总体代码

`timescale 1ns/1ns
module ram_mod(
	input clk,
	input rst_n,
	
	input write_en,
	input [7:0]write_addr,
	input [3:0]write_data,
	
	input read_en,
	input [7:0]read_addr,
	output reg [3:0]read_data
);

reg [3:0] RAM [0:7];
integer i;

//写操作
always @(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		for(i=0;i<8;i=i+1)
			RAM[i] <= 4'b0000;
	end
	else if(write_en)begin
		RAM[write_addr] <= write_data;
	end
end

//读操作
always @(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		read_data <= 4'b0;
	end
	else if(read_en)begin
		read_data <= RAM[read_addr];
	end
end

endmodule

全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:35
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务