module charram #(parameter COLS=80, parameter ROWS=60) (input i_clk, input i_rst, input [12:0] i_gen_addr, input [12:0] i_cpu_addr, input [15:0] i_cpu_data, input i_cpu_we, output [15:0] o_gen_data, output [15:0] o_cpu_data); localparam CELLS=COLS*ROWS; reg [15:0] cram [0:CELLS-1]; integer i; initial begin $readmemh("/Users/car/Projects/hope/cram.hex", cram); end assign o_gen_data = cram[i_gen_addr]; assign o_cpu_data = cram[i_cpu_addr]; always @(posedge i_clk, posedge i_rst) begin if (i_rst) begin end else if (i_cpu_we) begin cram[i_cpu_addr] <= i_cpu_data; end end endmodule