UART
UART
module uart_transmitter (
input clk, // System clock
input reset, // Reset signal
input enable, // Enable signal
input [7:0] data, // Data input
output reg tx, // Transmitter output
output reg tx_busy // Transmitter busy flag
);
endmodule
// UART Receiver
module uart_receiver (
input clk, // System clock
input reset, // Reset signal
input rx, // Receiver input
output reg enable, // Enable signal
output reg [7:0] data, // Received data
output reg rx_valid // Receiver valid flag
);
endmodule
// Testbench for UART Transmitter
module uart_transmitter_tb;
// Inputs
reg clk;
reg reset;
reg enable;
reg [7:0] data;
// Outputs
wire tx;
wire tx_busy;
// Clock generation
always begin
#5 clk = ~clk;
end
// Testcase
initial begin
// Initialize inputs
clk = 0;
reset = 1;
enable = 0;
data = 8'b01010101;
// Reset
#10 reset = 0;
// Transmit data
#10 enable = 1;
#50 enable = 0;
// End simulation
#10 $finish;
end
endmodule
//UART RECEIVER TESTBENCH
`timescale 1ns/1ps
module uart_receiver_tb;
reg clk;
reg reset;
reg rx;
wire enable;
wire [7:0] data;
wire rx_valid;
// Clock generation
always #5 clk = ~clk;
// Testbench stimuli
initial begin
clk = 0;
reset = 1;
rx = 1;
#10 reset = 0;
endmodule