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

Subversion Repositories cpu6502_true_cycle

[/] [cpu6502_true_cycle/] [trunk/] [rtl/] [vhdl/] [fsm_execution_unit.vhd] - Blame information for rev 14

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

Line No. Rev Author Line
1 6 fpga_is_fu
-- VHDL Entity R6502_TC.FSM_Execution_Unit.symbol
2
--
3
-- Created:
4 14 fpga_is_fu
--          by - eda.UNKNOWN (TEST)
5
--          at - 19:21:47 07.01.2009
6 6 fpga_is_fu
--
7
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
8
--
9
LIBRARY ieee;
10
USE ieee.std_logic_1164.all;
11
USE ieee.std_logic_arith.all;
12
 
13 14 fpga_is_fu
ENTITY FSM_Execution_Unit IS
14
   PORT(
15
      adr_nxt_pc_i : IN     std_logic_vector (15 DOWNTO 0);
16
      adr_pc_i     : IN     std_logic_vector (15 DOWNTO 0);
17
      adr_sp_i     : IN     std_logic_vector (15 DOWNTO 0);
18
      clk_clk_i    : IN     std_logic;
19
      d_alu_i      : IN     std_logic_vector ( 7 DOWNTO 0 );
20
      d_i          : IN     std_logic_vector ( 7 DOWNTO 0 );
21
      d_regs_out_i : IN     std_logic_vector ( 7 DOWNTO 0 );
22
      irq_n_i      : IN     std_logic;
23
      nmi_i        : IN     std_logic;
24
      q_a_i        : IN     std_logic_vector ( 7 DOWNTO 0 );
25
      q_x_i        : IN     std_logic_vector ( 7 DOWNTO 0 );
26
      q_y_i        : IN     std_logic_vector ( 7 DOWNTO 0 );
27
      rdy_i        : IN     std_logic;
28
      reg_0flag_i  : IN     std_logic;
29
      reg_1flag_i  : IN     std_logic;
30
      reg_7flag_i  : IN     std_logic;
31
      rst_rst_n_i  : IN     std_logic;
32
      so_n_i       : IN     std_logic;
33
      a_o          : OUT    std_logic_vector (15 DOWNTO 0);
34
      adr_o        : OUT    std_logic_vector (15 DOWNTO 0);
35
      ch_a_o       : OUT    std_logic_vector ( 7 DOWNTO 0 );
36
      ch_b_o       : OUT    std_logic_vector ( 7 DOWNTO 0 );
37
      d_o          : OUT    std_logic_vector ( 7 DOWNTO 0 );
38
      d_regs_in_o  : OUT    std_logic_vector ( 7 DOWNTO 0 );
39
      fetch_o      : OUT    std_logic;
40
      ld_o         : OUT    std_logic_vector ( 1 DOWNTO 0 );
41
      ld_pc_o      : OUT    std_logic;
42
      ld_sp_o      : OUT    std_logic;
43
      load_regs_o  : OUT    std_logic;
44
      offset_o     : OUT    std_logic_vector ( 15 DOWNTO 0 );
45
      rd_o         : OUT    std_logic;
46
      sel_pc_in_o  : OUT    std_logic;
47
      sel_pc_val_o : OUT    std_logic_vector ( 1 DOWNTO 0 );
48
      sel_rb_in_o  : OUT    std_logic_vector ( 1 DOWNTO 0 );
49
      sel_rb_out_o : OUT    std_logic_vector ( 1 DOWNTO 0 );
50
      sel_reg_o    : OUT    std_logic_vector ( 1 DOWNTO 0 );
51
      sel_sp_as_o  : OUT    std_logic;
52
      sel_sp_in_o  : OUT    std_logic;
53
      sync_o       : OUT    std_logic;
54
      wr_n_o       : OUT    std_logic;
55
      wr_o         : OUT    std_logic
56 6 fpga_is_fu
   );
57
 
58
-- Declarations
59
 
60 14 fpga_is_fu
END FSM_Execution_Unit ;
61 6 fpga_is_fu
 
62
-- Jens-D. Gutschmidt     Project:  R6502_TC  
63
 
64
-- scantara2003@yahoo.de                      
65
 
66
-- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG                                                                                     
67
 
68
--                                                                                                                                             
69
 
70
-- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by   
71
 
72
-- the Free Software Foundation, either version 3 of the License, or any later version.                                                        
73
 
74
--                                                                                                                                             
75
 
76
-- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of              
77
 
78
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.                                  
79
 
80
--                                                                                                                                             
81
 
82
-- You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.     
83
 
84
--                                                                                                                                             
85
 
86
-- CVS Revisins History                                                                                                                        
87
 
88
--                                                                                                                                             
89
 
90
-- $Log: not supported by cvs2svn $                                                                                                                            
91
 
92
--   <<-- more -->>                                                                                                                            
93
 
94
-- Title:  FSM Execution Unit for all op codes  
95
 
96
-- Path:  R6502_TC/FSM_Execution_Unit/fsm  
97
 
98 14 fpga_is_fu
-- Edited:  by eda on 07 Jan 2009  
99 6 fpga_is_fu
 
100
--
101
-- VHDL Architecture R6502_TC.FSM_Execution_Unit.fsm
102
--
103
-- Created:
104 14 fpga_is_fu
--          by - eda.UNKNOWN (TEST)
105
--          at - 19:21:50 07.01.2009
106 6 fpga_is_fu
--
107
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
108
--
109
LIBRARY ieee;
110
USE ieee.std_logic_1164.all;
111
USE ieee.std_logic_arith.all;
112
 
113 14 fpga_is_fu
ARCHITECTURE fsm OF FSM_Execution_Unit IS
114 6 fpga_is_fu
 
115
   -- Architecture Declarations
116 14 fpga_is_fu
   SIGNAL reg_F : std_logic_vector( 7 DOWNTO 0 );
117
   SIGNAL reg_sel_pc_in : std_logic;
118
   SIGNAL reg_sel_pc_val : std_logic_vector( 1 DOWNTO 0 );
119
   SIGNAL reg_sel_rb_in : std_logic_vector( 1 DOWNTO 0 );
120
   SIGNAL reg_sel_rb_out : std_logic_vector( 1 DOWNTO 0 );
121
   SIGNAL reg_sel_reg : std_logic_vector( 1 DOWNTO 0 );
122
   SIGNAL reg_sel_sp_as : std_logic;
123
   SIGNAL reg_sel_sp_in : std_logic;
124
   SIGNAL sig_D_OUT : std_logic_vector( 7 DOWNTO 0 );
125
   SIGNAL sig_PC : std_logic_vector(15 DOWNTO 0);
126
   SIGNAL sig_RD : std_logic;
127
   SIGNAL sig_RWn : std_logic;
128
   SIGNAL sig_SYNC : std_logic;
129
   SIGNAL sig_WR : std_logic;
130
   SIGNAL zw_ALU : std_logic_vector( 8 DOWNTO 0 );
131
   SIGNAL zw_ALU1 : std_logic_vector( 4 DOWNTO 0 );
132
   SIGNAL zw_ALU2 : std_logic_vector( 4 DOWNTO 0 );
133
   SIGNAL zw_ALU3 : std_logic_vector( 4 DOWNTO 0 );
134
   SIGNAL zw_ALU4 : std_logic_vector( 4 DOWNTO 0 );
135
   SIGNAL zw_ALU5 : std_logic_vector( 3 DOWNTO 0 );
136
   SIGNAL zw_ALU6 : std_logic_vector( 3 DOWNTO 0 );
137
   SIGNAL zw_REG_NMI : std_logic;
138
   SIGNAL zw_REG_OP : std_logic_vector( 7 DOWNTO 0 );
139
   SIGNAL zw_b1 : std_logic_vector( 7 DOWNTO 0 );
140
   SIGNAL zw_b2 : std_logic_vector( 7 DOWNTO 0 );
141
   SIGNAL zw_b3 : std_logic_vector( 7 DOWNTO 0 );
142
   SIGNAL zw_b4 : std_logic_vector( 7 DOWNTO 0 );
143
   SIGNAL zw_so : std_logic;
144 6 fpga_is_fu
 
145 14 fpga_is_fu
   SUBTYPE STATE_TYPE IS
146
      std_logic_vector(7 DOWNTO 0);
147 6 fpga_is_fu
 
148
   -- Hard encoding
149 14 fpga_is_fu
   CONSTANT FETCH : STATE_TYPE := "00000000";
150
   CONSTANT s1 : STATE_TYPE := "00000001";
151
   CONSTANT s2 : STATE_TYPE := "00000011";
152
   CONSTANT s5 : STATE_TYPE := "00000010";
153
   CONSTANT s3 : STATE_TYPE := "00000110";
154
   CONSTANT s4 : STATE_TYPE := "00000111";
155
   CONSTANT s12 : STATE_TYPE := "00000101";
156
   CONSTANT s16 : STATE_TYPE := "00000100";
157
   CONSTANT s17 : STATE_TYPE := "00001100";
158
   CONSTANT s24 : STATE_TYPE := "00001101";
159
   CONSTANT s25 : STATE_TYPE := "00001111";
160
   CONSTANT s271 : STATE_TYPE := "00001110";
161
   CONSTANT s273 : STATE_TYPE := "00001010";
162
   CONSTANT s304 : STATE_TYPE := "00001011";
163
   CONSTANT s307 : STATE_TYPE := "00001001";
164
   CONSTANT s177 : STATE_TYPE := "00001000";
165
   CONSTANT s180 : STATE_TYPE := "00011000";
166
   CONSTANT s181 : STATE_TYPE := "00011001";
167
   CONSTANT s182 : STATE_TYPE := "00011011";
168
   CONSTANT s183 : STATE_TYPE := "00011010";
169
   CONSTANT s184 : STATE_TYPE := "00011110";
170
   CONSTANT s185 : STATE_TYPE := "00011111";
171
   CONSTANT s186 : STATE_TYPE := "00011101";
172
   CONSTANT s187 : STATE_TYPE := "00011100";
173
   CONSTANT s188 : STATE_TYPE := "00010100";
174
   CONSTANT s189 : STATE_TYPE := "00010101";
175
   CONSTANT s190 : STATE_TYPE := "00010111";
176
   CONSTANT s191 : STATE_TYPE := "00010110";
177
   CONSTANT s192 : STATE_TYPE := "00010010";
178
   CONSTANT s193 : STATE_TYPE := "00010011";
179
   CONSTANT s377 : STATE_TYPE := "00010001";
180
   CONSTANT s381 : STATE_TYPE := "00010000";
181
   CONSTANT s378 : STATE_TYPE := "00110000";
182
   CONSTANT s382 : STATE_TYPE := "00110001";
183
   CONSTANT s379 : STATE_TYPE := "00110011";
184
   CONSTANT s383 : STATE_TYPE := "00110010";
185
   CONSTANT s384 : STATE_TYPE := "00110110";
186
   CONSTANT s380 : STATE_TYPE := "00110111";
187
   CONSTANT s385 : STATE_TYPE := "00110101";
188
   CONSTANT s386 : STATE_TYPE := "00110100";
189
   CONSTANT s387 : STATE_TYPE := "00111100";
190
   CONSTANT s388 : STATE_TYPE := "00111101";
191
   CONSTANT s389 : STATE_TYPE := "00111111";
192
   CONSTANT s391 : STATE_TYPE := "00111110";
193
   CONSTANT s392 : STATE_TYPE := "00111010";
194
   CONSTANT s390 : STATE_TYPE := "00111011";
195
   CONSTANT s393 : STATE_TYPE := "00111001";
196
   CONSTANT s394 : STATE_TYPE := "00111000";
197
   CONSTANT s395 : STATE_TYPE := "00101000";
198
   CONSTANT s396 : STATE_TYPE := "00101001";
199
   CONSTANT s397 : STATE_TYPE := "00101011";
200
   CONSTANT s398 : STATE_TYPE := "00101010";
201
   CONSTANT s399 : STATE_TYPE := "00101110";
202
   CONSTANT s400 : STATE_TYPE := "00101111";
203
   CONSTANT s401 : STATE_TYPE := "00101101";
204
   CONSTANT s526 : STATE_TYPE := "00101100";
205
   CONSTANT s527 : STATE_TYPE := "00100100";
206
   CONSTANT s528 : STATE_TYPE := "00100101";
207
   CONSTANT s529 : STATE_TYPE := "00100111";
208
   CONSTANT s530 : STATE_TYPE := "00100110";
209
   CONSTANT s531 : STATE_TYPE := "00100010";
210
   CONSTANT s544 : STATE_TYPE := "00100011";
211
   CONSTANT s545 : STATE_TYPE := "00100001";
212
   CONSTANT s546 : STATE_TYPE := "00100000";
213
   CONSTANT s547 : STATE_TYPE := "01100000";
214
   CONSTANT s549 : STATE_TYPE := "01100001";
215
   CONSTANT s550 : STATE_TYPE := "01100011";
216
   CONSTANT s404 : STATE_TYPE := "01100010";
217
   CONSTANT s556 : STATE_TYPE := "01100110";
218
   CONSTANT s557 : STATE_TYPE := "01100111";
219
   CONSTANT s579 : STATE_TYPE := "01100101";
220
   CONSTANT s201 : STATE_TYPE := "01100100";
221
   CONSTANT s202 : STATE_TYPE := "01101100";
222
   CONSTANT s210 : STATE_TYPE := "01101101";
223
   CONSTANT s211 : STATE_TYPE := "01101111";
224
   CONSTANT s215 : STATE_TYPE := "01101110";
225
   CONSTANT s217 : STATE_TYPE := "01101010";
226
   CONSTANT s218 : STATE_TYPE := "01101011";
227
   CONSTANT s222 : STATE_TYPE := "01101001";
228
   CONSTANT s223 : STATE_TYPE := "01101000";
229
   CONSTANT s224 : STATE_TYPE := "01111000";
230
   CONSTANT s225 : STATE_TYPE := "01111001";
231
   CONSTANT s226 : STATE_TYPE := "01111011";
232
   CONSTANT s243 : STATE_TYPE := "01111010";
233
   CONSTANT s244 : STATE_TYPE := "01111110";
234
   CONSTANT s247 : STATE_TYPE := "01111111";
235
   CONSTANT s344 : STATE_TYPE := "01111101";
236
   CONSTANT s343 : STATE_TYPE := "01111100";
237
   CONSTANT s250 : STATE_TYPE := "01110100";
238
   CONSTANT s251 : STATE_TYPE := "01110101";
239
   CONSTANT s351 : STATE_TYPE := "01110111";
240
   CONSTANT s361 : STATE_TYPE := "01110110";
241
   CONSTANT s360 : STATE_TYPE := "01110010";
242
   CONSTANT s403 : STATE_TYPE := "01110011";
243
   CONSTANT s406 : STATE_TYPE := "01110001";
244
   CONSTANT s407 : STATE_TYPE := "01110000";
245
   CONSTANT s409 : STATE_TYPE := "01010000";
246
   CONSTANT s412 : STATE_TYPE := "01010001";
247
   CONSTANT s413 : STATE_TYPE := "01010011";
248
   CONSTANT s416 : STATE_TYPE := "01010010";
249
   CONSTANT s418 : STATE_TYPE := "01010110";
250
   CONSTANT s510 : STATE_TYPE := "01010111";
251
   CONSTANT s553 : STATE_TYPE := "01010101";
252
   CONSTANT s555 : STATE_TYPE := "01010100";
253
   CONSTANT s558 : STATE_TYPE := "01011100";
254
   CONSTANT s560 : STATE_TYPE := "01011101";
255
   CONSTANT s561 : STATE_TYPE := "01011111";
256
   CONSTANT s563 : STATE_TYPE := "01011110";
257
   CONSTANT s564 : STATE_TYPE := "01011010";
258
   CONSTANT s565 : STATE_TYPE := "01011011";
259
   CONSTANT s566 : STATE_TYPE := "01011001";
260
   CONSTANT s266 : STATE_TYPE := "01011000";
261
   CONSTANT s301 : STATE_TYPE := "01001000";
262
   CONSTANT s302 : STATE_TYPE := "01001001";
263
   CONSTANT RES : STATE_TYPE := "01001011";
264
   CONSTANT s511 : STATE_TYPE := "01001010";
265
   CONSTANT s559 : STATE_TYPE := "01001110";
266
   CONSTANT s562 : STATE_TYPE := "01001111";
267
   CONSTANT s567 : STATE_TYPE := "01001101";
268
   CONSTANT s568 : STATE_TYPE := "01001100";
269
   CONSTANT s569 : STATE_TYPE := "01000100";
270
   CONSTANT s570 : STATE_TYPE := "01000101";
271
   CONSTANT s571 : STATE_TYPE := "01000111";
272
   CONSTANT s572 : STATE_TYPE := "01000110";
273
   CONSTANT s573 : STATE_TYPE := "01000010";
274
   CONSTANT s574 : STATE_TYPE := "01000011";
275
   CONSTANT s548 : STATE_TYPE := "01000001";
276
   CONSTANT s551 : STATE_TYPE := "01000000";
277
   CONSTANT s552 : STATE_TYPE := "11000000";
278
   CONSTANT s575 : STATE_TYPE := "11000001";
279
   CONSTANT s576 : STATE_TYPE := "11000011";
280
   CONSTANT s577 : STATE_TYPE := "11000010";
281
   CONSTANT s532 : STATE_TYPE := "11000110";
282
   CONSTANT s533 : STATE_TYPE := "11000111";
283
   CONSTANT s534 : STATE_TYPE := "11000101";
284
   CONSTANT s535 : STATE_TYPE := "11000100";
285
   CONSTANT s536 : STATE_TYPE := "11001100";
286
   CONSTANT s537 : STATE_TYPE := "11001101";
287 6 fpga_is_fu
 
288
   -- Declare current and next state signals
289 14 fpga_is_fu
   SIGNAL current_state : STATE_TYPE;
290
   SIGNAL next_state : STATE_TYPE;
291 6 fpga_is_fu
 
292
   -- Declare any pre-registered internal signals
293 14 fpga_is_fu
   SIGNAL d_o_cld : std_logic_vector ( 7 DOWNTO 0 );
294
   SIGNAL rd_o_cld : std_logic ;
295
   SIGNAL sync_o_cld : std_logic ;
296
   SIGNAL wr_n_o_cld : std_logic ;
297
   SIGNAL wr_o_cld : std_logic ;
298 6 fpga_is_fu
 
299 14 fpga_is_fu
BEGIN
300 6 fpga_is_fu
 
301
   -----------------------------------------------------------------
302 14 fpga_is_fu
   clocked_proc : PROCESS (
303 6 fpga_is_fu
      clk_clk_i,
304
      rst_rst_n_i
305
   )
306
   -----------------------------------------------------------------
307 14 fpga_is_fu
   BEGIN
308
      IF (rst_rst_n_i = '0') THEN
309 6 fpga_is_fu
         current_state <= RES;
310
         -- Default Reset Values
311
         d_o_cld <= X"00";
312
         rd_o_cld <= '0';
313
         sync_o_cld <= '0';
314
         wr_n_o_cld <= '1';
315
         wr_o_cld <= '0';
316
         reg_F <= "00000100";
317
         reg_sel_pc_in <= '0';
318
         reg_sel_pc_val <= "00";
319
         reg_sel_rb_in <= "00";
320
         reg_sel_rb_out <= "00";
321
         reg_sel_reg <= "00";
322
         reg_sel_sp_as <= '0';
323
         reg_sel_sp_in <= '0';
324
         sig_PC <= X"0000";
325
         zw_REG_NMI <= '0';
326
         zw_REG_OP <= X"00";
327
         zw_b1 <= X"00";
328
         zw_b2 <= X"00";
329
         zw_b3 <= X"00";
330
         zw_b4 <= X"00";
331
         zw_so <= '0';
332 14 fpga_is_fu
      ELSIF (clk_clk_i'EVENT AND clk_clk_i = '1') THEN
333 6 fpga_is_fu
         current_state <= next_state;
334
         -- Default Assignment To Internals
335
         reg_F <= reg_F(7) & (zw_so OR reg_F(6)) & reg_F(5 downto 0);
336
         reg_sel_pc_in <= reg_sel_pc_in;
337
         reg_sel_pc_val <= reg_sel_pc_val;
338
         reg_sel_rb_in <= reg_sel_rb_in;
339
         reg_sel_rb_out <= reg_sel_rb_out;
340
         reg_sel_reg <= reg_sel_reg;
341
         reg_sel_sp_as <= reg_sel_sp_as;
342
         reg_sel_sp_in <= reg_sel_sp_in;
343
         sig_PC <= sig_PC;
344
         zw_REG_NMI <= zw_REG_NMI or nmi_i;
345
         zw_REG_OP <= zw_REG_OP;
346
         zw_b1 <= zw_b1;
347
         zw_b2 <= zw_b2;
348
         zw_b3 <= zw_b3;
349
         zw_b4 <= zw_b4;
350
         zw_so <= (zw_so OR (NOT(so_n_i))) AND (NOT(reg_F(6)));
351
         d_o_cld <= sig_D_OUT;
352
         rd_o_cld <= sig_RD;
353
         sync_o_cld <= sig_SYNC;
354
         wr_n_o_cld <= sig_RWn;
355
         wr_o_cld <= sig_WR;
356
 
357
         -- Combined Actions
358 14 fpga_is_fu
         CASE current_state IS
359
            WHEN FETCH =>
360 6 fpga_is_fu
               zw_REG_OP <= d_i;
361 14 fpga_is_fu
               IF ((nmi_i = '1') AND (rdy_i = '1')) THEN
362 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
363
                  zw_REG_NMI <= '0';
364 14 fpga_is_fu
               ELSIF ((irq_n_i = '0' and
365
                      reg_F(2) = '0') AND (rdy_i = '1')) THEN
366 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
367 14 fpga_is_fu
               ELSIF ((d_i = X"69" or
368 6 fpga_is_fu
                      d_i = X"65" or
369
                      d_i = X"75" or
370
                      d_i = X"6D" or
371
                      d_i = X"7D" or
372
                      d_i = X"79" or
373
                      d_i = X"61" or
374 14 fpga_is_fu
                      d_i = X"71") AND (rdy_i = '1')) THEN
375 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
376
                  reg_sel_reg <= "00";
377
                  reg_sel_rb_in <= "11";
378
                  zw_b1(0) <= reg_F(7);
379 14 fpga_is_fu
               ELSIF ((d_i = X"06" or
380 6 fpga_is_fu
                      d_i = X"16" or
381
                      d_i = X"0E" or
382 14 fpga_is_fu
                      d_i = X"1E") AND (rdy_i = '1')) THEN
383 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
384 14 fpga_is_fu
               ELSIF ((d_i = X"90" or
385 6 fpga_is_fu
                      d_i = X"B0" or
386
                      d_i = X"F0" or
387
                      d_i = X"30" or
388
                      d_i = X"D0" or
389
                      d_i = X"10" or
390
                      d_i = X"50" or
391 14 fpga_is_fu
                      d_i = X"70") AND (rdy_i = '1')) THEN
392 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
393
                  zw_b3 <= adr_nxt_pc_i (15 downto 8);
394 14 fpga_is_fu
               ELSIF ((d_i = X"24" or
395
                      d_i = X"2C") AND (rdy_i = '1')) THEN
396 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
397 14 fpga_is_fu
               ELSIF ((d_i = X"00") AND (rdy_i = '1')) THEN
398 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
399 14 fpga_is_fu
               ELSIF ((d_i = X"18") AND (rdy_i = '1')) THEN
400
               ELSIF ((d_i = X"D8") AND (rdy_i = '1')) THEN
401
               ELSIF ((d_i = X"58") AND (rdy_i = '1')) THEN
402
               ELSIF ((d_i = X"B8") AND (rdy_i = '1')) THEN
403
               ELSIF ((d_i = X"E0" or
404 6 fpga_is_fu
                      d_i = X"E4" or
405 14 fpga_is_fu
                      d_i = X"EC") AND (rdy_i = '1')) THEN
406 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
407
                  sig_PC <= adr_nxt_pc_i;
408 14 fpga_is_fu
               ELSIF ((d_i = X"C0" or
409 6 fpga_is_fu
                      d_i = X"C4" or
410 14 fpga_is_fu
                      d_i = X"CC") AND (rdy_i = '1')) THEN
411 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
412
                  sig_PC <= adr_nxt_pc_i;
413 14 fpga_is_fu
               ELSIF ((d_i = X"C6" or
414 6 fpga_is_fu
                      d_i = X"D6" or
415
                      d_i = X"CE" or
416 14 fpga_is_fu
                      d_i = X"DE") AND (rdy_i = '1')) THEN
417 6 fpga_is_fu
                  zw_b4 <= X"FF";
418
                  sig_PC <= adr_nxt_pc_i;
419 14 fpga_is_fu
               ELSIF ((d_i = X"CA") AND (rdy_i = '1')) THEN
420 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
421
                  reg_sel_reg <= "01";
422
                  reg_sel_rb_in <= "11";
423
                  zw_b4 <= X"FF";
424 14 fpga_is_fu
               ELSIF ((d_i = X"88") AND (rdy_i = '1')) THEN
425 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
426
                  reg_sel_reg <= "10";
427
                  reg_sel_rb_in <= "11";
428
                  zw_b4 <= X"FF";
429 14 fpga_is_fu
               ELSIF ((d_i = X"49" or
430 6 fpga_is_fu
                      d_i = X"45" or
431
                      d_i = X"55" or
432
                      d_i = X"4D" or
433
                      d_i = X"5D" or
434
                      d_i = X"59" or
435
                      d_i = X"41" or
436
                      d_i = X"51" or
437
                      d_i = X"09" or
438
                      d_i = X"05" or
439
                      d_i = X"15" or
440
                      d_i = X"0D" or
441
                      d_i = X"1D" or
442
                      d_i = X"19" or
443
                      d_i = X"01" or
444
                      d_i = X"11" or
445
                      d_i = X"29" or
446
                      d_i = X"25" or
447
                      d_i = X"35" or
448
                      d_i = X"2D" or
449
                      d_i = X"3D" or
450
                      d_i = X"39" or
451
                      d_i = X"21" or
452
                      d_i = X"31" or
453
                      d_i = X"C9" or
454
                      d_i = X"C5" or
455
                      d_i = X"D5" or
456
                      d_i = X"CD" or
457
                      d_i = X"DD" or
458
                      d_i = X"D9" or
459
                      d_i = X"C1" or
460 14 fpga_is_fu
                      d_i = X"D1") AND (rdy_i = '1')) THEN
461 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
462
                  reg_sel_reg <= "00";
463
                  reg_sel_rb_in <= "11";
464
                  sig_PC <= adr_nxt_pc_i;
465 14 fpga_is_fu
               ELSIF ((d_i = X"E6" or
466 6 fpga_is_fu
                      d_i = X"F6" or
467
                      d_i = X"EE" or
468 14 fpga_is_fu
                      d_i = X"FE") AND (rdy_i = '1')) THEN
469 6 fpga_is_fu
                  zw_b4 <= X"01";
470
                  sig_PC <= adr_nxt_pc_i;
471 14 fpga_is_fu
               ELSIF ((d_i = X"E8") AND (rdy_i = '1')) THEN
472 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
473
                  reg_sel_reg <= "01";
474
                  reg_sel_rb_in <= "11";
475
                  zw_b4 <= X"01";
476 14 fpga_is_fu
               ELSIF ((d_i = X"C8") AND (rdy_i = '1')) THEN
477 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
478
                  reg_sel_reg <= "10";
479
                  reg_sel_rb_in <= "11";
480
                  zw_b4 <= X"01";
481 14 fpga_is_fu
               ELSIF ((d_i = X"4C" or
482
                      d_i = X"6C") AND (rdy_i = '1')) THEN
483 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
484 14 fpga_is_fu
               ELSIF ((d_i = X"20") AND (rdy_i = '1')) THEN
485 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
486 14 fpga_is_fu
               ELSIF ((d_i = X"A9" or
487 6 fpga_is_fu
                      d_i = X"A5" or
488
                      d_i = X"B5" or
489
                      d_i = X"AD" or
490
                      d_i = X"BD" or
491
                      d_i = X"B9" or
492
                      d_i = X"A1" or
493 14 fpga_is_fu
                      d_i = X"B1") AND (rdy_i = '1')) THEN
494 6 fpga_is_fu
                  reg_sel_reg <= "00";
495
                  reg_sel_rb_in <= "11";
496
                  sig_PC <= adr_nxt_pc_i;
497 14 fpga_is_fu
               ELSIF ((d_i = X"A2" or
498 6 fpga_is_fu
                      d_i = X"A6" or
499
                      d_i = X"B6" or
500
                      d_i = X"AE" or
501 14 fpga_is_fu
                      d_i = X"BE") AND (rdy_i = '1')) THEN
502 6 fpga_is_fu
                  reg_sel_reg <= "01";
503
                  reg_sel_rb_in <= "11";
504
                  sig_PC <= adr_nxt_pc_i;
505 14 fpga_is_fu
               ELSIF ((d_i = X"A0" or
506 6 fpga_is_fu
                      d_i = X"A4" or
507
                      d_i = X"B4" or
508
                      d_i = X"AC" or
509 14 fpga_is_fu
                      d_i = X"BC") AND (rdy_i = '1')) THEN
510 6 fpga_is_fu
                  reg_sel_reg <= "10";
511
                  reg_sel_rb_in <= "11";
512
                  sig_PC <= adr_nxt_pc_i;
513 14 fpga_is_fu
               ELSIF ((d_i = X"46" or
514 6 fpga_is_fu
                      d_i = X"56" or
515
                      d_i = X"4E" or
516 14 fpga_is_fu
                      d_i = X"5E") AND (rdy_i = '1')) THEN
517 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
518 14 fpga_is_fu
               ELSIF ((d_i = X"EA") AND (rdy_i = '1')) THEN
519
               ELSIF ((d_i = X"48") AND (rdy_i = '1')) THEN
520 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
521 14 fpga_is_fu
               ELSIF ((d_i = X"08") AND (rdy_i = '1')) THEN
522 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
523 14 fpga_is_fu
               ELSIF ((d_i = X"68") AND (rdy_i = '1')) THEN
524 6 fpga_is_fu
                  reg_sel_sp_in <= '0';
525
                  reg_sel_sp_as <= '0';
526
 
527
                  reg_sel_reg <= "00";
528
                  reg_sel_rb_in <= "11";
529 14 fpga_is_fu
               ELSIF ((d_i = X"28") AND (rdy_i = '1')) THEN
530 6 fpga_is_fu
                  reg_sel_sp_in <= '0';
531
                  reg_sel_sp_as <= '0';
532 14 fpga_is_fu
               ELSIF ((d_i = X"26" or
533 6 fpga_is_fu
                      d_i = X"36" or
534
                      d_i = X"2E" or
535 14 fpga_is_fu
                      d_i = X"3E") AND (rdy_i = '1')) THEN
536 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
537 14 fpga_is_fu
               ELSIF ((d_i = X"66" or
538 6 fpga_is_fu
                      d_i = X"76" or
539
                      d_i = X"6E" or
540 14 fpga_is_fu
                      d_i = X"7E") AND (rdy_i = '1')) THEN
541 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
542 14 fpga_is_fu
               ELSIF ((d_i = X"40") AND (rdy_i = '1')) THEN
543 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
544 14 fpga_is_fu
               ELSIF ((d_i = X"60") AND (rdy_i = '1')) THEN
545 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
546
                  reg_sel_sp_in <= '0';
547
                  reg_sel_sp_as <= '0';
548 14 fpga_is_fu
               ELSIF ((d_i = X"E9" or
549 6 fpga_is_fu
                      d_i = X"E5" or
550
                      d_i = X"F5" or
551
                      d_i = X"ED" or
552
                      d_i = X"FD" or
553
                      d_i = X"F9" or
554
                      d_i = X"E1" or
555 14 fpga_is_fu
                      d_i = X"F1") AND (rdy_i = '1')) THEN
556 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
557
                  reg_sel_reg <= "00";
558
                  reg_sel_rb_in <= "11";
559
                  zw_b1(0) <= reg_F(7);
560 14 fpga_is_fu
               ELSIF ((d_i = X"38") AND (rdy_i = '1')) THEN
561
               ELSIF ((d_i = X"F8") AND (rdy_i = '1')) THEN
562
               ELSIF ((d_i = X"78") AND (rdy_i = '1')) THEN
563
               ELSIF ((d_i = X"85" or
564 6 fpga_is_fu
                      d_i = X"95" or
565
                      d_i = X"8D" or
566
                      d_i = X"9D" or
567
                      d_i = X"99" or
568
                      d_i = X"81" or
569 14 fpga_is_fu
                      d_i = X"91") AND (rdy_i = '1')) THEN
570 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
571
                  sig_PC <= adr_nxt_pc_i;
572 14 fpga_is_fu
               ELSIF ((d_i = X"86" or
573 6 fpga_is_fu
                      d_i = X"96" or
574 14 fpga_is_fu
                      d_i = X"8E") AND (rdy_i = '1')) THEN
575 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
576
                  sig_PC <= adr_nxt_pc_i;
577 14 fpga_is_fu
               ELSIF ((d_i = X"84" or
578 6 fpga_is_fu
                      d_i = X"94" or
579 14 fpga_is_fu
                      d_i = X"8C") AND (rdy_i = '1')) THEN
580 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
581
                  sig_PC <= adr_nxt_pc_i;
582 14 fpga_is_fu
               ELSIF ((d_i = X"AA") AND (rdy_i = '1')) THEN
583 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
584
                  reg_sel_reg <= "01";
585
                  reg_sel_rb_in <= "00";
586
                  reg_sel_sp_in <= '1';
587
                  reg_sel_sp_as <= '0';
588 14 fpga_is_fu
               ELSIF ((d_i = X"0A") AND (rdy_i = '1')) THEN
589 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
590
                  reg_sel_reg <= "00";
591
                  reg_sel_rb_in <= "11";
592 14 fpga_is_fu
               ELSIF ((d_i = X"4A") AND (rdy_i = '1')) THEN
593 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
594
                  reg_sel_reg <= "00";
595
                  reg_sel_rb_in <= "11";
596 14 fpga_is_fu
               ELSIF ((d_i = X"2A") AND (rdy_i = '1')) THEN
597 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
598
                  reg_sel_reg <= "00";
599
                  reg_sel_rb_in <= "11";
600 14 fpga_is_fu
               ELSIF ((d_i = X"6A") AND (rdy_i = '1')) THEN
601 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
602
                  reg_sel_reg <= "00";
603
                  reg_sel_rb_in <= "11";
604 14 fpga_is_fu
               ELSIF ((d_i = X"A8") AND (rdy_i = '1')) THEN
605 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
606
                  reg_sel_reg <= "10";
607
                  reg_sel_rb_in <= "00";
608
                  reg_sel_sp_in <= '1';
609
                  reg_sel_sp_as <= '0';
610 14 fpga_is_fu
               ELSIF ((d_i = X"98") AND (rdy_i = '1')) THEN
611 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
612
                  reg_sel_reg <= "00";
613
                  reg_sel_rb_in <= "01";
614
                  reg_sel_sp_in <= '1';
615
                  reg_sel_sp_as <= '0';
616 14 fpga_is_fu
               ELSIF ((d_i = X"BA") AND (rdy_i = '1')) THEN
617 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
618
                  reg_sel_reg <= "01";
619
                  reg_sel_rb_in <= "11";
620
                  reg_sel_sp_in <= '1';
621
                  reg_sel_sp_as <= '0';
622 14 fpga_is_fu
               ELSIF ((d_i = X"8A") AND (rdy_i = '1')) THEN
623 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
624
                  reg_sel_reg <= "00";
625
                  reg_sel_rb_in <= "10";
626
                  reg_sel_sp_in <= '1';
627
                  reg_sel_sp_as <= '0';
628 14 fpga_is_fu
               ELSIF ((d_i = X"9A") AND (rdy_i = '1')) THEN
629 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
630
                  reg_sel_reg <= "11";
631
                  reg_sel_rb_in <= "11";
632
                  reg_sel_sp_in <= '1';
633
                  reg_sel_sp_as <= '0';
634 14 fpga_is_fu
               END IF;
635
            WHEN s1 =>
636
               IF (rdy_i = '1') THEN
637 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
638
                  reg_sel_pc_in <= '0';
639 14 fpga_is_fu
 
640 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
641
                  reg_sel_sp_in <= '0';
642
                  reg_sel_sp_as <= '1';
643 14 fpga_is_fu
               END IF;
644
            WHEN s2 =>
645
               IF (rdy_i = '1') THEN
646 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
647
                  reg_F(0) <= '1';
648
                  reg_sel_pc_in <= '0';
649 14 fpga_is_fu
 
650 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
651
                  reg_sel_sp_in <= '0';
652
                  reg_sel_sp_as <= '1';
653 14 fpga_is_fu
               END IF;
654
            WHEN s5 =>
655
               IF (rdy_i = '1') THEN
656 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
657
                  reg_F(3) <= '1';
658
                  reg_sel_pc_in <= '0';
659 14 fpga_is_fu
 
660 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
661
                  reg_sel_sp_in <= '0';
662
                  reg_sel_sp_as <= '1';
663 14 fpga_is_fu
               END IF;
664
            WHEN s3 =>
665 6 fpga_is_fu
               sig_PC <= adr_pc_i;
666 14 fpga_is_fu
               IF (rdy_i = '1') THEN
667 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
668
                  reg_F(2) <= '1';
669
                  reg_sel_pc_in <= '0';
670 14 fpga_is_fu
 
671 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
672
                  reg_sel_sp_in <= '0';
673
                  reg_sel_sp_as <= '1';
674 14 fpga_is_fu
               END IF;
675
            WHEN s4 =>
676
               IF (rdy_i = '1' and
677
                   zw_REG_OP = X"9A") THEN
678 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
679
                  reg_sel_pc_in <= '0';
680 14 fpga_is_fu
 
681 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
682
                  reg_sel_sp_in <= '0';
683
                  reg_sel_sp_as <= '1';
684 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
685
                      zw_REG_OP = X"BA") THEN
686 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
687
                  reg_F(7) <= reg_7flag_i;
688
                  reg_F(1) <= reg_1flag_i;
689
                  reg_sel_pc_in <= '0';
690 14 fpga_is_fu
 
691 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
692
                  reg_sel_sp_in <= '0';
693
                  reg_sel_sp_as <= '1';
694 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
695 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
696
                  reg_F(7) <= reg_7flag_i;
697
                  reg_F(1) <= reg_1flag_i;
698
                  reg_sel_pc_in <= '0';
699 14 fpga_is_fu
 
700 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
701
                  reg_sel_sp_in <= '0';
702
                  reg_sel_sp_as <= '1';
703 14 fpga_is_fu
               END IF;
704
            WHEN s12 =>
705
               IF (rdy_i = '1') THEN
706 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
707
                  reg_F(0) <= '0';
708
                  reg_sel_pc_in <= '0';
709 14 fpga_is_fu
 
710 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
711
                  reg_sel_sp_in <= '0';
712
                  reg_sel_sp_as <= '1';
713 14 fpga_is_fu
               END IF;
714
            WHEN s16 =>
715
               IF (rdy_i = '1') THEN
716 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
717
                  reg_F(3) <= '0';
718
                  reg_sel_pc_in <= '0';
719 14 fpga_is_fu
 
720 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
721
                  reg_sel_sp_in <= '0';
722
                  reg_sel_sp_as <= '1';
723 14 fpga_is_fu
               END IF;
724
            WHEN s17 =>
725
               IF (rdy_i = '1') THEN
726 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
727
                  reg_F(2) <= '0';
728
                  reg_sel_pc_in <= '0';
729 14 fpga_is_fu
 
730 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
731
                  reg_sel_sp_in <= '0';
732
                  reg_sel_sp_as <= '1';
733 14 fpga_is_fu
               END IF;
734
            WHEN s24 =>
735
               IF (rdy_i = '1') THEN
736 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
737
                  reg_F(6) <= '0';
738
                  reg_sel_pc_in <= '0';
739 14 fpga_is_fu
 
740 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
741
                  reg_sel_sp_in <= '0';
742
                  reg_sel_sp_as <= '1';
743 14 fpga_is_fu
               END IF;
744
            WHEN s25 =>
745
               IF (rdy_i = '1') THEN
746 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
747
                  reg_F(7) <= reg_7flag_i;
748
                  reg_F(1) <= reg_1flag_i;
749
                  reg_sel_pc_in <= '0';
750 14 fpga_is_fu
 
751 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
752
                  reg_sel_sp_in <= '0';
753
                  reg_sel_sp_as <= '1';
754 14 fpga_is_fu
               END IF;
755
            WHEN s271 =>
756
               IF (rdy_i = '1' and
757
                   zw_REG_OP = X"4C") THEN
758 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
759
                  reg_sel_pc_in <= '1';
760 14 fpga_is_fu
 
761 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
762
                  zw_b1 <= d_i;
763 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
764
                      zw_REG_OP = X"6C") THEN
765 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
766
                  reg_sel_pc_in <= '1';
767 14 fpga_is_fu
 
768 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
769
                  zw_b1 <= d_i;
770 14 fpga_is_fu
               END IF;
771
            WHEN s273 =>
772
               IF (rdy_i = '1') THEN
773 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
774
                  reg_sel_pc_in <= '0';
775 14 fpga_is_fu
 
776 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
777
                  zw_b2 <= d_i;
778 14 fpga_is_fu
               END IF;
779
            WHEN s304 =>
780
               IF (rdy_i = '1') THEN
781 6 fpga_is_fu
                  sig_PC <= zw_b2 & adr_pc_i(7 downto 0);
782
                  reg_sel_pc_in <= '1';
783 14 fpga_is_fu
 
784 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
785
                  zw_b1 <= d_i;
786 14 fpga_is_fu
               END IF;
787
            WHEN s307 =>
788
               IF (rdy_i = '1') THEN
789 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
790
                  reg_sel_pc_in <= '0';
791 14 fpga_is_fu
 
792 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
793
                  reg_sel_sp_in <= '0';
794
                  reg_sel_sp_as <= '1';
795 14 fpga_is_fu
               END IF;
796
            WHEN s177 =>
797
               IF (rdy_i = '1' and
798 6 fpga_is_fu
                   (zw_REG_OP = X"85" OR
799
                   zw_REG_OP = X"86" OR
800 14 fpga_is_fu
                   zw_REG_OP = X"84")) THEN
801 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
802 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
803 6 fpga_is_fu
                      (zw_REG_OP = X"95" OR
804 14 fpga_is_fu
                      zw_REG_OP = X"94")) THEN
805 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
806
                  zw_b1 <= d_alu_i;
807 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
808 6 fpga_is_fu
                      (zw_REG_OP = X"8D" OR
809
                      zw_REG_OP = X"8E" OR
810 14 fpga_is_fu
                      zw_REG_OP = X"8C")) THEN
811 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
812
                  zw_b1 <= d_i;
813 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
814
                      zw_REG_OP = X"9D") THEN
815 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
816
                  zw_b1 <= d_alu_i;
817
                  zw_b2(0) <= reg_0flag_i;
818 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
819
                      zw_REG_OP = X"99") THEN
820 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
821
                  zw_b1 <= d_alu_i;
822
                  zw_b2(0) <= reg_0flag_i;
823 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
824
                      zw_REG_OP = X"91") THEN
825 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
826
                  zw_b1 <= d_alu_i;
827 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
828
                      zw_REG_OP = X"81") THEN
829 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
830
                  zw_b1 <= d_alu_i;
831 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
832
                      zw_REG_OP = X"96") THEN
833 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
834
                  zw_b1 <= d_alu_i;
835 14 fpga_is_fu
               END IF;
836
            WHEN s180 =>
837
               IF (rdy_i = '1') THEN
838 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
839
                  zw_b3 <= d_alu_i;
840 14 fpga_is_fu
               END IF;
841
            WHEN s181 =>
842
               IF (rdy_i = '1') THEN
843 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
844
                  zw_b1 <= d_alu_i;
845
                  zw_b2(0) <= reg_0flag_i;
846 14 fpga_is_fu
               END IF;
847
            WHEN s182 =>
848
               IF (rdy_i = '1') THEN
849 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
850
                  zw_b3 <= d_alu_i;
851 14 fpga_is_fu
               END IF;
852
            WHEN s183 =>
853
               IF (rdy_i = '1') THEN
854 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
855 14 fpga_is_fu
               END IF;
856
            WHEN s184 =>
857 6 fpga_is_fu
               sig_PC <= adr_pc_i;
858
               reg_sel_pc_in <= '0';
859 14 fpga_is_fu
 
860 6 fpga_is_fu
               reg_sel_pc_val <= "00";
861
               reg_sel_sp_in <= '0';
862
               reg_sel_sp_as <= '1';
863 14 fpga_is_fu
            WHEN s185 =>
864
               IF (rdy_i = '1') THEN
865 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
866 14 fpga_is_fu
               END IF;
867
            WHEN s186 =>
868
               IF (rdy_i = '1') THEN
869 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
870 14 fpga_is_fu
               END IF;
871
            WHEN s187 =>
872 6 fpga_is_fu
               sig_PC <= adr_pc_i;
873
               reg_sel_pc_in <= '0';
874 14 fpga_is_fu
 
875 6 fpga_is_fu
               reg_sel_pc_val <= "00";
876
               reg_sel_sp_in <= '0';
877
               reg_sel_sp_as <= '1';
878 14 fpga_is_fu
            WHEN s188 =>
879
               IF (rdy_i = '1') THEN
880 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
881
                  zw_b1 <= d_i;
882 14 fpga_is_fu
               END IF;
883
            WHEN s189 =>
884
               IF (rdy_i = '1') THEN
885 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
886
                  zw_b3 <= d_alu_i;
887 14 fpga_is_fu
               END IF;
888
            WHEN s190 =>
889 6 fpga_is_fu
               sig_PC <= adr_pc_i;
890
               reg_sel_pc_in <= '0';
891 14 fpga_is_fu
 
892 6 fpga_is_fu
               reg_sel_pc_val <= "00";
893
               reg_sel_sp_in <= '0';
894
               reg_sel_sp_as <= '1';
895 14 fpga_is_fu
            WHEN s191 =>
896 6 fpga_is_fu
               sig_PC <= zw_b3 & zw_b1;
897 14 fpga_is_fu
            WHEN s192 =>
898 6 fpga_is_fu
               sig_PC <= d_i & zw_b1;
899 14 fpga_is_fu
            WHEN s193 =>
900 6 fpga_is_fu
               sig_PC <= adr_pc_i;
901
               reg_sel_pc_in <= '0';
902 14 fpga_is_fu
 
903 6 fpga_is_fu
               reg_sel_pc_val <= "00";
904
               reg_sel_sp_in <= '0';
905
               reg_sel_sp_as <= '1';
906 14 fpga_is_fu
            WHEN s377 =>
907
               IF (rdy_i = '1') THEN
908 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
909 14 fpga_is_fu
               END IF;
910
            WHEN s381 =>
911 6 fpga_is_fu
               sig_PC <= adr_pc_i;
912
               reg_sel_pc_in <= '0';
913 14 fpga_is_fu
 
914 6 fpga_is_fu
               reg_sel_pc_val <= "00";
915
               reg_sel_sp_in <= '0';
916
               reg_sel_sp_as <= '1';
917 14 fpga_is_fu
            WHEN s378 =>
918
               IF (rdy_i = '1') THEN
919 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
920 14 fpga_is_fu
               END IF;
921
            WHEN s382 =>
922 6 fpga_is_fu
               sig_PC <= adr_pc_i;
923
               reg_sel_pc_in <= '0';
924 14 fpga_is_fu
 
925 6 fpga_is_fu
               reg_sel_pc_val <= "00";
926
               reg_sel_sp_in <= '0';
927
               reg_sel_sp_as <= '1';
928 14 fpga_is_fu
            WHEN s383 =>
929
               IF (rdy_i = '1') THEN
930 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
931 14 fpga_is_fu
               END IF;
932
            WHEN s384 =>
933
               IF (rdy_i = '1') THEN
934 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
935
                  reg_F(7) <= reg_7flag_i;
936
                  reg_F(1) <= reg_1flag_i;
937
                  reg_sel_pc_in <= '0';
938 14 fpga_is_fu
 
939 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
940
                  reg_sel_sp_in <= '0';
941
                  reg_sel_sp_as <= '1';
942 14 fpga_is_fu
               END IF;
943
            WHEN s385 =>
944
               IF (rdy_i = '1') THEN
945 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
946 14 fpga_is_fu
               END IF;
947
            WHEN s386 =>
948
               IF (rdy_i = '1') THEN
949 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
950
                  reg_F <= d_i;
951
                  reg_sel_pc_in <= '0';
952 14 fpga_is_fu
 
953 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
954
                  reg_sel_sp_in <= '0';
955
                  reg_sel_sp_as <= '1';
956 14 fpga_is_fu
               END IF;
957
            WHEN s387 =>
958
               IF (rdy_i = '1') THEN
959 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
960 14 fpga_is_fu
               END IF;
961
            WHEN s388 =>
962
               IF (rdy_i = '1') THEN
963 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
964 14 fpga_is_fu
               END IF;
965
            WHEN s389 =>
966
               IF (rdy_i = '1') THEN
967 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
968
                  reg_F <= d_i;
969
                  reg_sel_pc_in <= '1';
970 14 fpga_is_fu
 
971 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
972 14 fpga_is_fu
               END IF;
973
            WHEN s391 =>
974
               IF (rdy_i = '1') THEN
975 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
976
                  zw_b1 <= d_i;
977 14 fpga_is_fu
               END IF;
978
            WHEN s392 =>
979
               IF (rdy_i = '1') THEN
980 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
981
                  reg_sel_pc_in <= '0';
982 14 fpga_is_fu
 
983 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
984
                  reg_sel_sp_in <= '0';
985
                  reg_sel_sp_as <= '1';
986 14 fpga_is_fu
               END IF;
987
            WHEN s390 =>
988
               IF (rdy_i = '1') THEN
989 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
990 14 fpga_is_fu
               END IF;
991
            WHEN s393 =>
992
               IF (rdy_i = '1') THEN
993 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
994 14 fpga_is_fu
               END IF;
995
            WHEN s394 =>
996
               IF (rdy_i = '1') THEN
997 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
998
                  zw_b1 <= d_i;
999
                  reg_sel_pc_in <= '1';
1000 14 fpga_is_fu
 
1001 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1002 14 fpga_is_fu
               END IF;
1003
            WHEN s395 =>
1004
               IF (rdy_i = '1') THEN
1005 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1006 14 fpga_is_fu
               END IF;
1007
            WHEN s396 =>
1008
               IF (rdy_i = '1') THEN
1009 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1010
                  reg_sel_pc_in <= '0';
1011 14 fpga_is_fu
 
1012 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1013
                  reg_sel_sp_in <= '0';
1014
                  reg_sel_sp_as <= '1';
1015 14 fpga_is_fu
               END IF;
1016
            WHEN s397 =>
1017
               IF (rdy_i = '1') THEN
1018 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1019
                  zw_b1 <= d_i;
1020 14 fpga_is_fu
               END IF;
1021
            WHEN s399 =>
1022 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1023 14 fpga_is_fu
            WHEN s400 =>
1024 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1025
               reg_sel_pc_in <= '1';
1026 14 fpga_is_fu
 
1027 6 fpga_is_fu
               reg_sel_pc_val <= "11";
1028 14 fpga_is_fu
            WHEN s401 =>
1029
               IF (rdy_i = '1') THEN
1030 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1 (7 downto 0);
1031
                  reg_sel_pc_in <= '0';
1032 14 fpga_is_fu
 
1033 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1034
                  reg_sel_sp_in <= '0';
1035
                  reg_sel_sp_as <= '1';
1036 14 fpga_is_fu
               END IF;
1037
            WHEN s526 =>
1038
               IF (rdy_i = '1') THEN
1039 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1040 14 fpga_is_fu
               END IF;
1041
            WHEN s527 =>
1042 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1043 14 fpga_is_fu
            WHEN s528 =>
1044 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1045 14 fpga_is_fu
            WHEN s529 =>
1046 6 fpga_is_fu
               sig_PC <= X"FFFE";
1047 14 fpga_is_fu
            WHEN s530 =>
1048
               IF (rdy_i = '1') THEN
1049 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1050
                  reg_F(2) <= '1';
1051
                  reg_sel_pc_in <= '0';
1052 14 fpga_is_fu
 
1053 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1054
                  reg_sel_sp_in <= '0';
1055
                  reg_sel_sp_as <= '1';
1056 14 fpga_is_fu
               END IF;
1057
            WHEN s531 =>
1058
               IF (rdy_i = '1') THEN
1059 6 fpga_is_fu
                  sig_PC <= X"FFFF";
1060
                  reg_sel_pc_in <= '1';
1061 14 fpga_is_fu
 
1062 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
1063
                  zw_b1 <= d_i;
1064 14 fpga_is_fu
               END IF;
1065
            WHEN s544 =>
1066 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1067 14 fpga_is_fu
            WHEN s545 =>
1068 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1069
               reg_sel_pc_in <= '0';
1070 14 fpga_is_fu
 
1071 6 fpga_is_fu
               reg_sel_pc_val <= "00";
1072 14 fpga_is_fu
            WHEN s546 =>
1073 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1074 14 fpga_is_fu
            WHEN s547 =>
1075
               IF (rdy_i = '1') THEN
1076 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1077 14 fpga_is_fu
                  zw_b1 <= d_i;
1078 6 fpga_is_fu
                  reg_sel_pc_in <= '1';
1079 14 fpga_is_fu
 
1080 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
1081 14 fpga_is_fu
               END IF;
1082
            WHEN s549 =>
1083
               IF (rdy_i = '1') THEN
1084
                  sig_PC  <= d_i & zw_b1;
1085 6 fpga_is_fu
                  reg_sel_pc_in <= '0';
1086 14 fpga_is_fu
 
1087 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1088
                  reg_sel_sp_in <= '0';
1089
                  reg_sel_sp_as <= '1';
1090 14 fpga_is_fu
               END IF;
1091
            WHEN s550 =>
1092 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1093
               reg_sel_pc_in <= '1';
1094 14 fpga_is_fu
 
1095 6 fpga_is_fu
               reg_sel_pc_val <= "00";
1096 14 fpga_is_fu
            WHEN s404 =>
1097
               IF (rdy_i = '1') THEN
1098 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1099
                  reg_F(0) <= q_a_i(7);
1100
                  reg_F(7) <= reg_7flag_i;
1101
                  reg_F(1) <= reg_1flag_i;
1102
                  reg_sel_pc_in <= '0';
1103 14 fpga_is_fu
 
1104 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1105
                  reg_sel_sp_in <= '0';
1106
                  reg_sel_sp_as <= '1';
1107 14 fpga_is_fu
               END IF;
1108
            WHEN s556 =>
1109
               IF (rdy_i = '1') THEN
1110 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1111
                  reg_F(0) <= q_a_i(0);
1112
                  reg_F(7) <= reg_7flag_i;
1113
                  reg_F(1) <= reg_1flag_i;
1114
                  reg_sel_pc_in <= '0';
1115 14 fpga_is_fu
 
1116 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1117
                  reg_sel_sp_in <= '0';
1118
                  reg_sel_sp_as <= '1';
1119 14 fpga_is_fu
               END IF;
1120
            WHEN s557 =>
1121
               IF (rdy_i = '1') THEN
1122 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1123
                  reg_F(0) <= q_a_i(7);
1124
                  reg_F(0) <= q_a_i(7);
1125
                  reg_F(7) <= reg_7flag_i;
1126
                  reg_F(1) <= reg_1flag_i;
1127
                  reg_sel_pc_in <= '0';
1128 14 fpga_is_fu
 
1129 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1130
                  reg_sel_sp_in <= '0';
1131
                  reg_sel_sp_as <= '1';
1132 14 fpga_is_fu
               END IF;
1133
            WHEN s579 =>
1134
               IF (rdy_i = '1') THEN
1135 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1136
                  reg_F(0) <= q_a_i(0);
1137
                  reg_F(7) <= reg_7flag_i;
1138
                  reg_F(1) <= reg_1flag_i;
1139
                  reg_sel_pc_in <= '0';
1140 14 fpga_is_fu
 
1141 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1142
                  reg_sel_sp_in <= '0';
1143
                  reg_sel_sp_as <= '1';
1144 14 fpga_is_fu
               END IF;
1145
            WHEN s201 =>
1146
               IF (rdy_i = '1' and
1147 6 fpga_is_fu
                   (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
1148
                   zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
1149
                   zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
1150 14 fpga_is_fu
                   zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) THEN
1151 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1152 14 fpga_is_fu
               ELSIF ((rdy_i = '1' and
1153 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1154 14 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1155 6 fpga_is_fu
                      zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1156
                      zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1157 14 fpga_is_fu
                      zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
1158 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1159
                  reg_F(7) <= reg_7flag_i;
1160
                  reg_F(1) <= reg_1flag_i;
1161
                  reg_sel_pc_in <= '0';
1162 14 fpga_is_fu
 
1163 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1164
                  reg_sel_sp_in <= '0';
1165
                  reg_sel_sp_as <= '1';
1166 14 fpga_is_fu
               ELSIF ((rdy_i = '1' and
1167 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1168 14 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1169 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1170
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1171 14 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
1172 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1173
                  reg_F(7) <= reg_7flag_i;
1174
                  reg_F(1) <= reg_1flag_i;
1175
                  reg_sel_pc_in <= '0';
1176 14 fpga_is_fu
 
1177 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1178
                  reg_sel_sp_in <= '0';
1179
                  reg_sel_sp_as <= '1';
1180 14 fpga_is_fu
               ELSIF ((rdy_i = '1' and
1181 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1182 14 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1183 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1184
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1185 14 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
1186 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1187
                  reg_F(7) <= reg_7flag_i;
1188
                  reg_F(1) <= reg_1flag_i;
1189
                  reg_sel_pc_in <= '0';
1190 14 fpga_is_fu
 
1191 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1192
                  reg_sel_sp_in <= '0';
1193
                  reg_sel_sp_as <= '1';
1194 14 fpga_is_fu
               ELSIF ((rdy_i = '1' and
1195 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1196 14 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1197 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1198
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1199
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1200
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1201
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1202 14 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
1203 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1204
                  reg_F(7) <= zw_ALU(7);
1205
                  reg_F(0) <= zw_ALU(8);
1206
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1207
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1208
                  (zw_ALU(0)));
1209
                  reg_sel_pc_in <= '0';
1210 14 fpga_is_fu
 
1211 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1212
                  reg_sel_sp_in <= '0';
1213
                  reg_sel_sp_as <= '1';
1214 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1215 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1216 14 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) THEN
1217 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1218
                  reg_F(7) <= reg_7flag_i;
1219
                  reg_F(1) <= reg_1flag_i;
1220
                  reg_sel_pc_in <= '0';
1221 14 fpga_is_fu
 
1222 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1223
                  reg_sel_sp_in <= '0';
1224
                  reg_sel_sp_as <= '1';
1225 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1226 6 fpga_is_fu
                      (zw_REG_OP = X"B5" OR
1227
                      zw_REG_OP = X"B4" OR
1228
                      zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
1229
                      zw_REG_OP = X"35" OR
1230 14 fpga_is_fu
                      zw_REG_OP = X"D5")) THEN
1231 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1232
                  zw_b1 <= d_alu_i;
1233 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1234 6 fpga_is_fu
                      (zw_REG_OP = X"AD" OR
1235
                      zw_REG_OP = X"AE" OR
1236
                      zw_REG_OP = X"AC" OR
1237
                      zw_REG_OP = X"4D" OR
1238
                      zw_REG_OP = X"0D" OR
1239
                      zw_REG_OP = X"2D" OR
1240
                      zw_REG_OP = X"CD" OR
1241
                      zw_REG_OP = X"EC" OR
1242 14 fpga_is_fu
                      zw_REG_OP = X"CC")) THEN
1243 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1244
                  zw_b1 <= d_i;
1245 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1246 6 fpga_is_fu
                      (zw_REG_OP = X"BD" OR
1247
                      zw_REG_OP = X"BC" OR
1248
                      zw_REG_OP = X"5D" OR
1249
                      zw_REG_OP = X"1D" OR
1250
                      zw_REG_OP = X"3D" OR
1251 14 fpga_is_fu
                      zw_REG_OP = X"DD")) THEN
1252 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1253
                  zw_b1 <= d_alu_i;
1254
                  zw_b2(0) <= reg_0flag_i;
1255 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1256 6 fpga_is_fu
                      (zw_REG_OP = X"B9" OR
1257
                      zw_REG_OP = X"BE" OR
1258
                      zw_REG_OP = X"59" OR
1259
                      zw_REG_OP = X"19" OR
1260
                      zw_REG_OP = X"39" OR
1261 14 fpga_is_fu
                      zw_REG_OP = X"D9")) THEN
1262 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1263
                  zw_b1 <= d_alu_i;
1264
                  zw_b2(0) <= reg_0flag_i;
1265 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1266 6 fpga_is_fu
                      (zw_REG_OP = X"B1" OR
1267
                      zw_REG_OP = X"51" OR
1268
                      zw_REG_OP = X"11" OR
1269
                      zw_REG_OP = X"31" OR
1270 14 fpga_is_fu
                      zw_REG_OP = X"D1")) THEN
1271 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1272
                  zw_b1 <= d_alu_i;
1273 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1274 6 fpga_is_fu
                      (zw_REG_OP = X"A1" OR
1275
                      zw_REG_OP = X"41" OR
1276
                      zw_REG_OP = X"01" OR
1277
                      zw_REG_OP = X"21" OR
1278 14 fpga_is_fu
                      zw_REG_OP = X"C1")) THEN
1279 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1280
                  zw_b1 <= d_alu_i;
1281 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1282
                      zw_REG_OP = X"B6") THEN
1283 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1284
                  zw_b1 <= d_alu_i;
1285 14 fpga_is_fu
               END IF;
1286
            WHEN s202 =>
1287
               IF (rdy_i = '1') THEN
1288 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1289 14 fpga_is_fu
               END IF;
1290
            WHEN s210 =>
1291
               IF (rdy_i = '1') THEN
1292 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1293
                  zw_b3 <= d_alu_i;
1294 14 fpga_is_fu
               END IF;
1295
            WHEN s211 =>
1296
               IF (rdy_i = '1') THEN
1297 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1298
                  zw_b3 <= d_alu_i;
1299 14 fpga_is_fu
               END IF;
1300
            WHEN s215 =>
1301
               IF (rdy_i = '1') THEN
1302 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1303
                  zw_b1 <= d_alu_i;
1304
                  zw_b2(0) <= reg_0flag_i;
1305 14 fpga_is_fu
               END IF;
1306
            WHEN s217 =>
1307
               IF (rdy_i = '1') THEN
1308 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1309 14 fpga_is_fu
               END IF;
1310
            WHEN s218 =>
1311
               IF (rdy_i = '1') THEN
1312 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1313 14 fpga_is_fu
               END IF;
1314
            WHEN s222 =>
1315
               IF (rdy_i = '1') THEN
1316 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1317
                  zw_b1 <= d_i;
1318 14 fpga_is_fu
               END IF;
1319
            WHEN s223 =>
1320
               IF (rdy_i = '1') THEN
1321 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1322
                  zw_b3 <= d_alu_i;
1323 14 fpga_is_fu
               END IF;
1324
            WHEN s224 =>
1325
               IF ((rdy_i = '1') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1326 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1327
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1328 14 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
1329 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1330
                  reg_F(7) <= reg_7flag_i;
1331
                  reg_F(1) <= reg_1flag_i;
1332
                  reg_sel_pc_in <= '0';
1333 14 fpga_is_fu
 
1334 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1335
                  reg_sel_sp_in <= '0';
1336
                  reg_sel_sp_as <= '1';
1337 14 fpga_is_fu
               ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1338 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1339
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1340 14 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
1341 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1342
                  reg_F(7) <= reg_7flag_i;
1343
                  reg_F(1) <= reg_1flag_i;
1344
                  reg_sel_pc_in <= '0';
1345 14 fpga_is_fu
 
1346 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1347
                  reg_sel_sp_in <= '0';
1348
                  reg_sel_sp_as <= '1';
1349 14 fpga_is_fu
               ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1350 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1351
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1352 14 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
1353 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1354
                  reg_F(7) <= reg_7flag_i;
1355
                  reg_F(1) <= reg_1flag_i;
1356
                  reg_sel_pc_in <= '0';
1357 14 fpga_is_fu
 
1358 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1359
                  reg_sel_sp_in <= '0';
1360
                  reg_sel_sp_as <= '1';
1361 14 fpga_is_fu
               ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1362 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1363
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1364
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1365
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1366
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1367 14 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
1368 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1369
                  reg_F(7) <= zw_ALU(7);
1370
                  reg_F(0) <= zw_ALU(8);
1371
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1372
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1373
                  (zw_ALU(0)));
1374
                  reg_sel_pc_in <= '0';
1375 14 fpga_is_fu
 
1376 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1377
                  reg_sel_sp_in <= '0';
1378
                  reg_sel_sp_as <= '1';
1379 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1380 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1381
                  reg_F(7) <= reg_7flag_i;
1382
                  reg_F(1) <= reg_1flag_i;
1383
                  reg_sel_pc_in <= '0';
1384 14 fpga_is_fu
 
1385 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1386
                  reg_sel_sp_in <= '0';
1387
                  reg_sel_sp_as <= '1';
1388 14 fpga_is_fu
               END IF;
1389
            WHEN s225 =>
1390
               IF ((rdy_i = '1' AND
1391
                   zw_b2(0) = '0') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1392 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1393
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1394 14 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
1395 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1396
                  reg_F(7) <= reg_7flag_i;
1397
                  reg_F(1) <= reg_1flag_i;
1398
                  reg_sel_pc_in <= '0';
1399 14 fpga_is_fu
 
1400 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1401
                  reg_sel_sp_in <= '0';
1402
                  reg_sel_sp_as <= '1';
1403 14 fpga_is_fu
               ELSIF ((rdy_i = '1' AND
1404
                      zw_b2(0) = '0') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1405 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1406
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1407 14 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
1408 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1409
                  reg_F(7) <= reg_7flag_i;
1410
                  reg_F(1) <= reg_1flag_i;
1411
                  reg_sel_pc_in <= '0';
1412 14 fpga_is_fu
 
1413 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1414
                  reg_sel_sp_in <= '0';
1415
                  reg_sel_sp_as <= '1';
1416 14 fpga_is_fu
               ELSIF ((rdy_i = '1' AND
1417
                      zw_b2(0) = '0') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1418 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1419
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1420 14 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
1421 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1422
                  reg_F(7) <= reg_7flag_i;
1423
                  reg_F(1) <= reg_1flag_i;
1424
                  reg_sel_pc_in <= '0';
1425 14 fpga_is_fu
 
1426 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1427
                  reg_sel_sp_in <= '0';
1428
                  reg_sel_sp_as <= '1';
1429 14 fpga_is_fu
               ELSIF ((rdy_i = '1' AND
1430
                      zw_b2(0) = '0') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1431 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1432
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1433
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1434
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1435
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1436 14 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
1437 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1438
                  reg_F(7) <= zw_ALU(7);
1439
                  reg_F(0) <= zw_ALU(8);
1440
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1441
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1442
                  (zw_ALU(0)));
1443
                  reg_sel_pc_in <= '0';
1444 14 fpga_is_fu
 
1445 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1446
                  reg_sel_sp_in <= '0';
1447
                  reg_sel_sp_as <= '1';
1448 14 fpga_is_fu
               ELSIF (rdy_i = '1' AND
1449
                      zw_b2(0) = '0') THEN
1450 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1451
                  reg_F(7) <= reg_7flag_i;
1452
                  reg_F(1) <= reg_1flag_i;
1453
                  reg_sel_pc_in <= '0';
1454 14 fpga_is_fu
 
1455 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1456
                  reg_sel_sp_in <= '0';
1457
                  reg_sel_sp_as <= '1';
1458 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1459 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1460 14 fpga_is_fu
               END IF;
1461
            WHEN s226 =>
1462
               IF (rdy_i = '1' and
1463 6 fpga_is_fu
                   (zw_REG_OP = X"C6" OR
1464 14 fpga_is_fu
                   zw_REG_OP = X"E6")) THEN
1465 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1466 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1467 6 fpga_is_fu
                      (zw_REG_OP = X"D6" OR
1468 14 fpga_is_fu
                      zw_REG_OP = X"F6")) THEN
1469 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1470
                  zw_b1 <= d_alu_i;
1471 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1472 6 fpga_is_fu
                      (zw_REG_OP = X"CE" OR
1473 14 fpga_is_fu
                      zw_REG_OP = X"EE")) THEN
1474 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1475
                  zw_b1 <= d_i;
1476 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1477 6 fpga_is_fu
                      (zw_REG_OP = X"DE" OR
1478 14 fpga_is_fu
                      zw_REG_OP = X"FE")) THEN
1479 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1480
                  zw_b1 <= d_alu_i;
1481
                  zw_b2(0) <= reg_0flag_i;
1482 14 fpga_is_fu
               END IF;
1483
            WHEN s243 =>
1484
               IF (rdy_i = '1') THEN
1485 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1486 14 fpga_is_fu
               END IF;
1487
            WHEN s244 =>
1488
               IF (rdy_i = '1') THEN
1489 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1490
                  zw_b3 <= d_alu_i;
1491 14 fpga_is_fu
               END IF;
1492
            WHEN s247 =>
1493
               IF (rdy_i = '1') THEN
1494 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1495 14 fpga_is_fu
               END IF;
1496
            WHEN s344 =>
1497
               IF (rdy_i = '1') THEN
1498 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1499 14 fpga_is_fu
               END IF;
1500
            WHEN s343 =>
1501
               IF (rdy_i = '1') THEN
1502 6 fpga_is_fu
                  zw_b1 <= d_alu_i;
1503 14 fpga_is_fu
               END IF;
1504
            WHEN s251 =>
1505 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1506
               reg_F(7) <= reg_7flag_i;
1507
               reg_F(1) <= reg_1flag_i;
1508
               reg_sel_pc_in <= '0';
1509 14 fpga_is_fu
 
1510 6 fpga_is_fu
               reg_sel_pc_val <= "00";
1511
               reg_sel_sp_in <= '0';
1512
               reg_sel_sp_as <= '1';
1513 14 fpga_is_fu
            WHEN s351 =>
1514
               IF (rdy_i = '1' and
1515
                   zw_REG_OP = X"24") THEN
1516 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1517 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1518
                      zw_REG_OP = X"2C") THEN
1519 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1520
                  zw_b1 <= d_i;
1521 14 fpga_is_fu
               END IF;
1522
            WHEN s361 =>
1523
               IF (rdy_i = '1') THEN
1524 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1525
                  reg_F(7) <= d_i(7);
1526
                  reg_F(6) <= d_i(6);
1527
                  reg_F(1) <= reg_1flag_i;
1528
                  reg_sel_pc_in <= '0';
1529 14 fpga_is_fu
 
1530 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1531
                  reg_sel_sp_in <= '0';
1532
                  reg_sel_sp_as <= '1';
1533 14 fpga_is_fu
               END IF;
1534
            WHEN s360 =>
1535
               IF (rdy_i = '1') THEN
1536 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1537 14 fpga_is_fu
               END IF;
1538
            WHEN s403 =>
1539
               IF (rdy_i = '1' and
1540 6 fpga_is_fu
                   (zw_REG_OP = X"1E" or
1541
                   zw_REG_OP = X"7E" or
1542
                   zw_REG_OP = X"3E" or
1543 14 fpga_is_fu
                   zw_REG_OP = X"5E")) THEN
1544 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1545
                  zw_b1 <= d_alu_i;
1546
                  zw_b2(0) <= reg_0flag_i;
1547 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1548 6 fpga_is_fu
                      (zw_REG_OP = X"06" or
1549
                      zw_REG_OP = X"66" or
1550
                      zw_REG_OP = X"26" or
1551 14 fpga_is_fu
                      zw_REG_OP = X"46")) THEN
1552 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1553 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1554 6 fpga_is_fu
                      (zw_REG_OP = X"16" or
1555
                      zw_REG_OP = X"76" or
1556
                      zw_REG_OP = X"36" or
1557 14 fpga_is_fu
                      zw_REG_OP = X"56")) THEN
1558 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1559
                  zw_b1 <= d_alu_i;
1560 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1561 6 fpga_is_fu
                      (zw_REG_OP = X"0E" or
1562
                      zw_REG_OP = X"6E" or
1563
                      zw_REG_OP = X"2E" or
1564 14 fpga_is_fu
                      zw_REG_OP = X"4E")) THEN
1565 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1566
                  zw_b1 <= d_i;
1567 14 fpga_is_fu
               END IF;
1568
            WHEN s406 =>
1569
               IF (rdy_i = '1') THEN
1570 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1571 14 fpga_is_fu
               END IF;
1572
            WHEN s407 =>
1573
               IF (rdy_i = '1') THEN
1574 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1575
                  zw_b3 <= d_alu_i;
1576 14 fpga_is_fu
               END IF;
1577
            WHEN s409 =>
1578
               IF (rdy_i = '1') THEN
1579 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1580 14 fpga_is_fu
               END IF;
1581
            WHEN s412 =>
1582
               IF (rdy_i = '1') THEN
1583 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1584 14 fpga_is_fu
               END IF;
1585
            WHEN s416 =>
1586
               IF (rdy_i = '1' and
1587 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
1588
                   zw_REG_OP = X"16" or
1589
                   zw_REG_OP = X"0E" or
1590 14 fpga_is_fu
                   zw_REG_OP = X"1E")) THEN
1591 6 fpga_is_fu
                  zw_b1 <= d_i(6 downto 0) & '0';
1592
                  zw_b2(0) <= d_i(7);
1593 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1594 6 fpga_is_fu
                      (zw_REG_OP = X"46" or
1595
                      zw_REG_OP = X"56" or
1596
                      zw_REG_OP = X"4E" or
1597 14 fpga_is_fu
                      zw_REG_OP = X"5E")) THEN
1598 6 fpga_is_fu
                  zw_b1 <= '0' & d_i(7 downto 1);
1599
                  zw_b2(0) <= d_i(0);
1600 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1601 6 fpga_is_fu
                      (zw_REG_OP = X"26" or
1602
                      zw_REG_OP = X"36" or
1603
                      zw_REG_OP = X"2E" or
1604 14 fpga_is_fu
                      zw_REG_OP = X"3E")) THEN
1605 6 fpga_is_fu
                  zw_b1 <= d_i(6 downto 0) & reg_F(0);
1606
                  zw_b2(0) <= d_i(7);
1607 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1608 6 fpga_is_fu
                      (zw_REG_OP = X"66" or
1609
                      zw_REG_OP = X"76" or
1610
                      zw_REG_OP = X"6E" or
1611 14 fpga_is_fu
                      zw_REG_OP = X"7E")) THEN
1612 6 fpga_is_fu
                  zw_b1 <= reg_F(0) & d_i(7 downto 1);
1613
                  zw_b2(0) <= d_i(0);
1614 14 fpga_is_fu
               END IF;
1615
            WHEN s418 =>
1616 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1617
               reg_F(0) <= zw_b2(0);
1618
               reg_F(7) <= reg_7flag_i;
1619
               reg_F(1) <= reg_1flag_i;
1620
               reg_sel_pc_in <= '0';
1621 14 fpga_is_fu
 
1622 6 fpga_is_fu
               reg_sel_pc_val <= "00";
1623
               reg_sel_sp_in <= '0';
1624
               reg_sel_sp_as <= '1';
1625 14 fpga_is_fu
            WHEN s510 =>
1626
               IF (rdy_i = '1' and
1627
                   zw_REG_OP = X"65") THEN
1628 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1629 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1630 6 fpga_is_fu
                      zw_REG_OP = X"69" and
1631 14 fpga_is_fu
                      reg_F(3) = '0') THEN
1632 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1633
 
1634
                  reg_F(7) <= zw_ALU(7);
1635
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1636
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1637
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1638
                  (zw_ALU(0)));
1639
                  reg_F(0) <= zw_ALU(8);
1640
                  reg_sel_pc_in <= '0';
1641 14 fpga_is_fu
 
1642 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1643
                  reg_sel_sp_in <= '0';
1644
                  reg_sel_sp_as <= '1';
1645 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1646
                      zw_REG_OP = X"75") THEN
1647 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1648
                  zw_b1 <= d_alu_i;
1649 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1650
                      zw_REG_OP = X"6D") THEN
1651 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1652
                  zw_b1 <= d_i;
1653 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1654
                      zw_REG_OP = X"7D") THEN
1655 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1656
                  zw_b1 <= d_alu_i;
1657
                  zw_b2(0) <= reg_0flag_i;
1658 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1659
                      zw_REG_OP = X"79") THEN
1660 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1661
                  zw_b1 <= d_alu_i;
1662
                  zw_b2(0) <= reg_0flag_i;
1663 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1664
                      zw_REG_OP = X"71") THEN
1665 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1666
                  zw_b1 <= d_alu_i;
1667 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1668
                      zw_REG_OP = X"61") THEN
1669 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1670
                  zw_b1 <= d_alu_i;
1671 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1672 6 fpga_is_fu
                      zw_REG_OP = X"69" and
1673 14 fpga_is_fu
                      reg_F(3) = '1') THEN
1674 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1675
 
1676
                  reg_F(7) <= zw_ALU(7);
1677
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1678
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1679
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1680
                  (zw_ALU(0)));
1681
                  reg_F(0) <= zw_ALU4(4);
1682
                  reg_sel_pc_in <= '0';
1683 14 fpga_is_fu
 
1684 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1685
                  reg_sel_sp_in <= '0';
1686
                  reg_sel_sp_as <= '1';
1687 14 fpga_is_fu
               END IF;
1688
            WHEN s553 =>
1689
               IF (rdy_i = '1') THEN
1690 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1691 14 fpga_is_fu
               END IF;
1692
            WHEN s555 =>
1693
               IF (rdy_i = '1') THEN
1694 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1695
                  zw_b3 <= d_alu_i;
1696 14 fpga_is_fu
               END IF;
1697
            WHEN s558 =>
1698
               IF (rdy_i = '1') THEN
1699 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1700
                  zw_b1 <= d_alu_i;
1701
                  zw_b2(0) <= reg_0flag_i;
1702 14 fpga_is_fu
               END IF;
1703
            WHEN s560 =>
1704
               IF (rdy_i = '1') THEN
1705 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1706 14 fpga_is_fu
               END IF;
1707
            WHEN s561 =>
1708
               IF (rdy_i = '1') THEN
1709 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1710 14 fpga_is_fu
               END IF;
1711
            WHEN s563 =>
1712
               IF (rdy_i = '1') THEN
1713 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1714
                  zw_b1 <= d_i;
1715 14 fpga_is_fu
               END IF;
1716
            WHEN s564 =>
1717
               IF (rdy_i = '1' AND
1718 6 fpga_is_fu
                   zw_b2(0) = '0' and
1719 14 fpga_is_fu
                   reg_F(3) = '0') THEN
1720 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1721
 
1722
                  reg_F(7) <= zw_ALU(7);
1723
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1724
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1725
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1726
                  (zw_ALU(0)));
1727
                  reg_F(0) <= zw_ALU(8);
1728
                  reg_sel_pc_in <= '0';
1729 14 fpga_is_fu
 
1730 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1731
                  reg_sel_sp_in <= '0';
1732
                  reg_sel_sp_as <= '1';
1733 14 fpga_is_fu
               ELSIF (rdy_i = '1' AND
1734 6 fpga_is_fu
                      zw_b2(0) = '0' and
1735 14 fpga_is_fu
                      reg_F(3) = '1') THEN
1736 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1737
 
1738
                  reg_F(7) <= zw_ALU(7);
1739
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1740
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1741
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1742
                  (zw_ALU(0)));
1743
                  reg_F(0) <= zw_ALU4(4);
1744
                  reg_sel_pc_in <= '0';
1745 14 fpga_is_fu
 
1746 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1747
                  reg_sel_sp_in <= '0';
1748
                  reg_sel_sp_as <= '1';
1749 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1750 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1751 14 fpga_is_fu
               END IF;
1752
            WHEN s565 =>
1753
               IF (rdy_i = '1' and
1754
                   reg_F(3) = '0') THEN
1755 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1756
 
1757
                  reg_F(7) <= zw_ALU(7);
1758
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1759
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1760
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1761
                  (zw_ALU(0)));
1762
                  reg_F(0) <= zw_ALU(8);
1763
                  reg_sel_pc_in <= '0';
1764 14 fpga_is_fu
 
1765 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1766
                  reg_sel_sp_in <= '0';
1767
                  reg_sel_sp_as <= '1';
1768 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1769
                      reg_F(3) = '1') THEN
1770 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1771
 
1772
                  reg_F(7) <= zw_ALU(7);
1773
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1774
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1775
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1776
                  (zw_ALU(0)));
1777
                  reg_F(0) <= zw_ALU4(4);
1778
                  reg_sel_pc_in <= '0';
1779 14 fpga_is_fu
 
1780 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1781
                  reg_sel_sp_in <= '0';
1782
                  reg_sel_sp_as <= '1';
1783 14 fpga_is_fu
               END IF;
1784
            WHEN s566 =>
1785
               IF (rdy_i = '1') THEN
1786 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1787
                  zw_b3 <= d_alu_i;
1788 14 fpga_is_fu
               END IF;
1789
            WHEN s266 =>
1790
               IF (rdy_i = '1' and (
1791 6 fpga_is_fu
                   (reg_F(0) = '1' and zw_REG_OP = X"90") or
1792
                   (reg_F(0) = '0' and zw_REG_OP = X"B0") or
1793
                   (reg_F(1) = '0' and zw_REG_OP = X"F0") or
1794
                   (reg_F(7) = '0' and zw_REG_OP = X"30") or
1795
                   (reg_F(1) = '1' and zw_REG_OP = X"D0") or
1796
                   (reg_F(7) = '1' and zw_REG_OP = X"10") or
1797
                   (reg_F(6) = '1' and zw_REG_OP = X"50") or
1798 14 fpga_is_fu
                   (reg_F(6) = '0' and zw_REG_OP = X"70"))) THEN
1799 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1800
                  reg_sel_pc_in <= '0';
1801 14 fpga_is_fu
 
1802 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1803
                  reg_sel_sp_in <= '0';
1804
                  reg_sel_sp_as <= '1';
1805 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1806 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1807
                  reg_sel_pc_in <= '0';
1808 14 fpga_is_fu
 
1809 6 fpga_is_fu
                  reg_sel_pc_val <= "10";
1810
                  zw_b2 <= d_i;
1811 14 fpga_is_fu
               END IF;
1812
            WHEN s301 =>
1813
               IF (rdy_i = '1' and
1814
                   zw_b3 = adr_nxt_pc_i (15 downto 8)) THEN
1815 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1816
                  reg_sel_pc_in <= '0';
1817 14 fpga_is_fu
 
1818 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1819
                  reg_sel_sp_in <= '0';
1820
                  reg_sel_sp_as <= '1';
1821 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1822 6 fpga_is_fu
                  sig_PC <= zw_b3 & adr_nxt_pc_i (7 downto 0);
1823 14 fpga_is_fu
               END IF;
1824
            WHEN s302 =>
1825
               IF (rdy_i = '1') THEN
1826 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1827
                  reg_sel_pc_in <= '0';
1828 14 fpga_is_fu
 
1829 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1830
                  reg_sel_sp_in <= '0';
1831
                  reg_sel_sp_as <= '1';
1832 14 fpga_is_fu
               END IF;
1833
            WHEN RES =>
1834 6 fpga_is_fu
               reg_sel_pc_in <= '0';
1835
               reg_sel_pc_val <= "00";
1836
               sig_PC <= adr_nxt_pc_i;
1837
               reg_sel_pc_in <= '0';
1838 14 fpga_is_fu
 
1839 6 fpga_is_fu
               reg_sel_pc_val <= "00";
1840
               reg_sel_sp_in <= '0';
1841
               reg_sel_sp_as <= '1';
1842 14 fpga_is_fu
            WHEN s511 =>
1843
               IF (rdy_i = '1' and
1844
                   zw_REG_OP = X"E5") THEN
1845 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1846 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1847 6 fpga_is_fu
                      zw_REG_OP = X"E9" and
1848 14 fpga_is_fu
                      reg_F(3) = '0') THEN
1849 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1850
 
1851
                  reg_F(7) <= zw_ALU(7);
1852
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1853
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1854
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1855
                  (zw_ALU(0)));
1856
                  reg_F(0) <= zw_ALU(8);
1857
                  reg_sel_pc_in <= '0';
1858 14 fpga_is_fu
 
1859 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1860
                  reg_sel_sp_in <= '0';
1861
                  reg_sel_sp_as <= '1';
1862 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1863
                      zw_REG_OP = X"F5") THEN
1864 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1865
                  zw_b1 <= d_alu_i;
1866 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1867
                      zw_REG_OP = X"ED") THEN
1868 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1869
                  zw_b1 <= d_i;
1870 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1871
                      zw_REG_OP = X"FD") THEN
1872 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1873
                  zw_b1 <= d_alu_i;
1874
                  zw_b2(0) <= reg_0flag_i;
1875 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1876
                      zw_REG_OP = X"F9") THEN
1877 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1878
                  zw_b1 <= d_alu_i;
1879
                  zw_b2(0) <= reg_0flag_i;
1880 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1881
                      zw_REG_OP = X"F1") THEN
1882 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1883
                  zw_b1 <= d_alu_i;
1884 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1885
                      zw_REG_OP = X"E1") THEN
1886 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1887
                  zw_b1 <= d_alu_i;
1888 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1889 6 fpga_is_fu
                      zw_REG_OP = X"E9" and
1890 14 fpga_is_fu
                      reg_F(3) = '1') THEN
1891 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1892
 
1893
                  reg_F(7) <= zw_ALU(7);
1894
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1895
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1896
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1897
                  (zw_ALU(0)));
1898
                  reg_F(0) <= zw_ALU2(4);
1899
                  reg_sel_pc_in <= '0';
1900 14 fpga_is_fu
 
1901 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1902
                  reg_sel_sp_in <= '0';
1903
                  reg_sel_sp_as <= '1';
1904 14 fpga_is_fu
               END IF;
1905
            WHEN s559 =>
1906
               IF (rdy_i = '1') THEN
1907 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1908 14 fpga_is_fu
               END IF;
1909
            WHEN s562 =>
1910
               IF (rdy_i = '1') THEN
1911 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1912
                  zw_b3 <= d_alu_i;
1913 14 fpga_is_fu
               END IF;
1914
            WHEN s567 =>
1915
               IF (rdy_i = '1') THEN
1916 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1917
                  zw_b3 <= d_alu_i;
1918 14 fpga_is_fu
               END IF;
1919
            WHEN s568 =>
1920
               IF (rdy_i = '1') THEN
1921 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1922
                  zw_b1 <= d_alu_i;
1923
                  zw_b2(0) <= reg_0flag_i;
1924 14 fpga_is_fu
               END IF;
1925
            WHEN s569 =>
1926
               IF (rdy_i = '1') THEN
1927 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1928 14 fpga_is_fu
               END IF;
1929
            WHEN s570 =>
1930
               IF (rdy_i = '1') THEN
1931 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1932 14 fpga_is_fu
               END IF;
1933
            WHEN s571 =>
1934
               IF (rdy_i = '1') THEN
1935 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1936
                  zw_b3 <= d_alu_i;
1937 14 fpga_is_fu
               END IF;
1938
            WHEN s572 =>
1939
               IF (rdy_i = '1') THEN
1940 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1941
                  zw_b1 <= d_i;
1942 14 fpga_is_fu
               END IF;
1943
            WHEN s573 =>
1944
               IF (rdy_i = '1' AND
1945 6 fpga_is_fu
                   zw_b2(0) = '0' and
1946 14 fpga_is_fu
                   reg_F(3) = '0') THEN
1947 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1948
 
1949
                  reg_F(7) <= zw_ALU(7);
1950
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1951
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1952
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1953
                  (zw_ALU(0)));
1954
                  reg_F(0) <= zw_ALU(8);
1955
                  reg_sel_pc_in <= '0';
1956 14 fpga_is_fu
 
1957 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1958
                  reg_sel_sp_in <= '0';
1959
                  reg_sel_sp_as <= '1';
1960 14 fpga_is_fu
               ELSIF (rdy_i = '1' AND
1961 6 fpga_is_fu
                      zw_b2(0) = '0' and
1962 14 fpga_is_fu
                      reg_F(3) = '1') THEN
1963 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1964
 
1965
                  reg_F(7) <= zw_ALU(7);
1966
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1967
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1968
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1969
                  (zw_ALU(0)));
1970
                  reg_F(0) <= zw_ALU2(4);
1971
                  reg_sel_pc_in <= '0';
1972 14 fpga_is_fu
 
1973 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1974
                  reg_sel_sp_in <= '0';
1975
                  reg_sel_sp_as <= '1';
1976 14 fpga_is_fu
               ELSIF (rdy_i = '1') THEN
1977 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1978 14 fpga_is_fu
               END IF;
1979
            WHEN s574 =>
1980
               IF (rdy_i = '1' and
1981
                   reg_F(3) = '0') THEN
1982 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1983
 
1984
                  reg_F(7) <= zw_ALU(7);
1985
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1986
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1987
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1988
                  (zw_ALU(0)));
1989
                  reg_F(0) <= zw_ALU(8);
1990
                  reg_sel_pc_in <= '0';
1991 14 fpga_is_fu
 
1992 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
1993
                  reg_sel_sp_in <= '0';
1994
                  reg_sel_sp_as <= '1';
1995 14 fpga_is_fu
               ELSIF (rdy_i = '1' and
1996
                      reg_F(3) = '1') THEN
1997 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1998
 
1999
                  reg_F(7) <= zw_ALU(7);
2000
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
2001
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
2002
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
2003
                  (zw_ALU(0)));
2004
                  reg_F(0) <= zw_ALU2(4);
2005
                  reg_sel_pc_in <= '0';
2006 14 fpga_is_fu
 
2007 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
2008
                  reg_sel_sp_in <= '0';
2009
                  reg_sel_sp_as <= '1';
2010 14 fpga_is_fu
               END IF;
2011
            WHEN s548 =>
2012
               IF (rdy_i = '1') THEN
2013 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
2014 14 fpga_is_fu
               END IF;
2015
            WHEN s551 =>
2016 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2017 14 fpga_is_fu
            WHEN s552 =>
2018 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2019 14 fpga_is_fu
            WHEN s575 =>
2020
               IF (rdy_i = '1') THEN
2021 6 fpga_is_fu
                  sig_PC <= X"FFFF";
2022
                  zw_b1 <= d_i;
2023 14 fpga_is_fu
               END IF;
2024
            WHEN s576 =>
2025 6 fpga_is_fu
               sig_PC <= X"FFFE";
2026 14 fpga_is_fu
            WHEN s577 =>
2027
               IF (rdy_i = '1') THEN
2028 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
2029
                  reg_F(2) <= '1';
2030
                  reg_sel_pc_in <= '0';
2031 14 fpga_is_fu
 
2032 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
2033
                  reg_sel_sp_in <= '0';
2034
                  reg_sel_sp_as <= '1';
2035 14 fpga_is_fu
               END IF;
2036
            WHEN s532 =>
2037
               IF (rdy_i = '1') THEN
2038 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
2039 14 fpga_is_fu
               END IF;
2040
            WHEN s533 =>
2041 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2042 14 fpga_is_fu
            WHEN s534 =>
2043 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2044 14 fpga_is_fu
            WHEN s535 =>
2045
               IF (rdy_i = '1') THEN
2046 6 fpga_is_fu
                  sig_PC <= X"FFFB";
2047
                  reg_sel_pc_in <= '1';
2048 14 fpga_is_fu
 
2049 6 fpga_is_fu
                  reg_sel_pc_val <= "11";
2050
                  zw_b1 <= d_i;
2051 14 fpga_is_fu
               END IF;
2052
            WHEN s536 =>
2053 6 fpga_is_fu
               sig_PC <= X"FFFA";
2054 14 fpga_is_fu
            WHEN s537 =>
2055
               IF (rdy_i = '1') THEN
2056 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
2057
                  reg_sel_pc_in <= '0';
2058 14 fpga_is_fu
 
2059 6 fpga_is_fu
                  reg_sel_pc_val <= "00";
2060
                  reg_sel_sp_in <= '0';
2061
                  reg_sel_sp_as <= '1';
2062 14 fpga_is_fu
               END IF;
2063
            WHEN OTHERS =>
2064
               NULL;
2065
         END CASE;
2066
      END IF;
2067
   END PROCESS clocked_proc;
2068 6 fpga_is_fu
 
2069
   -----------------------------------------------------------------
2070 14 fpga_is_fu
   nextstate_proc : PROCESS (
2071 6 fpga_is_fu
      adr_nxt_pc_i,
2072
      current_state,
2073
      d_i,
2074
      irq_n_i,
2075
      nmi_i,
2076
      rdy_i,
2077
      reg_F,
2078
      zw_REG_OP,
2079
      zw_b2,
2080
      zw_b3
2081
   )
2082
   -----------------------------------------------------------------
2083 14 fpga_is_fu
   BEGIN
2084
      CASE current_state IS
2085
         WHEN FETCH =>
2086
            IF ((nmi_i = '1') AND (rdy_i = '1')) THEN
2087 6 fpga_is_fu
               next_state <= s532;
2088 14 fpga_is_fu
            ELSIF ((irq_n_i = '0' and
2089
                   reg_F(2) = '0') AND (rdy_i = '1')) THEN
2090 6 fpga_is_fu
               next_state <= s548;
2091 14 fpga_is_fu
            ELSIF ((d_i = X"69" or
2092 6 fpga_is_fu
                   d_i = X"65" or
2093
                   d_i = X"75" or
2094
                   d_i = X"6D" or
2095
                   d_i = X"7D" or
2096
                   d_i = X"79" or
2097
                   d_i = X"61" or
2098 14 fpga_is_fu
                   d_i = X"71") AND (rdy_i = '1')) THEN
2099 6 fpga_is_fu
               next_state <= s510;
2100 14 fpga_is_fu
            ELSIF ((d_i = X"06" or
2101 6 fpga_is_fu
                   d_i = X"16" or
2102
                   d_i = X"0E" or
2103 14 fpga_is_fu
                   d_i = X"1E") AND (rdy_i = '1')) THEN
2104 6 fpga_is_fu
               next_state <= s403;
2105 14 fpga_is_fu
            ELSIF ((d_i = X"90" or
2106 6 fpga_is_fu
                   d_i = X"B0" or
2107
                   d_i = X"F0" or
2108
                   d_i = X"30" or
2109
                   d_i = X"D0" or
2110
                   d_i = X"10" or
2111
                   d_i = X"50" or
2112 14 fpga_is_fu
                   d_i = X"70") AND (rdy_i = '1')) THEN
2113 6 fpga_is_fu
               next_state <= s266;
2114 14 fpga_is_fu
            ELSIF ((d_i = X"24" or
2115
                   d_i = X"2C") AND (rdy_i = '1')) THEN
2116 6 fpga_is_fu
               next_state <= s351;
2117 14 fpga_is_fu
            ELSIF ((d_i = X"00") AND (rdy_i = '1')) THEN
2118 6 fpga_is_fu
               next_state <= s526;
2119 14 fpga_is_fu
            ELSIF ((d_i = X"18") AND (rdy_i = '1')) THEN
2120 6 fpga_is_fu
               next_state <= s12;
2121 14 fpga_is_fu
            ELSIF ((d_i = X"D8") AND (rdy_i = '1')) THEN
2122 6 fpga_is_fu
               next_state <= s16;
2123 14 fpga_is_fu
            ELSIF ((d_i = X"58") AND (rdy_i = '1')) THEN
2124 6 fpga_is_fu
               next_state <= s17;
2125 14 fpga_is_fu
            ELSIF ((d_i = X"B8") AND (rdy_i = '1')) THEN
2126 6 fpga_is_fu
               next_state <= s24;
2127 14 fpga_is_fu
            ELSIF ((d_i = X"E0" or
2128 6 fpga_is_fu
                   d_i = X"E4" or
2129 14 fpga_is_fu
                   d_i = X"EC") AND (rdy_i = '1')) THEN
2130 6 fpga_is_fu
               next_state <= s201;
2131 14 fpga_is_fu
            ELSIF ((d_i = X"C0" or
2132 6 fpga_is_fu
                   d_i = X"C4" or
2133 14 fpga_is_fu
                   d_i = X"CC") AND (rdy_i = '1')) THEN
2134 6 fpga_is_fu
               next_state <= s201;
2135 14 fpga_is_fu
            ELSIF ((d_i = X"C6" or
2136 6 fpga_is_fu
                   d_i = X"D6" or
2137
                   d_i = X"CE" or
2138 14 fpga_is_fu
                   d_i = X"DE") AND (rdy_i = '1')) THEN
2139 6 fpga_is_fu
               next_state <= s226;
2140 14 fpga_is_fu
            ELSIF ((d_i = X"CA") AND (rdy_i = '1')) THEN
2141 6 fpga_is_fu
               next_state <= s25;
2142 14 fpga_is_fu
            ELSIF ((d_i = X"88") AND (rdy_i = '1')) THEN
2143 6 fpga_is_fu
               next_state <= s25;
2144 14 fpga_is_fu
            ELSIF ((d_i = X"49" or
2145 6 fpga_is_fu
                   d_i = X"45" or
2146
                   d_i = X"55" or
2147
                   d_i = X"4D" or
2148
                   d_i = X"5D" or
2149
                   d_i = X"59" or
2150
                   d_i = X"41" or
2151
                   d_i = X"51" or
2152
                   d_i = X"09" or
2153
                   d_i = X"05" or
2154
                   d_i = X"15" or
2155
                   d_i = X"0D" or
2156
                   d_i = X"1D" or
2157
                   d_i = X"19" or
2158
                   d_i = X"01" or
2159
                   d_i = X"11" or
2160
                   d_i = X"29" or
2161
                   d_i = X"25" or
2162
                   d_i = X"35" or
2163
                   d_i = X"2D" or
2164
                   d_i = X"3D" or
2165
                   d_i = X"39" or
2166
                   d_i = X"21" or
2167
                   d_i = X"31" or
2168
                   d_i = X"C9" or
2169
                   d_i = X"C5" or
2170
                   d_i = X"D5" or
2171
                   d_i = X"CD" or
2172
                   d_i = X"DD" or
2173
                   d_i = X"D9" or
2174
                   d_i = X"C1" or
2175 14 fpga_is_fu
                   d_i = X"D1") AND (rdy_i = '1')) THEN
2176 6 fpga_is_fu
               next_state <= s201;
2177 14 fpga_is_fu
            ELSIF ((d_i = X"E6" or
2178 6 fpga_is_fu
                   d_i = X"F6" or
2179
                   d_i = X"EE" or
2180 14 fpga_is_fu
                   d_i = X"FE") AND (rdy_i = '1')) THEN
2181 6 fpga_is_fu
               next_state <= s226;
2182 14 fpga_is_fu
            ELSIF ((d_i = X"E8") AND (rdy_i = '1')) THEN
2183 6 fpga_is_fu
               next_state <= s25;
2184 14 fpga_is_fu
            ELSIF ((d_i = X"C8") AND (rdy_i = '1')) THEN
2185 6 fpga_is_fu
               next_state <= s25;
2186 14 fpga_is_fu
            ELSIF ((d_i = X"4C" or
2187
                   d_i = X"6C") AND (rdy_i = '1')) THEN
2188 6 fpga_is_fu
               next_state <= s271;
2189 14 fpga_is_fu
            ELSIF ((d_i = X"20") AND (rdy_i = '1')) THEN
2190 6 fpga_is_fu
               next_state <= s397;
2191 14 fpga_is_fu
            ELSIF ((d_i = X"A9" or
2192 6 fpga_is_fu
                   d_i = X"A5" or
2193
                   d_i = X"B5" or
2194
                   d_i = X"AD" or
2195
                   d_i = X"BD" or
2196
                   d_i = X"B9" or
2197
                   d_i = X"A1" or
2198 14 fpga_is_fu
                   d_i = X"B1") AND (rdy_i = '1')) THEN
2199 6 fpga_is_fu
               next_state <= s201;
2200 14 fpga_is_fu
            ELSIF ((d_i = X"A2" or
2201 6 fpga_is_fu
                   d_i = X"A6" or
2202
                   d_i = X"B6" or
2203
                   d_i = X"AE" or
2204 14 fpga_is_fu
                   d_i = X"BE") AND (rdy_i = '1')) THEN
2205 6 fpga_is_fu
               next_state <= s201;
2206 14 fpga_is_fu
            ELSIF ((d_i = X"A0" or
2207 6 fpga_is_fu
                   d_i = X"A4" or
2208
                   d_i = X"B4" or
2209
                   d_i = X"AC" or
2210 14 fpga_is_fu
                   d_i = X"BC") AND (rdy_i = '1')) THEN
2211 6 fpga_is_fu
               next_state <= s201;
2212 14 fpga_is_fu
            ELSIF ((d_i = X"46" or
2213 6 fpga_is_fu
                   d_i = X"56" or
2214
                   d_i = X"4E" or
2215 14 fpga_is_fu
                   d_i = X"5E") AND (rdy_i = '1')) THEN
2216 6 fpga_is_fu
               next_state <= s403;
2217 14 fpga_is_fu
            ELSIF ((d_i = X"EA") AND (rdy_i = '1')) THEN
2218 6 fpga_is_fu
               next_state <= s1;
2219 14 fpga_is_fu
            ELSIF ((d_i = X"48") AND (rdy_i = '1')) THEN
2220 6 fpga_is_fu
               next_state <= s377;
2221 14 fpga_is_fu
            ELSIF ((d_i = X"08") AND (rdy_i = '1')) THEN
2222 6 fpga_is_fu
               next_state <= s378;
2223 14 fpga_is_fu
            ELSIF ((d_i = X"68") AND (rdy_i = '1')) THEN
2224 6 fpga_is_fu
               next_state <= s379;
2225 14 fpga_is_fu
            ELSIF ((d_i = X"28") AND (rdy_i = '1')) THEN
2226 6 fpga_is_fu
               next_state <= s380;
2227 14 fpga_is_fu
            ELSIF ((d_i = X"26" or
2228 6 fpga_is_fu
                   d_i = X"36" or
2229
                   d_i = X"2E" or
2230 14 fpga_is_fu
                   d_i = X"3E") AND (rdy_i = '1')) THEN
2231 6 fpga_is_fu
               next_state <= s403;
2232 14 fpga_is_fu
            ELSIF ((d_i = X"66" or
2233 6 fpga_is_fu
                   d_i = X"76" or
2234
                   d_i = X"6E" or
2235 14 fpga_is_fu
                   d_i = X"7E") AND (rdy_i = '1')) THEN
2236 6 fpga_is_fu
               next_state <= s403;
2237 14 fpga_is_fu
            ELSIF ((d_i = X"40") AND (rdy_i = '1')) THEN
2238 6 fpga_is_fu
               next_state <= s387;
2239 14 fpga_is_fu
            ELSIF ((d_i = X"60") AND (rdy_i = '1')) THEN
2240 6 fpga_is_fu
               next_state <= s390;
2241 14 fpga_is_fu
            ELSIF ((d_i = X"E9" or
2242 6 fpga_is_fu
                   d_i = X"E5" or
2243
                   d_i = X"F5" or
2244
                   d_i = X"ED" or
2245
                   d_i = X"FD" or
2246
                   d_i = X"F9" or
2247
                   d_i = X"E1" or
2248 14 fpga_is_fu
                   d_i = X"F1") AND (rdy_i = '1')) THEN
2249 6 fpga_is_fu
               next_state <= s511;
2250 14 fpga_is_fu
            ELSIF ((d_i = X"38") AND (rdy_i = '1')) THEN
2251 6 fpga_is_fu
               next_state <= s2;
2252 14 fpga_is_fu
            ELSIF ((d_i = X"F8") AND (rdy_i = '1')) THEN
2253 6 fpga_is_fu
               next_state <= s5;
2254 14 fpga_is_fu
            ELSIF ((d_i = X"78") AND (rdy_i = '1')) THEN
2255 6 fpga_is_fu
               next_state <= s3;
2256 14 fpga_is_fu
            ELSIF ((d_i = X"85" or
2257 6 fpga_is_fu
                   d_i = X"95" or
2258
                   d_i = X"8D" or
2259
                   d_i = X"9D" or
2260
                   d_i = X"99" or
2261
                   d_i = X"81" or
2262 14 fpga_is_fu
                   d_i = X"91") AND (rdy_i = '1')) THEN
2263 6 fpga_is_fu
               next_state <= s177;
2264 14 fpga_is_fu
            ELSIF ((d_i = X"86" or
2265 6 fpga_is_fu
                   d_i = X"96" or
2266 14 fpga_is_fu
                   d_i = X"8E") AND (rdy_i = '1')) THEN
2267 6 fpga_is_fu
               next_state <= s177;
2268 14 fpga_is_fu
            ELSIF ((d_i = X"84" or
2269 6 fpga_is_fu
                   d_i = X"94" or
2270 14 fpga_is_fu
                   d_i = X"8C") AND (rdy_i = '1')) THEN
2271 6 fpga_is_fu
               next_state <= s177;
2272 14 fpga_is_fu
            ELSIF ((d_i = X"AA") AND (rdy_i = '1')) THEN
2273 6 fpga_is_fu
               next_state <= s4;
2274 14 fpga_is_fu
            ELSIF ((d_i = X"0A") AND (rdy_i = '1')) THEN
2275 6 fpga_is_fu
               next_state <= s404;
2276 14 fpga_is_fu
            ELSIF ((d_i = X"4A") AND (rdy_i = '1')) THEN
2277 6 fpga_is_fu
               next_state <= s556;
2278 14 fpga_is_fu
            ELSIF ((d_i = X"2A") AND (rdy_i = '1')) THEN
2279 6 fpga_is_fu
               next_state <= s557;
2280 14 fpga_is_fu
            ELSIF ((d_i = X"6A") AND (rdy_i = '1')) THEN
2281 6 fpga_is_fu
               next_state <= s579;
2282 14 fpga_is_fu
            ELSIF ((d_i = X"A8") AND (rdy_i = '1')) THEN
2283 6 fpga_is_fu
               next_state <= s4;
2284 14 fpga_is_fu
            ELSIF ((d_i = X"98") AND (rdy_i = '1')) THEN
2285 6 fpga_is_fu
               next_state <= s4;
2286 14 fpga_is_fu
            ELSIF ((d_i = X"BA") AND (rdy_i = '1')) THEN
2287 6 fpga_is_fu
               next_state <= s4;
2288 14 fpga_is_fu
            ELSIF ((d_i = X"8A") AND (rdy_i = '1')) THEN
2289 6 fpga_is_fu
               next_state <= s4;
2290 14 fpga_is_fu
            ELSIF ((d_i = X"9A") AND (rdy_i = '1')) THEN
2291 6 fpga_is_fu
               next_state <= s4;
2292 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
2293 6 fpga_is_fu
               next_state <= s1;
2294 14 fpga_is_fu
            ELSE
2295 6 fpga_is_fu
               next_state <= FETCH;
2296 14 fpga_is_fu
            END IF;
2297
         WHEN s1 =>
2298
            IF (rdy_i = '1') THEN
2299 6 fpga_is_fu
               next_state <= FETCH;
2300 14 fpga_is_fu
            ELSE
2301 6 fpga_is_fu
               next_state <= s1;
2302 14 fpga_is_fu
            END IF;
2303
         WHEN s2 =>
2304
            IF (rdy_i = '1') THEN
2305 6 fpga_is_fu
               next_state <= FETCH;
2306 14 fpga_is_fu
            ELSE
2307 6 fpga_is_fu
               next_state <= s2;
2308 14 fpga_is_fu
            END IF;
2309
         WHEN s5 =>
2310
            IF (rdy_i = '1') THEN
2311 6 fpga_is_fu
               next_state <= FETCH;
2312 14 fpga_is_fu
            ELSE
2313 6 fpga_is_fu
               next_state <= s5;
2314 14 fpga_is_fu
            END IF;
2315
         WHEN s3 =>
2316
            IF (rdy_i = '1') THEN
2317 6 fpga_is_fu
               next_state <= FETCH;
2318 14 fpga_is_fu
            ELSE
2319 6 fpga_is_fu
               next_state <= s3;
2320 14 fpga_is_fu
            END IF;
2321
         WHEN s4 =>
2322
            IF (rdy_i = '1' and
2323
                zw_REG_OP = X"9A") THEN
2324 6 fpga_is_fu
               next_state <= FETCH;
2325 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2326
                   zw_REG_OP = X"BA") THEN
2327 6 fpga_is_fu
               next_state <= FETCH;
2328 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
2329 6 fpga_is_fu
               next_state <= FETCH;
2330 14 fpga_is_fu
            ELSE
2331 6 fpga_is_fu
               next_state <= s4;
2332 14 fpga_is_fu
            END IF;
2333
         WHEN s12 =>
2334
            IF (rdy_i = '1') THEN
2335 6 fpga_is_fu
               next_state <= FETCH;
2336 14 fpga_is_fu
            ELSE
2337 6 fpga_is_fu
               next_state <= s12;
2338 14 fpga_is_fu
            END IF;
2339
         WHEN s16 =>
2340
            IF (rdy_i = '1') THEN
2341 6 fpga_is_fu
               next_state <= FETCH;
2342 14 fpga_is_fu
            ELSE
2343 6 fpga_is_fu
               next_state <= s16;
2344 14 fpga_is_fu
            END IF;
2345
         WHEN s17 =>
2346
            IF (rdy_i = '1') THEN
2347 6 fpga_is_fu
               next_state <= FETCH;
2348 14 fpga_is_fu
            ELSE
2349 6 fpga_is_fu
               next_state <= s17;
2350 14 fpga_is_fu
            END IF;
2351
         WHEN s24 =>
2352
            IF (rdy_i = '1') THEN
2353 6 fpga_is_fu
               next_state <= FETCH;
2354 14 fpga_is_fu
            ELSE
2355 6 fpga_is_fu
               next_state <= s24;
2356 14 fpga_is_fu
            END IF;
2357
         WHEN s25 =>
2358
            IF (rdy_i = '1') THEN
2359 6 fpga_is_fu
               next_state <= FETCH;
2360 14 fpga_is_fu
            ELSE
2361 6 fpga_is_fu
               next_state <= s25;
2362 14 fpga_is_fu
            END IF;
2363
         WHEN s271 =>
2364
            IF (rdy_i = '1' and
2365
                zw_REG_OP = X"4C") THEN
2366 6 fpga_is_fu
               next_state <= s307;
2367 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2368
                   zw_REG_OP = X"6C") THEN
2369 6 fpga_is_fu
               next_state <= s273;
2370 14 fpga_is_fu
            ELSE
2371 6 fpga_is_fu
               next_state <= s271;
2372 14 fpga_is_fu
            END IF;
2373
         WHEN s273 =>
2374
            IF (rdy_i = '1') THEN
2375 6 fpga_is_fu
               next_state <= s304;
2376 14 fpga_is_fu
            ELSE
2377 6 fpga_is_fu
               next_state <= s273;
2378 14 fpga_is_fu
            END IF;
2379
         WHEN s304 =>
2380
            IF (rdy_i = '1') THEN
2381 6 fpga_is_fu
               next_state <= s307;
2382 14 fpga_is_fu
            ELSE
2383 6 fpga_is_fu
               next_state <= s304;
2384 14 fpga_is_fu
            END IF;
2385
         WHEN s307 =>
2386
            IF (rdy_i = '1') THEN
2387 6 fpga_is_fu
               next_state <= FETCH;
2388 14 fpga_is_fu
            ELSE
2389 6 fpga_is_fu
               next_state <= s307;
2390 14 fpga_is_fu
            END IF;
2391
         WHEN s177 =>
2392
            IF (rdy_i = '1' and
2393 6 fpga_is_fu
                (zw_REG_OP = X"85" OR
2394
                zw_REG_OP = X"86" OR
2395 14 fpga_is_fu
                zw_REG_OP = X"84")) THEN
2396 6 fpga_is_fu
               next_state <= s184;
2397 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2398 6 fpga_is_fu
                   (zw_REG_OP = X"95" OR
2399 14 fpga_is_fu
                   zw_REG_OP = X"94")) THEN
2400 6 fpga_is_fu
               next_state <= s185;
2401 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2402 6 fpga_is_fu
                   (zw_REG_OP = X"8D" OR
2403
                   zw_REG_OP = X"8E" OR
2404 14 fpga_is_fu
                   zw_REG_OP = X"8C")) THEN
2405 6 fpga_is_fu
               next_state <= s183;
2406 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2407
                   zw_REG_OP = X"9D") THEN
2408 6 fpga_is_fu
               next_state <= s182;
2409 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2410
                   zw_REG_OP = X"99") THEN
2411 6 fpga_is_fu
               next_state <= s180;
2412 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2413
                   zw_REG_OP = X"91") THEN
2414 6 fpga_is_fu
               next_state <= s181;
2415 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2416
                   zw_REG_OP = X"81") THEN
2417 6 fpga_is_fu
               next_state <= s186;
2418 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2419
                   zw_REG_OP = X"96") THEN
2420 6 fpga_is_fu
               next_state <= s185;
2421 14 fpga_is_fu
            ELSE
2422 6 fpga_is_fu
               next_state <= s177;
2423 14 fpga_is_fu
            END IF;
2424
         WHEN s180 =>
2425
            IF (rdy_i = '1') THEN
2426 6 fpga_is_fu
               next_state <= s191;
2427 14 fpga_is_fu
            ELSE
2428 6 fpga_is_fu
               next_state <= s180;
2429 14 fpga_is_fu
            END IF;
2430
         WHEN s181 =>
2431
            IF (rdy_i = '1') THEN
2432 6 fpga_is_fu
               next_state <= s189;
2433 14 fpga_is_fu
            ELSE
2434 6 fpga_is_fu
               next_state <= s181;
2435 14 fpga_is_fu
            END IF;
2436
         WHEN s182 =>
2437
            IF (rdy_i = '1') THEN
2438 6 fpga_is_fu
               next_state <= s191;
2439 14 fpga_is_fu
            ELSE
2440 6 fpga_is_fu
               next_state <= s182;
2441 14 fpga_is_fu
            END IF;
2442
         WHEN s183 =>
2443
            IF (rdy_i = '1') THEN
2444 6 fpga_is_fu
               next_state <= s187;
2445 14 fpga_is_fu
            ELSE
2446 6 fpga_is_fu
               next_state <= s183;
2447 14 fpga_is_fu
            END IF;
2448
         WHEN s184 =>
2449 6 fpga_is_fu
            next_state <= FETCH;
2450 14 fpga_is_fu
         WHEN s185 =>
2451
            IF (rdy_i = '1') THEN
2452 6 fpga_is_fu
               next_state <= s190;
2453 14 fpga_is_fu
            ELSE
2454 6 fpga_is_fu
               next_state <= s185;
2455 14 fpga_is_fu
            END IF;
2456
         WHEN s186 =>
2457
            IF (rdy_i = '1') THEN
2458 6 fpga_is_fu
               next_state <= s188;
2459 14 fpga_is_fu
            ELSE
2460 6 fpga_is_fu
               next_state <= s186;
2461 14 fpga_is_fu
            END IF;
2462
         WHEN s187 =>
2463 6 fpga_is_fu
            next_state <= FETCH;
2464 14 fpga_is_fu
         WHEN s188 =>
2465
            IF (rdy_i = '1') THEN
2466 6 fpga_is_fu
               next_state <= s192;
2467 14 fpga_is_fu
            ELSE
2468 6 fpga_is_fu
               next_state <= s188;
2469 14 fpga_is_fu
            END IF;
2470
         WHEN s189 =>
2471
            IF (rdy_i = '1') THEN
2472 6 fpga_is_fu
               next_state <= s191;
2473 14 fpga_is_fu
            ELSE
2474 6 fpga_is_fu
               next_state <= s189;
2475 14 fpga_is_fu
            END IF;
2476
         WHEN s190 =>
2477 6 fpga_is_fu
            next_state <= FETCH;
2478 14 fpga_is_fu
         WHEN s191 =>
2479 6 fpga_is_fu
            next_state <= s193;
2480 14 fpga_is_fu
         WHEN s192 =>
2481 6 fpga_is_fu
            next_state <= s193;
2482 14 fpga_is_fu
         WHEN s193 =>
2483 6 fpga_is_fu
            next_state <= FETCH;
2484 14 fpga_is_fu
         WHEN s377 =>
2485
            IF (rdy_i = '1') THEN
2486 6 fpga_is_fu
               next_state <= s381;
2487 14 fpga_is_fu
            ELSE
2488 6 fpga_is_fu
               next_state <= s377;
2489 14 fpga_is_fu
            END IF;
2490
         WHEN s381 =>
2491 6 fpga_is_fu
            next_state <= FETCH;
2492 14 fpga_is_fu
         WHEN s378 =>
2493
            IF (rdy_i = '1') THEN
2494 6 fpga_is_fu
               next_state <= s382;
2495 14 fpga_is_fu
            ELSE
2496 6 fpga_is_fu
               next_state <= s378;
2497 14 fpga_is_fu
            END IF;
2498
         WHEN s382 =>
2499 6 fpga_is_fu
            next_state <= FETCH;
2500 14 fpga_is_fu
         WHEN s379 =>
2501
            IF (rdy_i = '1') THEN
2502 6 fpga_is_fu
               next_state <= s383;
2503 14 fpga_is_fu
            ELSE
2504 6 fpga_is_fu
               next_state <= s379;
2505 14 fpga_is_fu
            END IF;
2506
         WHEN s383 =>
2507
            IF (rdy_i = '1') THEN
2508 6 fpga_is_fu
               next_state <= s384;
2509 14 fpga_is_fu
            ELSE
2510 6 fpga_is_fu
               next_state <= s383;
2511 14 fpga_is_fu
            END IF;
2512
         WHEN s384 =>
2513
            IF (rdy_i = '1') THEN
2514 6 fpga_is_fu
               next_state <= FETCH;
2515 14 fpga_is_fu
            ELSE
2516 6 fpga_is_fu
               next_state <= s384;
2517 14 fpga_is_fu
            END IF;
2518
         WHEN s380 =>
2519
            IF (rdy_i = '1') THEN
2520 6 fpga_is_fu
               next_state <= s385;
2521 14 fpga_is_fu
            ELSE
2522 6 fpga_is_fu
               next_state <= s380;
2523 14 fpga_is_fu
            END IF;
2524
         WHEN s385 =>
2525
            IF (rdy_i = '1') THEN
2526 6 fpga_is_fu
               next_state <= s386;
2527 14 fpga_is_fu
            ELSE
2528 6 fpga_is_fu
               next_state <= s385;
2529 14 fpga_is_fu
            END IF;
2530
         WHEN s386 =>
2531
            IF (rdy_i = '1') THEN
2532 6 fpga_is_fu
               next_state <= FETCH;
2533 14 fpga_is_fu
            ELSE
2534 6 fpga_is_fu
               next_state <= s386;
2535 14 fpga_is_fu
            END IF;
2536
         WHEN s387 =>
2537
            IF (rdy_i = '1') THEN
2538 6 fpga_is_fu
               next_state <= s388;
2539 14 fpga_is_fu
            ELSE
2540 6 fpga_is_fu
               next_state <= s387;
2541 14 fpga_is_fu
            END IF;
2542
         WHEN s388 =>
2543
            IF (rdy_i = '1') THEN
2544 6 fpga_is_fu
               next_state <= s389;
2545 14 fpga_is_fu
            ELSE
2546 6 fpga_is_fu
               next_state <= s388;
2547 14 fpga_is_fu
            END IF;
2548
         WHEN s389 =>
2549
            IF (rdy_i = '1') THEN
2550 6 fpga_is_fu
               next_state <= s391;
2551 14 fpga_is_fu
            ELSE
2552 6 fpga_is_fu
               next_state <= s389;
2553 14 fpga_is_fu
            END IF;
2554
         WHEN s391 =>
2555
            IF (rdy_i = '1') THEN
2556 6 fpga_is_fu
               next_state <= s392;
2557 14 fpga_is_fu
            ELSE
2558 6 fpga_is_fu
               next_state <= s391;
2559 14 fpga_is_fu
            END IF;
2560
         WHEN s392 =>
2561
            IF (rdy_i = '1') THEN
2562 6 fpga_is_fu
               next_state <= FETCH;
2563 14 fpga_is_fu
            ELSE
2564 6 fpga_is_fu
               next_state <= s392;
2565 14 fpga_is_fu
            END IF;
2566
         WHEN s390 =>
2567
            IF (rdy_i = '1') THEN
2568 6 fpga_is_fu
               next_state <= s393;
2569 14 fpga_is_fu
            ELSE
2570 6 fpga_is_fu
               next_state <= s390;
2571 14 fpga_is_fu
            END IF;
2572
         WHEN s393 =>
2573
            IF (rdy_i = '1') THEN
2574 6 fpga_is_fu
               next_state <= s394;
2575 14 fpga_is_fu
            ELSE
2576 6 fpga_is_fu
               next_state <= s393;
2577 14 fpga_is_fu
            END IF;
2578
         WHEN s394 =>
2579
            IF (rdy_i = '1') THEN
2580 6 fpga_is_fu
               next_state <= s395;
2581 14 fpga_is_fu
            ELSE
2582 6 fpga_is_fu
               next_state <= s394;
2583 14 fpga_is_fu
            END IF;
2584
         WHEN s395 =>
2585
            IF (rdy_i = '1') THEN
2586 6 fpga_is_fu
               next_state <= s396;
2587 14 fpga_is_fu
            ELSE
2588 6 fpga_is_fu
               next_state <= s395;
2589 14 fpga_is_fu
            END IF;
2590
         WHEN s396 =>
2591
            IF (rdy_i = '1') THEN
2592 6 fpga_is_fu
               next_state <= FETCH;
2593 14 fpga_is_fu
            ELSE
2594 6 fpga_is_fu
               next_state <= s396;
2595 14 fpga_is_fu
            END IF;
2596
         WHEN s397 =>
2597
            IF (rdy_i = '1') THEN
2598 6 fpga_is_fu
               next_state <= s398;
2599 14 fpga_is_fu
            ELSE
2600 6 fpga_is_fu
               next_state <= s397;
2601 14 fpga_is_fu
            END IF;
2602
         WHEN s398 =>
2603
            IF (rdy_i = '1') THEN
2604 6 fpga_is_fu
               next_state <= s399;
2605 14 fpga_is_fu
            ELSE
2606 6 fpga_is_fu
               next_state <= s398;
2607 14 fpga_is_fu
            END IF;
2608
         WHEN s399 =>
2609 6 fpga_is_fu
            next_state <= s400;
2610 14 fpga_is_fu
         WHEN s400 =>
2611 6 fpga_is_fu
            next_state <= s401;
2612 14 fpga_is_fu
         WHEN s401 =>
2613
            IF (rdy_i = '1') THEN
2614 6 fpga_is_fu
               next_state <= FETCH;
2615 14 fpga_is_fu
            ELSE
2616 6 fpga_is_fu
               next_state <= s401;
2617 14 fpga_is_fu
            END IF;
2618
         WHEN s526 =>
2619
            IF (rdy_i = '1') THEN
2620 6 fpga_is_fu
               next_state <= s527;
2621 14 fpga_is_fu
            ELSE
2622 6 fpga_is_fu
               next_state <= s526;
2623 14 fpga_is_fu
            END IF;
2624
         WHEN s527 =>
2625 6 fpga_is_fu
            next_state <= s528;
2626 14 fpga_is_fu
         WHEN s528 =>
2627 6 fpga_is_fu
            next_state <= s529;
2628 14 fpga_is_fu
         WHEN s529 =>
2629 6 fpga_is_fu
            next_state <= s531;
2630 14 fpga_is_fu
         WHEN s530 =>
2631
            IF (rdy_i = '1') THEN
2632 6 fpga_is_fu
               next_state <= FETCH;
2633 14 fpga_is_fu
            ELSE
2634 6 fpga_is_fu
               next_state <= s530;
2635 14 fpga_is_fu
            END IF;
2636
         WHEN s531 =>
2637
            IF (rdy_i = '1') THEN
2638 6 fpga_is_fu
               next_state <= s530;
2639 14 fpga_is_fu
            ELSE
2640 6 fpga_is_fu
               next_state <= s531;
2641 14 fpga_is_fu
            END IF;
2642
         WHEN s544 =>
2643 6 fpga_is_fu
            next_state <= s550;
2644 14 fpga_is_fu
         WHEN s545 =>
2645 6 fpga_is_fu
            next_state <= s546;
2646 14 fpga_is_fu
         WHEN s546 =>
2647 6 fpga_is_fu
            next_state <= s547;
2648 14 fpga_is_fu
         WHEN s547 =>
2649
            IF (rdy_i = '1') THEN
2650 6 fpga_is_fu
               next_state <= s549;
2651 14 fpga_is_fu
            ELSE
2652 6 fpga_is_fu
               next_state <= s547;
2653 14 fpga_is_fu
            END IF;
2654
         WHEN s549 =>
2655
            IF (rdy_i = '1') THEN
2656 6 fpga_is_fu
               next_state <= FETCH;
2657 14 fpga_is_fu
            ELSE
2658 6 fpga_is_fu
               next_state <= s549;
2659 14 fpga_is_fu
            END IF;
2660
         WHEN s550 =>
2661 6 fpga_is_fu
            next_state <= s545;
2662 14 fpga_is_fu
         WHEN s404 =>
2663
            IF (rdy_i = '1') THEN
2664 6 fpga_is_fu
               next_state <= FETCH;
2665 14 fpga_is_fu
            ELSE
2666 6 fpga_is_fu
               next_state <= s404;
2667 14 fpga_is_fu
            END IF;
2668
         WHEN s556 =>
2669
            IF (rdy_i = '1') THEN
2670 6 fpga_is_fu
               next_state <= FETCH;
2671 14 fpga_is_fu
            ELSE
2672 6 fpga_is_fu
               next_state <= s556;
2673 14 fpga_is_fu
            END IF;
2674
         WHEN s557 =>
2675
            IF (rdy_i = '1') THEN
2676 6 fpga_is_fu
               next_state <= FETCH;
2677 14 fpga_is_fu
            ELSE
2678 6 fpga_is_fu
               next_state <= s557;
2679 14 fpga_is_fu
            END IF;
2680
         WHEN s579 =>
2681
            IF (rdy_i = '1') THEN
2682 6 fpga_is_fu
               next_state <= FETCH;
2683 14 fpga_is_fu
            ELSE
2684 6 fpga_is_fu
               next_state <= s579;
2685 14 fpga_is_fu
            END IF;
2686
         WHEN s201 =>
2687
            IF (rdy_i = '1' and
2688 6 fpga_is_fu
                (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
2689
                zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
2690
                zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
2691 14 fpga_is_fu
                zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) THEN
2692 6 fpga_is_fu
               next_state <= s224;
2693 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
2694 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2695 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2696 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2697
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2698 14 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
2699 6 fpga_is_fu
               next_state <= FETCH;
2700 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
2701 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2702 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2703 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2704
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2705 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
2706 6 fpga_is_fu
               next_state <= FETCH;
2707 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
2708 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2709 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2710 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2711
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2712 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
2713 6 fpga_is_fu
               next_state <= FETCH;
2714 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
2715 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2716 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2717 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2718
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2719
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2720
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2721
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2722 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
2723 6 fpga_is_fu
               next_state <= FETCH;
2724 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2725 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2726 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) THEN
2727 6 fpga_is_fu
               next_state <= FETCH;
2728 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2729 6 fpga_is_fu
                   (zw_REG_OP = X"B5" OR
2730
                   zw_REG_OP = X"B4" OR
2731
                   zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
2732
                   zw_REG_OP = X"35" OR
2733 14 fpga_is_fu
                   zw_REG_OP = X"D5")) THEN
2734 6 fpga_is_fu
               next_state <= s217;
2735 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2736 6 fpga_is_fu
                   (zw_REG_OP = X"AD" OR
2737
                   zw_REG_OP = X"AE" OR
2738
                   zw_REG_OP = X"AC" OR
2739
                   zw_REG_OP = X"4D" OR
2740
                   zw_REG_OP = X"0D" OR
2741
                   zw_REG_OP = X"2D" OR
2742
                   zw_REG_OP = X"CD" OR
2743
                   zw_REG_OP = X"EC" OR
2744 14 fpga_is_fu
                   zw_REG_OP = X"CC")) THEN
2745 6 fpga_is_fu
               next_state <= s202;
2746 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2747 6 fpga_is_fu
                   (zw_REG_OP = X"BD" OR
2748
                   zw_REG_OP = X"BC" OR
2749
                   zw_REG_OP = X"5D" OR
2750
                   zw_REG_OP = X"1D" OR
2751
                   zw_REG_OP = X"3D" OR
2752 14 fpga_is_fu
                   zw_REG_OP = X"DD")) THEN
2753 6 fpga_is_fu
               next_state <= s210;
2754 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2755 6 fpga_is_fu
                   (zw_REG_OP = X"B9" OR
2756
                   zw_REG_OP = X"BE" OR
2757
                   zw_REG_OP = X"59" OR
2758
                   zw_REG_OP = X"19" OR
2759
                   zw_REG_OP = X"39" OR
2760 14 fpga_is_fu
                   zw_REG_OP = X"D9")) THEN
2761 6 fpga_is_fu
               next_state <= s211;
2762 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2763 6 fpga_is_fu
                   (zw_REG_OP = X"B1" OR
2764
                   zw_REG_OP = X"51" OR
2765
                   zw_REG_OP = X"11" OR
2766
                   zw_REG_OP = X"31" OR
2767 14 fpga_is_fu
                   zw_REG_OP = X"D1")) THEN
2768 6 fpga_is_fu
               next_state <= s215;
2769 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2770 6 fpga_is_fu
                   (zw_REG_OP = X"A1" OR
2771
                   zw_REG_OP = X"41" OR
2772
                   zw_REG_OP = X"01" OR
2773
                   zw_REG_OP = X"21" OR
2774 14 fpga_is_fu
                   zw_REG_OP = X"C1")) THEN
2775 6 fpga_is_fu
               next_state <= s218;
2776 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2777
                   zw_REG_OP = X"B6") THEN
2778 6 fpga_is_fu
               next_state <= s217;
2779 14 fpga_is_fu
            ELSE
2780 6 fpga_is_fu
               next_state <= s201;
2781 14 fpga_is_fu
            END IF;
2782
         WHEN s202 =>
2783
            IF (rdy_i = '1') THEN
2784 6 fpga_is_fu
               next_state <= s224;
2785 14 fpga_is_fu
            ELSE
2786 6 fpga_is_fu
               next_state <= s202;
2787 14 fpga_is_fu
            END IF;
2788
         WHEN s210 =>
2789
            IF (rdy_i = '1') THEN
2790 6 fpga_is_fu
               next_state <= s225;
2791 14 fpga_is_fu
            ELSE
2792 6 fpga_is_fu
               next_state <= s210;
2793 14 fpga_is_fu
            END IF;
2794
         WHEN s211 =>
2795
            IF (rdy_i = '1') THEN
2796 6 fpga_is_fu
               next_state <= s225;
2797 14 fpga_is_fu
            ELSE
2798 6 fpga_is_fu
               next_state <= s211;
2799 14 fpga_is_fu
            END IF;
2800
         WHEN s215 =>
2801
            IF (rdy_i = '1') THEN
2802 6 fpga_is_fu
               next_state <= s223;
2803 14 fpga_is_fu
            ELSE
2804 6 fpga_is_fu
               next_state <= s215;
2805 14 fpga_is_fu
            END IF;
2806
         WHEN s217 =>
2807
            IF (rdy_i = '1') THEN
2808 6 fpga_is_fu
               next_state <= s224;
2809 14 fpga_is_fu
            ELSE
2810 6 fpga_is_fu
               next_state <= s217;
2811 14 fpga_is_fu
            END IF;
2812
         WHEN s218 =>
2813
            IF (rdy_i = '1') THEN
2814 6 fpga_is_fu
               next_state <= s222;
2815 14 fpga_is_fu
            ELSE
2816 6 fpga_is_fu
               next_state <= s218;
2817 14 fpga_is_fu
            END IF;
2818
         WHEN s222 =>
2819
            IF (rdy_i = '1') THEN
2820 6 fpga_is_fu
               next_state <= s202;
2821 14 fpga_is_fu
            ELSE
2822 6 fpga_is_fu
               next_state <= s222;
2823 14 fpga_is_fu
            END IF;
2824
         WHEN s223 =>
2825
            IF (rdy_i = '1') THEN
2826 6 fpga_is_fu
               next_state <= s225;
2827 14 fpga_is_fu
            ELSE
2828 6 fpga_is_fu
               next_state <= s223;
2829 14 fpga_is_fu
            END IF;
2830
         WHEN s224 =>
2831
            IF ((rdy_i = '1') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2832 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2833
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2834 14 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
2835 6 fpga_is_fu
               next_state <= FETCH;
2836 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2837 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2838
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2839 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
2840 6 fpga_is_fu
               next_state <= FETCH;
2841 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2842 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2843
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2844 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
2845 6 fpga_is_fu
               next_state <= FETCH;
2846 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2847 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2848
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2849
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2850
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2851
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2852 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
2853 6 fpga_is_fu
               next_state <= FETCH;
2854 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
2855 6 fpga_is_fu
               next_state <= FETCH;
2856 14 fpga_is_fu
            ELSE
2857 6 fpga_is_fu
               next_state <= s224;
2858 14 fpga_is_fu
            END IF;
2859
         WHEN s225 =>
2860
            IF ((rdy_i = '1' AND
2861
                zw_b2(0) = '0') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2862 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2863
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2864 14 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
2865 6 fpga_is_fu
               next_state <= FETCH;
2866 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
2867
                   zw_b2(0) = '0') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2868 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2869
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2870 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
2871 6 fpga_is_fu
               next_state <= FETCH;
2872 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
2873
                   zw_b2(0) = '0') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2874 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2875
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2876 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
2877 6 fpga_is_fu
               next_state <= FETCH;
2878 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
2879
                   zw_b2(0) = '0') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2880 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2881
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2882
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2883
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2884
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2885 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
2886 6 fpga_is_fu
               next_state <= FETCH;
2887 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
2888
                   zw_b2(0) = '0') THEN
2889 6 fpga_is_fu
               next_state <= FETCH;
2890 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
2891 6 fpga_is_fu
               next_state <= s224;
2892 14 fpga_is_fu
            ELSE
2893 6 fpga_is_fu
               next_state <= s225;
2894 14 fpga_is_fu
            END IF;
2895
         WHEN s226 =>
2896
            IF (rdy_i = '1' and
2897 6 fpga_is_fu
                (zw_REG_OP = X"C6" OR
2898 14 fpga_is_fu
                zw_REG_OP = X"E6")) THEN
2899 6 fpga_is_fu
               next_state <= s343;
2900 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2901 6 fpga_is_fu
                   (zw_REG_OP = X"D6" OR
2902 14 fpga_is_fu
                   zw_REG_OP = X"F6")) THEN
2903 6 fpga_is_fu
               next_state <= s247;
2904 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2905 6 fpga_is_fu
                   (zw_REG_OP = X"CE" OR
2906 14 fpga_is_fu
                   zw_REG_OP = X"EE")) THEN
2907 6 fpga_is_fu
               next_state <= s243;
2908 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2909 6 fpga_is_fu
                   (zw_REG_OP = X"DE" OR
2910 14 fpga_is_fu
                   zw_REG_OP = X"FE")) THEN
2911 6 fpga_is_fu
               next_state <= s244;
2912 14 fpga_is_fu
            ELSE
2913 6 fpga_is_fu
               next_state <= s226;
2914 14 fpga_is_fu
            END IF;
2915
         WHEN s243 =>
2916
            IF (rdy_i = '1') THEN
2917 6 fpga_is_fu
               next_state <= s343;
2918 14 fpga_is_fu
            ELSE
2919 6 fpga_is_fu
               next_state <= s243;
2920 14 fpga_is_fu
            END IF;
2921
         WHEN s244 =>
2922
            IF (rdy_i = '1') THEN
2923 6 fpga_is_fu
               next_state <= s344;
2924 14 fpga_is_fu
            ELSE
2925 6 fpga_is_fu
               next_state <= s244;
2926 14 fpga_is_fu
            END IF;
2927
         WHEN s247 =>
2928
            IF (rdy_i = '1') THEN
2929 6 fpga_is_fu
               next_state <= s343;
2930 14 fpga_is_fu
            ELSE
2931 6 fpga_is_fu
               next_state <= s247;
2932 14 fpga_is_fu
            END IF;
2933
         WHEN s344 =>
2934
            IF (rdy_i = '1') THEN
2935 6 fpga_is_fu
               next_state <= s343;
2936 14 fpga_is_fu
            ELSE
2937 6 fpga_is_fu
               next_state <= s344;
2938 14 fpga_is_fu
            END IF;
2939
         WHEN s343 =>
2940
            IF (rdy_i = '1') THEN
2941 6 fpga_is_fu
               next_state <= s250;
2942 14 fpga_is_fu
            ELSE
2943 6 fpga_is_fu
               next_state <= s343;
2944 14 fpga_is_fu
            END IF;
2945
         WHEN s250 =>
2946
            IF (rdy_i = '1') THEN
2947 6 fpga_is_fu
               next_state <= s251;
2948 14 fpga_is_fu
            ELSE
2949 6 fpga_is_fu
               next_state <= s250;
2950 14 fpga_is_fu
            END IF;
2951
         WHEN s251 =>
2952 6 fpga_is_fu
            next_state <= FETCH;
2953 14 fpga_is_fu
         WHEN s351 =>
2954
            IF (rdy_i = '1' and
2955
                zw_REG_OP = X"24") THEN
2956 6 fpga_is_fu
               next_state <= s361;
2957 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2958
                   zw_REG_OP = X"2C") THEN
2959 6 fpga_is_fu
               next_state <= s360;
2960 14 fpga_is_fu
            ELSE
2961 6 fpga_is_fu
               next_state <= s351;
2962 14 fpga_is_fu
            END IF;
2963
         WHEN s361 =>
2964
            IF (rdy_i = '1') THEN
2965 6 fpga_is_fu
               next_state <= FETCH;
2966 14 fpga_is_fu
            ELSE
2967 6 fpga_is_fu
               next_state <= s361;
2968 14 fpga_is_fu
            END IF;
2969
         WHEN s360 =>
2970
            IF (rdy_i = '1') THEN
2971 6 fpga_is_fu
               next_state <= s361;
2972 14 fpga_is_fu
            ELSE
2973 6 fpga_is_fu
               next_state <= s360;
2974 14 fpga_is_fu
            END IF;
2975
         WHEN s403 =>
2976
            IF (rdy_i = '1' and
2977 6 fpga_is_fu
                (zw_REG_OP = X"1E" or
2978
                zw_REG_OP = X"7E" or
2979
                zw_REG_OP = X"3E" or
2980 14 fpga_is_fu
                zw_REG_OP = X"5E")) THEN
2981 6 fpga_is_fu
               next_state <= s407;
2982 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2983 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
2984
                   zw_REG_OP = X"66" or
2985
                   zw_REG_OP = X"26" or
2986 14 fpga_is_fu
                   zw_REG_OP = X"46")) THEN
2987 6 fpga_is_fu
               next_state <= s413;
2988 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2989 6 fpga_is_fu
                   (zw_REG_OP = X"16" or
2990
                   zw_REG_OP = X"76" or
2991
                   zw_REG_OP = X"36" or
2992 14 fpga_is_fu
                   zw_REG_OP = X"56")) THEN
2993 6 fpga_is_fu
               next_state <= s409;
2994 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
2995 6 fpga_is_fu
                   (zw_REG_OP = X"0E" or
2996
                   zw_REG_OP = X"6E" or
2997
                   zw_REG_OP = X"2E" or
2998 14 fpga_is_fu
                   zw_REG_OP = X"4E")) THEN
2999 6 fpga_is_fu
               next_state <= s406;
3000 14 fpga_is_fu
            ELSE
3001 6 fpga_is_fu
               next_state <= s403;
3002 14 fpga_is_fu
            END IF;
3003
         WHEN s406 =>
3004
            IF (rdy_i = '1') THEN
3005 6 fpga_is_fu
               next_state <= s413;
3006 14 fpga_is_fu
            ELSE
3007 6 fpga_is_fu
               next_state <= s406;
3008 14 fpga_is_fu
            END IF;
3009
         WHEN s407 =>
3010
            IF (rdy_i = '1') THEN
3011 6 fpga_is_fu
               next_state <= s412;
3012 14 fpga_is_fu
            ELSE
3013 6 fpga_is_fu
               next_state <= s407;
3014 14 fpga_is_fu
            END IF;
3015
         WHEN s409 =>
3016
            IF (rdy_i = '1') THEN
3017 6 fpga_is_fu
               next_state <= s413;
3018 14 fpga_is_fu
            ELSE
3019 6 fpga_is_fu
               next_state <= s409;
3020 14 fpga_is_fu
            END IF;
3021
         WHEN s412 =>
3022
            IF (rdy_i = '1') THEN
3023 6 fpga_is_fu
               next_state <= s413;
3024 14 fpga_is_fu
            ELSE
3025 6 fpga_is_fu
               next_state <= s412;
3026 14 fpga_is_fu
            END IF;
3027
         WHEN s413 =>
3028
            IF (rdy_i = '1') THEN
3029 6 fpga_is_fu
               next_state <= s416;
3030 14 fpga_is_fu
            ELSE
3031 6 fpga_is_fu
               next_state <= s413;
3032 14 fpga_is_fu
            END IF;
3033
         WHEN s416 =>
3034
            IF (rdy_i = '1' and
3035 6 fpga_is_fu
                (zw_REG_OP = X"06" or
3036
                zw_REG_OP = X"16" or
3037
                zw_REG_OP = X"0E" or
3038 14 fpga_is_fu
                zw_REG_OP = X"1E")) THEN
3039 6 fpga_is_fu
               next_state <= s418;
3040 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3041 6 fpga_is_fu
                   (zw_REG_OP = X"46" or
3042
                   zw_REG_OP = X"56" or
3043
                   zw_REG_OP = X"4E" or
3044 14 fpga_is_fu
                   zw_REG_OP = X"5E")) THEN
3045 6 fpga_is_fu
               next_state <= s418;
3046 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3047 6 fpga_is_fu
                   (zw_REG_OP = X"26" or
3048
                   zw_REG_OP = X"36" or
3049
                   zw_REG_OP = X"2E" or
3050 14 fpga_is_fu
                   zw_REG_OP = X"3E")) THEN
3051 6 fpga_is_fu
               next_state <= s418;
3052 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3053 6 fpga_is_fu
                   (zw_REG_OP = X"66" or
3054
                   zw_REG_OP = X"76" or
3055
                   zw_REG_OP = X"6E" or
3056 14 fpga_is_fu
                   zw_REG_OP = X"7E")) THEN
3057 6 fpga_is_fu
               next_state <= s418;
3058 14 fpga_is_fu
            ELSE
3059 6 fpga_is_fu
               next_state <= s416;
3060 14 fpga_is_fu
            END IF;
3061
         WHEN s418 =>
3062 6 fpga_is_fu
            next_state <= FETCH;
3063 14 fpga_is_fu
         WHEN s510 =>
3064
            IF (rdy_i = '1' and
3065
                zw_REG_OP = X"65") THEN
3066 6 fpga_is_fu
               next_state <= s565;
3067 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3068 6 fpga_is_fu
                   zw_REG_OP = X"69" and
3069 14 fpga_is_fu
                   reg_F(3) = '0') THEN
3070 6 fpga_is_fu
               next_state <= FETCH;
3071 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3072
                   zw_REG_OP = X"75") THEN
3073 6 fpga_is_fu
               next_state <= s560;
3074 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3075
                   zw_REG_OP = X"6D") THEN
3076 6 fpga_is_fu
               next_state <= s553;
3077 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3078
                   zw_REG_OP = X"7D") THEN
3079 6 fpga_is_fu
               next_state <= s555;
3080 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3081
                   zw_REG_OP = X"79") THEN
3082 6 fpga_is_fu
               next_state <= s555;
3083 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3084
                   zw_REG_OP = X"71") THEN
3085 6 fpga_is_fu
               next_state <= s558;
3086 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3087
                   zw_REG_OP = X"61") THEN
3088 6 fpga_is_fu
               next_state <= s561;
3089 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3090 6 fpga_is_fu
                   zw_REG_OP = X"69" and
3091 14 fpga_is_fu
                   reg_F(3) = '1') THEN
3092 6 fpga_is_fu
               next_state <= FETCH;
3093 14 fpga_is_fu
            ELSE
3094 6 fpga_is_fu
               next_state <= s510;
3095 14 fpga_is_fu
            END IF;
3096
         WHEN s553 =>
3097
            IF (rdy_i = '1') THEN
3098 6 fpga_is_fu
               next_state <= s565;
3099 14 fpga_is_fu
            ELSE
3100 6 fpga_is_fu
               next_state <= s553;
3101 14 fpga_is_fu
            END IF;
3102
         WHEN s555 =>
3103
            IF (rdy_i = '1') THEN
3104 6 fpga_is_fu
               next_state <= s564;
3105 14 fpga_is_fu
            ELSE
3106 6 fpga_is_fu
               next_state <= s555;
3107 14 fpga_is_fu
            END IF;
3108
         WHEN s558 =>
3109
            IF (rdy_i = '1') THEN
3110 6 fpga_is_fu
               next_state <= s566;
3111 14 fpga_is_fu
            ELSE
3112 6 fpga_is_fu
               next_state <= s558;
3113 14 fpga_is_fu
            END IF;
3114
         WHEN s560 =>
3115
            IF (rdy_i = '1') THEN
3116 6 fpga_is_fu
               next_state <= s565;
3117 14 fpga_is_fu
            ELSE
3118 6 fpga_is_fu
               next_state <= s560;
3119 14 fpga_is_fu
            END IF;
3120
         WHEN s561 =>
3121
            IF (rdy_i = '1') THEN
3122 6 fpga_is_fu
               next_state <= s563;
3123 14 fpga_is_fu
            ELSE
3124 6 fpga_is_fu
               next_state <= s561;
3125 14 fpga_is_fu
            END IF;
3126
         WHEN s563 =>
3127
            IF (rdy_i = '1') THEN
3128 6 fpga_is_fu
               next_state <= s553;
3129 14 fpga_is_fu
            ELSE
3130 6 fpga_is_fu
               next_state <= s563;
3131 14 fpga_is_fu
            END IF;
3132
         WHEN s564 =>
3133
            IF (rdy_i = '1' AND
3134 6 fpga_is_fu
                zw_b2(0) = '0' and
3135 14 fpga_is_fu
                reg_F(3) = '0') THEN
3136 6 fpga_is_fu
               next_state <= FETCH;
3137 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
3138 6 fpga_is_fu
                   zw_b2(0) = '0' and
3139 14 fpga_is_fu
                   reg_F(3) = '1') THEN
3140 6 fpga_is_fu
               next_state <= FETCH;
3141 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3142 6 fpga_is_fu
               next_state <= s565;
3143 14 fpga_is_fu
            ELSE
3144 6 fpga_is_fu
               next_state <= s564;
3145 14 fpga_is_fu
            END IF;
3146
         WHEN s565 =>
3147
            IF (rdy_i = '1' and
3148
                reg_F(3) = '0') THEN
3149 6 fpga_is_fu
               next_state <= FETCH;
3150 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3151
                   reg_F(3) = '1') THEN
3152 6 fpga_is_fu
               next_state <= FETCH;
3153 14 fpga_is_fu
            ELSE
3154 6 fpga_is_fu
               next_state <= s565;
3155 14 fpga_is_fu
            END IF;
3156
         WHEN s566 =>
3157
            IF (rdy_i = '1') THEN
3158 6 fpga_is_fu
               next_state <= s564;
3159 14 fpga_is_fu
            ELSE
3160 6 fpga_is_fu
               next_state <= s566;
3161 14 fpga_is_fu
            END IF;
3162
         WHEN s266 =>
3163
            IF (rdy_i = '1' and (
3164 6 fpga_is_fu
                (reg_F(0) = '1' and zw_REG_OP = X"90") or
3165
                (reg_F(0) = '0' and zw_REG_OP = X"B0") or
3166
                (reg_F(1) = '0' and zw_REG_OP = X"F0") or
3167
                (reg_F(7) = '0' and zw_REG_OP = X"30") or
3168
                (reg_F(1) = '1' and zw_REG_OP = X"D0") or
3169
                (reg_F(7) = '1' and zw_REG_OP = X"10") or
3170
                (reg_F(6) = '1' and zw_REG_OP = X"50") or
3171 14 fpga_is_fu
                (reg_F(6) = '0' and zw_REG_OP = X"70"))) THEN
3172 6 fpga_is_fu
               next_state <= FETCH;
3173 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3174 6 fpga_is_fu
               next_state <= s301;
3175 14 fpga_is_fu
            ELSE
3176 6 fpga_is_fu
               next_state <= s266;
3177 14 fpga_is_fu
            END IF;
3178
         WHEN s301 =>
3179
            IF (rdy_i = '1' and
3180
                zw_b3 = adr_nxt_pc_i (15 downto 8)) THEN
3181 6 fpga_is_fu
               next_state <= FETCH;
3182 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3183 6 fpga_is_fu
               next_state <= s302;
3184 14 fpga_is_fu
            ELSE
3185 6 fpga_is_fu
               next_state <= s301;
3186 14 fpga_is_fu
            END IF;
3187
         WHEN s302 =>
3188
            IF (rdy_i = '1') THEN
3189 6 fpga_is_fu
               next_state <= FETCH;
3190 14 fpga_is_fu
            ELSE
3191 6 fpga_is_fu
               next_state <= s302;
3192 14 fpga_is_fu
            END IF;
3193
         WHEN RES =>
3194 6 fpga_is_fu
            next_state <= s544;
3195 14 fpga_is_fu
         WHEN s511 =>
3196
            IF (rdy_i = '1' and
3197
                zw_REG_OP = X"E5") THEN
3198 6 fpga_is_fu
               next_state <= s574;
3199 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3200 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
3201 14 fpga_is_fu
                   reg_F(3) = '0') THEN
3202 6 fpga_is_fu
               next_state <= FETCH;
3203 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3204
                   zw_REG_OP = X"F5") THEN
3205 6 fpga_is_fu
               next_state <= s569;
3206 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3207
                   zw_REG_OP = X"ED") THEN
3208 6 fpga_is_fu
               next_state <= s559;
3209 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3210
                   zw_REG_OP = X"FD") THEN
3211 6 fpga_is_fu
               next_state <= s562;
3212 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3213
                   zw_REG_OP = X"F9") THEN
3214 6 fpga_is_fu
               next_state <= s567;
3215 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3216
                   zw_REG_OP = X"F1") THEN
3217 6 fpga_is_fu
               next_state <= s568;
3218 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3219
                   zw_REG_OP = X"E1") THEN
3220 6 fpga_is_fu
               next_state <= s570;
3221 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3222 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
3223 14 fpga_is_fu
                   reg_F(3) = '1') THEN
3224 6 fpga_is_fu
               next_state <= FETCH;
3225 14 fpga_is_fu
            ELSE
3226 6 fpga_is_fu
               next_state <= s511;
3227 14 fpga_is_fu
            END IF;
3228
         WHEN s559 =>
3229
            IF (rdy_i = '1') THEN
3230 6 fpga_is_fu
               next_state <= s574;
3231 14 fpga_is_fu
            ELSE
3232 6 fpga_is_fu
               next_state <= s559;
3233 14 fpga_is_fu
            END IF;
3234
         WHEN s562 =>
3235
            IF (rdy_i = '1') THEN
3236 6 fpga_is_fu
               next_state <= s573;
3237 14 fpga_is_fu
            ELSE
3238 6 fpga_is_fu
               next_state <= s562;
3239 14 fpga_is_fu
            END IF;
3240
         WHEN s567 =>
3241
            IF (rdy_i = '1') THEN
3242 6 fpga_is_fu
               next_state <= s573;
3243 14 fpga_is_fu
            ELSE
3244 6 fpga_is_fu
               next_state <= s567;
3245 14 fpga_is_fu
            END IF;
3246
         WHEN s568 =>
3247
            IF (rdy_i = '1') THEN
3248 6 fpga_is_fu
               next_state <= s571;
3249 14 fpga_is_fu
            ELSE
3250 6 fpga_is_fu
               next_state <= s568;
3251 14 fpga_is_fu
            END IF;
3252
         WHEN s569 =>
3253
            IF (rdy_i = '1') THEN
3254 6 fpga_is_fu
               next_state <= s574;
3255 14 fpga_is_fu
            ELSE
3256 6 fpga_is_fu
               next_state <= s569;
3257 14 fpga_is_fu
            END IF;
3258
         WHEN s570 =>
3259
            IF (rdy_i = '1') THEN
3260 6 fpga_is_fu
               next_state <= s572;
3261 14 fpga_is_fu
            ELSE
3262 6 fpga_is_fu
               next_state <= s570;
3263 14 fpga_is_fu
            END IF;
3264
         WHEN s571 =>
3265
            IF (rdy_i = '1') THEN
3266 6 fpga_is_fu
               next_state <= s573;
3267 14 fpga_is_fu
            ELSE
3268 6 fpga_is_fu
               next_state <= s571;
3269 14 fpga_is_fu
            END IF;
3270
         WHEN s572 =>
3271
            IF (rdy_i = '1') THEN
3272 6 fpga_is_fu
               next_state <= s559;
3273 14 fpga_is_fu
            ELSE
3274 6 fpga_is_fu
               next_state <= s572;
3275 14 fpga_is_fu
            END IF;
3276
         WHEN s573 =>
3277
            IF (rdy_i = '1' AND
3278 6 fpga_is_fu
                zw_b2(0) = '0' and
3279 14 fpga_is_fu
                reg_F(3) = '0') THEN
3280 6 fpga_is_fu
               next_state <= FETCH;
3281 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
3282 6 fpga_is_fu
                   zw_b2(0) = '0' and
3283 14 fpga_is_fu
                   reg_F(3) = '1') THEN
3284 6 fpga_is_fu
               next_state <= FETCH;
3285 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3286 6 fpga_is_fu
               next_state <= s574;
3287 14 fpga_is_fu
            ELSE
3288 6 fpga_is_fu
               next_state <= s573;
3289 14 fpga_is_fu
            END IF;
3290
         WHEN s574 =>
3291
            IF (rdy_i = '1' and
3292
                reg_F(3) = '0') THEN
3293 6 fpga_is_fu
               next_state <= FETCH;
3294 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3295
                   reg_F(3) = '1') THEN
3296 6 fpga_is_fu
               next_state <= FETCH;
3297 14 fpga_is_fu
            ELSE
3298 6 fpga_is_fu
               next_state <= s574;
3299 14 fpga_is_fu
            END IF;
3300
         WHEN s548 =>
3301
            IF (rdy_i = '1') THEN
3302 6 fpga_is_fu
               next_state <= s551;
3303 14 fpga_is_fu
            ELSE
3304 6 fpga_is_fu
               next_state <= s548;
3305 14 fpga_is_fu
            END IF;
3306
         WHEN s551 =>
3307 6 fpga_is_fu
            next_state <= s552;
3308 14 fpga_is_fu
         WHEN s552 =>
3309 6 fpga_is_fu
            next_state <= s576;
3310 14 fpga_is_fu
         WHEN s575 =>
3311
            IF (rdy_i = '1') THEN
3312 6 fpga_is_fu
               next_state <= s577;
3313 14 fpga_is_fu
            ELSE
3314 6 fpga_is_fu
               next_state <= s575;
3315 14 fpga_is_fu
            END IF;
3316
         WHEN s576 =>
3317 6 fpga_is_fu
            next_state <= s575;
3318 14 fpga_is_fu
         WHEN s577 =>
3319
            IF (rdy_i = '1') THEN
3320 6 fpga_is_fu
               next_state <= FETCH;
3321 14 fpga_is_fu
            ELSE
3322 6 fpga_is_fu
               next_state <= s577;
3323 14 fpga_is_fu
            END IF;
3324
         WHEN s532 =>
3325
            IF (rdy_i = '1') THEN
3326 6 fpga_is_fu
               next_state <= s533;
3327 14 fpga_is_fu
            ELSE
3328 6 fpga_is_fu
               next_state <= s532;
3329 14 fpga_is_fu
            END IF;
3330
         WHEN s533 =>
3331 6 fpga_is_fu
            next_state <= s534;
3332 14 fpga_is_fu
         WHEN s534 =>
3333 6 fpga_is_fu
            next_state <= s536;
3334 14 fpga_is_fu
         WHEN s535 =>
3335
            IF (rdy_i = '1') THEN
3336 6 fpga_is_fu
               next_state <= s537;
3337 14 fpga_is_fu
            ELSE
3338 6 fpga_is_fu
               next_state <= s535;
3339 14 fpga_is_fu
            END IF;
3340
         WHEN s536 =>
3341 6 fpga_is_fu
            next_state <= s535;
3342 14 fpga_is_fu
         WHEN s537 =>
3343
            IF (rdy_i = '1') THEN
3344 6 fpga_is_fu
               next_state <= FETCH;
3345 14 fpga_is_fu
            ELSE
3346 6 fpga_is_fu
               next_state <= s537;
3347 14 fpga_is_fu
            END IF;
3348
         WHEN OTHERS =>
3349 6 fpga_is_fu
            next_state <= RES;
3350 14 fpga_is_fu
      END CASE;
3351
   END PROCESS nextstate_proc;
3352 6 fpga_is_fu
 
3353
   -----------------------------------------------------------------
3354 14 fpga_is_fu
   output_proc : PROCESS (
3355 6 fpga_is_fu
      adr_nxt_pc_i,
3356
      adr_pc_i,
3357
      adr_sp_i,
3358
      current_state,
3359
      d_alu_i,
3360
      d_i,
3361
      d_regs_out_i,
3362
      irq_n_i,
3363
      nmi_i,
3364
      q_a_i,
3365
      q_x_i,
3366
      q_y_i,
3367
      rdy_i,
3368
      reg_F,
3369
      reg_sel_pc_in,
3370
      reg_sel_pc_val,
3371
      reg_sel_rb_in,
3372
      reg_sel_rb_out,
3373
      reg_sel_reg,
3374
      reg_sel_sp_as,
3375
      reg_sel_sp_in,
3376
      sig_PC,
3377
      zw_ALU,
3378
      zw_ALU1,
3379
      zw_ALU2,
3380
      zw_ALU3,
3381
      zw_ALU4,
3382
      zw_ALU5,
3383
      zw_ALU6,
3384
      zw_REG_OP,
3385
      zw_b1,
3386
      zw_b2,
3387
      zw_b3,
3388 14 fpga_is_fu
      zw_b4
3389 6 fpga_is_fu
   )
3390
   -----------------------------------------------------------------
3391 14 fpga_is_fu
   BEGIN
3392 6 fpga_is_fu
      -- Default Assignment
3393
      a_o <= sig_PC;
3394
      adr_o <= X"0000";
3395
      ch_a_o <= X"00";
3396
      ch_b_o <= X"00";
3397
      d_regs_in_o <= X"00";
3398
      fetch_o <= '0';
3399
      ld_o <= "00";
3400
      ld_pc_o <= '0';
3401
      ld_sp_o <= '0';
3402
      load_regs_o <= '0';
3403
      offset_o <= X"0000";
3404
      sel_pc_in_o <= reg_sel_pc_in;
3405
      sel_pc_val_o <= reg_sel_pc_val;
3406
      sel_rb_in_o <= reg_sel_rb_in;
3407
      sel_rb_out_o <= reg_sel_rb_out;
3408
      sel_reg_o <= reg_sel_reg;
3409
      sel_sp_as_o <= reg_sel_sp_as;
3410
      sel_sp_in_o <= reg_sel_sp_in;
3411
      -- Default Assignment To Internals
3412
      sig_D_OUT <= X"00";
3413
      sig_RD <= '1';
3414
      sig_RWn <= '1';
3415
      sig_SYNC <= '0';
3416
      sig_WR <= '0';
3417
      zw_ALU <= '0' & X"00";
3418 14 fpga_is_fu
      zw_ALU1 <= '0' & X"0";
3419
      zw_ALU2 <= '0' & X"0";
3420
      zw_ALU3 <= '0' & X"0";
3421
      zw_ALU4 <= '0' & X"0";
3422
      zw_ALU5 <= X"0";
3423
      zw_ALU6 <= X"0";
3424 6 fpga_is_fu
 
3425
      -- Combined Actions
3426 14 fpga_is_fu
      CASE current_state IS
3427
         WHEN FETCH =>
3428 6 fpga_is_fu
            sig_RWn <= '1';
3429
            sig_RD <= '1';
3430
            sig_SYNC <= NOT (rdy_i);
3431 14 fpga_is_fu
            IF ((nmi_i = '1') AND (rdy_i = '1')) THEN
3432 6 fpga_is_fu
               ld_o <= "11";
3433
               ld_pc_o <= '1';
3434 14 fpga_is_fu
            ELSIF ((irq_n_i = '0' and
3435
                   reg_F(2) = '0') AND (rdy_i = '1')) THEN
3436 6 fpga_is_fu
               ld_o <= "11";
3437
               ld_pc_o <= '1';
3438 14 fpga_is_fu
            ELSIF ((d_i = X"69" or
3439 6 fpga_is_fu
                   d_i = X"65" or
3440
                   d_i = X"75" or
3441
                   d_i = X"6D" or
3442
                   d_i = X"7D" or
3443
                   d_i = X"79" or
3444
                   d_i = X"61" or
3445 14 fpga_is_fu
                   d_i = X"71") AND (rdy_i = '1')) THEN
3446 6 fpga_is_fu
               ld_o <= "11";
3447
               ld_pc_o <= '1';
3448 14 fpga_is_fu
            ELSIF ((d_i = X"06" or
3449 6 fpga_is_fu
                   d_i = X"16" or
3450
                   d_i = X"0E" or
3451 14 fpga_is_fu
                   d_i = X"1E") AND (rdy_i = '1')) THEN
3452 6 fpga_is_fu
               ld_o <= "11";
3453
               ld_pc_o <= '1';
3454 14 fpga_is_fu
            ELSIF ((d_i = X"90" or
3455 6 fpga_is_fu
                   d_i = X"B0" or
3456
                   d_i = X"F0" or
3457
                   d_i = X"30" or
3458
                   d_i = X"D0" or
3459
                   d_i = X"10" or
3460
                   d_i = X"50" or
3461 14 fpga_is_fu
                   d_i = X"70") AND (rdy_i = '1')) THEN
3462 6 fpga_is_fu
               ld_o <= "11";
3463
               ld_pc_o <= '1';
3464 14 fpga_is_fu
            ELSIF ((d_i = X"24" or
3465
                   d_i = X"2C") AND (rdy_i = '1')) THEN
3466 6 fpga_is_fu
               ld_o <= "11";
3467
               ld_pc_o <= '1';
3468 14 fpga_is_fu
            ELSIF ((d_i = X"00") AND (rdy_i = '1')) THEN
3469 6 fpga_is_fu
               ld_o <= "11";
3470
               ld_pc_o <= '1';
3471 14 fpga_is_fu
            ELSIF ((d_i = X"18") AND (rdy_i = '1')) THEN
3472 6 fpga_is_fu
               ld_o <= "11";
3473
               ld_pc_o <= '1';
3474 14 fpga_is_fu
            ELSIF ((d_i = X"D8") AND (rdy_i = '1')) THEN
3475 6 fpga_is_fu
               ld_o <= "11";
3476
               ld_pc_o <= '1';
3477 14 fpga_is_fu
            ELSIF ((d_i = X"58") AND (rdy_i = '1')) THEN
3478 6 fpga_is_fu
               ld_o <= "11";
3479
               ld_pc_o <= '1';
3480 14 fpga_is_fu
            ELSIF ((d_i = X"B8") AND (rdy_i = '1')) THEN
3481 6 fpga_is_fu
               ld_o <= "11";
3482
               ld_pc_o <= '1';
3483 14 fpga_is_fu
            ELSIF ((d_i = X"E0" or
3484 6 fpga_is_fu
                   d_i = X"E4" or
3485 14 fpga_is_fu
                   d_i = X"EC") AND (rdy_i = '1')) THEN
3486 6 fpga_is_fu
               ld_o <= "11";
3487
               ld_pc_o <= '1';
3488 14 fpga_is_fu
            ELSIF ((d_i = X"C0" or
3489 6 fpga_is_fu
                   d_i = X"C4" or
3490 14 fpga_is_fu
                   d_i = X"CC") AND (rdy_i = '1')) THEN
3491 6 fpga_is_fu
               ld_o <= "11";
3492
               ld_pc_o <= '1';
3493 14 fpga_is_fu
            ELSIF ((d_i = X"C6" or
3494 6 fpga_is_fu
                   d_i = X"D6" or
3495
                   d_i = X"CE" or
3496 14 fpga_is_fu
                   d_i = X"DE") AND (rdy_i = '1')) THEN
3497 6 fpga_is_fu
               ld_o <= "11";
3498
               ld_pc_o <= '1';
3499 14 fpga_is_fu
            ELSIF ((d_i = X"CA") AND (rdy_i = '1')) THEN
3500 6 fpga_is_fu
               ld_o <= "11";
3501
               ld_pc_o <= '1';
3502 14 fpga_is_fu
            ELSIF ((d_i = X"88") AND (rdy_i = '1')) THEN
3503 6 fpga_is_fu
               ld_o <= "11";
3504
               ld_pc_o <= '1';
3505 14 fpga_is_fu
            ELSIF ((d_i = X"49" or
3506 6 fpga_is_fu
                   d_i = X"45" or
3507
                   d_i = X"55" or
3508
                   d_i = X"4D" or
3509
                   d_i = X"5D" or
3510
                   d_i = X"59" or
3511
                   d_i = X"41" or
3512
                   d_i = X"51" or
3513
                   d_i = X"09" or
3514
                   d_i = X"05" or
3515
                   d_i = X"15" or
3516
                   d_i = X"0D" or
3517
                   d_i = X"1D" or
3518
                   d_i = X"19" or
3519
                   d_i = X"01" or
3520
                   d_i = X"11" or
3521
                   d_i = X"29" or
3522
                   d_i = X"25" or
3523
                   d_i = X"35" or
3524
                   d_i = X"2D" or
3525
                   d_i = X"3D" or
3526
                   d_i = X"39" or
3527
                   d_i = X"21" or
3528
                   d_i = X"31" or
3529
                   d_i = X"C9" or
3530
                   d_i = X"C5" or
3531
                   d_i = X"D5" or
3532
                   d_i = X"CD" or
3533
                   d_i = X"DD" or
3534
                   d_i = X"D9" or
3535
                   d_i = X"C1" or
3536 14 fpga_is_fu
                   d_i = X"D1") AND (rdy_i = '1')) THEN
3537 6 fpga_is_fu
               ld_o <= "11";
3538
               ld_pc_o <= '1';
3539 14 fpga_is_fu
            ELSIF ((d_i = X"E6" or
3540 6 fpga_is_fu
                   d_i = X"F6" or
3541
                   d_i = X"EE" or
3542 14 fpga_is_fu
                   d_i = X"FE") AND (rdy_i = '1')) THEN
3543 6 fpga_is_fu
               ld_o <= "11";
3544
               ld_pc_o <= '1';
3545 14 fpga_is_fu
            ELSIF ((d_i = X"E8") AND (rdy_i = '1')) THEN
3546 6 fpga_is_fu
               ld_o <= "11";
3547
               ld_pc_o <= '1';
3548 14 fpga_is_fu
            ELSIF ((d_i = X"C8") AND (rdy_i = '1')) THEN
3549 6 fpga_is_fu
               ld_o <= "11";
3550
               ld_pc_o <= '1';
3551 14 fpga_is_fu
            ELSIF ((d_i = X"4C" or
3552
                   d_i = X"6C") AND (rdy_i = '1')) THEN
3553 6 fpga_is_fu
               ld_o <= "11";
3554
               ld_pc_o <= '1';
3555 14 fpga_is_fu
            ELSIF ((d_i = X"20") AND (rdy_i = '1')) THEN
3556 6 fpga_is_fu
               ld_o <= "11";
3557
               ld_pc_o <= '1';
3558 14 fpga_is_fu
            ELSIF ((d_i = X"A9" or
3559 6 fpga_is_fu
                   d_i = X"A5" or
3560
                   d_i = X"B5" or
3561
                   d_i = X"AD" or
3562
                   d_i = X"BD" or
3563
                   d_i = X"B9" or
3564
                   d_i = X"A1" or
3565 14 fpga_is_fu
                   d_i = X"B1") AND (rdy_i = '1')) THEN
3566 6 fpga_is_fu
               ld_o <= "11";
3567
               ld_pc_o <= '1';
3568 14 fpga_is_fu
            ELSIF ((d_i = X"A2" or
3569 6 fpga_is_fu
                   d_i = X"A6" or
3570
                   d_i = X"B6" or
3571
                   d_i = X"AE" or
3572 14 fpga_is_fu
                   d_i = X"BE") AND (rdy_i = '1')) THEN
3573 6 fpga_is_fu
               ld_o <= "11";
3574
               ld_pc_o <= '1';
3575 14 fpga_is_fu
            ELSIF ((d_i = X"A0" or
3576 6 fpga_is_fu
                   d_i = X"A4" or
3577
                   d_i = X"B4" or
3578
                   d_i = X"AC" or
3579 14 fpga_is_fu
                   d_i = X"BC") AND (rdy_i = '1')) THEN
3580 6 fpga_is_fu
               ld_o <= "11";
3581
               ld_pc_o <= '1';
3582 14 fpga_is_fu
            ELSIF ((d_i = X"46" or
3583 6 fpga_is_fu
                   d_i = X"56" or
3584
                   d_i = X"4E" or
3585 14 fpga_is_fu
                   d_i = X"5E") AND (rdy_i = '1')) THEN
3586 6 fpga_is_fu
               ld_o <= "11";
3587
               ld_pc_o <= '1';
3588 14 fpga_is_fu
            ELSIF ((d_i = X"EA") AND (rdy_i = '1')) THEN
3589 6 fpga_is_fu
               ld_o <= "11";
3590
               ld_pc_o <= '1';
3591 14 fpga_is_fu
            ELSIF ((d_i = X"48") AND (rdy_i = '1')) THEN
3592 6 fpga_is_fu
               ld_o <= "11";
3593
               ld_pc_o <= '1';
3594 14 fpga_is_fu
            ELSIF ((d_i = X"08") AND (rdy_i = '1')) THEN
3595 6 fpga_is_fu
               ld_o <= "11";
3596
               ld_pc_o <= '1';
3597 14 fpga_is_fu
            ELSIF ((d_i = X"68") AND (rdy_i = '1')) THEN
3598 6 fpga_is_fu
               ld_o <= "11";
3599
               ld_pc_o <= '1';
3600 14 fpga_is_fu
            ELSIF ((d_i = X"28") AND (rdy_i = '1')) THEN
3601 6 fpga_is_fu
               ld_o <= "11";
3602
               ld_pc_o <= '1';
3603 14 fpga_is_fu
            ELSIF ((d_i = X"26" or
3604 6 fpga_is_fu
                   d_i = X"36" or
3605
                   d_i = X"2E" or
3606 14 fpga_is_fu
                   d_i = X"3E") AND (rdy_i = '1')) THEN
3607 6 fpga_is_fu
               ld_o <= "11";
3608
               ld_pc_o <= '1';
3609 14 fpga_is_fu
            ELSIF ((d_i = X"66" or
3610 6 fpga_is_fu
                   d_i = X"76" or
3611
                   d_i = X"6E" or
3612 14 fpga_is_fu
                   d_i = X"7E") AND (rdy_i = '1')) THEN
3613 6 fpga_is_fu
               ld_o <= "11";
3614
               ld_pc_o <= '1';
3615 14 fpga_is_fu
            ELSIF ((d_i = X"40") AND (rdy_i = '1')) THEN
3616 6 fpga_is_fu
               ld_o <= "11";
3617
               ld_pc_o <= '1';
3618 14 fpga_is_fu
            ELSIF ((d_i = X"60") AND (rdy_i = '1')) THEN
3619 6 fpga_is_fu
               ld_o <= "11";
3620
               ld_pc_o <= '1';
3621 14 fpga_is_fu
            ELSIF ((d_i = X"E9" or
3622 6 fpga_is_fu
                   d_i = X"E5" or
3623
                   d_i = X"F5" or
3624
                   d_i = X"ED" or
3625
                   d_i = X"FD" or
3626
                   d_i = X"F9" or
3627
                   d_i = X"E1" or
3628 14 fpga_is_fu
                   d_i = X"F1") AND (rdy_i = '1')) THEN
3629 6 fpga_is_fu
               ld_o <= "11";
3630
               ld_pc_o <= '1';
3631 14 fpga_is_fu
            ELSIF ((d_i = X"38") AND (rdy_i = '1')) THEN
3632 6 fpga_is_fu
               ld_o <= "11";
3633
               ld_pc_o <= '1';
3634 14 fpga_is_fu
            ELSIF ((d_i = X"F8") AND (rdy_i = '1')) THEN
3635 6 fpga_is_fu
               ld_o <= "11";
3636
               ld_pc_o <= '1';
3637 14 fpga_is_fu
            ELSIF ((d_i = X"78") AND (rdy_i = '1')) THEN
3638 6 fpga_is_fu
               ld_o <= "11";
3639
               ld_pc_o <= '1';
3640 14 fpga_is_fu
            ELSIF ((d_i = X"85" or
3641 6 fpga_is_fu
                   d_i = X"95" or
3642
                   d_i = X"8D" or
3643
                   d_i = X"9D" or
3644
                   d_i = X"99" or
3645
                   d_i = X"81" or
3646 14 fpga_is_fu
                   d_i = X"91") AND (rdy_i = '1')) THEN
3647 6 fpga_is_fu
               ld_o <= "11";
3648
               ld_pc_o <= '1';
3649 14 fpga_is_fu
            ELSIF ((d_i = X"86" or
3650 6 fpga_is_fu
                   d_i = X"96" or
3651 14 fpga_is_fu
                   d_i = X"8E") AND (rdy_i = '1')) THEN
3652 6 fpga_is_fu
               ld_o <= "11";
3653
               ld_pc_o <= '1';
3654 14 fpga_is_fu
            ELSIF ((d_i = X"84" or
3655 6 fpga_is_fu
                   d_i = X"94" or
3656 14 fpga_is_fu
                   d_i = X"8C") AND (rdy_i = '1')) THEN
3657 6 fpga_is_fu
               ld_o <= "11";
3658
               ld_pc_o <= '1';
3659 14 fpga_is_fu
            ELSIF ((d_i = X"AA") AND (rdy_i = '1')) THEN
3660 6 fpga_is_fu
 
3661
               ld_o <= "11";
3662
               ld_pc_o <= '1';
3663 14 fpga_is_fu
            ELSIF ((d_i = X"0A") AND (rdy_i = '1')) THEN
3664 6 fpga_is_fu
               ld_o <= "11";
3665
               ld_pc_o <= '1';
3666 14 fpga_is_fu
            ELSIF ((d_i = X"4A") AND (rdy_i = '1')) THEN
3667 6 fpga_is_fu
               ld_o <= "11";
3668
               ld_pc_o <= '1';
3669 14 fpga_is_fu
            ELSIF ((d_i = X"2A") AND (rdy_i = '1')) THEN
3670 6 fpga_is_fu
               ld_o <= "11";
3671
               ld_pc_o <= '1';
3672 14 fpga_is_fu
            ELSIF ((d_i = X"6A") AND (rdy_i = '1')) THEN
3673 6 fpga_is_fu
               ld_o <= "11";
3674
               ld_pc_o <= '1';
3675 14 fpga_is_fu
            ELSIF ((d_i = X"A8") AND (rdy_i = '1')) THEN
3676 6 fpga_is_fu
 
3677
               ld_o <= "11";
3678
               ld_pc_o <= '1';
3679 14 fpga_is_fu
            ELSIF ((d_i = X"98") AND (rdy_i = '1')) THEN
3680 6 fpga_is_fu
 
3681
               ld_o <= "11";
3682
               ld_pc_o <= '1';
3683 14 fpga_is_fu
            ELSIF ((d_i = X"BA") AND (rdy_i = '1')) THEN
3684 6 fpga_is_fu
 
3685
               ld_o <= "11";
3686
               ld_pc_o <= '1';
3687 14 fpga_is_fu
            ELSIF ((d_i = X"8A") AND (rdy_i = '1')) THEN
3688 6 fpga_is_fu
 
3689
               ld_o <= "11";
3690
               ld_pc_o <= '1';
3691 14 fpga_is_fu
            ELSIF ((d_i = X"9A") AND (rdy_i = '1')) THEN
3692 6 fpga_is_fu
 
3693
               ld_o <= "11";
3694
               ld_pc_o <= '1';
3695 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3696 6 fpga_is_fu
               ld_o <= "11";
3697
               ld_pc_o <= '1';
3698 14 fpga_is_fu
            END IF;
3699
         WHEN s1 =>
3700
            IF (rdy_i = '1') THEN
3701 6 fpga_is_fu
               sig_SYNC <= '1';
3702
               fetch_o <= '1';
3703 14 fpga_is_fu
            END IF;
3704
         WHEN s2 =>
3705
            IF (rdy_i = '1') THEN
3706 6 fpga_is_fu
               sig_SYNC <= '1';
3707
               fetch_o <= '1';
3708 14 fpga_is_fu
            END IF;
3709
         WHEN s5 =>
3710
            IF (rdy_i = '1') THEN
3711 6 fpga_is_fu
               sig_SYNC <= '1';
3712
               fetch_o <= '1';
3713 14 fpga_is_fu
            END IF;
3714
         WHEN s3 =>
3715
            IF (rdy_i = '1') THEN
3716 6 fpga_is_fu
               sig_SYNC <= '1';
3717
               fetch_o <= '1';
3718 14 fpga_is_fu
            END IF;
3719
         WHEN s4 =>
3720
            IF (rdy_i = '1' and
3721
                zw_REG_OP = X"9A") THEN
3722 6 fpga_is_fu
               adr_o <= X"01" & d_regs_out_i;
3723
               ld_o <= "11";
3724
               ld_sp_o <= '1';
3725
               sig_SYNC <= '1';
3726
               fetch_o <= '1';
3727 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3728
                   zw_REG_OP = X"BA") THEN
3729 6 fpga_is_fu
               d_regs_in_o <= adr_sp_i (7 downto 0);
3730
               ch_a_o <= adr_sp_i (7 downto 0);
3731
               ch_b_o <= X"00";
3732
               load_regs_o <= '1';
3733
               sig_SYNC <= '1';
3734
               fetch_o <= '1';
3735 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
3736 6 fpga_is_fu
               ch_a_o <= d_regs_out_i;
3737
               ch_b_o <= X"00";
3738
               load_regs_o <= '1';
3739
               sig_SYNC <= '1';
3740
               fetch_o <= '1';
3741 14 fpga_is_fu
            END IF;
3742
         WHEN s12 =>
3743
            IF (rdy_i = '1') THEN
3744 6 fpga_is_fu
               sig_SYNC <= '1';
3745
               fetch_o <= '1';
3746 14 fpga_is_fu
            END IF;
3747
         WHEN s16 =>
3748
            IF (rdy_i = '1') THEN
3749 6 fpga_is_fu
               sig_SYNC <= '1';
3750
               fetch_o <= '1';
3751 14 fpga_is_fu
            END IF;
3752
         WHEN s17 =>
3753
            IF (rdy_i = '1') THEN
3754 6 fpga_is_fu
               sig_SYNC <= '1';
3755
               fetch_o <= '1';
3756 14 fpga_is_fu
            END IF;
3757
         WHEN s24 =>
3758
            IF (rdy_i = '1') THEN
3759 6 fpga_is_fu
               sig_SYNC <= '1';
3760
               fetch_o <= '1';
3761 14 fpga_is_fu
            END IF;
3762
         WHEN s25 =>
3763
            IF (rdy_i = '1') THEN
3764 6 fpga_is_fu
               d_regs_in_o <= d_alu_i;
3765
               ch_a_o <= d_regs_out_i;
3766
               ch_b_o <= zw_b4;
3767
               load_regs_o <= '1';
3768
               sig_SYNC <= '1';
3769
               fetch_o <= '1';
3770 14 fpga_is_fu
            END IF;
3771
         WHEN s273 =>
3772
            IF (rdy_i = '1') THEN
3773 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3774
               ld_o <= "11";
3775
               ld_pc_o <= '1';
3776 14 fpga_is_fu
            END IF;
3777
         WHEN s307 =>
3778
            IF (rdy_i = '1') THEN
3779 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3780
               ld_o <= "11";
3781
               ld_pc_o <= '1';
3782
               sig_SYNC <= '1';
3783
               fetch_o <= '1';
3784 14 fpga_is_fu
            END IF;
3785
         WHEN s177 =>
3786
            IF (rdy_i = '1' and
3787 6 fpga_is_fu
                (zw_REG_OP = X"85" OR
3788
                zw_REG_OP = X"86" OR
3789 14 fpga_is_fu
                zw_REG_OP = X"84")) THEN
3790 6 fpga_is_fu
               sig_RWn <= '0';
3791
               sig_RD <= '0';
3792
               sig_WR <= '1';
3793
               sig_D_OUT <= d_regs_out_i;
3794
               ld_o <= "11";
3795
               ld_pc_o <= '1';
3796 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3797 6 fpga_is_fu
                   (zw_REG_OP = X"95" OR
3798 14 fpga_is_fu
                   zw_REG_OP = X"94")) THEN
3799 6 fpga_is_fu
               ch_a_o <=  d_i;
3800
               ch_b_o <= q_x_i;
3801 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3802 6 fpga_is_fu
                   (zw_REG_OP = X"8D" OR
3803
                   zw_REG_OP = X"8E" OR
3804 14 fpga_is_fu
                   zw_REG_OP = X"8C")) THEN
3805 6 fpga_is_fu
               ld_o <= "11";
3806
               ld_pc_o <= '1';
3807 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3808
                   zw_REG_OP = X"9D") THEN
3809 6 fpga_is_fu
               ld_o <= "11";
3810
               ld_pc_o <= '1';
3811
               ch_a_o <= d_i;
3812
               ch_b_o <= q_x_i;
3813 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3814
                   zw_REG_OP = X"99") THEN
3815 6 fpga_is_fu
               ld_o <= "11";
3816
               ld_pc_o <= '1';
3817
               ch_a_o <= d_i;
3818
               ch_b_o <= q_y_i;
3819 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3820
                   zw_REG_OP = X"91") THEN
3821 6 fpga_is_fu
               ch_a_o <= d_i;
3822
               ch_b_o <= X"01";
3823 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3824
                   zw_REG_OP = X"81") THEN
3825 6 fpga_is_fu
               ch_a_o <=  d_i;
3826
               ch_b_o <= q_x_i;
3827 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
3828
                   zw_REG_OP = X"96") THEN
3829 6 fpga_is_fu
               ch_a_o <=  d_i;
3830
               ch_b_o <= q_y_i;
3831 14 fpga_is_fu
            END IF;
3832
         WHEN s180 =>
3833
            IF (rdy_i = '1') THEN
3834 6 fpga_is_fu
               ch_a_o <= d_i;
3835
               ch_b_o <= "0000000" & zw_b2(0);
3836
               ld_o <= "11";
3837
               ld_pc_o <= '1';
3838 14 fpga_is_fu
            END IF;
3839
         WHEN s181 =>
3840
            IF (rdy_i = '1') THEN
3841 6 fpga_is_fu
               ch_a_o <= d_i;
3842
               ch_b_o <= q_y_i;
3843 14 fpga_is_fu
            END IF;
3844
         WHEN s182 =>
3845 6 fpga_is_fu
            sig_RWn <= '1';
3846
            sig_RD <= '1';
3847 14 fpga_is_fu
            IF (rdy_i = '1') THEN
3848 6 fpga_is_fu
               ch_a_o <= d_i;
3849
               ch_b_o <= "0000000" & zw_b2(0);
3850
               ld_o <= "11";
3851
               ld_pc_o <= '1';
3852 14 fpga_is_fu
            END IF;
3853
         WHEN s183 =>
3854
            IF (rdy_i = '1') THEN
3855 6 fpga_is_fu
               sig_RWn <= '0';
3856
               sig_RD <= '0';
3857
               sig_WR <= '1';
3858
               sig_D_OUT <= d_regs_out_i;
3859
               ld_o <= "11";
3860
               ld_pc_o <= '1';
3861 14 fpga_is_fu
            END IF;
3862
         WHEN s184 =>
3863 6 fpga_is_fu
            sig_SYNC <= '1';
3864
            fetch_o <= '1';
3865 14 fpga_is_fu
         WHEN s185 =>
3866
            IF (rdy_i = '1') THEN
3867 6 fpga_is_fu
               sig_RWn <= '0';
3868
               sig_RD <= '0';
3869
               sig_WR <= '1';
3870
               sig_D_OUT <= d_regs_out_i;
3871
               ld_o <= "11";
3872
               ld_pc_o <= '1';
3873 14 fpga_is_fu
            END IF;
3874
         WHEN s187 =>
3875 6 fpga_is_fu
            sig_SYNC <= '1';
3876
            fetch_o <= '1';
3877 14 fpga_is_fu
         WHEN s188 =>
3878
            IF (rdy_i = '1') THEN
3879 6 fpga_is_fu
               ch_a_o <=  zw_b1;
3880
               ch_b_o <= X"01";
3881 14 fpga_is_fu
            END IF;
3882
         WHEN s189 =>
3883
            IF (rdy_i = '1') THEN
3884 6 fpga_is_fu
               ch_a_o <= d_i;
3885
               ch_b_o <= "0000000" & zw_b2(0);
3886
               ld_o <= "11";
3887
               ld_pc_o <= '1';
3888 14 fpga_is_fu
            END IF;
3889
         WHEN s190 =>
3890 6 fpga_is_fu
            sig_SYNC <= '1';
3891
            fetch_o <= '1';
3892 14 fpga_is_fu
         WHEN s191 =>
3893 6 fpga_is_fu
            sig_RWn <= '0';
3894
            sig_RD <= '0';
3895
            sig_WR <= '1';
3896
            sig_D_OUT <= d_regs_out_i;
3897 14 fpga_is_fu
         WHEN s192 =>
3898 6 fpga_is_fu
            sig_RWn <= '0';
3899
            sig_RD <= '0';
3900
            sig_WR <= '1';
3901
            sig_D_OUT <= d_regs_out_i;
3902
            ld_o <= "11";
3903
            ld_pc_o <= '1';
3904 14 fpga_is_fu
         WHEN s193 =>
3905 6 fpga_is_fu
            sig_SYNC <= '1';
3906
            fetch_o <= '1';
3907 14 fpga_is_fu
         WHEN s377 =>
3908
            IF (rdy_i = '1') THEN
3909 6 fpga_is_fu
               sig_RWn <= '0';
3910
               sig_RD <= '0';
3911
               sig_WR <= '1';
3912
               sig_D_OUT <= q_a_i;
3913
               ld_o <= "11";
3914
               ld_sp_o <= '1';
3915 14 fpga_is_fu
            END IF;
3916
         WHEN s381 =>
3917 6 fpga_is_fu
            sig_SYNC <= '1';
3918
            fetch_o <= '1';
3919 14 fpga_is_fu
         WHEN s378 =>
3920
            IF (rdy_i = '1') THEN
3921 6 fpga_is_fu
               sig_RWn <= '0';
3922
               sig_RD <= '0';
3923
               sig_WR <= '1';
3924
               sig_D_OUT <= reg_F;
3925
               ld_o <= "11";
3926
               ld_sp_o <= '1';
3927 14 fpga_is_fu
            END IF;
3928
         WHEN s382 =>
3929 6 fpga_is_fu
            sig_SYNC <= '1';
3930
            fetch_o <= '1';
3931 14 fpga_is_fu
         WHEN s379 =>
3932
            IF (rdy_i = '1') THEN
3933 6 fpga_is_fu
               ld_o <= "11";
3934
               ld_sp_o <= '1';
3935 14 fpga_is_fu
            END IF;
3936
         WHEN s384 =>
3937
            IF (rdy_i = '1') THEN
3938 6 fpga_is_fu
               d_regs_in_o <= d_i;
3939
               load_regs_o <= '1';
3940
               ch_a_o <= d_i;
3941
               ch_b_o <= X"00";
3942
               sig_SYNC <= '1';
3943
               fetch_o <= '1';
3944 14 fpga_is_fu
            END IF;
3945
         WHEN s380 =>
3946
            IF (rdy_i = '1') THEN
3947 6 fpga_is_fu
               ld_o <= "11";
3948
               ld_sp_o <= '1';
3949 14 fpga_is_fu
            END IF;
3950
         WHEN s386 =>
3951
            IF (rdy_i = '1') THEN
3952 6 fpga_is_fu
               sig_SYNC <= '1';
3953
               fetch_o <= '1';
3954 14 fpga_is_fu
            END IF;
3955
         WHEN s387 =>
3956
            IF (rdy_i = '1') THEN
3957 6 fpga_is_fu
               ld_o <= "11";
3958
               ld_sp_o <= '1';
3959 14 fpga_is_fu
            END IF;
3960
         WHEN s388 =>
3961
            IF (rdy_i = '1') THEN
3962 6 fpga_is_fu
               ld_o <= "11";
3963
               ld_sp_o <= '1';
3964 14 fpga_is_fu
            END IF;
3965
         WHEN s389 =>
3966
            IF (rdy_i = '1') THEN
3967 6 fpga_is_fu
               ld_o <= "11";
3968
               ld_sp_o <= '1';
3969 14 fpga_is_fu
            END IF;
3970
         WHEN s392 =>
3971
            IF (rdy_i = '1') THEN
3972 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3973
               ld_o <= "11";
3974
               ld_pc_o <= '1';
3975
               sig_SYNC <= '1';
3976
               fetch_o <= '1';
3977 14 fpga_is_fu
            END IF;
3978
         WHEN s390 =>
3979
            IF (rdy_i = '1') THEN
3980 6 fpga_is_fu
               ld_o <= "11";
3981
               ld_sp_o <= '1';
3982 14 fpga_is_fu
            END IF;
3983
         WHEN s393 =>
3984
            IF (rdy_i = '1') THEN
3985 6 fpga_is_fu
               ld_o <= "11";
3986
               ld_sp_o <= '1';
3987 14 fpga_is_fu
            END IF;
3988
         WHEN s395 =>
3989
            IF (rdy_i = '1') THEN
3990 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3991
               ld_o <= "11";
3992
               ld_pc_o <= '1';
3993 14 fpga_is_fu
            END IF;
3994
         WHEN s396 =>
3995
            IF (rdy_i = '1') THEN
3996 6 fpga_is_fu
               sig_SYNC <= '1';
3997
               fetch_o <= '1';
3998 14 fpga_is_fu
            END IF;
3999
         WHEN s397 =>
4000
            IF (rdy_i = '1') THEN
4001 6 fpga_is_fu
               ld_o <= "11";
4002
               ld_sp_o <= '1';
4003
               ld_pc_o <= '1';
4004 14 fpga_is_fu
            END IF;
4005
         WHEN s398 =>
4006
            IF (rdy_i = '1') THEN
4007 6 fpga_is_fu
               sig_RWn <= '0';
4008
               sig_RD <= '0';
4009
               sig_WR <= '1';
4010
               sig_D_OUT <= adr_pc_i (15 downto 8);
4011 14 fpga_is_fu
            END IF;
4012
         WHEN s399 =>
4013 6 fpga_is_fu
            ld_o <= "11";
4014
            ld_sp_o <= '1';
4015
            sig_RWn <= '0';
4016
            sig_RD <= '0';
4017
            sig_WR <= '1';
4018
            sig_D_OUT <= adr_pc_i (7 downto 0);
4019 14 fpga_is_fu
         WHEN s401 =>
4020
            IF (rdy_i = '1') THEN
4021 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4022
               ld_o <= "11";
4023
               ld_pc_o <= '1';
4024
               sig_SYNC <= '1';
4025
               fetch_o <= '1';
4026 14 fpga_is_fu
            END IF;
4027
         WHEN s526 =>
4028
            IF (rdy_i = '1') THEN
4029 6 fpga_is_fu
               ld_o <= "11";
4030
               ld_sp_o <= '1';
4031
               ld_pc_o <= '1';
4032
               sig_RWn <= '0';
4033
               sig_RD <= '0';
4034
               sig_WR <= '1';
4035
               sig_D_OUT <= adr_pc_i (15 downto 8);
4036 14 fpga_is_fu
            END IF;
4037
         WHEN s527 =>
4038 6 fpga_is_fu
            ld_o <= "11";
4039
            ld_sp_o <= '1';
4040
            sig_RWn <= '0';
4041
            sig_RD <= '0';
4042
            sig_WR <= '1';
4043
            sig_D_OUT <= adr_pc_i (7 downto 0);
4044 14 fpga_is_fu
         WHEN s528 =>
4045 6 fpga_is_fu
            ld_o <= "11";
4046
            ld_sp_o <= '1';
4047
            sig_RWn <= '0';
4048
            sig_RD <= '0';
4049
            sig_WR <= '1';
4050
            sig_D_OUT <= reg_F OR X"10";
4051 14 fpga_is_fu
         WHEN s530 =>
4052
            IF (rdy_i = '1') THEN
4053 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4054
               ld_o <= "11";
4055
               ld_pc_o <= '1';
4056
               sig_SYNC <= '1';
4057
               fetch_o <= '1';
4058 14 fpga_is_fu
            END IF;
4059
         WHEN s544 =>
4060 6 fpga_is_fu
            ld_o <= "11";
4061
            ld_sp_o <= '1';
4062 14 fpga_is_fu
         WHEN s545 =>
4063 6 fpga_is_fu
            adr_o <= X"FFFB";
4064
            ld_o <= "11";
4065
            ld_pc_o <= '1';
4066 14 fpga_is_fu
         WHEN s546 =>
4067 6 fpga_is_fu
            ld_o <= "11";
4068
            ld_pc_o <= '1';
4069 14 fpga_is_fu
         WHEN s549 =>
4070
            IF (rdy_i = '1') THEN
4071
               adr_o <= d_i & zw_b1;
4072 6 fpga_is_fu
               ld_o <= "11";
4073
               ld_pc_o <= '1';
4074
               sig_SYNC <= '1';
4075
               fetch_o <= '1';
4076 14 fpga_is_fu
            END IF;
4077
         WHEN s550 =>
4078 6 fpga_is_fu
            ld_o <= "11";
4079
            ld_sp_o <= '1';
4080 14 fpga_is_fu
         WHEN s404 =>
4081
            IF (rdy_i = '1') THEN
4082 6 fpga_is_fu
               ch_a_o <= q_a_i (6 downto 0) & '0';
4083
               ch_b_o <= X"00";
4084
               d_regs_in_o <= q_a_i (6 downto 0) & '0';
4085
               load_regs_o <= '1';
4086
               sig_SYNC <= '1';
4087
               fetch_o <= '1';
4088 14 fpga_is_fu
            END IF;
4089
         WHEN s556 =>
4090
            IF (rdy_i = '1') THEN
4091 6 fpga_is_fu
               ch_a_o <= '0' & q_a_i (7 downto 1);
4092
               ch_b_o <= X"00";
4093
               d_regs_in_o <= '0' & q_a_i (7 downto 1);
4094
               load_regs_o <= '1';
4095
               sig_SYNC <= '1';
4096
               fetch_o <= '1';
4097 14 fpga_is_fu
            END IF;
4098
         WHEN s557 =>
4099
            IF (rdy_i = '1') THEN
4100 6 fpga_is_fu
               ch_a_o <= q_a_i (6 downto 0) & reg_F(0);
4101
               ch_b_o <= X"00";
4102
               d_regs_in_o <= q_a_i (6 downto 0) & reg_F(0);
4103
               load_regs_o <= '1';
4104
               sig_SYNC <= '1';
4105
               fetch_o <= '1';
4106 14 fpga_is_fu
            END IF;
4107
         WHEN s579 =>
4108
            IF (rdy_i = '1') THEN
4109 6 fpga_is_fu
               ch_a_o <= reg_F(0) & q_a_i (7 downto 1);
4110
               ch_b_o <= X"00";
4111
               d_regs_in_o <= reg_F(0) & q_a_i (7 downto 1);
4112
               load_regs_o <= '1';
4113
               sig_SYNC <= '1';
4114
               fetch_o <= '1';
4115 14 fpga_is_fu
            END IF;
4116
         WHEN s201 =>
4117
            IF (rdy_i = '1' and
4118 6 fpga_is_fu
                (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
4119
                zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
4120
                zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
4121 14 fpga_is_fu
                zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) THEN
4122 6 fpga_is_fu
               ld_o <= "11";
4123
               ld_pc_o <= '1';
4124 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
4125 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4126 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4127 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4128
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4129 14 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
4130 6 fpga_is_fu
               ld_o <= "11";
4131
               ld_pc_o <= '1';
4132
               d_regs_in_o <= d_i OR q_a_i;
4133
               load_regs_o <= '1';
4134
               ch_a_o <= d_i OR q_a_i;
4135
               ch_b_o <= X"00";
4136
               sig_SYNC <= '1';
4137
               fetch_o <= '1';
4138 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
4139 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4140 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4141 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4142
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4143 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
4144 6 fpga_is_fu
               ld_o <= "11";
4145
               ld_pc_o <= '1';
4146
               d_regs_in_o <= d_i XOR q_a_i;
4147
               load_regs_o <= '1';
4148
               ch_a_o <= d_i XOR q_a_i;
4149
               ch_b_o <= X"00";
4150
               sig_SYNC <= '1';
4151
               fetch_o <= '1';
4152 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
4153 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4154 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4155 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4156
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4157 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
4158 6 fpga_is_fu
               ld_o <= "11";
4159
               ld_pc_o <= '1';
4160
               d_regs_in_o <= d_i AND q_a_i;
4161
               load_regs_o <= '1';
4162
               ch_a_o <= d_i AND q_a_i;
4163
               ch_b_o <= X"00";
4164
               sig_SYNC <= '1';
4165
               fetch_o <= '1';
4166 14 fpga_is_fu
            ELSIF ((rdy_i = '1' and
4167 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4168 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4169 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4170
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4171
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4172
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4173
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4174 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
4175 6 fpga_is_fu
               ld_o <= "11";
4176
               ld_pc_o <= '1';
4177
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4178
               sig_SYNC <= '1';
4179
               fetch_o <= '1';
4180 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4181 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4182 14 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) THEN
4183 6 fpga_is_fu
               ld_o <= "11";
4184
               ld_pc_o <= '1';
4185
               d_regs_in_o <= d_i;
4186
               load_regs_o <= '1';
4187
               ch_a_o <= d_i;
4188
               ch_b_o <= X"00";
4189
               sig_SYNC <= '1';
4190
               fetch_o <= '1';
4191 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4192 6 fpga_is_fu
                   (zw_REG_OP = X"B5" OR
4193
                   zw_REG_OP = X"B4" OR
4194
                   zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
4195
                   zw_REG_OP = X"35" OR
4196 14 fpga_is_fu
                   zw_REG_OP = X"D5")) THEN
4197 6 fpga_is_fu
               ch_a_o <=  d_i;
4198
               ch_b_o <= q_x_i;
4199 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4200 6 fpga_is_fu
                   (zw_REG_OP = X"AD" OR
4201
                   zw_REG_OP = X"AE" OR
4202
                   zw_REG_OP = X"AC" OR
4203
                   zw_REG_OP = X"4D" OR
4204
                   zw_REG_OP = X"0D" OR
4205
                   zw_REG_OP = X"2D" OR
4206
                   zw_REG_OP = X"CD" OR
4207
                   zw_REG_OP = X"EC" OR
4208 14 fpga_is_fu
                   zw_REG_OP = X"CC")) THEN
4209 6 fpga_is_fu
               ld_o <= "11";
4210
               ld_pc_o <= '1';
4211 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4212 6 fpga_is_fu
                   (zw_REG_OP = X"BD" OR
4213
                   zw_REG_OP = X"BC" OR
4214
                   zw_REG_OP = X"5D" OR
4215
                   zw_REG_OP = X"1D" OR
4216
                   zw_REG_OP = X"3D" OR
4217 14 fpga_is_fu
                   zw_REG_OP = X"DD")) THEN
4218 6 fpga_is_fu
               ld_o <= "11";
4219
               ld_pc_o <= '1';
4220
               ch_a_o <= d_i;
4221
               ch_b_o <= q_x_i;
4222 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4223 6 fpga_is_fu
                   (zw_REG_OP = X"B9" OR
4224
                   zw_REG_OP = X"BE" OR
4225
                   zw_REG_OP = X"59" OR
4226
                   zw_REG_OP = X"19" OR
4227
                   zw_REG_OP = X"39" OR
4228 14 fpga_is_fu
                   zw_REG_OP = X"D9")) THEN
4229 6 fpga_is_fu
               ld_o <= "11";
4230
               ld_pc_o <= '1';
4231
               ch_a_o <= d_i;
4232
               ch_b_o <= q_y_i;
4233 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4234 6 fpga_is_fu
                   (zw_REG_OP = X"B1" OR
4235
                   zw_REG_OP = X"51" OR
4236
                   zw_REG_OP = X"11" OR
4237
                   zw_REG_OP = X"31" OR
4238 14 fpga_is_fu
                   zw_REG_OP = X"D1")) THEN
4239 6 fpga_is_fu
               ch_a_o <= d_i;
4240
               ch_b_o <= X"01";
4241 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4242 6 fpga_is_fu
                   (zw_REG_OP = X"A1" OR
4243
                   zw_REG_OP = X"41" OR
4244
                   zw_REG_OP = X"01" OR
4245
                   zw_REG_OP = X"21" OR
4246 14 fpga_is_fu
                   zw_REG_OP = X"C1")) THEN
4247 6 fpga_is_fu
               ch_a_o <=  d_i;
4248
               ch_b_o <= q_x_i;
4249 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4250
                   zw_REG_OP = X"B6") THEN
4251 6 fpga_is_fu
               ch_a_o <=  d_i;
4252
               ch_b_o <= q_y_i;
4253 14 fpga_is_fu
            END IF;
4254
         WHEN s202 =>
4255
            IF (rdy_i = '1') THEN
4256 6 fpga_is_fu
               ld_o <= "11";
4257
               ld_pc_o <= '1';
4258 14 fpga_is_fu
            END IF;
4259
         WHEN s210 =>
4260
            IF (rdy_i = '1') THEN
4261 6 fpga_is_fu
               ch_a_o <= d_i;
4262
               ch_b_o <= "0000000" & zw_b2(0);
4263
               ld_o <= "11";
4264
               ld_pc_o <= '1';
4265 14 fpga_is_fu
            END IF;
4266
         WHEN s211 =>
4267
            IF (rdy_i = '1') THEN
4268 6 fpga_is_fu
               ch_a_o <= d_i;
4269
               ch_b_o <= "0000000" & zw_b2(0);
4270
               ld_o <= "11";
4271
               ld_pc_o <= '1';
4272 14 fpga_is_fu
            END IF;
4273
         WHEN s215 =>
4274
            IF (rdy_i = '1') THEN
4275 6 fpga_is_fu
               ch_a_o <= d_i;
4276
               ch_b_o <= q_y_i;
4277 14 fpga_is_fu
            END IF;
4278
         WHEN s217 =>
4279
            IF (rdy_i = '1') THEN
4280 6 fpga_is_fu
               ld_o <= "11";
4281
               ld_pc_o <= '1';
4282 14 fpga_is_fu
            END IF;
4283
         WHEN s222 =>
4284
            IF (rdy_i = '1') THEN
4285 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4286
               ch_b_o <= X"01";
4287 14 fpga_is_fu
            END IF;
4288
         WHEN s223 =>
4289
            IF (rdy_i = '1') THEN
4290 6 fpga_is_fu
               ch_a_o <= d_i;
4291
               ch_b_o <= "0000000" & zw_b2(0);
4292
               ld_o <= "11";
4293
               ld_pc_o <= '1';
4294 14 fpga_is_fu
            END IF;
4295
         WHEN s224 =>
4296
            IF ((rdy_i = '1') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4297 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4298
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4299 14 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
4300 6 fpga_is_fu
               d_regs_in_o <= d_i OR q_a_i;
4301
               load_regs_o <= '1';
4302
               ch_a_o <= d_i OR q_a_i;
4303
               ch_b_o <= X"00";
4304
               sig_SYNC <= '1';
4305
               fetch_o <= '1';
4306 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4307 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4308
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4309 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
4310 6 fpga_is_fu
               d_regs_in_o <= d_i XOR q_a_i;
4311
               load_regs_o <= '1';
4312
               ch_a_o <= d_i XOR q_a_i;
4313
               ch_b_o <= X"00";
4314
               sig_SYNC <= '1';
4315
               fetch_o <= '1';
4316 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4317 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4318
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4319 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
4320 6 fpga_is_fu
               d_regs_in_o <= d_i AND q_a_i;
4321
               load_regs_o <= '1';
4322
               ch_a_o <= d_i AND q_a_i;
4323
               ch_b_o <= X"00";
4324
               sig_SYNC <= '1';
4325
               fetch_o <= '1';
4326 14 fpga_is_fu
            ELSIF ((rdy_i = '1') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4327 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4328
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4329
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4330
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4331
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4332 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
4333 6 fpga_is_fu
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4334
               sig_SYNC <= '1';
4335
               fetch_o <= '1';
4336 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
4337 6 fpga_is_fu
               d_regs_in_o <= d_i;
4338
               load_regs_o <= '1';
4339
               ch_a_o <= d_i;
4340
               ch_b_o <= X"00";
4341
               sig_SYNC <= '1';
4342
               fetch_o <= '1';
4343 14 fpga_is_fu
            END IF;
4344
         WHEN s225 =>
4345
            IF ((rdy_i = '1' AND
4346
                zw_b2(0) = '0') AND (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4347 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4348
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4349 14 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) THEN
4350 6 fpga_is_fu
               d_regs_in_o <= d_i OR q_a_i;
4351
               load_regs_o <= '1';
4352
               ch_a_o <= d_i OR q_a_i;
4353
               ch_b_o <= X"00";
4354
               sig_SYNC <= '1';
4355
               fetch_o <= '1';
4356 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
4357
                   zw_b2(0) = '0') AND (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4358 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4359
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4360 14 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) THEN
4361 6 fpga_is_fu
               d_regs_in_o <= d_i XOR q_a_i;
4362
               load_regs_o <= '1';
4363
               ch_a_o <= d_i XOR q_a_i;
4364
               ch_b_o <= X"00";
4365
               sig_SYNC <= '1';
4366
               fetch_o <= '1';
4367 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
4368
                   zw_b2(0) = '0') AND (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4369 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4370
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4371 14 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) THEN
4372 6 fpga_is_fu
               d_regs_in_o <= d_i AND q_a_i;
4373
               load_regs_o <= '1';
4374
               ch_a_o <= d_i AND q_a_i;
4375
               ch_b_o <= X"00";
4376
               sig_SYNC <= '1';
4377
               fetch_o <= '1';
4378 14 fpga_is_fu
            ELSIF ((rdy_i = '1' AND
4379
                   zw_b2(0) = '0') AND (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4380 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4381
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4382
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4383
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4384
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4385 14 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) THEN
4386 6 fpga_is_fu
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4387
               sig_SYNC <= '1';
4388
               fetch_o <= '1';
4389 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
4390
                   zw_b2(0) = '0') THEN
4391 6 fpga_is_fu
               d_regs_in_o <= d_i;
4392
               load_regs_o <= '1';
4393
               ch_a_o <= d_i;
4394
               ch_b_o <= X"00";
4395
               sig_SYNC <= '1';
4396
               fetch_o <= '1';
4397 14 fpga_is_fu
            END IF;
4398
         WHEN s226 =>
4399
            IF (rdy_i = '1' and
4400 6 fpga_is_fu
                (zw_REG_OP = X"C6" OR
4401 14 fpga_is_fu
                zw_REG_OP = X"E6")) THEN
4402 6 fpga_is_fu
               ld_o <= "11";
4403
               ld_pc_o <= '1';
4404 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4405 6 fpga_is_fu
                   (zw_REG_OP = X"D6" OR
4406 14 fpga_is_fu
                   zw_REG_OP = X"F6")) THEN
4407 6 fpga_is_fu
               ch_a_o <=  d_i;
4408
               ch_b_o <= q_x_i;
4409 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4410 6 fpga_is_fu
                   (zw_REG_OP = X"CE" OR
4411 14 fpga_is_fu
                   zw_REG_OP = X"EE")) THEN
4412 6 fpga_is_fu
               ld_o <= "11";
4413
               ld_pc_o <= '1';
4414 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4415 6 fpga_is_fu
                   (zw_REG_OP = X"DE" OR
4416 14 fpga_is_fu
                   zw_REG_OP = X"FE")) THEN
4417 6 fpga_is_fu
               ld_o <= "11";
4418
               ld_pc_o <= '1';
4419
               ch_a_o <= d_i;
4420
               ch_b_o <= q_x_i;
4421 14 fpga_is_fu
            END IF;
4422
         WHEN s243 =>
4423
            IF (rdy_i = '1') THEN
4424 6 fpga_is_fu
               ld_o <= "11";
4425
               ld_pc_o <= '1';
4426 14 fpga_is_fu
            END IF;
4427
         WHEN s244 =>
4428
            IF (rdy_i = '1') THEN
4429 6 fpga_is_fu
               ch_a_o <= d_i;
4430
               ch_b_o <= "0000000" & zw_b2(0);
4431
               ld_o <= "11";
4432
               ld_pc_o <= '1';
4433 14 fpga_is_fu
            END IF;
4434
         WHEN s247 =>
4435
            IF (rdy_i = '1') THEN
4436 6 fpga_is_fu
               ld_o <= "11";
4437
               ld_pc_o <= '1';
4438 14 fpga_is_fu
            END IF;
4439
         WHEN s343 =>
4440
            IF (rdy_i = '1') THEN
4441 6 fpga_is_fu
               ch_a_o <= d_i;
4442
               ch_b_o <= zw_b4;
4443 14 fpga_is_fu
            END IF;
4444
         WHEN s250 =>
4445
            IF (rdy_i = '1') THEN
4446 6 fpga_is_fu
               sig_RWn <= '0';
4447
               sig_RD <= '0';
4448
               sig_WR <= '1';
4449
               sig_D_OUT <= zw_b1;
4450 14 fpga_is_fu
            END IF;
4451
         WHEN s251 =>
4452 6 fpga_is_fu
            ch_a_o <= zw_b1;
4453
            ch_b_o <= X"00";
4454
            sig_SYNC <= '1';
4455
            fetch_o <= '1';
4456 14 fpga_is_fu
         WHEN s351 =>
4457
            IF (rdy_i = '1' and
4458
                zw_REG_OP = X"24") THEN
4459 6 fpga_is_fu
               ld_o <= "11";
4460
               ld_pc_o <= '1';
4461 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4462
                   zw_REG_OP = X"2C") THEN
4463 6 fpga_is_fu
               ld_o <= "11";
4464
               ld_pc_o <= '1';
4465 14 fpga_is_fu
            END IF;
4466
         WHEN s361 =>
4467
            IF (rdy_i = '1') THEN
4468 6 fpga_is_fu
               ch_a_o <= q_a_i AND d_i;
4469
               ch_b_o <= X"00";
4470
               sig_SYNC <= '1';
4471
               fetch_o <= '1';
4472 14 fpga_is_fu
            END IF;
4473
         WHEN s360 =>
4474
            IF (rdy_i = '1') THEN
4475 6 fpga_is_fu
               ld_o <= "11";
4476
               ld_pc_o <= '1';
4477 14 fpga_is_fu
            END IF;
4478
         WHEN s403 =>
4479
            IF (rdy_i = '1' and
4480 6 fpga_is_fu
                (zw_REG_OP = X"1E" or
4481
                zw_REG_OP = X"7E" or
4482
                zw_REG_OP = X"3E" or
4483 14 fpga_is_fu
                zw_REG_OP = X"5E")) THEN
4484 6 fpga_is_fu
               ld_o <= "11";
4485
               ld_pc_o <= '1';
4486
               ch_a_o <= d_i;
4487
               ch_b_o <= q_x_i;
4488 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4489 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
4490
                   zw_REG_OP = X"66" or
4491
                   zw_REG_OP = X"26" or
4492 14 fpga_is_fu
                   zw_REG_OP = X"46")) THEN
4493 6 fpga_is_fu
               ld_o <= "11";
4494
               ld_pc_o <= '1';
4495 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4496 6 fpga_is_fu
                   (zw_REG_OP = X"16" or
4497
                   zw_REG_OP = X"76" or
4498
                   zw_REG_OP = X"36" or
4499 14 fpga_is_fu
                   zw_REG_OP = X"56")) THEN
4500 6 fpga_is_fu
               ch_a_o <=  d_i;
4501
               ch_b_o <= q_x_i;
4502 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4503 6 fpga_is_fu
                   (zw_REG_OP = X"0E" or
4504
                   zw_REG_OP = X"6E" or
4505
                   zw_REG_OP = X"2E" or
4506 14 fpga_is_fu
                   zw_REG_OP = X"4E")) THEN
4507 6 fpga_is_fu
               ld_o <= "11";
4508
               ld_pc_o <= '1';
4509 14 fpga_is_fu
            END IF;
4510
         WHEN s406 =>
4511
            IF (rdy_i = '1') THEN
4512 6 fpga_is_fu
               ld_o <= "11";
4513
               ld_pc_o <= '1';
4514 14 fpga_is_fu
            END IF;
4515
         WHEN s407 =>
4516
            IF (rdy_i = '1') THEN
4517 6 fpga_is_fu
               ch_a_o <= d_i;
4518
               ch_b_o <= "0000000" & zw_b2(0);
4519
               ld_o <= "11";
4520
               ld_pc_o <= '1';
4521 14 fpga_is_fu
            END IF;
4522
         WHEN s409 =>
4523
            IF (rdy_i = '1') THEN
4524 6 fpga_is_fu
               ld_o <= "11";
4525
               ld_pc_o <= '1';
4526 14 fpga_is_fu
            END IF;
4527
         WHEN s416 =>
4528
            IF (rdy_i = '1' and
4529 6 fpga_is_fu
                (zw_REG_OP = X"06" or
4530
                zw_REG_OP = X"16" or
4531
                zw_REG_OP = X"0E" or
4532 14 fpga_is_fu
                zw_REG_OP = X"1E")) THEN
4533 6 fpga_is_fu
               sig_D_OUT <= d_i(6 downto 0) & '0';
4534
               sig_RWn <= '0';
4535
               sig_RD <= '0';
4536
               sig_WR <= '1';
4537 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4538 6 fpga_is_fu
                   (zw_REG_OP = X"46" or
4539
                   zw_REG_OP = X"56" or
4540
                   zw_REG_OP = X"4E" or
4541 14 fpga_is_fu
                   zw_REG_OP = X"5E")) THEN
4542 6 fpga_is_fu
               sig_D_OUT <= '0' & d_i(7 downto 1);
4543
               sig_RWn <= '0';
4544
               sig_RD <= '0';
4545
               sig_WR <= '1';
4546 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4547 6 fpga_is_fu
                   (zw_REG_OP = X"26" or
4548
                   zw_REG_OP = X"36" or
4549
                   zw_REG_OP = X"2E" or
4550 14 fpga_is_fu
                   zw_REG_OP = X"3E")) THEN
4551 6 fpga_is_fu
               sig_D_OUT <= d_i(6 downto 0) & reg_F(0);
4552
               sig_RWn <= '0';
4553
               sig_RD <= '0';
4554
               sig_WR <= '1';
4555 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4556 6 fpga_is_fu
                   (zw_REG_OP = X"66" or
4557
                   zw_REG_OP = X"76" or
4558
                   zw_REG_OP = X"6E" or
4559 14 fpga_is_fu
                   zw_REG_OP = X"7E")) THEN
4560 6 fpga_is_fu
               sig_D_OUT <= reg_F(0) & d_i(7 downto 1);
4561
               sig_RWn <= '0';
4562
               sig_RD <= '0';
4563
               sig_WR <= '1';
4564 14 fpga_is_fu
            END IF;
4565
         WHEN s418 =>
4566 6 fpga_is_fu
            ch_a_o <= zw_b1;
4567
            ch_b_o <= X"00";
4568
            sig_SYNC <= '1';
4569
            fetch_o <= '1';
4570 14 fpga_is_fu
         WHEN s510 =>
4571
            IF (rdy_i = '1' and
4572
                zw_REG_OP = X"65") THEN
4573 6 fpga_is_fu
               ld_o <= "11";
4574
               ld_pc_o <= '1';
4575 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4576 6 fpga_is_fu
                   zw_REG_OP = X"69" and
4577 14 fpga_is_fu
                   reg_F(3) = '0') THEN
4578 6 fpga_is_fu
               ld_o <= "11";
4579
               ld_pc_o <= '1';
4580
               d_regs_in_o <= zw_ALU(7 downto 0);
4581
               load_regs_o <= '1';
4582
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4583
               sig_SYNC <= '1';
4584
               fetch_o <= '1';
4585 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4586
                   zw_REG_OP = X"75") THEN
4587 6 fpga_is_fu
               ch_a_o <=  d_i;
4588
               ch_b_o <= q_x_i;
4589 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4590
                   zw_REG_OP = X"6D") THEN
4591 6 fpga_is_fu
               ld_o <= "11";
4592
               ld_pc_o <= '1';
4593 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4594
                   zw_REG_OP = X"7D") THEN
4595 6 fpga_is_fu
               ld_o <= "11";
4596
               ld_pc_o <= '1';
4597
               ch_a_o <= d_i;
4598
               ch_b_o <= q_x_i;
4599 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4600
                   zw_REG_OP = X"79") THEN
4601 6 fpga_is_fu
               ld_o <= "11";
4602
               ld_pc_o <= '1';
4603
               ch_a_o <= d_i;
4604
               ch_b_o <= q_y_i;
4605 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4606
                   zw_REG_OP = X"71") THEN
4607 6 fpga_is_fu
               ch_a_o <= d_i;
4608
               ch_b_o <= X"01";
4609 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4610
                   zw_REG_OP = X"61") THEN
4611 6 fpga_is_fu
               ch_a_o <=  d_i;
4612
               ch_b_o <= q_x_i;
4613 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4614 6 fpga_is_fu
                   zw_REG_OP = X"69" and
4615 14 fpga_is_fu
                   reg_F(3) = '1') THEN
4616 6 fpga_is_fu
               ld_o <= "11";
4617
               ld_pc_o <= '1';
4618
               d_regs_in_o <= zw_ALU(7 downto 0);
4619
               load_regs_o <= '1';
4620 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(2 downto 0));
4621
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(2 downto 0));
4622 6 fpga_is_fu
 
4623 14 fpga_is_fu
               zw_ALU6(2 downto 0) <=  (zw_ALU2(4) OR (zw_ALU4(4))) & (zw_ALU2(4) OR (zw_ALU4(4))) & '0';
4624
               zw_ALU5(2 downto 0) <=  (zw_ALU1(4) OR (zw_ALU3(4))) & (zw_ALU1(4) OR (zw_ALU3(4))) & '0';
4625 6 fpga_is_fu
 
4626 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4627
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4628 6 fpga_is_fu
 
4629 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4630
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & d_i(3 downto 0)) + reg_F(0);
4631 6 fpga_is_fu
               sig_SYNC <= '1';
4632
               fetch_o <= '1';
4633 14 fpga_is_fu
            END IF;
4634
         WHEN s553 =>
4635
            IF (rdy_i = '1') THEN
4636 6 fpga_is_fu
               ld_o <= "11";
4637
               ld_pc_o <= '1';
4638 14 fpga_is_fu
            END IF;
4639
         WHEN s555 =>
4640
            IF (rdy_i = '1') THEN
4641 6 fpga_is_fu
               ch_a_o <= d_i;
4642
               ch_b_o <= X"01";
4643
               ld_o <= "11";
4644
               ld_pc_o <= '1';
4645 14 fpga_is_fu
            END IF;
4646
         WHEN s558 =>
4647
            IF (rdy_i = '1') THEN
4648 6 fpga_is_fu
               ch_a_o <= d_i;
4649
               ch_b_o <= q_y_i;
4650 14 fpga_is_fu
            END IF;
4651
         WHEN s560 =>
4652
            IF (rdy_i = '1') THEN
4653 6 fpga_is_fu
               ld_o <= "11";
4654
               ld_pc_o <= '1';
4655 14 fpga_is_fu
            END IF;
4656
         WHEN s563 =>
4657
            IF (rdy_i = '1') THEN
4658 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4659
               ch_b_o <= X"01";
4660 14 fpga_is_fu
            END IF;
4661
         WHEN s564 =>
4662
            IF (rdy_i = '1' AND
4663 6 fpga_is_fu
                zw_b2(0) = '0' and
4664 14 fpga_is_fu
                reg_F(3) = '0') THEN
4665 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4666
               load_regs_o <= '1';
4667
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4668
               sig_SYNC <= '1';
4669
               fetch_o <= '1';
4670 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
4671 6 fpga_is_fu
                   zw_b2(0) = '0' and
4672 14 fpga_is_fu
                   reg_F(3) = '1') THEN
4673 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4674
               load_regs_o <= '1';
4675 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(2 downto 0));
4676
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(2 downto 0));
4677 6 fpga_is_fu
 
4678 14 fpga_is_fu
               zw_ALU6(2 downto 0) <=  (zw_ALU2(4) OR (zw_ALU4(4))) & (zw_ALU2(4) OR (zw_ALU4(4))) & '0';
4679
               zw_ALU5(2 downto 0) <=  (zw_ALU1(4) OR (zw_ALU3(4))) & (zw_ALU1(4) OR (zw_ALU3(4))) & '0';
4680 6 fpga_is_fu
 
4681 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4682
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4683 6 fpga_is_fu
 
4684 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4685
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & d_i(3 downto 0)) + reg_F(0);
4686 6 fpga_is_fu
               sig_SYNC <= '1';
4687
               fetch_o <= '1';
4688 14 fpga_is_fu
            END IF;
4689
         WHEN s565 =>
4690
            IF (rdy_i = '1' and
4691
                reg_F(3) = '0') THEN
4692 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4693
               load_regs_o <= '1';
4694
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4695
               sig_SYNC <= '1';
4696
               fetch_o <= '1';
4697 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4698
                   reg_F(3) = '1') THEN
4699 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4700
               load_regs_o <= '1';
4701 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(2 downto 0));
4702
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(2 downto 0));
4703 6 fpga_is_fu
 
4704 14 fpga_is_fu
               zw_ALU6(2 downto 0) <=  (zw_ALU2(4) OR (zw_ALU4(4))) & (zw_ALU2(4) OR (zw_ALU4(4))) & '0';
4705
               zw_ALU5(2 downto 0) <=  (zw_ALU1(4) OR (zw_ALU3(4))) & (zw_ALU1(4) OR (zw_ALU3(4))) & '0';
4706 6 fpga_is_fu
 
4707 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4708
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4709 6 fpga_is_fu
 
4710 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4711
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & d_i(3 downto 0)) + reg_F(0);
4712 6 fpga_is_fu
               sig_SYNC <= '1';
4713
               fetch_o <= '1';
4714 14 fpga_is_fu
            END IF;
4715
         WHEN s566 =>
4716
            IF (rdy_i = '1') THEN
4717 6 fpga_is_fu
               ch_a_o <= d_i;
4718
               ch_b_o <= X"01";
4719
               ld_o <= "11";
4720
               ld_pc_o <= '1';
4721 14 fpga_is_fu
            END IF;
4722
         WHEN s266 =>
4723
            IF (rdy_i = '1' and (
4724 6 fpga_is_fu
                (reg_F(0) = '1' and zw_REG_OP = X"90") or
4725
                (reg_F(0) = '0' and zw_REG_OP = X"B0") or
4726
                (reg_F(1) = '0' and zw_REG_OP = X"F0") or
4727
                (reg_F(7) = '0' and zw_REG_OP = X"30") or
4728
                (reg_F(1) = '1' and zw_REG_OP = X"D0") or
4729
                (reg_F(7) = '1' and zw_REG_OP = X"10") or
4730
                (reg_F(6) = '1' and zw_REG_OP = X"50") or
4731 14 fpga_is_fu
                (reg_F(6) = '0' and zw_REG_OP = X"70"))) THEN
4732 6 fpga_is_fu
               ld_o <= "11";
4733
               ld_pc_o <= '1';
4734
               sig_SYNC <= '1';
4735
               fetch_o <= '1';
4736 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
4737 6 fpga_is_fu
               ld_o <= "11";
4738
               ld_pc_o <= '1';
4739 14 fpga_is_fu
            END IF;
4740
         WHEN s301 =>
4741
            IF (rdy_i = '1' and
4742
                zw_b3 = adr_nxt_pc_i (15 downto 8)) THEN
4743 6 fpga_is_fu
               offset_o <= (zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) &
4744
               zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(6 downto 0));
4745
               ld_o <= "11";
4746
               ld_pc_o <= '1';
4747
               sig_SYNC <= '1';
4748
               fetch_o <= '1';
4749 14 fpga_is_fu
            ELSIF (rdy_i = '1') THEN
4750 6 fpga_is_fu
               offset_o <= (zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) &
4751
               zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(6 downto 0));
4752
               ld_o <= "11";
4753
               ld_pc_o <= '1';
4754 14 fpga_is_fu
            END IF;
4755
         WHEN s302 =>
4756
            IF (rdy_i = '1') THEN
4757 6 fpga_is_fu
               sig_SYNC <= '1';
4758
               fetch_o <= '1';
4759 14 fpga_is_fu
            END IF;
4760
         WHEN RES =>
4761 6 fpga_is_fu
            sig_RWn <= '1';
4762
            sig_RD <= '1';
4763
            ld_o <= "11";
4764
            ld_pc_o <= '1';
4765
 
4766
            ld_sp_o <= '1';
4767
            sig_RWn <= '1';
4768
            sig_RD <= '1';
4769 14 fpga_is_fu
         WHEN s511 =>
4770
            IF (rdy_i = '1' and
4771
                zw_REG_OP = X"E5") THEN
4772 6 fpga_is_fu
               ld_o <= "11";
4773
               ld_pc_o <= '1';
4774 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4775 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
4776 14 fpga_is_fu
                   reg_F(3) = '0') THEN
4777 6 fpga_is_fu
               ld_o <= "11";
4778
               ld_pc_o <= '1';
4779
               d_regs_in_o <= zw_ALU(7 downto 0);
4780
               load_regs_o <= '1';
4781
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4782
               sig_SYNC <= '1';
4783
               fetch_o <= '1';
4784 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4785
                   zw_REG_OP = X"F5") THEN
4786 6 fpga_is_fu
               ch_a_o <=  d_i;
4787
               ch_b_o <= q_x_i;
4788 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4789
                   zw_REG_OP = X"ED") THEN
4790 6 fpga_is_fu
               ld_o <= "11";
4791
               ld_pc_o <= '1';
4792 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4793
                   zw_REG_OP = X"FD") THEN
4794 6 fpga_is_fu
               ld_o <= "11";
4795
               ld_pc_o <= '1';
4796
               ch_a_o <= d_i;
4797
               ch_b_o <= q_x_i;
4798 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4799
                   zw_REG_OP = X"F9") THEN
4800 6 fpga_is_fu
               ld_o <= "11";
4801
               ld_pc_o <= '1';
4802
               ch_a_o <= d_i;
4803
               ch_b_o <= q_y_i;
4804 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4805
                   zw_REG_OP = X"F1") THEN
4806 6 fpga_is_fu
               ch_a_o <= d_i;
4807
               ch_b_o <= X"01";
4808 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4809
                   zw_REG_OP = X"E1") THEN
4810 6 fpga_is_fu
               ch_a_o <=  d_i;
4811
               ch_b_o <= q_x_i;
4812 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4813 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
4814 14 fpga_is_fu
                   reg_F(3) = '1') THEN
4815 6 fpga_is_fu
               ld_o <= "11";
4816
               ld_pc_o <= '1';
4817
               d_regs_in_o <= zw_ALU(7 downto 0);
4818
               load_regs_o <= '1';
4819 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6);
4820
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5);
4821 6 fpga_is_fu
 
4822 14 fpga_is_fu
               zw_ALU6 <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4823
               zw_ALU5 <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4824 6 fpga_is_fu
 
4825 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4826
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4827 6 fpga_is_fu
 
4828 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4829
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4830 6 fpga_is_fu
               sig_SYNC <= '1';
4831
               fetch_o <= '1';
4832 14 fpga_is_fu
            END IF;
4833
         WHEN s559 =>
4834
            IF (rdy_i = '1') THEN
4835 6 fpga_is_fu
               ld_o <= "11";
4836
               ld_pc_o <= '1';
4837 14 fpga_is_fu
            END IF;
4838
         WHEN s562 =>
4839
            IF (rdy_i = '1') THEN
4840 6 fpga_is_fu
               ch_a_o <= d_i;
4841
               ch_b_o <= X"01";
4842
               ld_o <= "11";
4843
               ld_pc_o <= '1';
4844 14 fpga_is_fu
            END IF;
4845
         WHEN s567 =>
4846
            IF (rdy_i = '1') THEN
4847 6 fpga_is_fu
               ch_a_o <= d_i;
4848
               ch_b_o <= X"01";
4849
               ld_o <= "11";
4850
               ld_pc_o <= '1';
4851 14 fpga_is_fu
            END IF;
4852
         WHEN s568 =>
4853
            IF (rdy_i = '1') THEN
4854 6 fpga_is_fu
               ch_a_o <= d_i;
4855
               ch_b_o <= q_y_i;
4856 14 fpga_is_fu
            END IF;
4857
         WHEN s569 =>
4858
            IF (rdy_i = '1') THEN
4859 6 fpga_is_fu
               ld_o <= "11";
4860
               ld_pc_o <= '1';
4861 14 fpga_is_fu
            END IF;
4862
         WHEN s571 =>
4863
            IF (rdy_i = '1') THEN
4864 6 fpga_is_fu
               ch_a_o <= d_i;
4865
               ch_b_o <= X"01";
4866
               ld_o <= "11";
4867
               ld_pc_o <= '1';
4868 14 fpga_is_fu
            END IF;
4869
         WHEN s572 =>
4870
            IF (rdy_i = '1') THEN
4871 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4872
               ch_b_o <= X"01";
4873 14 fpga_is_fu
            END IF;
4874
         WHEN s573 =>
4875
            IF (rdy_i = '1' AND
4876 6 fpga_is_fu
                zw_b2(0) = '0' and
4877 14 fpga_is_fu
                reg_F(3) = '0') THEN
4878 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4879
               load_regs_o <= '1';
4880
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4881
               sig_SYNC <= '1';
4882
               fetch_o <= '1';
4883 14 fpga_is_fu
            ELSIF (rdy_i = '1' AND
4884 6 fpga_is_fu
                   zw_b2(0) = '0' and
4885 14 fpga_is_fu
                   reg_F(3) = '1') THEN
4886 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4887
               load_regs_o <= '1';
4888 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6);
4889
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5);
4890 6 fpga_is_fu
 
4891 14 fpga_is_fu
               zw_ALU6 <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4892
               zw_ALU5 <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4893 6 fpga_is_fu
 
4894 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4895
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4896 6 fpga_is_fu
 
4897 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4898
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4899 6 fpga_is_fu
               sig_SYNC <= '1';
4900
               fetch_o <= '1';
4901 14 fpga_is_fu
            END IF;
4902
         WHEN s574 =>
4903
            IF (rdy_i = '1' and
4904
                reg_F(3) = '0') THEN
4905 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4906
               load_regs_o <= '1';
4907
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4908
               sig_SYNC <= '1';
4909
               fetch_o <= '1';
4910 14 fpga_is_fu
            ELSIF (rdy_i = '1' and
4911
                   reg_F(3) = '1') THEN
4912 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4913
               load_regs_o <= '1';
4914 14 fpga_is_fu
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6);
4915
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5);
4916 6 fpga_is_fu
 
4917 14 fpga_is_fu
               zw_ALU6 <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4918
               zw_ALU5 <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4919 6 fpga_is_fu
 
4920 14 fpga_is_fu
               zw_ALU4 <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4921
               zw_ALU2 <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4922 6 fpga_is_fu
 
4923 14 fpga_is_fu
               zw_ALU3 <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4924
               zw_ALU1 <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4925 6 fpga_is_fu
               sig_SYNC <= '1';
4926
               fetch_o <= '1';
4927 14 fpga_is_fu
            END IF;
4928
         WHEN s548 =>
4929
            IF (rdy_i = '1') THEN
4930 6 fpga_is_fu
               ld_o <= "11";
4931
               ld_sp_o <= '1';
4932
               ld_pc_o <= '1';
4933
               sig_RWn <= '0';
4934
               sig_RD <= '0';
4935
               sig_WR <= '1';
4936
               sig_D_OUT <= adr_pc_i (15 downto 8);
4937 14 fpga_is_fu
            END IF;
4938
         WHEN s551 =>
4939 6 fpga_is_fu
            ld_o <= "11";
4940
            ld_sp_o <= '1';
4941
            sig_RWn <= '0';
4942
            sig_RD <= '0';
4943
            sig_WR <= '1';
4944
            sig_D_OUT <= adr_pc_i (7 downto 0);
4945 14 fpga_is_fu
         WHEN s552 =>
4946 6 fpga_is_fu
            ld_o <= "11";
4947
            ld_sp_o <= '1';
4948
            sig_RWn <= '0';
4949
            sig_RD <= '0';
4950
            sig_WR <= '1';
4951
            sig_D_OUT <= reg_F;
4952 14 fpga_is_fu
         WHEN s577 =>
4953
            IF (rdy_i = '1') THEN
4954 6 fpga_is_fu
               sig_SYNC <= '1';
4955
               fetch_o <= '1';
4956 14 fpga_is_fu
            END IF;
4957
         WHEN s532 =>
4958
            IF (rdy_i = '1') THEN
4959 6 fpga_is_fu
               ld_o <= "11";
4960
               ld_sp_o <= '1';
4961
               ld_pc_o <= '1';
4962
               sig_RWn <= '0';
4963
               sig_RD <= '0';
4964
               sig_WR <= '1';
4965
               sig_D_OUT <= adr_pc_i (15 downto 8);
4966 14 fpga_is_fu
            END IF;
4967
         WHEN s533 =>
4968 6 fpga_is_fu
            ld_o <= "11";
4969
            ld_sp_o <= '1';
4970
            sig_RWn <= '0';
4971
            sig_RD <= '0';
4972
            sig_WR <= '1';
4973
            sig_D_OUT <= adr_pc_i (7 downto 0);
4974 14 fpga_is_fu
         WHEN s534 =>
4975 6 fpga_is_fu
            ld_o <= "11";
4976
            ld_sp_o <= '1';
4977
            sig_RWn <= '0';
4978
            sig_RD <= '0';
4979
            sig_WR <= '1';
4980
            sig_D_OUT <= reg_F;
4981 14 fpga_is_fu
         WHEN s537 =>
4982
            IF (rdy_i = '1') THEN
4983 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4984
               ld_o <= "11";
4985
               ld_pc_o <= '1';
4986
               sig_SYNC <= '1';
4987
               fetch_o <= '1';
4988 14 fpga_is_fu
            END IF;
4989
         WHEN OTHERS =>
4990
            NULL;
4991
      END CASE;
4992
   END PROCESS output_proc;
4993 6 fpga_is_fu
 
4994
   -- Concurrent Statements
4995
   -- Clocked output assignments
4996
   d_o <= d_o_cld;
4997
   rd_o <= rd_o_cld;
4998
   sync_o <= sync_o_cld;
4999
   wr_n_o <= wr_n_o_cld;
5000
   wr_o <= wr_o_cld;
5001 14 fpga_is_fu
END fsm;

powered by: WebSVN 2.1.0

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