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

Subversion Repositories m16c5x

[/] [m16c5x/] [trunk/] [RTL/] [Sim/] [tb_UART_TXSM.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 MichaelA
`timescale 1ns / 1ps
2
 
3
///////////////////////////////////////////////////////////////////////////////
4
// Company:         M. A. Morris & Associates
5
// Engineer:        Michael A. Morris
6
//
7
// Create Date:     09:26:15 05/11/2008
8
// Design Name:     LTAS 
9
// Module Name:     C:/XProjects/ISE10.1i/LTAS/tb_UART_TxSM.v
10
// Project Name:    LTAS 
11
// Target Devices:  XC3S700AN-5FFG484I 
12
// Tool versions:   ISE 10.1i SP3 
13
//
14
// Description: This test bench is intended to test the TxSM module for the SSP 
15
//              UART.
16
//
17
// Verilog Test Fixture created by ISE for module: UART_TXSM
18
//
19
// Dependencies:    UART_TxSM
20
// 
21
// Revision History:
22
//
23
//  0.01    08E10   MAM     File Created
24
//
25
// Additional Comments: 
26
//
27
///////////////////////////////////////////////////////////////////////////////
28
 
29
module tb_UART_TXSM_v;
30
 
31
// Inputs
32
reg     Rst;
33
reg     Clk;
34
reg     CE_16x;
35
reg     [1:0] MD;
36
 
37
reg     [3:0] FMT;
38
reg     Len, NumStop, ParEn;
39
reg     [1:0] Par;
40
 
41
reg     [7:0] THR;
42
reg     TF_EF;
43
reg     RTSo;
44
reg     CTSi;
45
 
46
// Outputs
47
wire    TF_RE;
48
wire    TxIdle;
49
wire    TxStart;
50
wire    TxShift;
51
wire    TxStop;
52
wire    TxD;
53
wire    DE;
54
wire    RTSi;
55
 
56
// Instantiate the Unit Under Test (UUT)
57
 
58
UART_TXSM   uut (
59
                .Rst(Rst),
60
                .Clk(Clk),
61
                .CE_16x(CE_16x),
62
 
63
                .Len(Len),
64
                .NumStop(NumStop),
65
                .ParEn(ParEn),
66
                .Par(Par),
67
 
68
                .TF_EF(TF_EF),
69
                .THR(THR),
70
                .TF_RE(TF_RE),
71
                .CTSi(CTSi),
72
                .TxD(TxD),
73
 
74
                .TxIdle(TxIdle),
75
                .TxStart(TxStart),
76
                .TxShift(TxShift),
77
                .TxStop(TxStop)
78
            );
79
 
80
initial begin
81
    // Initialize Inputs
82
    Rst     = 1;
83
    Clk     = 0;
84
    CE_16x  = 1;
85
    FMT     = 0;
86
    THR     = 8'h77;
87
    TF_EF   = 1;
88
    RTSo    = 1;
89
    CTSi    = 0;
90
 
91
    // Wait 100 ns for global reset to finish
92
    #100;
93
 
94
    Rst = 0;
95
 
96
    // Add stimulus here
97
 
98
    //  RS-232 w/ Handshaking
99
 
100
    @(posedge Clk) #1 TF_EF = 0;
101
    #100 CTSi = 1;      // Wait before asserting input handshake signal
102
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
103
    @(posedge Clk) #1 TF_EF = 1;
104
    #400 CTSi = 0;      // Deassert input handshake signal
105
 
106
    @(negedge TxStop);
107
    THR   = 8'h55;
108
    #400 CTSi = 1;
109
    TF_EF = 0;
110
 
111
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
112
    @(posedge Clk);
113
 
114
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
115
    @(posedge Clk) #1 TF_EF = 1;
116
 
117
    #200  CTSi = 0;
118
 
119
    @(negedge TxStop);
120
 
121
    THR   = 8'h5A;
122
    TF_EF = 0;
123
 
124
    @(posedge TxStart) CTSi = 1;
125
 
126
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
127
    @(posedge Clk) #1 TF_EF = 1;
128
 
129
    @(negedge TxStop);
130
 
131
    THR   = 8'hA5;
132
    TF_EF = 0;
133
 
134
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
135
    @(posedge Clk) #1 TF_EF = 1;
136
 
137
    #100 CTSi = 0;
138
 
139
    @(posedge TxStop);
140
 
141
    THR   = 8'h99;
142
    TF_EF = 0;
143
 
144
    @(posedge TxStart)
145
        #100 CTSi = 1;
146
 
147
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
148
    @(posedge Clk) #1 TF_EF = 1;
149
 
150
    @(posedge TxStop)
151
        CTSi = 0;
152
 
153
end
154
 
155
///////////////////////////////////////////////////////////////////////////////
156
 
157
//  Clocks
158
 
159
always #5 Clk = ~Clk;
160
 
161
//  Format Decode
162
 
163
always @(FMT)
164
    case(FMT)
165
        4'b0000 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
166
        4'b0001 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
167
        4'b0010 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b1, 2'b00};   // 8O1
168
        4'b0011 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b1, 2'b01};   // 8E1
169
        4'b0100 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b1, 2'b10};   // 8S1
170
        4'b0101 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b1, 2'b11};   // 8M1
171
        4'b0110 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
172
        4'b0111 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b1, 1'b0, 2'b00};   // 8N2
173
        4'b1000 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b1, 1'b1, 2'b00};   // 8O2
174
        4'b1001 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b1, 1'b1, 2'b01};   // 8E2
175
        4'b1010 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b1, 1'b1, 2'b10};   // 8S2
176
        4'b1011 : {Len, NumStop, ParEn, Par} <= {1'b0, 1'b1, 1'b1, 2'b11};   // 8M2
177
        4'b1100 : {Len, NumStop, ParEn, Par} <= {1'b1, 1'b0, 1'b1, 2'b00};   // 7O1
178
        4'b1101 : {Len, NumStop, ParEn, Par} <= {1'b1, 1'b0, 1'b1, 2'b01};   // 7E1
179
        4'b1110 : {Len, NumStop, ParEn, Par} <= {1'b1, 1'b1, 1'b1, 2'b00};   // 7O2
180
        4'b1111 : {Len, NumStop, ParEn, Par} <= {1'b1, 1'b1, 1'b1, 2'b01};   // 7E2
181
    endcase
182
 
183
endmodule
184
 

powered by: WebSVN 2.1.0

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