ROM简单实现
题目描述
实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。可以通过输入地址addr,输出相应的数据data
接口信号图如下:
`timescale 1ns/1ns
module rom(input clk,input rst_n,input [7:0]addr,output [3:0]data
);//rom定义:reg 位宽 变量名 深度reg [3:0] rom [7:0];//ROM初始化的时候写入一次,之后只能读integer i;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 //保持rom的值beginfor(i = 0;i < 8; i = i+1)begin:rom_irom[i] <= rom[i];endendendassign data = rom[addr];// reg [3:0] data_reg;
// always@(posedge clk or negedge rst_n)
// begin
// if(!rst_n)
// data_reg <= 4'd0;
// else
// begin
// case(addr)
// 8'd0:data_reg <= rom[0];
// 8'd1:data_reg <= rom[1];
// 8'd2:data_reg <= rom[2];
// 8'd3:data_reg <= rom[3];
// 8'd4:data_reg <= rom[4];
// 8'd5:data_reg <= rom[5];
// 8'd6:data_reg <= rom[6];
// 8'd7:data_reg <= rom[7];
// default:data_reg <= rom[0];
// endcase
// end
// end// assign data = data_reg;
endmodule