manta/test/functional_sim/uart_tb.sv

72 lines
955 B
Systemverilog

`default_nettype none
`timescale 1ns / 1ps
module uart_tb();
logic clk;
logic rst;
logic [7:0] tx_data, rx_data;
logic tx_start, rx_ready;
logic tx_busy, rx_busy;
logic txd;
uart_tx #(
.DATA_WIDTH(8),
.CLK_FREQ_HZ(100_000_000),
.BAUDRATE(115200))
tx (
.clk(clk),
.rst(rst),
.data(tx_data),
.start(tx_start),
.busy(tx_busy),
.txd(txd));
uart_rx #(
.DATA_WIDTH(8),
.CLK_FREQ_HZ(100_000_000),
.BAUDRATE(115200))
rx (
.clk(clk),
.rst(rst),
.rxd(txd),
.data(rx_data),
.ready(rx_ready),
.busy(rx_busy));
always begin
#5;
clk = !clk;
end
initial begin
$dumpfile("uart.vcd");
$dumpvars(0, uart_tb);
clk = 0;
rst = 1;
tx_data = 'h0F;
tx_start = 0;
#10;
rst = 0;
#10;
tx_start = 1;
#10;
tx_start = 0;
#150000;
// send another byte!
tx_data = 'hBE;
tx_start = 1;
#10;
tx_start = 0;
#150000;
$finish();
end
endmodule
`default_nettype wire