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

Subversion Repositories aoocs

[/] [aoocs/] [trunk/] [tests/] [aoOCS_tb.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 aoOCS_tb(
4
);
5
 
6
// inputs
7
reg clk;
8
reg rst_n;
9
 
10
wire sram_clk;
11
wire [18:0] sram_address;
12
wire sram_oe_n;
13
wire sram_writeen_n;
14
wire [3:0] sram_byteen_n;
15
wire [31:0] sram_data_o;
16
inout [35:0] sram_data;
17
assign sram_data = (sram_oe_n == 1'b0)? {4'b0, sram_data_o} : 36'bZ;
18
wire sram_advance_n;
19
wire sram_adsc_n;
20
 
21
wire sd_clk;
22
wire sd_cmd;
23
wire sd_dat;
24
 
25
reg [2:0] ext_int;
26
 
27
aoOCS aoOCS_inst(
28
        .clk_50(clk),
29
        .reset_ext_n(rst_n),
30
 
31
        // ssram interface
32
        .ssram_address(sram_address), //[18:0]
33
        .ssram_oe_n(sram_oe_n),
34
        .ssram_writeen_n(sram_writeen_n),
35
        .ssram_byteen_n(sram_byteen_n), //[3:0]
36
        .ssram_data(sram_data), //[35:0] inout
37
        .ssram_clk(sram_clk),
38
        .ssram_globalw_n(),
39
        .ssram_advance_n(sram_advance_n),
40
        .ssram_adsp_n(),
41
        .ssram_adsc_n(sram_adsc_n),
42
        .ssram_ce1_n(),
43
        .ssram_ce2(),
44
        .ssram_ce3_n(),
45
 
46
        // sd interface
47
        .sd_clk_o(sd_clk),
48
        .sd_cmd_io(sd_cmd), //inout
49
        .sd_dat_io(sd_dat), //inout
50
 
51
        // serial interface
52
        .uart_rxd(1'b0),
53
        .uart_rts(1'b0),
54
        .uart_txd(),
55
        .uart_cts(),
56
 
57
        // vga output
58
        .vga_r(), //[9:0]
59
        .vga_g(), //[9:0]
60
        .vga_b(), //[9:0]
61
        .vga_blank_n(),
62
        .vga_sync_n(),
63
        .vga_clock(),
64
        .vga_hsync(),
65
        .vga_vsync(),
66
 
67
        // hex output
68
    .hex0(),
69
    .hex1(),
70
    .hex2(),
71
    .hex3(),
72
    .hex4(),
73
    .hex5(),
74
    .hex6(),
75
    .hex7(),
76
    .hex_switch(1'b0),
77
 
78
    // debug
79
    .sd_debug(),
80
    .pc_debug(),
81
    .sd_error(),
82
    .halt_switch(1'b0),
83
    .key0(1'b1),
84
    .blitter_switch(1'b0),
85
    .floppy_debug()
86
);
87
 
88
/*
89
model_sd model_sd_inst(
90
        .reset_n(rst_n),
91
 
92
        .sd_clk(sd_clk),
93
        .sd_cmd_io(sd_cmd),
94
        .sd_dat_io(sd_dat)
95
);
96
*/
97
 
98
initial begin
99
        clk = 1'b0;
100
        forever #2 clk = ~clk;
101
end
102
 
103
reg [31:0] rom[0:65535];
104
reg [31:0] ram[0:458751];
105
 
106
integer f;
107
integer r;
108
 
109
wire [18:0] sram_address_final;
110
assign sram_address_final = { sram_address[18:2], sram_address[1:0] ^ sram_burst[1:0] };
111
 
112
wire [15:0] rom_index;
113
assign rom_index = (sram_address_final-458752);
114
 
115
assign sram_data_o = (sram_address_final < 458752)? ram[sram_address_final] : rom[rom_index];
116
 
117
reg [1:0] sram_burst;
118
always @(posedge sram_clk) begin
119
    if(sram_adsc_n == 1'b0)         sram_burst = 2'd0;
120
    else if(sram_advance_n == 1'b0) sram_burst = sram_burst + 2'd1;
121
end
122
 
123
always @(posedge sram_clk) begin
124
    if(sram_writeen_n == 1'b0 && {sram_address,2'b00} < 1835008 && sram_byteen_n[0] == 1'b0) ram[sram_address_final][7:0] = sram_data[7:0];
125
    if(sram_writeen_n == 1'b0 && {sram_address,2'b00} < 1835008 && sram_byteen_n[1] == 1'b0) ram[sram_address_final][15:8] = sram_data[15:8];
126
    if(sram_writeen_n == 1'b0 && {sram_address,2'b00} < 1835008 && sram_byteen_n[2] == 1'b0) ram[sram_address_final][23:16] = sram_data[23:16];
127
    if(sram_writeen_n == 1'b0 && {sram_address,2'b00} < 1835008 && sram_byteen_n[3] == 1'b0) ram[sram_address_final][31:24] = sram_data[31:24];
128
 
129
    if(sram_writeen_n == 1'b0 && {sram_address,2'b00} < 1835008 && sram_byteen_n[3:0] != 4'b1111)
130
        $display("Written: %x <- %x, sel: %x", sram_address_final, sram_data, sram_byteen_n);
131
end
132
 
133
initial begin
134
    f = $fopen("/home/alek/temp/e-uae-0.8.29-WIP4/build/bin/kick12_a.rom", "rb");
135
    r = $fread(rom, f);
136
    $display(r);
137
    $fclose(f);
138
 
139
    for(f=0; f<458752; f=f+1) ram[f] = 32'd0;
140
 
141
    $display("%x", rom[54]);
142
    $display("%x", rom[55]);
143
    rom[54] = 32'h203c0000; //was 203c0002
144
    rom[55] = 32'h00045380; //was 00005380
145
end
146
 
147
//initial begin
148
//    forever begin
149
//        #2 aoOCS_inst.control_inst.pc_switch = 32'd0;
150
//        aoOCS_inst.control_inst.management_mode = 1'd0;
151
//    end
152
//end
153
 
154
initial begin
155
        $dumpfile("aoOCS_tb.vcd");
156
        $dumpvars(0);
157
        $dumpon();
158
 
159
        ext_int = 3'd0;
160
 
161
        rst_n = 1'b0;
162
        #10
163
        rst_n = 1'b1;
164
 
165
        #580
166
        ext_int = 3'd3;
167
 
168
        #100000
169
 
170
        $dumpoff();
171
 
172
        $finish();
173
end
174
 
175
endmodule

powered by: WebSVN 2.1.0

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