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

Subversion Repositories rtf65002

[/] [rtf65002/] [trunk/] [rtl/] [verilog/] [byte_jsl.v] - Blame information for rev 21

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 robfinch
// ============================================================================
2
//        __
3
//   \\__/ o\    (C) 2013  Robert Finch, Stratford
4
//    \  __ /    All rights reserved.
5
//     \/_//     robfinch<remove>@opencores.org
6
//       ||
7
//
8
// This source file is free software: you can redistribute it and/or modify 
9
// it under the terms of the GNU Lesser General Public License as published 
10
// by the Free Software Foundation, either version 3 of the License, or     
11
// (at your option) any later version.                                      
12
//                                                                          
13
// This source file is distributed in the hope that it will be useful,      
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of           
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            
16
// GNU General Public License for more details.                             
17
//                                                                          
18
// You should have received a copy of the GNU General Public License        
19
// along with this program.  If not, see <http://www.gnu.org/licenses/>.    
20
//                                                                          
21
// ============================================================================
22
//
23 5 robfinch
BYTE_JSL1:
24
        if (ack_i) begin
25 10 robfinch
                state <= BYTE_JSL2;
26
                retstate <= BYTE_JSL2;
27 5 robfinch
                cyc_o <= 1'b0;
28
                stb_o <= 1'b0;
29
                we_o <= 1'b0;
30
                sel_o <= 4'h0;
31
                if (dhit) begin
32
                        wrsel <= sel_o;
33
                        wr <= 1'b1;
34
                end
35 10 robfinch
                else if (write_allocate) begin
36
                        state <= WAIT_DHIT;
37
                        dmiss <= `TRUE;
38
                end
39 5 robfinch
        end
40 21 robfinch
        else if (err_i) begin
41
                lock_o <= 1'b0;
42
                cyc_o <= 1'b0;
43
                stb_o <= 1'b0;
44
                we_o <= 1'b0;
45
                sel_o <= 4'h0;
46
                adr_o <= 34'h0;
47
                dat_o <= 32'h0;
48
                state <= BUS_ERROR;
49
        end
50 5 robfinch
BYTE_JSL2:
51
        begin
52 13 robfinch
                radr <= {spage[31:8],sp[7:2]};
53
                wadr <= {spage[31:8],sp[7:2]};
54 5 robfinch
                radr2LSB <= sp[1:0];
55
                wadr2LSB <= sp[1:0];
56
                wdat <= {4{pcp4[23:16]}};
57
                cyc_o <= 1'b1;
58
                stb_o <= 1'b1;
59
                we_o <= 1'b1;
60
                case(sp[1:0])
61
                2'd0:   sel_o <= 4'b0001;
62
                2'd1:   sel_o <= 4'b0010;
63
                2'd2:   sel_o <= 4'b0100;
64
                2'd3:   sel_o <= 4'b1000;
65
                endcase
66 13 robfinch
                adr_o <= {spage[31:8],sp[7:2],2'b00};
67 5 robfinch
                dat_o <= {4{pcp4[23:16]}};
68
                sp <= sp_dec;
69
                state <= BYTE_JSL3;
70
        end
71
BYTE_JSL3:
72
        if (ack_i) begin
73 10 robfinch
                state <= BYTE_JSL4;
74
                retstate <= BYTE_JSL4;
75 5 robfinch
                cyc_o <= 1'b0;
76
                stb_o <= 1'b0;
77
                we_o <= 1'b0;
78
                sel_o <= 4'h0;
79
                if (dhit) begin
80
                        wrsel <= sel_o;
81
                        wr <= 1'b1;
82
                end
83 10 robfinch
                else if (write_allocate) begin
84
                        state <= WAIT_DHIT;
85
                        dmiss <= `TRUE;
86
                end
87 5 robfinch
        end
88 21 robfinch
        else if (err_i) begin
89
                lock_o <= 1'b0;
90
                cyc_o <= 1'b0;
91
                stb_o <= 1'b0;
92
                we_o <= 1'b0;
93
                sel_o <= 4'h0;
94
                adr_o <= 34'h0;
95
                dat_o <= 32'h0;
96
                state <= BUS_ERROR;
97
        end
98 5 robfinch
BYTE_JSL4:
99
        begin
100 13 robfinch
                radr <= {spage[31:8],sp[7:2]};
101
                wadr <= {spage[31:8],sp[7:2]};
102 5 robfinch
                radr2LSB <= sp[1:0];
103
                wadr2LSB <= sp[1:0];
104
                wdat <= {4{pcp4[15:8]}};
105
                cyc_o <= 1'b1;
106
                stb_o <= 1'b1;
107
                we_o <= 1'b1;
108
                case(sp[1:0])
109
                2'd0:   sel_o <= 4'b0001;
110
                2'd1:   sel_o <= 4'b0010;
111
                2'd2:   sel_o <= 4'b0100;
112
                2'd3:   sel_o <= 4'b1000;
113
                endcase
114 13 robfinch
                adr_o <= {spage[31:8],sp[7:2],2'b00};
115 5 robfinch
                dat_o <= {4{pcp4[15:8]}};
116
                sp <= sp_dec;
117
                state <= BYTE_JSL5;
118
        end
119
BYTE_JSL5:
120
        if (ack_i) begin
121 10 robfinch
                state <= BYTE_JSL6;
122
                retstate <= BYTE_JSL6;
123 5 robfinch
                cyc_o <= 1'b0;
124
                stb_o <= 1'b0;
125
                we_o <= 1'b0;
126
                sel_o <= 4'h0;
127
                if (dhit) begin
128
                        wrsel <= sel_o;
129
                        wr <= 1'b1;
130
                end
131 10 robfinch
                else if (write_allocate) begin
132
                        state <= WAIT_DHIT;
133
                        dmiss <= `TRUE;
134
                end
135 5 robfinch
        end
136 21 robfinch
        else if (err_i) begin
137
                lock_o <= 1'b0;
138
                cyc_o <= 1'b0;
139
                stb_o <= 1'b0;
140
                we_o <= 1'b0;
141
                sel_o <= 4'h0;
142
                adr_o <= 34'h0;
143
                dat_o <= 32'h0;
144
                state <= BUS_ERROR;
145
        end
146 5 robfinch
BYTE_JSL6:
147
        begin
148 13 robfinch
                radr <= {spage[31:8],sp[7:2]};
149
                wadr <= {spage[31:8],sp[7:2]};
150 5 robfinch
                radr2LSB <= sp[1:0];
151
                wadr2LSB <= sp[1:0];
152
                wdat <= {4{pcp4[7:0]}};
153
                cyc_o <= 1'b1;
154
                stb_o <= 1'b1;
155
                we_o <= 1'b1;
156
                case(sp[1:0])
157
                2'd0:   sel_o <= 4'b0001;
158
                2'd1:   sel_o <= 4'b0010;
159
                2'd2:   sel_o <= 4'b0100;
160
                2'd3:   sel_o <= 4'b1000;
161
                endcase
162 13 robfinch
                adr_o <= {spage[31:8],sp[7:2],2'b00};
163 5 robfinch
                dat_o <= {4{pcp4[7:0]}};
164
                sp <= sp_dec;
165
                state <= BYTE_JSL7;
166
        end
167
BYTE_JSL7:
168
        if (ack_i) begin
169 10 robfinch
                state <= IFETCH;
170
                retstate <= IFETCH;
171 5 robfinch
                cyc_o <= 1'b0;
172
                stb_o <= 1'b0;
173
                we_o <= 1'b0;
174
                sel_o <= 4'h0;
175
                if (dhit) begin
176
                        wrsel <= sel_o;
177
                        wr <= 1'b1;
178
                end
179 10 robfinch
                else if (write_allocate) begin
180
                        state <= WAIT_DHIT;
181
                        dmiss <= `TRUE;
182
                end
183 5 robfinch
                pc <= ir[39:8];
184
        end
185 21 robfinch
        else if (err_i) begin
186
                lock_o <= 1'b0;
187
                cyc_o <= 1'b0;
188
                stb_o <= 1'b0;
189
                we_o <= 1'b0;
190
                sel_o <= 4'h0;
191
                adr_o <= 34'h0;
192
                dat_o <= 32'h0;
193
                state <= BUS_ERROR;
194
        end

powered by: WebSVN 2.1.0

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