`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],out;
always @( clk or negedge rst_n)
begin
if(!rst_n)
begin
rom_data[0]<=4'b0000;
rom_data[1]<=4'b0010;
rom_data[2]<=4'b0100;
rom_data[3]<=4'b0110;
rom_data[4]<=4'b1000;
rom_data[5]<=4'b1010;
rom_data[6]<=4'b1100;
rom_data[7]<=4'b1110;
out<=4'b0000;
end
else
begin
case(addr)
8'b0000_0000:out<=rom_data[0];
8'b0000_0001:out<=rom_data[1];
8'b0000_0010:out<=rom_data[2];
8'b0000_0011:out<=rom_data[3];
8'b0000_0100:out<=rom_data[4];
8'b0000_0101:out<=rom_data[5];
8'b0000_0110:out<=rom_data[6];
8'b0000_0111:out<=rom_data[7];
default:out<=4'b0000;
endcase
end
end
assign data=out;
endmodule