【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL23
ROM的简单实现
描述
实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。可以通过输入地址addr,输出相应的数据data。
接口信号图如下:
使用Verilog HDL实现以上功能并编写testbench验证。
输入描述:
clk:系统时钟
rst_n:异步复位信号,低电平有效
addr:8bit位宽的无符号数,输入到ROM的地址
输出描述:
data:4bit位宽的无符号数,从ROM中读出的数据
解题思路
`timescale 1ns/1ns
module rom(
input clk,
input rst_n,
input [7:0]addr,
output [3:0]data
);
reg [3:0] rom [7:0];
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
rom[0] <= 4'd0;
rom[1] <= 4'd2;
rom[2] <= 4'd4;
rom[3] <= 4'd6;
rom[4] <= 4'd8;
rom[5] <= 4'd10;
rom[6] <= 4'd12;
rom[7] <= 4'd14;
end
else begin
rom[0] <= 4'd0;
rom[1] <= 4'd2;
rom[2] <= 4'd4;
rom[3] <= 4'd6;
rom[4] <= 4'd8;
rom[5] <= 4'd10;
rom[6] <= 4'd12;
rom[7] <= 4'd14;
end
end
assign data = rom[addr];
endmodule