valveboard/firmware/tb_PF1.v
2021-11-22 00:34:34 +08:00

58 lines
1.0 KiB
Verilog

`timescale 1ns / 100ps
module tb_PF1();
reg sys_clk;
reg rst_n;
reg line_sclk;
reg line_sen;
reg line_sdata;
wire [48:0] signal_high_voltage;
wire [48:0] signal_low_voltage;
PF1 inst_PF1(
.sys_clk (sys_clk),
.rst_n (rst_n),
.line_sclk (line_sclk),
.line_sen (line_sen),
.line_sdata (line_sdata),
.signal_high_voltage (signal_high_voltage),
.signal_low_voltage (signal_low_voltage)
);
initial begin
sys_clk = 0;
rst_n = 0;
line_sclk = 0;
line_sen = 0;
line_sdata = 1;
#500;
rst_n = 1;
#500;
end
integer idx;
reg [47:0] valve_data;
always #1000000 begin
valve_data <= ~48'b1000_0000_0000_0000_0000_0000_0000_0001_0000_0000_0000_1001;
line_sen = 1;#100;
for (idx = 0; idx < 48; idx = idx + 1) begin
if (valve_data[idx] == 0) begin
line_sdata = 0;#250;
line_sclk = 1;#250;
line_sdata = 1;#250;
line_sclk = 0;#500;
end
else begin
line_sclk = 1;#500;
line_sclk = 0;#500;
end
end
#100;
line_sen = 0;
end
always #25 sys_clk = ~sys_clk;
endmodule