Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module SB_SPRAM256KA(
- input [13:0] address,
- input [15:0] datain,
- input [3:0] maskwren,
- input wren,
- input chipselect,
- input clock,
- input standby,
- input sleep,
- input poweroff,
- output wire [15:0] dataout
- );
- reg [15:0] memory [14'h3FFF:0];
- reg [15:0] output_buffer;
- integer i;
- // Default values
- wire [13:0] address_def = (address === 14'hzzzz) ? 14'h0 : address;
- wire [15:0] datain_def = (datain === 16'hzzzz) ? 16'h0 : datain;
- wire [3:0] maskwren_def = (maskwren === 4'hz) ? 4'hF : maskwren;
- wire wren_def = (wren === 1'bz) ? 1'b0 : wren;
- wire chipselect_def = (chipselect === 1'bz) ? 1'b0 : chipselect;
- wire standby_def = (standby === 1'bz) ? 1'b0 : standby;
- wire sleep_def = (sleep === 1'bz) ? 1'b0 : sleep;
- wire poweroff_def = (poweroff === 1'bz) ? 1'b0 : poweroff;
- wire [15:0] mask = {
- {8{maskwren_def[3]}},
- {8{maskwren_def[2]}},
- {8{maskwren_def[1]}},
- {8{maskwren_def[0]}}
- };
- assign dataout = (poweroff & !sleep) ? memory[address] : 16'hzzzz;
- always @(posedge clock) begin
- if (!poweroff_def) begin
- for (i = 0; i <= 14'h3FFF; i = i + 1) begin
- memory[i] = 16'hx;
- end
- end else if (!standby_def && chipselect_def && wren_def) begin
- memory[address_def] = (memory[address_def] & ~mask) | (datain & mask);
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement