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 6

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

powered by: WebSVN 2.1.0

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