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

Subversion Repositories aoocs

[/] [aoocs/] [trunk/] [tests/] [tb_cia8520.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
`timescale 10ns / 1ns
2
 
3
module tb_cia8520();
4
 
5
reg clk_60;
6
reg reset;
7
reg CYC_I;
8
reg STB_I;
9
reg WE_I;
10
reg [3:0] ADR_I;
11
reg [7:0] DAT_I;
12
reg [7:0] pa_i;
13
reg [7:0] pb_i;
14
reg flag_n;
15
reg tod;
16
reg sp_i;
17
reg cnt_i;
18
 
19
wire ACK_O;
20
wire [7:0] DAT_O;
21
wire [7:0] pa_o;
22
wire [7:0] pb_o;
23
wire pc_n;
24
wire irq_n;
25
wire sp_o;
26
wire cnt_o;
27
 
28
cia8520 cia8520_inst (
29
    .clk_60(clk_60),
30
    .reset(reset),
31
 
32
    // WISHBONE slave
33
    .CYC_I(CYC_I),
34
    .STB_I(STB_I),
35
    .WE_I(WE_I),
36
    .ADR_I(ADR_I), /*[3:0]*/
37
    .DAT_I(DAT_I), /*[7:0]*/
38
    .ACK_O(ACK_O),
39
    .DAT_O(DAT_O), /*[7:0]*/
40
 
41
    // 8520 synchronous interface
42
    .pa_o(pa_o), /*[7:0]*/
43
    .pb_o(pb_o), /*[7:0]*/
44
    .pa_i(pa_i), /*[7:0]*/
45
    .pb_i(pb_i), /*[7:0]*/
46
 
47
    .flag_n(flag_n),
48
    .pc_n(pc_n),
49
    .tod(tod),
50
    .irq_n(irq_n),
51
 
52
    .sp_i(sp_i),
53
    .sp_o(sp_o),
54
    .cnt_i(cnt_i),
55
    .cnt_o(cnt_o)
56
);
57
 
58
initial begin
59
        clk_60 = 1'b0;
60
        forever #5 clk_60 = ~clk_60;
61
end
62
 
63
initial begin
64
    $dumpfile("tb_cia8520.vcd");
65
        $dumpvars(0);
66
        $dumpon();
67
 
68
        reset = 1'b1;
69
        #10
70
        reset = 1'b0;
71
 
72
        // DDR A write
73
        CYC_I = 1'b1;
74
        STB_I = 1'b1;
75
        WE_I = 1'b1;
76
        ADR_I = 4'd2;
77
        DAT_I = 8'h7F;
78
        #10
79
        CYC_I = 1'b0;
80
        STB_I = 1'b0;
81
        #10
82
 
83
        // DDR A read
84
        CYC_I = 1'b1;
85
        STB_I = 1'b1;
86
        WE_I = 1'b0;
87
        ADR_I = 4'd2;
88
        #10
89
        CYC_I = 1'b0;
90
        STB_I = 1'b0;
91
        $display("DDR A: ", DAT_O);
92
        #10
93
 
94
        // Port A write
95
        CYC_I = 1'b1;
96
        STB_I = 1'b1;
97
        WE_I = 1'b1;
98
        ADR_I = 4'd0;
99
        DAT_I = 8'h5A;
100
        #10
101
        CYC_I = 1'b0;
102
        STB_I = 1'b0;
103
        #10
104
 
105
        // Port A read
106
        pa_i = 8'h80;
107
        CYC_I = 1'b1;
108
        STB_I = 1'b1;
109
        WE_I = 1'b0;
110
        ADR_I = 4'd0;
111
        #10
112
        CYC_I = 1'b0;
113
        STB_I = 1'b0;
114
        $display("Port A: ", DAT_O);
115
        #10
116
 
117
        // TOD pulse
118
        tod = 1'b1;
119
        #10
120
        tod = 1'b0;
121
        #10
122
 
123
        // CRA write alarm
124
        CYC_I = 1'b1;
125
        STB_I = 1'b1;
126
        WE_I = 1'b1;
127
        ADR_I = 4'd15;
128
        DAT_I = 8'h80;
129
        #10
130
        CYC_I = 1'b0;
131
        STB_I = 1'b0;
132
        #10
133
 
134
        // TOD alarm high write
135
        CYC_I = 1'b1;
136
        STB_I = 1'b1;
137
        WE_I = 1'b1;
138
        ADR_I = 4'd10;
139
        DAT_I = 8'h0;
140
        #10
141
        CYC_I = 1'b0;
142
        STB_I = 1'b0;
143
        #10
144
 
145
        // TOD alarm med write
146
        CYC_I = 1'b1;
147
        STB_I = 1'b1;
148
        WE_I = 1'b1;
149
        ADR_I = 4'd9;
150
        DAT_I = 8'h0;
151
        #10
152
        CYC_I = 1'b0;
153
        STB_I = 1'b0;
154
        #10
155
 
156
        // TOD alarm low write
157
        CYC_I = 1'b1;
158
        STB_I = 1'b1;
159
        WE_I = 1'b1;
160
        ADR_I = 4'd8;
161
        DAT_I = 8'h2;
162
        #10
163
        CYC_I = 1'b0;
164
        STB_I = 1'b0;
165
        #10
166
 
167
        // TOD pulse
168
        tod = 1'b1;
169
        #10
170
        tod = 1'b0;
171
        #10
172
 
173
        #3000
174
 
175
        $dumpoff();
176
 
177
        $finish();
178
end
179
 
180
endmodule
181
 

powered by: WebSVN 2.1.0

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