]> Joshua Wise's Git repositories - firearm.git/blobdiff - BlockRAM.v
Fetch: Rewrite for the 317235784th time, this time based off a block diagram on paper...
[firearm.git] / BlockRAM.v
index 1731c30363f4920a0860af2df2331e6ec00c31d5..091c749aef6f8f482bfbfe3025c881608d1696ff 100644 (file)
@@ -12,12 +12,10 @@ module BlockRAM(
         * 0x00004000.  rdata and ready must be driven to zero if the
         * address is not within the range of this module.
         */
-       wire decode = (bus_addr & ~32'h00003FFF) == 32'h00000000;
-       /* verilator lint_off WIDTH */
-       wire [13:0] ramaddr = bus_addr & 32'h3FFC;      /* mask off lower two bits
+       wire decode = bus_addr[31:14] == 18'b0;
+       wire [13:0] ramaddr = {bus_addr[13:2], 2'b0};   /* mask off lower two bits
                                                         * for word alignment */
-       /* verilator lint_on WIDTH */
-       
+
        reg [31:0] data [(16384 / 4 - 1):0];
        
        reg [31:0] temprdata = 0;
@@ -37,7 +35,7 @@ module BlockRAM(
                
                /* This is not allowed to be conditional -- stupid Xilinx
                 * blockram. */
-               temprdata <= data[ramaddr[13:2]];
+               temprdata <= (bus_wr && decode) ? bus_wdata : data[ramaddr[13:2]];
                lastread <= ramaddr;
        end
 endmodule
This page took 0.027621 seconds and 4 git commands to generate.