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

Subversion Repositories aoocs

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
module debug(
2
    input CLK_I,
3
    input reset_n,
4
 
5
    // WISHBONE master
6
    output reg CYC_O,
7
    output reg STB_O,
8
    output reg WE_O,
9
    output reg [31:2] ADR_O,
10
    output reg [3:0] SEL_O,
11
    output reg [31:0] master_DAT_O,
12
    input [31:0] master_DAT_I,
13
    input ACK_I,
14
 
15
    input start_dump,
16
    input start_dump2
17
);
18
 
19
reg [31:0] adr;
20
 
21
reg [2:0] state;
22
parameter [2:0]
23
    S_IDLE          = 3'd0,
24
    S_READ          = 3'd1,
25
    S_READ_2        = 3'd2,
26
    S_READ_3        = 3'd3,
27
    S_READ_4        = 3'd4,
28
    S_FINISHED      = 3'd5;
29
 
30
 
31
always @(posedge CLK_I or negedge reset_n) begin
32
    if(reset_n == 1'b0) begin
33
        CYC_O <= 1'b0;
34
        STB_O <= 1'b0;
35
        WE_O <= 1'b0;
36
        ADR_O <= 30'd0;
37
        SEL_O <= 4'd0;
38
        master_DAT_O <= 32'd0;
39
        adr <= 32'd0;
40
 
41
        state <= S_IDLE;
42
    end
43
    else begin
44
        case(state)
45
            S_IDLE: begin
46
                if(start_dump == 1'b1) begin
47
                    state <= S_READ;
48
                end
49
            end
50
            S_READ: begin
51
                CYC_O <= 1'b1;
52
                STB_O <= 1'b1;
53
                WE_O <= 1'b0;
54
                ADR_O <= adr[31:2];
55
                SEL_O <= 4'b1111;
56
 
57
                if(ACK_I == 1'b0)   state <= S_READ_2;
58
            end
59
            S_READ_2: begin
60
                if(ACK_I == 1'b1) begin
61
                    CYC_O <= 1'b0;
62
                    STB_O <= 1'b0;
63
                    master_DAT_O <= master_DAT_I;
64
 
65
                    state <= S_READ_3;
66
                end
67
            end
68
            S_READ_3: begin
69
                CYC_O <= 1'b1;
70
                STB_O <= 1'b1;
71
                WE_O <= 1'b1;
72
                ADR_O <= 30'h4000800;
73
                SEL_O <= 4'b1111;
74
                adr <= adr + 32'd1;
75
 
76
                if(ACK_I == 1'b0)   state <= S_READ_4;
77
            end
78
            S_READ_4: begin
79
                if(ACK_I == 1'b1) begin
80
                    CYC_O <= 1'b0;
81
                    STB_O <= 1'b0;
82
 
83
                    if(adr[1:0] == 2'b00 && adr < 32'h80000) begin
84
                        state <= S_READ;
85
                    end
86
                    else if(adr[1:0] == 2'b00 && adr == 32'h80000) begin
87
                        state <= S_FINISHED;
88
                    end
89
                    else begin
90
                        master_DAT_O <= { master_DAT_O[23:0], 8'd0 };
91
                        state <= S_READ_3;
92
                    end
93
                end
94
            end
95
            S_FINISHED: begin
96
                if(start_dump2 == 1'b0) begin
97
                    state <= S_READ;
98
                    adr <= 32'd0;
99
                end
100
            end
101
        endcase
102
    end
103
end
104
 
105
endmodule
106
 

powered by: WebSVN 2.1.0

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