URL
https://opencores.org/ocsvn/uart_fifo_cpu_if_sv_testbench/uart_fifo_cpu_if_sv_testbench/trunk
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 2 |
Rev 3 |
Line 118... |
Line 118... |
//start bit
|
//start bit
|
uart_.txd = 0;
|
uart_.txd = 0;
|
#(1/baud_rate)s;
|
#(1/baud_rate)s;
|
//8 bits of data
|
//8 bits of data
|
for(uint8 i=0; i<8; i++) begin
|
for(uint8 i=0; i<8; i++) begin
|
uart_.txd = data_bits[7-i];
|
uart_.txd = data_bits[i]; //least significant bit first.
|
#(1/baud_rate)s;
|
#(1/baud_rate)s;
|
end
|
end
|
//1 stop bit
|
//1 stop bit
|
uart_.txd = 1;
|
uart_.txd = 1;
|
#(1/baud_rate)s;
|
#(1/baud_rate)s;
|
Line 152... |
Line 152... |
//Look for a valid start bit. Must be at least 1/2 bit period duration.
|
//Look for a valid start bit. Must be at least 1/2 bit period duration.
|
@(negedge uart_.rxd);
|
@(negedge uart_.rxd);
|
#(0.5 * 1/baud_rate)s;
|
#(0.5 * 1/baud_rate)s;
|
if ( uart_.rxd == 0 ) begin
|
if ( uart_.rxd == 0 ) begin
|
logic[7:0] data_bits;
|
logic[7:0] data_bits;
|
uint32 bit_count = 7;
|
//read in 8 data bits, LSBit first, sampling in the center of the bit period.
|
//read in 8 data bits, MSBit first, sampling in the center of the bit period.
|
for(uint8 i=0; i<8; i++) begin
|
repeat(8) begin
|
|
#( 1/baud_rate )s;
|
#( 1/baud_rate )s;
|
data_bits[ bit_count-- ] = uart_.rxd;
|
data_bits[i] = uart_.rxd;
|
end
|
end
|
//check stop bit.
|
//check stop bit.
|
#( 1/baud_rate )s;
|
#( 1/baud_rate )s;
|
if ( uart_.rxd != 1 ) begin
|
if ( uart_.rxd != 1 ) begin
|
$display("Monitor: Invalid stop bit.");
|
$display("Monitor: Invalid stop bit.");
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.