题解 | #ROM的简单实现#

ROM的简单实现

https://www.nowcoder.com/practice/b76fdef7ffa747909b0ea46e0d13738a

ROM的简单实现
ROM初始化时对数据写入一次,之后数据不再发生改变,只能读,又称read only memory.
代码方面主要为对ROM变量的声明。本题让实现一个深度为8,位宽为4的ROM。首先深度8表示这个ROM最多可以存下8个数据。(自我理解深度对应的就是存储的数据多少)位宽为4,表示对数据的存储最多四位。超过四位的则无法表示(自我理解为所能有效存储的最大二进制数的位数)
对ROM声明具体格式如下。 reg 位宽 变量名 深度。   reg [3:0] ROM [7:0];
具体代码如下:
`timescale 1ns/1ns
module rom(
	input clk,
	input rst_n,
	input [7:0]addr,
	
	output [3:0]data
);
reg [3:0] rom_data [7:0];
integer i;
always @(posedge clk or negedge rst_n)

            if (!rst_n)                                  

                    begin

                        rom_data[0] <= 4'd0;

                        rom_data[1] <= 4'd2;

                        rom_data[2] <= 4'd4;

                        rom_data[3] <= 4'd6;         

                        rom_data[4] <= 4'd8;

                        rom_data[5] <= 4'd10;

                        rom_data[6] <= 4'd12;

                        rom_data[7] <= 4'd14;
					end
			else begin
				for(i=0;i<8;i=i+1) 
				rom_data[i] <= rom_data[i];
			end

assign data = rom_data[addr];


endmodule



全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务