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

Subversion Repositories ao486

[/] [ao486/] [trunk/] [sim/] [iverilog/] [pit/] [tb_pit.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
 
2
`timescale 1 ps / 1 ps
3
 
4
module tb_rtc();
5
 
6
reg clk;
7
reg rst_n;
8
 
9
wire interrupt;
10
 
11
reg  [1:0]  io_address      = 2'b0;
12
reg         io_read         = 1'b0;
13
wire [7:0]  io_readdata;
14
reg         io_write        = 1'b0;
15
reg  [7:0]  io_writedata    = 8'd0;
16
 
17
reg         mgmt_address    = 1'd0;
18
reg         mgmt_write      = 1'b0;
19
reg  [31:0] mgmt_writedata  = 32'd0;
20
 
21
reg         speaker_61h_read        = 1'b0;
22
wire [7:0]  speaker_61h_readdata;
23
reg         speaker_61h_write       = 1'b0;
24
reg  [7:0]  speaker_61h_writedata   = 8'd0;
25
 
26
wire        speaker_enable;
27
wire        speaker_out;
28
 
29
pit pit_inst(
30
    .clk                    (clk),
31
    .rst_n                  (rst_n),
32
 
33
    .interrupt              (interrupt),      //output
34
 
35
    //io slave 040h-043h
36
    .io_address             (io_address),     //input [1:0]
37
    .io_read                (io_read),        //input
38
    .io_readdata            (io_readdata),    //output [7:0]
39
    .io_write               (io_write),       //input
40
    .io_writedata           (io_writedata),   //input [7:0]
41
 
42
    //speaker port 61h
43
    .speaker_61h_read       (speaker_61h_read),       //input
44
    .speaker_61h_readdata   (speaker_61h_readdata),   //output [7:0]
45
    .speaker_61h_write      (speaker_61h_write),      //input
46
    .speaker_61h_writedata  (speaker_61h_writedata),  //input [7:0]
47
 
48
    //speaker output
49
    .speaker_enable         (speaker_enable),     //output
50
    .speaker_out            (speaker_out),        //output
51
 
52
    //mgmt slave
53
    /*
54
    0.[7:0]: cycles in sysclock
55
    */
56
    .mgmt_address           (mgmt_address),       //input
57
    .mgmt_write             (mgmt_write),         //input
58
    .mgmt_writedata         (mgmt_writedata)      //input [31:0]
59
);
60
 
61
//------------------------------------------------------------------------------
62
 
63
initial begin
64
    clk = 1'b0;
65
    forever #5 clk = ~clk;
66
end
67
 
68
//------------------------------------------------------------------------------
69
 
70
`define WRITE_IO(addr, data)  \
71
    io_write        = 1'b1;   \
72
    io_address      = addr;   \
73
    io_writedata    = data;   \
74
    #10;                      \
75
    io_write        = 1'b0;
76
 
77
`define WRITE_MGMT(addr, data)  \
78
    mgmt_write        = 1'b1;   \
79
    mgmt_address      = addr;   \
80
    mgmt_writedata    = data;   \
81
    #10;                      \
82
    mgmt_write        = 1'b0;
83
 
84
//------------------------------------------------------------------------------
85
 
86
initial begin
87
    #100;
88
 
89
    `WRITE_MGMT(1'b0, 32'd5)
90
 
91
    /*
92
    `WRITE_IO(2'd3, 8'h30)
93
 
94
    `WRITE_IO(2'd0, 8'h05)
95
    `WRITE_IO(2'd0, 8'h01)
96
    */
97
 
98
    /*
99
    `WRITE_IO(2'd3, 8'h32)
100
 
101
    `WRITE_IO(2'd0, 8'h05)
102
    `WRITE_IO(2'd0, 8'h01)
103
 
104
    #100;
105
    pit_inst.pit_counter_0.gate_last = 0;
106
    #10;
107
    pit_inst.pit_counter_0.gate_last = 1;
108
    */
109
 
110
    /*
111
    `WRITE_IO(2'd3, 8'h34)
112
 
113
    `WRITE_IO(2'd0, 8'h05)
114
    `WRITE_IO(2'd0, 8'h01)
115
    */
116
 
117
    /*
118
    `WRITE_IO(2'd3, 8'h36)
119
 
120
    `WRITE_IO(2'd0, 8'h05)
121
    `WRITE_IO(2'd0, 8'h01)
122
    */
123
 
124
    /*
125
    `WRITE_IO(2'd3, 8'h38)
126
 
127
    `WRITE_IO(2'd0, 8'h05)
128
    `WRITE_IO(2'd0, 8'h01)
129
    */
130
 
131
    `WRITE_IO(2'd3, 8'h3A)
132
 
133
    `WRITE_IO(2'd0, 8'h05)
134
    `WRITE_IO(2'd0, 8'h01)
135
 
136
    #100;
137
    pit_inst.pit_counter_0.gate_last = 0;
138
    #10;
139
    pit_inst.pit_counter_0.gate_last = 1;
140
end
141
 
142
//------------------------------------------------------------------------------
143
 
144
integer finished = 0;
145
 
146
reg [255:0] dumpfile_name;
147
initial begin
148
    if( $value$plusargs("dumpfile=%s", dumpfile_name) == 0 ) begin
149
        dumpfile_name = "default.vcd";
150
    end
151
 
152
    $dumpfile(dumpfile_name);
153
    $dumpvars(0);
154
    $dumpon();
155
 
156
    $display("START");
157
 
158
    rst_n = 1'b0;
159
    #10 rst_n = 1'b1;
160
 
161
    while(finished == 0) begin
162
        if($time > 200000) $finish_and_return(-1);
163
        #10;
164
 
165
        //$dumpflush();
166
    end
167
 
168
    #60;
169
 
170
    $dumpoff();
171
    $finish_and_return(0);
172
end
173
 
174
//------------------------------------------------------------------------------
175
 
176
endmodule

powered by: WebSVN 2.1.0

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