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 15

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