61 lines
1.0 KiB
Coq
61 lines
1.0 KiB
Coq
|
`timescale 10ns/1ns
|
||
|
`default_nettype none
|
||
|
module HACK_tb();
|
||
|
|
||
|
reg CLK = 0;
|
||
|
reg [1:0] BUT = 3;
|
||
|
wire [1:0] LED;
|
||
|
wire RX,TX;
|
||
|
wire LCD_DCX,LCD_SDO,LCD_SCK,LCD_CSX;
|
||
|
wire RTP_SDI;
|
||
|
wire RTP_SCK,RTP_SDO;
|
||
|
|
||
|
HACK HACK(
|
||
|
.CLK(CLK),
|
||
|
.BUT(BUT),
|
||
|
.LED(LED),
|
||
|
.UART_RX(RX),
|
||
|
.UART_TX(TX),
|
||
|
.LCD_DCX(LCD_DCX),
|
||
|
.LCD_SDO(LCD_SDO),
|
||
|
.LCD_SCK(LCD_SCK),
|
||
|
.LCD_CSX(LCD_CSX),
|
||
|
.RTP_SDO(RTP_SDO),
|
||
|
.RTP_SDI(RTP_SDI),
|
||
|
.RTP_SCK(RTP_SCK)
|
||
|
);
|
||
|
|
||
|
always #0.5 CLK = ~CLK;
|
||
|
|
||
|
//Simulate UART
|
||
|
reg [9:0] uart = 10'b1111111111;
|
||
|
reg [15:0] baudrate = 0;
|
||
|
always @(posedge CLK)
|
||
|
baudrate <= (baudrate==866)?0:baudrate+1;
|
||
|
always @(posedge CLK)
|
||
|
if (baudrate==0) uart <= {1'b1,uart[9:1]};
|
||
|
assign RX = uart[0];
|
||
|
//Simulate RTP
|
||
|
reg [40:0] spi={1'b0,8'd128,8'd10,8'd25,8'd8,8'd22};
|
||
|
assign RTP_SDI = spi[40];
|
||
|
always @(posedge (RTP_SCK))
|
||
|
spi <= {spi[39:0],1'b0};
|
||
|
|
||
|
initial begin
|
||
|
$dumpfile("HACK_tb.vcd");
|
||
|
$dumpvars(0, HACK_tb);
|
||
|
|
||
|
#15000
|
||
|
#30000
|
||
|
#30000 uart = (("R"<<2)|1);
|
||
|
#30000 uart = (("X"<<2)|1);
|
||
|
#30000
|
||
|
#30000 BUT = 1;
|
||
|
#30000
|
||
|
#30000 BUT = 0;
|
||
|
#400000
|
||
|
$finish;
|
||
|
end
|
||
|
|
||
|
endmodule
|