blob: 1bab7bf866e722e82e08af52982257db5cf80b8f [file] [log] [blame] [edit]
/* Data read from RAM and displayed on one LED while others are a
* binary counter
*/
module top (
input clk,
output LED1,
output LED2,
output LED3,
output LED4,
output LED5
);
parameter LOG2RAMDELAY = 20;
localparam BITS = 4;
localparam LOG2DELAY = LOG2RAMDELAY + 7;
reg [BITS+LOG2DELAY-1:0] counter = 0;
reg [BITS-1:0] outcnt;
wire bout;
reg enable = 0;
always @(posedge clk) begin
counter <= counter + 1;
outcnt <= counter >> LOG2DELAY;
enable <= counter[LOG2RAMDELAY];
end
memory m1 (clk, enable, bout);
assign LED1 = bout;
assign {LED2, LED3, LED4, LED5} = outcnt;
endmodule
module memory (
input clk,
input inc,
output bout
);
localparam DEPTH = 6;
localparam LEN = 1<<(DEPTH-1);
wire [15:0] data;
reg [DEPTH-1:0] cnt = 0;
// Morse code for "hello"
SB_RAM40_4K #(
.INIT_0(256'h0000000100000000000000010000000000000001000000010000000100000001),
.INIT_1(256'h0000000100010001000000010000000000000001000000010000000100010001),
.INIT_2(256'h0001000100000001000100010000000100010001000000000000000100000001),
.INIT_3(256'h0000000000000000000000000000000000000000000000000000000000000001),
.INIT_4(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_5(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_6(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_7(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_8(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_9(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_A(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_B(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_C(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_D(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_E(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.INIT_F(256'hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),
.READ_MODE(2'b01),
.WRITE_MODE(2'b01)
)
mem
(
.RADDR({ 5'b0, cnt}),
.RCLK(clk),
.RCLKE(1'b1),
.RDATA(data),
.RE(1'b1),
.WCLK(clk),
.WCLKE(1'b0)
);
always @(posedge inc) begin
cnt <= cnt + 1;
end
assign bout = data[0];
endmodule // memory