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) beginif (!rst_n) beginrom[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;endelse beginrom[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; endendassign data = rom[addr];endmodule