X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=master_rom.v;h=a088c87dc5d204e2206369f5d9ddb601716b2ee1;hb=HEAD;hp=f95062820b7db40cc6d1b720103618eefc92e5dd;hpb=3b542afc856d736dfd2ff0eed081f647de07af4c;p=clump.git diff --git a/master_rom.v b/master_rom.v index f950628..a088c87 100644 --- a/master_rom.v +++ b/master_rom.v @@ -1,26 +1,11 @@ // ROM module with single input addr, output port, and clock input. // Data is clocked out of the ROM on positive clock edges. -module master_rom (input clk, input [3:0] addr, output reg [63:0] data); +module master_rom (input clk, input [7:0] addr, output reg [31:0] data); + reg [31:0] rom [0:255]; + initial $readmemh("code.hex", rom); + always @ (posedge clk) begin - case(addr) - 4'd0: data <= 8'b0001_0110; // LDI 6 - 4'd1: data <= 8'b0110_0010; // JP 9 - 4'd2: data <= 8'b0010_0001; // ADD 1 - 4'd3: data <= 8'b1001_0000; // WRITE - 4'd4: data <= 8'b0110_0010; // JP 2 - 4'd5: data <= 8'b0000_0000; - 4'd6: data <= 8'b0001_0001; // LDI 1 - 4'd7: data <= 8'b1000_0000; // READ - 4'd8: data <= 8'b0110_0111; // JP 7 - 4'd9: data <= 8'b1110_0000; // LDQ - 4'd10: data <= 8'b0001_1100; // LDI 12 - 4'd11: data <= 8'b1010_0000; // CONS - 4'd12: data <= 8'b1100_0000; // RDQ - 4'd13: data <= 8'b1101_0000; // CDR - 4'd14: data <= 8'b1100_0000; // RDQ - 4'd15: data <= 8'b0000_0000; - default: data <= 8'bxxxx_xxxx; - endcase + data <= rom[addr]; end endmodule