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

Subversion Repositories m16c5x

[/] [m16c5x/] [trunk/] [RTL/] [Sim/] [tb_UART_RXSM.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:     18:00:24 06/07/2008
8
// Design Name:     LTAS 
9
// Module Name:     C:/XProjects/ISE10.1i/LTAS/tb_UART_RxSM.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 RxSM module for the SSP 
15
//              UART.
16
//
17
// Verilog Test Fixture created by ISE for module: UART_RXSM
18
//
19
// Dependencies:    UART_TxSM, UART_RxSM
20
// 
21
// Revision History:
22
//
23
//  0.01    08F07   MAM     File Created
24
//
25
// Additional Comments: 
26
//
27
////////////////////////////////////////////////////////////////////////////////
28
 
29
module tb_UART_RXSM_v;
30
 
31
// Inputs
32
reg  Rst;
33
reg  Clk;
34
reg  CE_16x;
35
reg  XLen, XNumStop, XParEn;
36
reg  RLen, RNumStop, RParEn;
37
reg  [1:0] XPar, RPar;
38
reg  [3:0] RFMT, XFMT;
39
wire RxD;
40
 
41
// Outputs
42
wire [8:0] RD;
43
wire WE_RHR;
44
wire RxWait;
45
wire RxIdle;
46
wire RxStart;
47
wire RxShift;
48
wire RxParity;
49
wire RxStop;
50
wire RxError;
51
 
52
reg  TF_EF;
53
reg  [7:0] THR;
54
wire TF_RE;
55
wire TxIdle, TxStart, TxShift, TxStop;
56
 
57
// Instantiate the UART TxSM Module (U1) to drive the RxD Input
58
 
59
UART_TXSM   U1 (
60
                .Rst(Rst),
61
                .Clk(Clk),
62
                .CE_16x(CE_16x),
63
                .Len(XLen),
64
                .NumStop(XNumStop),
65
                .ParEn(XParEn),
66
                .Par(XPar),
67
                .TF_EF(TF_EF),
68
                .THR(THR),
69
                .TF_RE(TF_RE),
70
                .CTSi(1'b1),
71
                .TxD(RxD),
72
                .TxIdle(TxIdle),
73
                .TxStart(TxStart),
74
                .TxShift(TxShift),
75
                .TxStop(TxStop)
76
            );
77
 
78
// Instantiate the Unit Under Test (UUT)
79
 
80
UART_RXSM   uut (
81
                .Rst(Rst),
82
                .Clk(Clk),
83
                .CE_16x(CE_16x),
84
                .Len(RLen),
85
                .NumStop(RNumStop),
86
                .ParEn(RParEn),
87
                .Par(RPar),
88
                .RxD(RxD),
89
                .RD(RD),
90
                .WE_RHR(WE_RHR),
91
                .RxWait(RxWait),
92
                .RxIdle(RxIdle),
93
                .RxStart(RxStart),
94
                .RxShift(RxShift),
95
                .RxParity(RxParity),
96
                .RxStop(RxStop),
97
                .RxError(RxError)
98
            );
99
 
100
initial begin
101
    Rst     = 1;
102
    Clk     = 0;
103
    CE_16x  = 1;
104
    RFMT    = 0;        //  8N1 - default
105
    XFMT    = 0;
106
    THR     = 8'h77;
107
    TF_EF   = 1;
108
 
109
    // Wait 100 ns for global reset to finish
110
 
111
    #101 Rst = 0;
112
 
113
    // Add stimulus here
114
 
115
    @(posedge Clk) #1 TF_EF = 0;
116
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
117
    @(posedge Clk) #1 TF_EF = 1;
118
 
119
    @(posedge TxIdle);
120
    THR   = 8'h55;
121
    TF_EF = 0;
122
 
123
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
124
    @(posedge Clk);
125
 
126
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
127
    @(posedge Clk) #1 TF_EF = 1;
128
 
129
    @(negedge TxStop);
130
 
131
    TF_EF = 0;
132
    THR   = 8'h5A;
133
    RFMT  = 4'b1100;    // 7O1
134
    XFMT  = RFMT;
135
    @(posedge TxStart);
136
 
137
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
138
    @(posedge Clk) #1 TF_EF = 1;
139
 
140
    @(negedge TxStop);
141
 
142
    TF_EF = 0;
143
    THR   = 8'h5A;
144
    RFMT  = 4'b1100;    // 7O1
145
    XFMT  = 4'b1101;    // 7E1
146
    @(posedge TxStart);
147
 
148
    @(posedge TF_RE);   // Emulate read of External Tx FIFO
149
    @(posedge Clk) #1 TF_EF = 1;
150
 
151
end
152
 
153
///////////////////////////////////////////////////////////////////////////////
154
//
155
//  Clocks
156
//
157
 
158
always #5 Clk = ~Clk;
159
 
160
///////////////////////////////////////////////////////////////////////////////
161
//
162
//  Simulation Drivers/Models
163
//
164
 
165
//  Transmit Format Decode
166
 
167
always @(XFMT)
168
    case(XFMT)
169
        4'b0000 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
170
        4'b0001 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
171
        4'b0010 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b1, 2'b00};   // 8O1
172
        4'b0011 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b1, 2'b01};   // 8E1
173
        4'b0100 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b1, 2'b10};   // 8S1
174
        4'b0101 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b1, 2'b11};   // 8M1
175
        4'b0110 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
176
        4'b0111 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b1, 1'b0, 2'b00};   // 8N2
177
        4'b1000 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b1, 1'b1, 2'b00};   // 8O2
178
        4'b1001 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b1, 1'b1, 2'b01};   // 8E2
179
        4'b1010 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b1, 1'b1, 2'b10};   // 8S2
180
        4'b1011 : {XLen, XNumStop, XParEn, XPar} <= {1'b0, 1'b1, 1'b1, 2'b11};   // 8M2
181
        4'b1100 : {XLen, XNumStop, XParEn, XPar} <= {1'b1, 1'b0, 1'b1, 2'b00};   // 7O1
182
        4'b1101 : {XLen, XNumStop, XParEn, XPar} <= {1'b1, 1'b0, 1'b1, 2'b01};   // 7E1
183
        4'b1110 : {XLen, XNumStop, XParEn, XPar} <= {1'b1, 1'b1, 1'b1, 2'b00};   // 7O2
184
        4'b1111 : {XLen, XNumStop, XParEn, XPar} <= {1'b1, 1'b1, 1'b1, 2'b01};   // 7E2
185
    endcase
186
 
187
//  Format Decode
188
 
189
always @(RFMT)
190
    case(RFMT)
191
        4'b0000 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
192
        4'b0001 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
193
        4'b0010 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b1, 2'b00};   // 8O1
194
        4'b0011 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b1, 2'b01};   // 8E1
195
        4'b0100 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b1, 2'b10};   // 8S1
196
        4'b0101 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b1, 2'b11};   // 8M1
197
        4'b0110 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b0, 1'b0, 2'b00};   // 8N1
198
        4'b0111 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b1, 1'b0, 2'b00};   // 8N2
199
        4'b1000 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b1, 1'b1, 2'b00};   // 8O2
200
        4'b1001 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b1, 1'b1, 2'b01};   // 8E2
201
        4'b1010 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b1, 1'b1, 2'b10};   // 8S2
202
        4'b1011 : {RLen, RNumStop, RParEn, RPar} <= {1'b0, 1'b1, 1'b1, 2'b11};   // 8M2
203
        4'b1100 : {RLen, RNumStop, RParEn, RPar} <= {1'b1, 1'b0, 1'b1, 2'b00};   // 7O1
204
        4'b1101 : {RLen, RNumStop, RParEn, RPar} <= {1'b1, 1'b0, 1'b1, 2'b01};   // 7E1
205
        4'b1110 : {RLen, RNumStop, RParEn, RPar} <= {1'b1, 1'b1, 1'b1, 2'b00};   // 7O2
206
        4'b1111 : {RLen, RNumStop, RParEn, RPar} <= {1'b1, 1'b1, 1'b1, 2'b01};   // 7E2
207
    endcase
208
 
209
endmodule
210
 

powered by: WebSVN 2.1.0

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