OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [core/] [9x8/] [peripherals/] [tb/] [UART_Rx/] [tb.v-rtrn] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 sinclairrf
/*******************************************************************************
2
 *
3
 * Copyright 2015, Sinclair R.F., Inc.
4
 *
5
 * Test bench for the UART_Rx peripheral.
6
 *
7
 ******************************************************************************/
8
 
9
`timescale 1ns/1ps
10
 
11
module tb;
12
 
13
// 100 MHz clock
14
reg s_clk = 1'b1;
15
always @ (s_clk)
16
  s_clk <= #5 ~s_clk;
17
 
18
reg s_rst = 1'b1;
19
initial begin
20
  repeat (5) @ (posedge s_clk);
21
  s_rst = 1'b0;
22
end
23
 
24
// 115200 baud, 1 stop bit
25
reg [15*10:0] s_buf1 = {
26
                      // list last byte first
27
                      1'b1, 8'h00, 1'b0, // null character (also terminates program)
28
                      1'b1, 8'h0A, 1'b0, // LF
29
                      1'b1, 8'h0D, 1'b0, // CR
30
                      1'b1, 8'h12, 1'b0, // '!'
31
                      1'b1, 8'h63, 1'b0, // 'd'
32
                      1'b1, 8'h6C, 1'b0, // 'l'
33
                      1'b1, 8'h72, 1'b0, // 'r'
34
                      1'b1, 8'h6F, 1'b0, // 'o'
35
                      1'b1, 8'h57, 1'b0, // 'W'
36
                      1'b1, 8'h20, 1'b0, // ' '
37
                      1'b1, 8'h6F, 1'b0, // 'o'
38
                      1'b1, 8'h6C, 1'b0, // 'l'
39
                      1'b1, 8'h6C, 1'b0, // 'l'
40
                      1'b1, 8'h65, 1'b0, // 'e'
41
                      1'b1, 8'h48, 1'b0, // 'H'
42
                      1'b1
43
                    };
44
`define BIT_DELAY 8680.555
45
wire s_uart = s_buf1[0];
46
wire s_rtrn;
47
integer ix_bit = 0;
48
task xmit_char;
49
  for (ix_bit=0; ix_bit<10; ix_bit=ix_bit+1) begin
50
    #`BIT_DELAY;
51
    s_buf1 <= { 1'b1, s_buf1[1+:15*10] };
52
  end
53
endtask
54
integer ix_char = 0;
55
initial begin
56
  @ (negedge s_rst);
57
  #100;
58
  for (ix_char=0; ix_char<15; ix_char=ix_char+1) begin
59
    if (s_rtrn) begin
60
      repeat (@RTR_OVERFLOW@) xmit_char;
61
      while (s_rtrn)
62
        #`BIT_DELAY;
63
    end
64
    xmit_char;
65
  end
66
end
67
 
68
wire [7:0] s_data;
69
wire       s_data_wr;
70
wire       s_done;
71
tb_UART_Rx uut(
72
  // synchronous reset and processor clock
73
  .i_rst        (s_rst),
74
  .i_clk        (s_clk),
75
  .i_uart_rx    (s_uart),
76
  .o_uart_rtrn  (s_rtrn),
77
  .o_data       (s_data),
78
  .o_data_wr    (s_data_wr),
79
  .o_done       (s_done)
80
);
81
 
82
always @ (posedge s_clk)
83
  if (s_data_wr)
84
    $display("%h", s_data);
85
 
86
always @ (posedge s_clk)
87
  if (s_done)
88
    $finish;
89
 
90
//initial begin
91
//  $dumpfile("tb.vcd");
92
//  $dumpvars();
93
//end
94
 
95
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.