sugar-lissajous/testbench/tb_lcd_spi.sv
2021-02-28 18:59:56 +03:00

64 lines
1.2 KiB
Systemverilog

`timescale 1ns/100ps
module tb_lcd_spi;
logic clock = 1'b0;
logic reset = 1'b1;
/* Master clock 50MHz (20ns period) */
always #(20ns/2) clock <= ~clock;
logic [7:0] data;
logic push, done;
logic sclk, sdo;
lcd_spi #(.DATA_WIDTH(8),
.SPI_CLK_PERIOD(16)) DUT
(.clock, .reset,
.data_i(data),
.push_i(push),
.done_o(done),
.spi_clk_o(sclk),
.spi_dat_o(sdo));
int state;
always_ff @(posedge clock)
if (reset) begin
push <= 1'b0;
state <= 0;
end
else begin
case (state)
0: begin
data <= $random;
push <= 1'b1;
state <= 1;
end
1: begin
if (done) begin
//data <= $random;
push <= 1'b0;
state <= 0;
end
end
endcase
end
initial begin
reset = 1'b1;
repeat(10) @(posedge clock) #1;
reset = 1'b0;
repeat(1000) @(posedge clock);
$finish;
end
initial begin
$dumpfile("tb_lcd_spi.vcd");
$dumpvars;
end
endmodule // tb_lcd_spi