Memory: Fix bug in which swp_oldval does not get latched (oops!). Make align_rddata...
[firearm.git] / BlockRAM.v
index 30f7515..091c749 100644 (file)
@@ -12,7 +12,7 @@ module BlockRAM(
         * 0x00004000.  rdata and ready must be driven to zero if the
         * address is not within the range of this module.
         */
         * 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;
+       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 */
 
        wire [13:0] ramaddr = {bus_addr[13:2], 2'b0};   /* mask off lower two bits
                                                         * for word alignment */
 
@@ -35,7 +35,7 @@ module BlockRAM(
                
                /* This is not allowed to be conditional -- stupid Xilinx
                 * 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
                lastread <= ramaddr;
        end
 endmodule
This page took 0.017665 seconds and 4 git commands to generate.