Fix some simulator-only bugs involving debugging/illegal states. Make rd and wr...
[fpgaboy.git] / System.v
index ebc9be4..95b715c 100644 (file)
--- a/System.v
+++ b/System.v
@@ -28,13 +28,16 @@ module BootstrapROM(
        input wr, rd);
 
        reg rdlatch = 0;
        input wr, rd);
 
        reg rdlatch = 0;
+       reg [7:0] addrlatch = 0;
        reg [7:0] brom [255:0];
        initial $readmemh("bootstrap.hex", brom);
 
        wire decode = address[15:8] == 0;
        reg [7:0] brom [255:0];
        initial $readmemh("bootstrap.hex", brom);
 
        wire decode = address[15:8] == 0;
-       wire [7:0] odata = brom[address[7:0]];
-       always @(posedge clk)
+       wire [7:0] odata = brom[addrlatch];
+       always @(posedge clk) begin
                rdlatch <= rd && decode;
                rdlatch <= rd && decode;
+               addrlatch <= address[7:0];
+       end
        assign data = rdlatch ? odata : 8'bzzzzzzzz;
 endmodule
 
        assign data = rdlatch ? odata : 8'bzzzzzzzz;
 endmodule
 
This page took 0.157758 seconds and 4 git commands to generate.