题解 | #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