module uart_rx_tb; localparam BIT_RATE = 9600; localparam BIT_P = (1000000000/BIT_RATE); localparam CLK_HZ = 15000000; localparam CLK_P = 1000000000/ CLK_HZ; logic clk = 0; logic reset = 1'b0; logic enable = 1'b0; logic rxd = 1'b0; logic rx_break; logic rx_valid; logic [7:0] data = 0; logic [7:0] data_set = 8'b10101010; always #(CLK_P/2) clk = !clk; task send_byte; input [7:0] to_send; integer i; begin $display("Sending byte: %d at time %d", to_send, $time); #BIT_P; rxd = 1'b0; for(i=0; i < 8; i = i+1) begin #BIT_P; rxd = data_set[i]; $display(" Bit: %d at time %d", i, $time); end #BIT_P; rxd = 1'b1; #1000; end endtask initial begin reset = 1'b0; repeat(5) @(posedge clk); reset = 1'b1; repeat(5) @(posedge clk); send_byte(data_set); end uart_rx rx( .clk(clk), .resetn(reset), .uart_rxd(rxd), .uart_rx_en(enable), .uart_rx_break(rx_break), .uart_rx_valid(rx_valid), .uart_rx_data(data)); endmodule