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

Subversion Repositories cpu65c02_true_cycle

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 7 to Rev 8
    Reverse comparison

Rev 7 → Rev 8

trunk/rtl/vhdl/fsm_core_v2_1.vhd Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/rtl/vhdl/add_sub.vhd =================================================================== --- trunk/rtl/vhdl/add_sub.vhd (revision 7) +++ trunk/rtl/vhdl/add_sub.vhd (nonexistent) @@ -1,135 +0,0 @@ --- VHDL Entity R65C02_TC.ADD_SUB.symbol --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 16:40:32 09.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; - -entity ADD_SUB is - port( - d_in : in std_logic_vector ( 7 downto 0 ) := X"00"; - reg_0F_in : in std_logic := '0'; - reg_7F_in : in std_logic := '0'; - reg_a_in : in std_logic_vector ( 7 downto 0 ) := X"00"; - sel : in std_logic_vector ( 1 downto 0 ) := "00"; - reg_0F : out std_logic := '0'; - reg_6F : out std_logic := '0'; - reg_a : out std_logic_vector ( 7 downto 0 ) := X"00"; - zw_alu : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu1 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu2 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu3 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu4 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00" - ); - --- Declarations - -end ADD_SUB ; - --- Jens-D. Gutschmidt Project: R65C02_TC --- scantara2003@yahoo.de --- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG --- --- 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 --- the Free Software Foundation, either version 3 of the License, or any later version. --- --- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along with this program. If not, see . --- --- CVS Revisins History --- --- $Log: not supported by cvs2svn $ --- --- Title: Adder and Substractor --- Path: R65C02_TC/ADD_SUB/flow --- Edited: by eda on 05 Aug 2008 --- --- VHDL Architecture R65C02_TC.ADD_SUB.flow --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 16:40:32 09.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; -architecture flow of ADD_SUB is - -begin - - ----------------------------------------------------------------- - process0_proc : process (d_in, reg_0F_in, reg_7F_in, reg_a_in, sel, zw_alu, zw_alu1, zw_alu2, zw_alu3, zw_alu4) - ----------------------------------------------------------------- - begin - case sel(1 downto 0) is - when "01" => - reg_6F <= reg_7F_in XOR zw_ALU(7); - reg_0F <= zw_ALU4(4); - reg_A <= zw_ALU(7 downto 0); - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + - unsigned (zw_ALU4(7 downto 5)); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + - unsigned (zw_ALU3(7 downto 5)); - - zw_ALU4(7 downto 5) <= (zw_ALU2(4) OR zw_ALU4(4)) & - (zw_ALU2(4) OR zw_ALU4(4)) & '0'; - zw_ALU3(7 downto 5) <= (zw_ALU1(4) OR zw_ALU3(4)) & - (zw_ALU1(4) OR zw_ALU3(4)) & '0'; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & reg_A_in(7 downto 4)) + unsigned - ('0' & D_IN(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4)); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & reg_A_in(3 downto 0)) + unsigned - ('0' & D_IN(3 downto 0)) + reg_0F_in; - when "00" => - reg_6F <= reg_7F_in XOR zw_ALU(7); - reg_0F <= zw_ALU(8); - reg_A <= zw_ALU(7 downto 0); - zw_ALU <= unsigned ('0' & reg_A_in) + unsigned ('0' & D_IN) + reg_0F_in; - when "10" => - reg_6F <= reg_7F_in XOR zw_ALU(7); - reg_0F <= zw_ALU(8); - reg_A <= zw_ALU(7 downto 0); - zw_ALU <= unsigned ('0' & reg_A_in) + unsigned ('0' & NOT (D_IN)) + reg_0F_in; - when "11" => - reg_6F <= reg_7F_in XOR zw_ALU(7); - reg_0F <= zw_ALU2(4); - reg_A <= zw_ALU(7 downto 0); - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + - unsigned ((zw_ALU4(8 downto 5))); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + - unsigned ((zw_ALU3(8 downto 5))); - - zw_ALU4(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & - (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0'; - zw_ALU3(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & - (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & reg_A_in(7 downto 4)) + unsigned - ('0' & NOT (D_IN(7 downto 4))) + zw_ALU1(4); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & reg_A_in(3 downto 0)) + unsigned - ('0' & NOT (D_IN(3 downto 0))) + reg_0F_in; - when others => - reg_6F <= reg_7F_in XOR zw_ALU(7); - reg_0F <= zw_ALU(8); - reg_A <= zw_ALU(7 downto 0); - zw_ALU <= unsigned ('0' & reg_A_in) + unsigned ('0' & D_IN) + reg_0F_in; - end case; - end process process0_proc; - - -end flow;
trunk/rtl/vhdl/add_sub.vhd Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/rtl/vhdl/alu.vhd =================================================================== --- trunk/rtl/vhdl/alu.vhd (revision 7) +++ trunk/rtl/vhdl/alu.vhd (nonexistent) @@ -1,222 +0,0 @@ --- VHDL Entity R65C02_TC.ALU.symbol --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 20:01:56 12.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; - -entity ALU is - port( - ch_a_i : in std_logic_vector (7 downto 0); - ch_b_i : in std_logic_vector (7 downto 0); - reg_0flag_core_i : in std_logic; - reg_3flag_core_i : in std_logic; - reg_7flag_core_i : in std_logic; - sel_alu_as_i : in std_logic; - sel_alu_out_i : in std_logic_vector (2 downto 0); - d_alu_o : out std_logic_vector (7 downto 0); - reg_0flag_o : out std_logic; - reg_1flag_o : out std_logic; - reg_6flag_o : out std_logic; - reg_7flag_o : out std_logic - ); - --- Declarations - -end ALU ; - --- Jens-D. Gutschmidt Project: R65C02_TC --- scantara2003@yahoo.de --- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG --- --- 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 --- the Free Software Foundation, either version 3 of the License, or any later version. --- --- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along with this program. If not, see . --- --- CVS Revisins History --- --- $Log: not supported by cvs2svn $ --- --- Title: ALU --- Path: R65C02_TC/ALU/struct --- Edited: by eda on 11 Aug 2008 --- --- VHDL Architecture R65C02_TC.ALU.struct --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 20:01:57 12.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; - -library R65C02_TC; - -architecture struct of ALU is - - -- Architecture declarations - - -- Internal signal declarations - signal decode_neg_o_i : std_logic_vector(7 downto 0); - signal decode_o_i : std_logic_vector(7 downto 0); - signal din0_o_i : std_logic; - signal din1_o_i : std_logic; - signal din2_o_i : std_logic; - signal din3_o_i : std_logic; - signal din_o_i : std_logic; - signal dout_o_i : std_logic; - signal q_a_o_i : std_logic_vector(7 downto 0); - signal q_and_o_i : std_logic_vector(7 downto 0); - signal q_or_o_i : std_logic_vector(7 downto 0); - signal q_xor_o_i : std_logic_vector(7 downto 0); - signal sel_o_i : std_logic_vector(1 downto 0); - signal val_one : std_logic_vector(7 downto 0); - signal val_two : std_logic_vector(7 downto 0); - signal val_zero : std_logic_vector(7 downto 0); - - -- Implicit buffer signal declarations - signal d_alu_o_internal : std_logic_vector (7 downto 0); - - - -- Component Declarations - component ADD_SUB - port ( - d_in : in std_logic_vector ( 7 downto 0 ) := X"00"; - reg_0F_in : in std_logic := '0'; - reg_7F_in : in std_logic := '0'; - reg_a_in : in std_logic_vector ( 7 downto 0 ) := X"00"; - sel : in std_logic_vector ( 1 downto 0 ) := "00"; - reg_0F : out std_logic := '0'; - reg_6F : out std_logic := '0'; - reg_a : out std_logic_vector ( 7 downto 0 ) := X"00"; - zw_alu : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu1 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu2 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu3 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00"; - zw_alu4 : inout std_logic_vector ( 8 downto 0 ) := '0' & X"00" - ); - end component; - - -- Optional embedded configurations - -- pragma synthesis_off - for all : ADD_SUB use entity R65C02_TC.ADD_SUB; - -- pragma synthesis_on - - -begin - -- Architecture concurrent statements - -- HDL Embedded Text Block 3 eb3 - -- eb1 1 - val_zero (7 downto 0) <= X"00"; - val_one (7 downto 0) <= X"01"; - val_two (7 downto 0) <= X"02"; - sel_o_i(0) <= reg_3flag_core_i AND sel_alu_out_i(0); - sel_o_i(1) <= sel_alu_as_i; - - - - -- ModuleWare code(v1.9) for instance 'U_15' of 'decoder1' - u_15combo_proc: process (ch_a_i(2 DOWNTO 0)) - begin - decode_o_i <= (others => '0'); - case ch_a_i(2 DOWNTO 0) is - when "000" => decode_o_i(0) <= '1'; - when "001" => decode_o_i(1) <= '1'; - when "010" => decode_o_i(2) <= '1'; - when "011" => decode_o_i(3) <= '1'; - when "100" => decode_o_i(4) <= '1'; - when "101" => decode_o_i(5) <= '1'; - when "110" => decode_o_i(6) <= '1'; - when "111" => decode_o_i(7) <= '1'; - when others => decode_o_i <= (others => '0'); - end case; - end process u_15combo_proc; - - -- ModuleWare code(v1.9) for instance 'U_4' of 'inv' - decode_neg_o_i <= not(decode_o_i); - - -- ModuleWare code(v1.9) for instance 'U_8' of 'inv' - reg_1flag_o <= not(din_o_i); - - -- ModuleWare code(v1.9) for instance 'U_9' of 'inv' - reg_7flag_o <= not(din1_o_i); - - -- ModuleWare code(v1.9) for instance 'U_10' of 'inv' - din1_o_i <= not(d_alu_o_internal(7)); - - -- ModuleWare code(v1.9) for instance 'U_14' of 'inv' - din3_o_i <= not(sel_alu_out_i(0)); - - -- ModuleWare code(v1.9) for instance 'U_5' of 'mux' - u_5combo_proc: process(q_and_o_i, q_or_o_i, q_xor_o_i, decode_o_i, - decode_neg_o_i, q_a_o_i, val_zero, - sel_alu_out_i) - begin - case sel_alu_out_i is - when "000" => d_alu_o_internal <= q_and_o_i; - when "001" => d_alu_o_internal <= q_or_o_i; - when "010" => d_alu_o_internal <= q_xor_o_i; - when "011" => d_alu_o_internal <= decode_o_i; - when "100" => d_alu_o_internal <= decode_neg_o_i; - when "101" => d_alu_o_internal <= q_a_o_i; - when "110" => d_alu_o_internal <= q_a_o_i; - when "111" => d_alu_o_internal <= val_zero; - when others => d_alu_o_internal <= (others => 'X'); - end case; - end process u_5combo_proc; - - -- ModuleWare code(v1.9) for instance 'U_7' of 'por' - din_o_i <= d_alu_o_internal(0) or d_alu_o_internal(1) or d_alu_o_internal(2) or d_alu_o_internal(3) or d_alu_o_internal(4) or d_alu_o_internal(5) or d_alu_o_internal(6) or d_alu_o_internal(7); - - -- ModuleWare code(v1.9) for instance 'U_0' of 'sand' - q_and_o_i <= ch_a_i and ch_b_i; - - -- ModuleWare code(v1.9) for instance 'U_11' of 'sand' - din0_o_i <= sel_alu_out_i(0) and reg_0flag_core_i; - - -- ModuleWare code(v1.9) for instance 'U_13' of 'sand' - din2_o_i <= din3_o_i and sel_alu_as_i; - - -- ModuleWare code(v1.9) for instance 'U_1' of 'sor' - q_or_o_i <= ch_a_i or ch_b_i; - - -- ModuleWare code(v1.9) for instance 'U_12' of 'sor' - dout_o_i <= din0_o_i or din2_o_i; - - -- ModuleWare code(v1.9) for instance 'U_2' of 'sxor' - q_xor_o_i <= ch_a_i xor ch_b_i; - - -- Instance port mappings. - U_6 : ADD_SUB - port map ( - d_in => ch_b_i, - reg_0F_in => dout_o_i, - reg_7F_in => reg_7flag_core_i, - reg_a_in => ch_a_i, - sel => sel_o_i, - reg_0F => reg_0flag_o, - reg_6F => reg_6flag_o, - reg_a => q_a_o_i, - zw_alu => open, - zw_alu1 => open, - zw_alu2 => open, - zw_alu3 => open, - zw_alu4 => open - ); - - -- Implicit buffered output assignments - d_alu_o <= d_alu_o_internal; - -end struct;
trunk/rtl/vhdl/alu.vhd Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/rtl/vhdl/fsm_core_v2_0.vhd =================================================================== --- trunk/rtl/vhdl/fsm_core_v2_0.vhd (revision 7) +++ trunk/rtl/vhdl/fsm_core_v2_0.vhd (nonexistent) @@ -1,6066 +0,0 @@ --- VHDL Entity R65C02_TC.fsm_core_V2_0.symbol --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 19:53:12 05.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; - -entity fsm_core_V2_0 is - port( - CLK : in std_logic; - D_IN : in std_logic_vector ( 7 downto 0 ); - IRQn : in std_logic; - NMI : in std_logic; - RDY : in std_logic; - RSTn : in std_logic; - S_O : in std_logic; - adr_PC : in std_logic_vector (15 downto 0); - adr_SP : in std_logic_vector (15 downto 0); - adr_nxt_PC : in std_logic_vector (15 downto 0); - adr_nxt_SP : in std_logic_vector (15 downto 0); - cout_PC : in std_logic; - d_ALU : in std_logic_vector ( 7 downto 0 ); - d_REGS : in std_logic_vector ( 7 downto 0 ); - q_a : in std_logic_vector ( 7 downto 0 ); - q_x : in std_logic_vector ( 7 downto 0 ); - q_y : in std_logic_vector ( 7 downto 0 ); - reg_0F : in std_logic; - reg_1F : in std_logic; - reg_6F : in std_logic; - reg_7F : in std_logic; - A : out std_logic_vector (15 downto 0); - D_OUT : out std_logic_vector ( 7 downto 0 ); - RD : out std_logic; - RWn : out std_logic; - SYNC : out std_logic; - WR : out std_logic; - a_ALU : out std_logic_vector ( 7 downto 0 ); - adr_out : out std_logic_vector (15 downto 0); - b_ALU : out std_logic_vector ( 7 downto 0 ); - d_REGS_out : out std_logic_vector ( 7 downto 0 ); - ld : out std_logic_vector ( 1 downto 0 ); - ld_PC : out std_logic; - ld_SP : out std_logic; - load_REGS : out std_logic; - offset : out std_logic_vector ( 15 downto 0 ); - reg_0F_out : out std_logic; - reg_1F_out : out std_logic; - reg_3F_out : out std_logic; - reg_7F_out : out std_logic; - sel_ALU_as : inout std_logic; - sel_ALU_out : inout std_logic_vector ( 2 downto 0 ); - sel_PC_as : inout std_logic; - sel_PC_in : inout std_logic_vector ( 1 downto 0 ); - sel_PC_val : inout std_logic_vector ( 1 downto 0 ); - sel_RB_in : inout std_logic_vector ( 2 downto 0 ); - sel_RB_out : inout std_logic_vector ( 2 downto 0 ); - sel_SP_as : inout std_logic; - sel_SP_in : inout std_logic_vector ( 1 downto 0 ); - sel_SP_val : inout std_logic_vector ( 1 downto 0 ); - sel_reg : inout std_logic_vector ( 1 downto 0 ) - ); - --- Declarations - -end fsm_core_V2_0 ; - --- Jens-D. Gutschmidt Project: R65C02_TC - --- scantara2003@yahoo.de - --- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG - --- - --- 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 - --- the Free Software Foundation, either version 3 of the License, or any later version. - --- - --- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - --- - --- You should have received a copy of the GNU General Public License along with this program. If not, see . - --- - --- CVS Revisins History - --- - --- $Log: not supported by cvs2svn $ - --- - --- Title: FSM for all op codes - --- Path: R65C02_TC/fsm_core_V2_0/fsm - --- Edited: by eda on 05 Aug 2008 - --- --- VHDL Architecture R65C02_TC.fsm_core_V2_0.fsm --- --- Created: --- by - eda.UNKNOWN (ENTWICKL4-XP-PR) --- at - 19:53:18 05.08.2008 --- --- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13) --- -LIBRARY ieee; -USE ieee.std_logic_1164.all; -USE ieee.std_logic_arith.all; - -architecture fsm of fsm_core_V2_0 is - - -- Architecture Declarations - signal reg_F : std_logic_vector( 7 DOWNTO 0 ); - signal reg_PC : std_logic_vector(15 DOWNTO 0); - signal reg_PC1 : std_logic_vector( 15 DOWNTO 0 ); - signal sig_D_OUT : std_logic_vector( 7 DOWNTO 0 ); - signal sig_PC : std_logic_vector(15 DOWNTO 0); - signal sig_RD : std_logic; - signal sig_RWn : std_logic; - signal sig_SYNC : std_logic; - signal sig_WR : std_logic; - signal zw_ALU : std_logic_vector( 8 DOWNTO 0 ); - signal zw_ALU1 : std_logic_vector( 8 DOWNTO 0 ); - signal zw_ALU2 : std_logic_vector( 8 DOWNTO 0 ); - signal zw_ALU3 : std_logic_vector( 8 DOWNTO 0 ); - signal zw_ALU4 : std_logic_vector( 8 DOWNTO 0 ); - signal zw_PC : std_logic_vector( 15 DOWNTO 0 ); - signal zw_REG_ALU : std_logic_vector( 8 DOWNTO 0 ); - signal zw_REG_NMI : std_logic; - signal zw_REG_OP : std_logic_vector( 7 DOWNTO 0 ); - signal zw_REG_sig_PC : std_logic_vector(15 DOWNTO 0); - signal zw_b1 : std_logic_vector( 7 DOWNTO 0 ); - signal zw_b2 : std_logic_vector( 7 DOWNTO 0 ); - signal zw_b3 : std_logic_vector( 7 DOWNTO 0 ); - signal zw_b4 : std_logic_vector( 7 DOWNTO 0 ); - signal zw_w1 : std_logic_vector( 15 DOWNTO 0 ); - signal zw_w2 : std_logic_vector( 15 DOWNTO 0 ); - signal zw_w3 : std_logic_vector( 15 DOWNTO 0 ); - - subtype state_type is - std_logic_vector(7 downto 0); - - -- State vector declaration - attribute state_vector : string; - attribute state_vector of fsm : architecture is "current_state"; - - -- Hard encoding - constant FETCH : state_type := "00000000"; - constant s1 : state_type := "00000001"; - constant s2 : state_type := "00000011"; - constant s5 : state_type := "00000010"; - constant s3 : state_type := "00000110"; - constant s4 : state_type := "00000111"; - constant s12 : state_type := "00000101"; - constant s16 : state_type := "00000100"; - constant s17 : state_type := "00001100"; - constant s24 : state_type := "00001101"; - constant s271 : state_type := "00001111"; - constant s273 : state_type := "00001110"; - constant s304 : state_type := "00001010"; - constant s307 : state_type := "00001011"; - constant s177 : state_type := "00001001"; - constant s180 : state_type := "00001000"; - constant s181 : state_type := "00011000"; - constant s183 : state_type := "00011001"; - constant s184 : state_type := "00011011"; - constant s185 : state_type := "00011010"; - constant s186 : state_type := "00011110"; - constant s187 : state_type := "00011111"; - constant s188 : state_type := "00011101"; - constant s189 : state_type := "00011100"; - constant s190 : state_type := "00010100"; - constant s191 : state_type := "00010101"; - constant s192 : state_type := "00010111"; - constant s193 : state_type := "00010110"; - constant s377 : state_type := "00010010"; - constant s381 : state_type := "00010011"; - constant s378 : state_type := "00010001"; - constant s382 : state_type := "00010000"; - constant s379 : state_type := "00110000"; - constant s383 : state_type := "00110001"; - constant s384 : state_type := "00110011"; - constant s380 : state_type := "00110010"; - constant s385 : state_type := "00110110"; - constant s386 : state_type := "00110111"; - constant s387 : state_type := "00110101"; - constant s388 : state_type := "00110100"; - constant s389 : state_type := "00111100"; - constant s391 : state_type := "00111101"; - constant s392 : state_type := "00111111"; - constant s390 : state_type := "00111110"; - constant s393 : state_type := "00111010"; - constant s394 : state_type := "00111011"; - constant s395 : state_type := "00111001"; - constant s396 : state_type := "00111000"; - constant s397 : state_type := "00101000"; - constant s398 : state_type := "00101001"; - constant s399 : state_type := "00101011"; - constant s400 : state_type := "00101010"; - constant s401 : state_type := "00101110"; - constant s526 : state_type := "00101111"; - constant s527 : state_type := "00101101"; - constant s528 : state_type := "00101100"; - constant s529 : state_type := "00100100"; - constant s530 : state_type := "00100101"; - constant s531 : state_type := "00100111"; - constant s544 : state_type := "00100110"; - constant s545 : state_type := "00100010"; - constant s546 : state_type := "00100011"; - constant s547 : state_type := "00100001"; - constant s549 : state_type := "00100000"; - constant s550 : state_type := "01100000"; - constant s404 : state_type := "01100001"; - constant s556 : state_type := "01100011"; - constant s557 : state_type := "01100010"; - constant s579 : state_type := "01100110"; - constant s201 : state_type := "01100111"; - constant s202 : state_type := "01100101"; - constant s211 : state_type := "01100100"; - constant s215 : state_type := "01101100"; - constant s217 : state_type := "01101101"; - constant s218 : state_type := "01101111"; - constant s222 : state_type := "01101110"; - constant s223 : state_type := "01101010"; - constant s224 : state_type := "01101011"; - constant s225 : state_type := "01101001"; - constant s226 : state_type := "01101000"; - constant s243 : state_type := "01111000"; - constant s244 : state_type := "01111001"; - constant s247 : state_type := "01111011"; - constant s344 : state_type := "01111010"; - constant s343 : state_type := "01111110"; - constant s250 : state_type := "01111111"; - constant s251 : state_type := "01111101"; - constant s360 : state_type := "01111100"; - constant s403 : state_type := "01110100"; - constant s406 : state_type := "01110101"; - constant s407 : state_type := "01110111"; - constant s409 : state_type := "01110110"; - constant s412 : state_type := "01110010"; - constant s413 : state_type := "01110011"; - constant s416 : state_type := "01110001"; - constant s418 : state_type := "01110000"; - constant s510 : state_type := "01010000"; - constant s553 : state_type := "01010001"; - constant s555 : state_type := "01010011"; - constant s558 : state_type := "01010010"; - constant s560 : state_type := "01010110"; - constant s561 : state_type := "01010111"; - constant s563 : state_type := "01010101"; - constant s564 : state_type := "01010100"; - constant s565 : state_type := "01011100"; - constant s566 : state_type := "01011101"; - constant s266 : state_type := "01011111"; - constant s301 : state_type := "01011110"; - constant s302 : state_type := "01011010"; - constant RES : state_type := "01011011"; - constant s511 : state_type := "01011001"; - constant s559 : state_type := "01011000"; - constant s567 : state_type := "01001000"; - constant s568 : state_type := "01001001"; - constant s569 : state_type := "01001011"; - constant s570 : state_type := "01001010"; - constant s571 : state_type := "01001110"; - constant s572 : state_type := "01001111"; - constant s573 : state_type := "01001101"; - constant s574 : state_type := "01001100"; - constant s548 : state_type := "01000100"; - constant s551 : state_type := "01000101"; - constant s552 : state_type := "01000111"; - constant s575 : state_type := "01000110"; - constant s576 : state_type := "01000010"; - constant s577 : state_type := "01000011"; - constant s532 : state_type := "01000001"; - constant s533 : state_type := "01000000"; - constant s534 : state_type := "11000000"; - constant s535 : state_type := "11000001"; - constant s536 : state_type := "11000011"; - constant s537 : state_type := "11000010"; - constant s274 : state_type := "11000110"; - constant s305 : state_type := "11000111"; - constant s203 : state_type := "11000101"; - constant s212 : state_type := "11000100"; - constant s219 : state_type := "11001100"; - constant s227 : state_type := "11001101"; - constant s228 : state_type := "11001111"; - constant s267 : state_type := "11001110"; - constant s268 : state_type := "11001010"; - constant s269 : state_type := "11001011"; - constant s578 : state_type := "11001001"; - constant s580 : state_type := "11001000"; - constant s25 : state_type := "11011000"; - - -- Declare current and next state signals - signal current_state : state_type; - signal next_state : state_type; - - -- Declare any pre-registered internal signals - signal D_OUT_cld : std_logic_vector ( 7 downto 0 ); - signal RD_cld : std_logic ; - signal RWn_cld : std_logic ; - signal SYNC_cld : std_logic ; - signal WR_cld : std_logic ; - signal sel_ALU_as_cld : std_logic ; - signal sel_ALU_out_cld : std_logic_vector ( 2 downto 0 ); - signal sel_PC_as_cld : std_logic ; - signal sel_PC_in_cld : std_logic_vector ( 1 downto 0 ); - signal sel_PC_val_cld : std_logic_vector ( 1 downto 0 ); - signal sel_RB_in_cld : std_logic_vector ( 2 downto 0 ); - signal sel_RB_out_cld : std_logic_vector ( 2 downto 0 ); - signal sel_SP_as_cld : std_logic ; - signal sel_SP_in_cld : std_logic_vector ( 1 downto 0 ); - signal sel_SP_val_cld : std_logic_vector ( 1 downto 0 ); - signal sel_reg_cld : std_logic_vector ( 1 downto 0 ); - -begin - - ----------------------------------------------------------------- - clocked_proc : process ( - CLK, - RSTn - ) - ----------------------------------------------------------------- - begin - if (RSTn = '0') then - current_state <= RES; - -- Default Reset Values - D_OUT_cld <= X"00"; - RD_cld <= '0'; - RWn_cld <= '1'; - SYNC_cld <= '0'; - WR_cld <= '0'; - sel_ALU_as_cld <= '0'; - sel_ALU_out_cld <= "000"; - sel_PC_as_cld <= '0'; - sel_PC_in_cld <= "00"; - sel_PC_val_cld <= "00"; - sel_RB_in_cld <= "000"; - sel_RB_out_cld <= "000"; - sel_SP_as_cld <= '0'; - sel_SP_in_cld <= "00"; - sel_SP_val_cld <= "00"; - sel_reg_cld <= "00"; - reg_F <= "00000100"; - reg_PC <= X"0000"; - reg_PC1 <= X"0000"; - sig_PC <= X"0000"; - zw_PC <= X"0000"; - zw_REG_ALU <= '0' & X"00"; - zw_REG_NMI <= '0'; - zw_REG_OP <= X"00"; - zw_REG_sig_PC <= X"0000"; - zw_b1 <= X"00"; - zw_b2 <= X"00"; - zw_b3 <= X"00"; - zw_b4 <= X"00"; - zw_w1 <= X"0000"; - zw_w2 <= X"0000"; - zw_w3 <= X"0000"; - elsif (CLK'event and CLK = '1') then - current_state <= next_state; - -- Default Assignment To Internals - reg_F <= reg_F; - reg_PC <= reg_PC; - reg_PC1 <= reg_PC1; - sig_PC <= sig_PC; - zw_PC <= zw_PC; - zw_REG_ALU <= zw_REG_ALU; - zw_REG_NMI <= zw_REG_NMI or NMI; - zw_REG_OP <= zw_REG_OP; - zw_REG_sig_PC <= zw_REG_sig_PC; - zw_b1 <= zw_b1; - zw_b2 <= zw_b2; - zw_b3 <= zw_b3; - zw_b4 <= zw_b4; - zw_w1 <= zw_w1; - zw_w2 <= zw_w2; - zw_w3 <= zw_w3; - D_OUT_cld <= sig_D_OUT; - RD_cld <= sig_RD; - RWn_cld <= sig_RWn; - SYNC_cld <= sig_SYNC; - WR_cld <= sig_WR; - sel_ALU_as_cld <= sel_ALU_as; - sel_ALU_out_cld <= sel_ALU_out; - sel_PC_as_cld <= sel_PC_as; - sel_PC_in_cld <= sel_PC_in; - sel_PC_val_cld <= sel_PC_val; - sel_RB_in_cld <= sel_RB_in; - sel_RB_out_cld <= sel_RB_out; - sel_SP_as_cld <= sel_SP_as; - sel_SP_in_cld <= sel_SP_in; - sel_SP_val_cld <= sel_SP_val; - sel_reg_cld <= sel_reg; - - -- Combined Actions - case current_state is - when FETCH => - zw_REG_OP <= D_IN; - if ((zw_REG_NMI = '1') and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - zw_REG_NMI <= '0'; - elsif ((IRQn = '0' and - reg_F(2) = '0') and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"69" or - D_IN = X"65" or - D_IN = X"75" or - D_IN = X"6D" or - D_IN = X"7D" or - D_IN = X"79" or - D_IN = X"61" or - D_IN = X"71" or - D_IN = X"72") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - zw_b1(0) <= reg_F(7); - elsif ((D_IN = X"06" or - D_IN = X"16" or - D_IN = X"0E" or - D_IN = X"1E" or - D_IN (3 downto 0) = X"7" or - D_IN = X"14" or - D_IN = X"04" or - D_IN = X"0C" or - D_IN = X"1C") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"90" or - D_IN = X"B0" or - D_IN = X"F0" or - D_IN = X"30" or - D_IN = X"D0" or - D_IN = X"10" or - D_IN = X"50" or - D_IN = X"70" or - D_IN = X"80" or - D_IN (3 downto 0) = X"F") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - zw_b3 <= adr_nxt_PC (15 downto 8); - elsif ((D_IN = X"24" or - D_IN = X"2C" or - D_IN = X"3C" or - D_IN = X"34" or - D_IN = X"89") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"00") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"18") and (RDY = '1')) then - elsif ((D_IN = X"D8") and (RDY = '1')) then - elsif ((D_IN = X"58") and (RDY = '1')) then - elsif ((D_IN = X"B8") and (RDY = '1')) then - elsif ((D_IN = X"E0" or - D_IN = X"E4" or - D_IN = X"EC") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"C0" or - D_IN = X"C4" or - D_IN = X"CC") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"C6" or - D_IN = X"D6" or - D_IN = X"CE" or - D_IN = X"DE") and (RDY = '1')) then - zw_b4 <= X"FF"; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"CA") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_reg_cld <= "01"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"FF"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"88") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sel_reg_cld <= "10"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"FF"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"49" or - D_IN = X"45" or - D_IN = X"55" or - D_IN = X"4D" or - D_IN = X"5D" or - D_IN = X"59" or - D_IN = X"41" or - D_IN = X"51" or - D_IN = X"09" or - D_IN = X"05" or - D_IN = X"15" or - D_IN = X"0D" or - D_IN = X"1D" or - D_IN = X"19" or - D_IN = X"01" or - D_IN = X"11" or - D_IN = X"29" or - D_IN = X"25" or - D_IN = X"35" or - D_IN = X"2D" or - D_IN = X"3D" or - D_IN = X"39" or - D_IN = X"21" or - D_IN = X"31" or - D_IN = X"C9" or - D_IN = X"C5" or - D_IN = X"D5" or - D_IN = X"CD" or - D_IN = X"DD" or - D_IN = X"D9" or - D_IN = X"C1" or - D_IN = X"D1" or - D_IN = X"32" or - D_IN = X"D2" or - D_IN = X"52" or - D_IN = X"12") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"E6" or - D_IN = X"F6" or - D_IN = X"EE" or - D_IN = X"FE") and (RDY = '1')) then - zw_b4 <= X"01"; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"E8") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_reg_cld <= "01"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"01"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"C8") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sel_reg_cld <= "10"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"01"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"4C" or - D_IN = X"6C" or - D_IN = X"7C") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"20") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"A9" or - D_IN = X"A5" or - D_IN = X"B5" or - D_IN = X"AD" or - D_IN = X"BD" or - D_IN = X"B9" or - D_IN = X"A1" or - D_IN = X"B1" or - D_IN = X"B2") and (RDY = '1')) then - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"A2" or - D_IN = X"A6" or - D_IN = X"B6" or - D_IN = X"AE" or - D_IN = X"BE") and (RDY = '1')) then - sel_reg_cld <= "01"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"A0" or - D_IN = X"A4" or - D_IN = X"B4" or - D_IN = X"AC" or - D_IN = X"BC") and (RDY = '1')) then - sel_reg_cld <= "10"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"46" or - D_IN = X"56" or - D_IN = X"4E" or - D_IN = X"5E") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"EA") and (RDY = '1')) then - elsif ((D_IN = X"48") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"08") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"7A") and (RDY = '1')) then - sel_reg_cld <= "10"; - sel_RB_in_cld <= "011"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"28") and (RDY = '1')) then - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"26" or - D_IN = X"36" or - D_IN = X"2E" or - D_IN = X"3E") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"66" or - D_IN = X"76" or - D_IN = X"6E" or - D_IN = X"7E") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"40") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"60") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"E9" or - D_IN = X"E5" or - D_IN = X"F5" or - D_IN = X"ED" or - D_IN = X"FD" or - D_IN = X"F9" or - D_IN = X"E1" or - D_IN = X"F1" or - D_IN = X"F2") and (RDY = '1')) then - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - zw_b1(0) <= reg_F(7); - elsif ((D_IN = X"38") and (RDY = '1')) then - elsif ((D_IN = X"F8") and (RDY = '1')) then - elsif ((D_IN = X"78") and (RDY = '1')) then - elsif ((D_IN = X"85" or - D_IN = X"95" or - D_IN = X"8D" or - D_IN = X"9D" or - D_IN = X"99" or - D_IN = X"81" or - D_IN = X"91" or - D_IN = X"11") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"86" or - D_IN = X"96" or - D_IN = X"8E") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"84" or - D_IN = X"94" or - D_IN = X"8C") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"AA") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "01"; - sel_RB_in_cld <= "000"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"0A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"4A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"2A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"6A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"A8") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "10"; - sel_RB_in_cld <= "000"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"98") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "001"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"BA") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_reg_cld <= "01"; - sel_RB_in_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"8A") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "010"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"9A") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sel_reg_cld <= "11"; - sel_RB_in_cld <= "111"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sel_SP_in_cld <= "01"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - elsif ((D_IN = X"DA") and (RDY = '1')) then - sel_RB_out_cld <= "001"; - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"5A") and (RDY = '1')) then - sel_RB_out_cld <= "010"; - sig_PC <= adr_nxt_PC; - elsif ((D_IN = X"68") and (RDY = '1')) then - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"FA") and (RDY = '1')) then - sel_reg_cld <= "01"; - sel_RB_in_cld <= "011"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '0'; - sel_SP_val_cld <= "00"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"9C" or - D_IN = X"9E" or - D_IN = X"64" or - D_IN = X"74") and (RDY = '1')) then - sel_RB_out_cld <= "011"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"3A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"FF"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - elsif ((D_IN = X"1A") and (RDY = '1')) then - sel_RB_out_cld <= "000"; - sel_reg_cld <= "00"; - sel_RB_in_cld <= "011"; - zw_b4 <= X"01"; - sel_ALU_out_cld <= "110"; - sel_ALU_as_cld <= '0'; - end if; - when s1 => - if (RDY = '1') then - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s2 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= '1'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s5 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(3) <= '1'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s3 => - sig_PC <= adr_PC; - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(2) <= '1'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s4 => - if (RDY = '1' and - zw_REG_OP = X"9A") then - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - zw_REG_OP = X"BA") then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s12 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= '0'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s16 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(3) <= '0'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s17 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(2) <= '0'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s24 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(6) <= '0'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s271 => - if (RDY = '1' and - zw_REG_OP = X"4C") then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "11"; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"6C") then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"7C") then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "10"; - zw_b1 <= D_IN; - end if; - when s273 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - end if; - when s304 => - if (RDY = '1') then - sig_PC <= adr_PC; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "11"; - zw_b1 <= D_IN; - end if; - when s307 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s177 => - if (RDY = '1' and - (zw_REG_OP = X"85" OR - zw_REG_OP = X"86" OR - zw_REG_OP = X"64" OR - zw_REG_OP = X"84")) then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"95" OR - zw_REG_OP = X"74" OR - zw_REG_OP = X"94")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - (zw_REG_OP = X"8D" OR - zw_REG_OP = X"8E" OR - zw_REG_OP = X"9C" OR - zw_REG_OP = X"8C")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"9D" OR - zw_REG_OP = X"9E")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"99") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"91") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - elsif (RDY = '1' and - zw_REG_OP = X"81") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"96") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"92") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - end if; - when s180 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s181 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - end if; - when s183 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s184 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s185 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s186 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s187 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s188 => - if (RDY = '1') then - sig_PC <= X"00" & d_ALU; - zw_b1 <= D_IN; - end if; - when s189 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s190 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s191 => - sig_PC <= zw_b3 & zw_b1; - when s192 => - sig_PC <= D_IN & zw_b1; - when s193 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s377 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s381 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s378 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s382 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s383 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s384 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s385 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s386 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F <= D_IN; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s387 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s388 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s389 => - if (RDY = '1') then - sig_PC <= adr_SP; - reg_F <= D_IN; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "11"; - end if; - when s391 => - if (RDY = '1') then - sig_PC <= adr_SP; - zw_b1 <= D_IN; - end if; - when s392 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s390 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s393 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s394 => - if (RDY = '1') then - sig_PC <= adr_SP; - zw_b1 <= D_IN; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - end if; - when s395 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s396 => - if (RDY = '1') then - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s397 => - if (RDY = '1') then - sig_PC <= adr_SP; - zw_b1 <= D_IN; - end if; - when s399 => - sig_PC <= adr_SP; - when s400 => - sig_PC <= adr_PC; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "11"; - when s401 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1 (7 downto 0); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s526 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s527 => - sig_PC <= adr_SP; - when s528 => - sig_PC <= adr_SP; - when s529 => - sig_PC <= X"FFFE"; - when s530 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - reg_F(4) <= '1'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s531 => - if (RDY = '1') then - sig_PC <= X"FFFF"; - zw_b1 <= D_IN; - end if; - when s544 => - sig_PC <= adr_SP; - when s545 => - sig_PC <= adr_SP; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - when s546 => - sig_PC <= adr_PC; - when s547 => - if (RDY = '1') then - sig_PC <= adr_PC; - zw_w1 (7 downto 0) <= D_IN; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "11"; - end if; - when s549 => - if (RDY = '1') then - sig_PC <= D_IN & zw_w1 (7 downto 0); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s550 => - sig_PC <= adr_SP; - sel_PC_in_cld <= "01"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - when s404 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= q_a(7); - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s556 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= q_a(0); - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s557 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= q_a(7); - reg_F(0) <= q_a(7); - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s579 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(0) <= q_a(0); - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s201 => - if (RDY = '1' and - (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR - zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR - zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR - zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then - sig_PC <= X"00" & D_IN; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - sig_PC <= adr_nxt_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - sig_PC <= adr_nxt_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - sig_PC <= adr_nxt_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - sig_PC <= adr_nxt_PC; - reg_F(7) <= zw_ALU(7); - reg_F(0) <= zw_ALU(8); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - (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 - zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then - sig_PC <= adr_nxt_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - (zw_REG_OP = X"B5" OR - zw_REG_OP = X"B4" OR - zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR - zw_REG_OP = X"35" OR - zw_REG_OP = X"D5")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - (zw_REG_OP = X"AD" OR - zw_REG_OP = X"AE" OR - zw_REG_OP = X"AC" OR - zw_REG_OP = X"4D" OR - zw_REG_OP = X"0D" OR - zw_REG_OP = X"2D" OR - zw_REG_OP = X"CD" OR - zw_REG_OP = X"EC" OR - zw_REG_OP = X"CC")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"BD" OR - zw_REG_OP = X"BC" OR - zw_REG_OP = X"5D" OR - zw_REG_OP = X"1D" OR - zw_REG_OP = X"3D" OR - zw_REG_OP = X"DD")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - (zw_REG_OP = X"B9" OR - zw_REG_OP = X"BE" OR - zw_REG_OP = X"59" OR - zw_REG_OP = X"19" OR - zw_REG_OP = X"39" OR - zw_REG_OP = X"D9")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - (zw_REG_OP = X"B1" OR - zw_REG_OP = X"51" OR - zw_REG_OP = X"11" OR - zw_REG_OP = X"31" OR - zw_REG_OP = X"D1")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - elsif (RDY = '1' and - (zw_REG_OP = X"A1" OR - zw_REG_OP = X"41" OR - zw_REG_OP = X"01" OR - zw_REG_OP = X"21" OR - zw_REG_OP = X"C1")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"B6") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - (zw_REG_OP = X"32" OR - zw_REG_OP = X"D2" OR - zw_REG_OP = X"52" OR - zw_REG_OP = X"B2" OR - zw_REG_OP = X"12")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - end if; - when s202 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s211 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s215 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - end if; - when s217 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s218 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s222 => - if (RDY = '1') then - sig_PC <= X"00" & d_ALU; - zw_b1 <= D_IN; - end if; - when s223 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s224 => - if ((RDY = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - sig_PC <= adr_PC; - reg_F(7) <= zw_ALU(7); - reg_F(0) <= zw_ALU(8); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s225 => - if ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - sig_PC <= adr_PC; - reg_F(7) <= zw_ALU(7); - reg_F(0) <= zw_ALU(8); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' AND - zw_b2(0) = '0') then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s226 => - if (RDY = '1' and - (zw_REG_OP = X"C6" OR - zw_REG_OP = X"E6")) then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"D6" OR - zw_REG_OP = X"F6")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - (zw_REG_OP = X"CE" OR - zw_REG_OP = X"EE")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"DE" OR - zw_REG_OP = X"FE")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - end if; - when s243 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s244 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s247 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s344 => - if (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s343 => - if (RDY = '1') then - zw_b1 <= d_ALU; - end if; - when s251 => - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s360 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s403 => - if (RDY = '1' and - (zw_REG_OP = X"1E" or - zw_REG_OP = X"7E" or - zw_REG_OP = X"3E" or - zw_REG_OP = X"5E")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - (zw_REG_OP = X"06" or zw_REG_OP = X"66" or - zw_REG_OP = X"26" or zw_REG_OP = X"46" or - zw_REG_OP = X"04" or zw_REG_OP = X"14")) then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - (zw_REG_OP = X"16" or - zw_REG_OP = X"76" or - zw_REG_OP = X"36" or - zw_REG_OP = X"56")) then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - (zw_REG_OP = X"0E" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"4E"or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP (3 downto 0) = X"7") then - sig_PC <= X"00" & D_IN; - sel_ALU_out_cld <= "011"; - sel_ALU_as_cld <= '0'; - end if; - when s406 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s407 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s409 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s412 => - if (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s416 => - if (RDY = '1' and - (zw_REG_OP = X"06" or - zw_REG_OP = X"16" or - zw_REG_OP = X"0E" or - zw_REG_OP = X"1E")) then - zw_b1 <= D_IN(6 downto 0) & '0'; - zw_b2(0) <= D_IN(7); - elsif (RDY = '1' and - (zw_REG_OP = X"46" or - zw_REG_OP = X"56" or - zw_REG_OP = X"4E" or - zw_REG_OP = X"5E")) then - zw_b1 <= '0' & D_IN(7 downto 1); - zw_b2(0) <= D_IN(0); - elsif (RDY = '1' and - (zw_REG_OP = X"26" or - zw_REG_OP = X"36" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"3E")) then - zw_b1 <= D_IN(6 downto 0) & reg_F(0); - zw_b2(0) <= D_IN(7); - elsif (RDY = '1' and - (zw_REG_OP = X"66" or - zw_REG_OP = X"76" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"7E")) then - zw_b1 <= reg_F(0) & D_IN(7 downto 1); - zw_b2(0) <= D_IN(0); - elsif (RDY = '1' and - zw_REG_OP (7) = '0' and - zw_REG_OP (3 downto 0) = X"7") then - elsif (RDY = '1' and - zw_REG_OP (7) = '1' and - zw_REG_OP (3 downto 0) = X"7") then - elsif (RDY = '1' and - (zw_REG_OP = X"14" or - zw_REG_OP = X"1C")) then - zw_b1 <= D_IN and q_a; - elsif (RDY = '1' and - (zw_REG_OP = X"04" or - zw_REG_OP = X"0C")) then - zw_b1 <= D_IN and q_a; - end if; - when s418 => - if (zw_REG_OP (3 downto 0) = X"7") then - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif ((zw_REG_OP = X"14" or - zw_REG_OP = X"04" or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - reg_F(1) <= reg_1F; - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - else - reg_F(0) <= zw_b2(0); - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s510 => - if (RDY = '1' and - zw_REG_OP = X"65") then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '0') then - sig_PC <= adr_nxt_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - zw_REG_OP = X"75") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"6D") then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"7D") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"79") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"71") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - elsif (RDY = '1' and - zw_REG_OP = X"61") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '1') then - sig_PC <= adr_nxt_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU4(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - zw_REG_OP = X"72") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - end if; - when s553 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s555 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s558 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - end if; - when s560 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s561 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s563 => - if (RDY = '1') then - sig_PC <= X"00" & d_ALU; - zw_b1 <= D_IN; - end if; - when s564 => - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU4(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s565 => - if (RDY = '1' and - reg_F(3) = '0') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - reg_F(3) = '1') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU4(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s566 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s266 => - if (RDY = '1' and ( - (reg_F(0) = '1' and zw_REG_OP = X"90") or (reg_F(0) = '0' and zw_REG_OP = X"B0") or - (reg_F(1) = '0' and zw_REG_OP = X"F0") or (reg_F(7) = '0' and zw_REG_OP = X"30") or - (reg_F(1) = '1' and zw_REG_OP = X"D0") or (reg_F(7) = '1' and zw_REG_OP = X"10") or - (reg_F(6) = '1' and zw_REG_OP = X"50") or (reg_F(6) = '0' and zw_REG_OP = X"70"))) then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and ( - zw_REG_OP = X"8F" or - zw_REG_OP = X"9F" or - zw_REG_OP = X"AF" or - zw_REG_OP = X"BF" or - zw_REG_OP = X"CF" or - zw_REG_OP = X"DF" or - zw_REG_OP = X"EF" or - zw_REG_OP = X"FF" or - zw_REG_OP = X"0F" or - zw_REG_OP = X"1F" or - zw_REG_OP = X"2F" or - zw_REG_OP = X"3F" or - zw_REG_OP = X"4F" or - zw_REG_OP = X"5F" or - zw_REG_OP = X"6F" or - zw_REG_OP = X"7F")) then - sig_PC <= adr_nxt_PC; - zw_b2 <= D_IN; - elsif (RDY = '1') then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "10"; - zw_b2 <= D_IN; - end if; - when s301 => - if (RDY = '1' and - zw_b3 = adr_nxt_PC (15 downto 8)) then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= zw_b3 & adr_nxt_PC (7 downto 0); - end if; - when s302 => - if (RDY = '1') then - sig_PC <= adr_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when RES => - sel_PC_in_cld <= "00"; - sel_PC_val_cld <= "00"; - sel_PC_as_cld <= '0'; - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - when s511 => - if (RDY = '1' and - zw_REG_OP = X"E5") then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '0') then - sig_PC <= adr_nxt_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - zw_REG_OP = X"F5") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"ED") then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"FD") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"F9") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"F1") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - elsif (RDY = '1' and - zw_REG_OP = X"E1") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '1') then - sig_PC <= adr_nxt_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU2(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - zw_REG_OP = X"F2") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_ALU; - end if; - when s559 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - end if; - when s567 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s568 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - end if; - when s569 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s570 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s571 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s572 => - if (RDY = '1') then - sig_PC <= X"00" & d_ALU; - zw_b1 <= D_IN; - end if; - when s573 => - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU2(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s574 => - if (RDY = '1' and - reg_F(3) = '0') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU(8); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1' and - reg_F(3) = '1') then - sig_PC <= adr_PC; - - reg_F(7) <= zw_ALU(7); - reg_F(6) <= zw_b1(0) XOR zw_ALU(7); - reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR - (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR - (zw_ALU(0))); - reg_F(0) <= zw_ALU2(4); - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s548 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s551 => - sig_PC <= adr_SP; - when s552 => - sig_PC <= adr_SP; - when s575 => - if (RDY = '1') then - sig_PC <= X"FFFF"; - zw_b1 <= D_IN; - end if; - when s576 => - sig_PC <= X"FFFE"; - when s577 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - reg_F(2) <= '1'; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s532 => - if (RDY = '1') then - sig_PC <= adr_SP; - end if; - when s533 => - sig_PC <= adr_SP; - when s534 => - sig_PC <= adr_SP; - when s535 => - if (RDY = '1') then - sig_PC <= X"FFFB"; - zw_b1 <= D_IN; - end if; - when s536 => - sig_PC <= X"FFFA"; - when s537 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s274 => - if (RDY = '1') then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - end if; - when s203 => - if (RDY = '1' and - zw_REG_OP = X"34") then - sig_PC <= X"00" & D_IN; - zw_b1 <= d_alu; - elsif (RDY = '1' and - zw_REG_OP = X"3C") then - sig_PC <= adr_nxt_PC; - zw_b1 <= d_ALU; - zw_b2(0) <= reg_0F; - elsif (RDY = '1' and - zw_REG_OP = X"24") then - sig_PC <= X"00" & D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"2C") then - sig_PC <= adr_nxt_PC; - zw_b1 <= D_IN; - elsif (RDY = '1' and - zw_REG_OP = X"89") then - sig_PC <= adr_PC; - reg_F(7) <= D_IN(7); - reg_F(6) <= D_IN(6); - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s212 => - if (RDY = '1') then - sig_PC <= D_IN & zw_b1; - zw_b3 <= d_ALU; - end if; - when s219 => - if (RDY = '1') then - sig_PC <= X"00" & zw_b1; - end if; - when s227 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(7) <= D_IN(7); - reg_F(6) <= D_IN(6); - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s228 => - if (RDY = '1' AND - zw_b2(0) = '0') then - sig_PC <= adr_PC; - reg_F(7) <= D_IN(7); - reg_F(6) <= D_IN(6); - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - elsif (RDY = '1') then - sig_PC <= zw_b3 & zw_b1; - end if; - when s268 => - if (RDY = '1' and ( - (zw_b2(0) = '1' and zw_REG_OP = X"8F") or - (zw_b2(1) = '1' and zw_REG_OP = X"9F") or - (zw_b2(2) = '1' and zw_REG_OP = X"AF") or - (zw_b2(3) = '1' and zw_REG_OP = X"BF") or - (zw_b2(4) = '1' and zw_REG_OP = X"CF") or - (zw_b2(5) = '1' and zw_REG_OP = X"DF") or - (zw_b2(6) = '1' and zw_REG_OP = X"EF") or - (zw_b2(7) = '1' and zw_REG_OP = X"FF") or - (zw_b2(0) = '0' and zw_REG_OP = X"0F") or - (zw_b2(1) = '0' and zw_REG_OP = X"1F") or - (zw_b2(2) = '0' and zw_REG_OP = X"2F") or - (zw_b2(3) = '0' and zw_REG_OP = X"3F") or - (zw_b2(4) = '0' and zw_REG_OP = X"4F") or - (zw_b2(5) = '0' and zw_REG_OP = X"5F") or - (zw_b2(6) = '0' and zw_REG_OP = X"6F") or - (zw_b2(7) = '0' and zw_REG_OP = X"7F"))) then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "10"; - zw_b2 <= D_IN; - elsif (RDY = '1') then - sig_PC <= adr_nxt_PC; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when s25 => - if (RDY = '1') then - sig_PC <= adr_PC; - reg_F(7) <= reg_7F; - reg_F(1) <= reg_1F; - sel_PC_in_cld <= "00"; - sel_PC_as_cld <= '0'; - sel_PC_val_cld <= "00"; - sel_SP_in_cld <= "00"; - sel_SP_as_cld <= '1'; - sel_SP_val_cld <= "00"; - end if; - when others => - null; - end case; - end if; - end process clocked_proc; - - ----------------------------------------------------------------- - nextstate_proc : process ( - D_IN, - IRQn, - RDY, - adr_nxt_PC, - current_state, - reg_F, - zw_REG_NMI, - zw_REG_OP, - zw_b2, - zw_b3 - ) - ----------------------------------------------------------------- - begin - case current_state is - when FETCH => - if ((zw_REG_NMI = '1') and (RDY = '1')) then - next_state <= s532; - elsif ((IRQn = '0' and - reg_F(2) = '0') and (RDY = '1')) then - next_state <= s548; - elsif ((D_IN = X"69" or - D_IN = X"65" or - D_IN = X"75" or - D_IN = X"6D" or - D_IN = X"7D" or - D_IN = X"79" or - D_IN = X"61" or - D_IN = X"71" or - D_IN = X"72") and (RDY = '1')) then - next_state <= s510; - elsif ((D_IN = X"06" or - D_IN = X"16" or - D_IN = X"0E" or - D_IN = X"1E" or - D_IN (3 downto 0) = X"7" or - D_IN = X"14" or - D_IN = X"04" or - D_IN = X"0C" or - D_IN = X"1C") and (RDY = '1')) then - next_state <= s403; - elsif ((D_IN = X"90" or - D_IN = X"B0" or - D_IN = X"F0" or - D_IN = X"30" or - D_IN = X"D0" or - D_IN = X"10" or - D_IN = X"50" or - D_IN = X"70" or - D_IN = X"80" or - D_IN (3 downto 0) = X"F") and (RDY = '1')) then - next_state <= s266; - elsif ((D_IN = X"24" or - D_IN = X"2C" or - D_IN = X"3C" or - D_IN = X"34" or - D_IN = X"89") and (RDY = '1')) then - next_state <= s203; - elsif ((D_IN = X"00") and (RDY = '1')) then - next_state <= s526; - elsif ((D_IN = X"18") and (RDY = '1')) then - next_state <= s12; - elsif ((D_IN = X"D8") and (RDY = '1')) then - next_state <= s16; - elsif ((D_IN = X"58") and (RDY = '1')) then - next_state <= s17; - elsif ((D_IN = X"B8") and (RDY = '1')) then - next_state <= s24; - elsif ((D_IN = X"E0" or - D_IN = X"E4" or - D_IN = X"EC") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"C0" or - D_IN = X"C4" or - D_IN = X"CC") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"C6" or - D_IN = X"D6" or - D_IN = X"CE" or - D_IN = X"DE") and (RDY = '1')) then - next_state <= s226; - elsif ((D_IN = X"CA") and (RDY = '1')) then - next_state <= s25; - elsif ((D_IN = X"88") and (RDY = '1')) then - next_state <= s25; - elsif ((D_IN = X"49" or - D_IN = X"45" or - D_IN = X"55" or - D_IN = X"4D" or - D_IN = X"5D" or - D_IN = X"59" or - D_IN = X"41" or - D_IN = X"51" or - D_IN = X"09" or - D_IN = X"05" or - D_IN = X"15" or - D_IN = X"0D" or - D_IN = X"1D" or - D_IN = X"19" or - D_IN = X"01" or - D_IN = X"11" or - D_IN = X"29" or - D_IN = X"25" or - D_IN = X"35" or - D_IN = X"2D" or - D_IN = X"3D" or - D_IN = X"39" or - D_IN = X"21" or - D_IN = X"31" or - D_IN = X"C9" or - D_IN = X"C5" or - D_IN = X"D5" or - D_IN = X"CD" or - D_IN = X"DD" or - D_IN = X"D9" or - D_IN = X"C1" or - D_IN = X"D1" or - D_IN = X"32" or - D_IN = X"D2" or - D_IN = X"52" or - D_IN = X"12") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"E6" or - D_IN = X"F6" or - D_IN = X"EE" or - D_IN = X"FE") and (RDY = '1')) then - next_state <= s226; - elsif ((D_IN = X"E8") and (RDY = '1')) then - next_state <= s25; - elsif ((D_IN = X"C8") and (RDY = '1')) then - next_state <= s25; - elsif ((D_IN = X"4C" or - D_IN = X"6C" or - D_IN = X"7C") and (RDY = '1')) then - next_state <= s271; - elsif ((D_IN = X"20") and (RDY = '1')) then - next_state <= s397; - elsif ((D_IN = X"A9" or - D_IN = X"A5" or - D_IN = X"B5" or - D_IN = X"AD" or - D_IN = X"BD" or - D_IN = X"B9" or - D_IN = X"A1" or - D_IN = X"B1" or - D_IN = X"B2") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"A2" or - D_IN = X"A6" or - D_IN = X"B6" or - D_IN = X"AE" or - D_IN = X"BE") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"A0" or - D_IN = X"A4" or - D_IN = X"B4" or - D_IN = X"AC" or - D_IN = X"BC") and (RDY = '1')) then - next_state <= s201; - elsif ((D_IN = X"46" or - D_IN = X"56" or - D_IN = X"4E" or - D_IN = X"5E") and (RDY = '1')) then - next_state <= s403; - elsif ((D_IN = X"EA") and (RDY = '1')) then - next_state <= s1; - elsif ((D_IN = X"48") and (RDY = '1')) then - next_state <= s377; - elsif ((D_IN = X"08") and (RDY = '1')) then - next_state <= s378; - elsif ((D_IN = X"7A") and (RDY = '1')) then - next_state <= s379; - elsif ((D_IN = X"28") and (RDY = '1')) then - next_state <= s380; - elsif ((D_IN = X"26" or - D_IN = X"36" or - D_IN = X"2E" or - D_IN = X"3E") and (RDY = '1')) then - next_state <= s403; - elsif ((D_IN = X"66" or - D_IN = X"76" or - D_IN = X"6E" or - D_IN = X"7E") and (RDY = '1')) then - next_state <= s403; - elsif ((D_IN = X"40") and (RDY = '1')) then - next_state <= s387; - elsif ((D_IN = X"60") and (RDY = '1')) then - next_state <= s390; - elsif ((D_IN = X"E9" or - D_IN = X"E5" or - D_IN = X"F5" or - D_IN = X"ED" or - D_IN = X"FD" or - D_IN = X"F9" or - D_IN = X"E1" or - D_IN = X"F1" or - D_IN = X"F2") and (RDY = '1')) then - next_state <= s511; - elsif ((D_IN = X"38") and (RDY = '1')) then - next_state <= s2; - elsif ((D_IN = X"F8") and (RDY = '1')) then - next_state <= s5; - elsif ((D_IN = X"78") and (RDY = '1')) then - next_state <= s3; - elsif ((D_IN = X"85" or - D_IN = X"95" or - D_IN = X"8D" or - D_IN = X"9D" or - D_IN = X"99" or - D_IN = X"81" or - D_IN = X"91" or - D_IN = X"11") and (RDY = '1')) then - next_state <= s177; - elsif ((D_IN = X"86" or - D_IN = X"96" or - D_IN = X"8E") and (RDY = '1')) then - next_state <= s177; - elsif ((D_IN = X"84" or - D_IN = X"94" or - D_IN = X"8C") and (RDY = '1')) then - next_state <= s177; - elsif ((D_IN = X"AA") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"0A") and (RDY = '1')) then - next_state <= s404; - elsif ((D_IN = X"4A") and (RDY = '1')) then - next_state <= s556; - elsif ((D_IN = X"2A") and (RDY = '1')) then - next_state <= s557; - elsif ((D_IN = X"6A") and (RDY = '1')) then - next_state <= s579; - elsif ((D_IN = X"A8") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"98") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"BA") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"8A") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"9A") and (RDY = '1')) then - next_state <= s4; - elsif ((D_IN = X"DA") and (RDY = '1')) then - next_state <= s377; - elsif ((D_IN = X"5A") and (RDY = '1')) then - next_state <= s377; - elsif ((D_IN = X"68") and (RDY = '1')) then - next_state <= s379; - elsif ((D_IN = X"FA") and (RDY = '1')) then - next_state <= s379; - elsif ((D_IN = X"9C" or - D_IN = X"9E" or - D_IN = X"64" or - D_IN = X"74") and (RDY = '1')) then - next_state <= s177; - elsif ((D_IN = X"3A") and (RDY = '1')) then - next_state <= s25; - elsif ((D_IN = X"1A") and (RDY = '1')) then - next_state <= s25; - elsif (RDY = '1') then - next_state <= s1; - else - next_state <= FETCH; - end if; - when s1 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s1; - end if; - when s2 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s2; - end if; - when s5 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s5; - end if; - when s3 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s3; - end if; - when s4 => - if (RDY = '1' and - zw_REG_OP = X"9A") then - next_state <= FETCH; - elsif (RDY = '1' and - zw_REG_OP = X"BA") then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= FETCH; - else - next_state <= s4; - end if; - when s12 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s12; - end if; - when s16 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s16; - end if; - when s17 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s17; - end if; - when s24 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s24; - end if; - when s271 => - if (RDY = '1' and - zw_REG_OP = X"4C") then - next_state <= s307; - elsif (RDY = '1' and - zw_REG_OP = X"6C") then - next_state <= s273; - elsif (RDY = '1' and - zw_REG_OP = X"7C") then - next_state <= s274; - else - next_state <= s271; - end if; - when s273 => - if (RDY = '1') then - next_state <= s305; - else - next_state <= s273; - end if; - when s304 => - if (RDY = '1') then - next_state <= s307; - else - next_state <= s304; - end if; - when s307 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s307; - end if; - when s177 => - if (RDY = '1' and - (zw_REG_OP = X"85" OR - zw_REG_OP = X"86" OR - zw_REG_OP = X"64" OR - zw_REG_OP = X"84")) then - next_state <= s184; - elsif (RDY = '1' and - (zw_REG_OP = X"95" OR - zw_REG_OP = X"74" OR - zw_REG_OP = X"94")) then - next_state <= s185; - elsif (RDY = '1' and - (zw_REG_OP = X"8D" OR - zw_REG_OP = X"8E" OR - zw_REG_OP = X"9C" OR - zw_REG_OP = X"8C")) then - next_state <= s183; - elsif (RDY = '1' and - (zw_REG_OP = X"9D" OR - zw_REG_OP = X"9E")) then - next_state <= s180; - elsif (RDY = '1' and - zw_REG_OP = X"99") then - next_state <= s180; - elsif (RDY = '1' and - zw_REG_OP = X"91") then - next_state <= s181; - elsif (RDY = '1' and - zw_REG_OP = X"81") then - next_state <= s186; - elsif (RDY = '1' and - zw_REG_OP = X"96") then - next_state <= s185; - elsif (RDY = '1' and - zw_REG_OP = X"92") then - next_state <= s180; - else - next_state <= s177; - end if; - when s180 => - if (RDY = '1') then - next_state <= s191; - else - next_state <= s180; - end if; - when s181 => - if (RDY = '1') then - next_state <= s189; - else - next_state <= s181; - end if; - when s183 => - if (RDY = '1') then - next_state <= s187; - else - next_state <= s183; - end if; - when s184 => - next_state <= FETCH; - when s185 => - if (RDY = '1') then - next_state <= s190; - else - next_state <= s185; - end if; - when s186 => - if (RDY = '1') then - next_state <= s188; - else - next_state <= s186; - end if; - when s187 => - next_state <= FETCH; - when s188 => - if (RDY = '1') then - next_state <= s192; - else - next_state <= s188; - end if; - when s189 => - if (RDY = '1') then - next_state <= s191; - else - next_state <= s189; - end if; - when s190 => - next_state <= FETCH; - when s191 => - next_state <= s193; - when s192 => - next_state <= s193; - when s193 => - next_state <= FETCH; - when s377 => - if (RDY = '1') then - next_state <= s381; - else - next_state <= s377; - end if; - when s381 => - next_state <= FETCH; - when s378 => - if (RDY = '1') then - next_state <= s382; - else - next_state <= s378; - end if; - when s382 => - next_state <= FETCH; - when s379 => - if (RDY = '1') then - next_state <= s383; - else - next_state <= s379; - end if; - when s383 => - if (RDY = '1') then - next_state <= s384; - else - next_state <= s383; - end if; - when s384 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s384; - end if; - when s380 => - if (RDY = '1') then - next_state <= s385; - else - next_state <= s380; - end if; - when s385 => - if (RDY = '1') then - next_state <= s386; - else - next_state <= s385; - end if; - when s386 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s386; - end if; - when s387 => - if (RDY = '1') then - next_state <= s388; - else - next_state <= s387; - end if; - when s388 => - if (RDY = '1') then - next_state <= s389; - else - next_state <= s388; - end if; - when s389 => - if (RDY = '1') then - next_state <= s391; - else - next_state <= s389; - end if; - when s391 => - if (RDY = '1') then - next_state <= s392; - else - next_state <= s391; - end if; - when s392 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s392; - end if; - when s390 => - if (RDY = '1') then - next_state <= s393; - else - next_state <= s390; - end if; - when s393 => - if (RDY = '1') then - next_state <= s394; - else - next_state <= s393; - end if; - when s394 => - if (RDY = '1') then - next_state <= s395; - else - next_state <= s394; - end if; - when s395 => - if (RDY = '1') then - next_state <= s396; - else - next_state <= s395; - end if; - when s396 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s396; - end if; - when s397 => - if (RDY = '1') then - next_state <= s398; - else - next_state <= s397; - end if; - when s398 => - if (RDY = '1') then - next_state <= s399; - else - next_state <= s398; - end if; - when s399 => - next_state <= s400; - when s400 => - next_state <= s401; - when s401 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s401; - end if; - when s526 => - if (RDY = '1') then - next_state <= s527; - else - next_state <= s526; - end if; - when s527 => - next_state <= s528; - when s528 => - next_state <= s529; - when s529 => - next_state <= s531; - when s530 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s530; - end if; - when s531 => - if (RDY = '1') then - next_state <= s530; - else - next_state <= s531; - end if; - when s544 => - next_state <= s550; - when s545 => - next_state <= s546; - when s546 => - next_state <= s547; - when s547 => - if (RDY = '1') then - next_state <= s549; - else - next_state <= s547; - end if; - when s549 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s549; - end if; - when s550 => - next_state <= s545; - when s404 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s404; - end if; - when s556 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s556; - end if; - when s557 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s557; - end if; - when s579 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s579; - end if; - when s201 => - if (RDY = '1' and - (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR - zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR - zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR - zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then - next_state <= s224; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - next_state <= FETCH; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - next_state <= FETCH; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - next_state <= FETCH; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - next_state <= FETCH; - elsif (RDY = '1' and - (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 - zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then - next_state <= FETCH; - elsif (RDY = '1' and - (zw_REG_OP = X"B5" OR - zw_REG_OP = X"B4" OR - zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR - zw_REG_OP = X"35" OR - zw_REG_OP = X"D5")) then - next_state <= s217; - elsif (RDY = '1' and - (zw_REG_OP = X"AD" OR - zw_REG_OP = X"AE" OR - zw_REG_OP = X"AC" OR - zw_REG_OP = X"4D" OR - zw_REG_OP = X"0D" OR - zw_REG_OP = X"2D" OR - zw_REG_OP = X"CD" OR - zw_REG_OP = X"EC" OR - zw_REG_OP = X"CC")) then - next_state <= s202; - elsif (RDY = '1' and - (zw_REG_OP = X"BD" OR - zw_REG_OP = X"BC" OR - zw_REG_OP = X"5D" OR - zw_REG_OP = X"1D" OR - zw_REG_OP = X"3D" OR - zw_REG_OP = X"DD")) then - next_state <= s211; - elsif (RDY = '1' and - (zw_REG_OP = X"B9" OR - zw_REG_OP = X"BE" OR - zw_REG_OP = X"59" OR - zw_REG_OP = X"19" OR - zw_REG_OP = X"39" OR - zw_REG_OP = X"D9")) then - next_state <= s211; - elsif (RDY = '1' and - (zw_REG_OP = X"B1" OR - zw_REG_OP = X"51" OR - zw_REG_OP = X"11" OR - zw_REG_OP = X"31" OR - zw_REG_OP = X"D1")) then - next_state <= s215; - elsif (RDY = '1' and - (zw_REG_OP = X"A1" OR - zw_REG_OP = X"41" OR - zw_REG_OP = X"01" OR - zw_REG_OP = X"21" OR - zw_REG_OP = X"C1")) then - next_state <= s218; - elsif (RDY = '1' and - zw_REG_OP = X"B6") then - next_state <= s217; - elsif (RDY = '1' and - (zw_REG_OP = X"32" OR - zw_REG_OP = X"D2" OR - zw_REG_OP = X"52" OR - zw_REG_OP = X"B2" OR - zw_REG_OP = X"12")) then - next_state <= s211; - else - next_state <= s201; - end if; - when s202 => - if (RDY = '1') then - next_state <= s224; - else - next_state <= s202; - end if; - when s211 => - if (RDY = '1') then - next_state <= s225; - else - next_state <= s211; - end if; - when s215 => - if (RDY = '1') then - next_state <= s223; - else - next_state <= s215; - end if; - when s217 => - if (RDY = '1') then - next_state <= s224; - else - next_state <= s217; - end if; - when s218 => - if (RDY = '1') then - next_state <= s222; - else - next_state <= s218; - end if; - when s222 => - if (RDY = '1') then - next_state <= s202; - else - next_state <= s222; - end if; - when s223 => - if (RDY = '1') then - next_state <= s225; - else - next_state <= s223; - end if; - when s224 => - if ((RDY = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - next_state <= FETCH; - elsif ((RDY = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - next_state <= FETCH; - elsif ((RDY = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - next_state <= FETCH; - elsif ((RDY = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= FETCH; - else - next_state <= s224; - end if; - when s225 => - if ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - next_state <= FETCH; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - next_state <= FETCH; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - next_state <= FETCH; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - next_state <= FETCH; - elsif (RDY = '1' AND - zw_b2(0) = '0') then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= s224; - else - next_state <= s225; - end if; - when s226 => - if (RDY = '1' and - (zw_REG_OP = X"C6" OR - zw_REG_OP = X"E6")) then - next_state <= s343; - elsif (RDY = '1' and - (zw_REG_OP = X"D6" OR - zw_REG_OP = X"F6")) then - next_state <= s247; - elsif (RDY = '1' and - (zw_REG_OP = X"CE" OR - zw_REG_OP = X"EE")) then - next_state <= s243; - elsif (RDY = '1' and - (zw_REG_OP = X"DE" OR - zw_REG_OP = X"FE")) then - next_state <= s244; - else - next_state <= s226; - end if; - when s243 => - if (RDY = '1') then - next_state <= s343; - else - next_state <= s243; - end if; - when s244 => - if (RDY = '1') then - next_state <= s344; - else - next_state <= s244; - end if; - when s247 => - if (RDY = '1') then - next_state <= s343; - else - next_state <= s247; - end if; - when s344 => - if (RDY = '1') then - next_state <= s343; - else - next_state <= s344; - end if; - when s343 => - if (RDY = '1') then - next_state <= s250; - else - next_state <= s343; - end if; - when s250 => - if (RDY = '1') then - next_state <= s251; - else - next_state <= s250; - end if; - when s251 => - next_state <= FETCH; - when s360 => - if (RDY = '1') then - next_state <= s227; - else - next_state <= s360; - end if; - when s403 => - if (RDY = '1' and - (zw_REG_OP = X"1E" or - zw_REG_OP = X"7E" or - zw_REG_OP = X"3E" or - zw_REG_OP = X"5E")) then - next_state <= s407; - elsif (RDY = '1' and - (zw_REG_OP = X"06" or zw_REG_OP = X"66" or - zw_REG_OP = X"26" or zw_REG_OP = X"46" or - zw_REG_OP = X"04" or zw_REG_OP = X"14")) then - next_state <= s413; - elsif (RDY = '1' and - (zw_REG_OP = X"16" or - zw_REG_OP = X"76" or - zw_REG_OP = X"36" or - zw_REG_OP = X"56")) then - next_state <= s409; - elsif (RDY = '1' and - (zw_REG_OP = X"0E" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"4E"or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - next_state <= s406; - elsif (RDY = '1' and - zw_REG_OP (3 downto 0) = X"7") then - next_state <= s413; - else - next_state <= s403; - end if; - when s406 => - if (RDY = '1') then - next_state <= s413; - else - next_state <= s406; - end if; - when s407 => - if (RDY = '1') then - next_state <= s412; - else - next_state <= s407; - end if; - when s409 => - if (RDY = '1') then - next_state <= s413; - else - next_state <= s409; - end if; - when s412 => - if (RDY = '1') then - next_state <= s413; - else - next_state <= s412; - end if; - when s413 => - if (RDY = '1') then - next_state <= s416; - else - next_state <= s413; - end if; - when s416 => - if (RDY = '1' and - (zw_REG_OP = X"06" or - zw_REG_OP = X"16" or - zw_REG_OP = X"0E" or - zw_REG_OP = X"1E")) then - next_state <= s418; - elsif (RDY = '1' and - (zw_REG_OP = X"46" or - zw_REG_OP = X"56" or - zw_REG_OP = X"4E" or - zw_REG_OP = X"5E")) then - next_state <= s418; - elsif (RDY = '1' and - (zw_REG_OP = X"26" or - zw_REG_OP = X"36" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"3E")) then - next_state <= s418; - elsif (RDY = '1' and - (zw_REG_OP = X"66" or - zw_REG_OP = X"76" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"7E")) then - next_state <= s418; - elsif (RDY = '1' and - zw_REG_OP (7) = '0' and - zw_REG_OP (3 downto 0) = X"7") then - next_state <= s418; - elsif (RDY = '1' and - zw_REG_OP (7) = '1' and - zw_REG_OP (3 downto 0) = X"7") then - next_state <= s418; - elsif (RDY = '1' and - (zw_REG_OP = X"14" or - zw_REG_OP = X"1C")) then - next_state <= s418; - elsif (RDY = '1' and - (zw_REG_OP = X"04" or - zw_REG_OP = X"0C")) then - next_state <= s418; - else - next_state <= s416; - end if; - when s418 => - if (zw_REG_OP (3 downto 0) = X"7") then - next_state <= FETCH; - elsif ((zw_REG_OP = X"14" or - zw_REG_OP = X"04" or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - next_state <= FETCH; - else - next_state <= FETCH; - end if; - when s510 => - if (RDY = '1' and - zw_REG_OP = X"65") then - next_state <= s565; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' and - zw_REG_OP = X"75") then - next_state <= s560; - elsif (RDY = '1' and - zw_REG_OP = X"6D") then - next_state <= s553; - elsif (RDY = '1' and - zw_REG_OP = X"7D") then - next_state <= s555; - elsif (RDY = '1' and - zw_REG_OP = X"79") then - next_state <= s555; - elsif (RDY = '1' and - zw_REG_OP = X"71") then - next_state <= s558; - elsif (RDY = '1' and - zw_REG_OP = X"61") then - next_state <= s561; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '1') then - next_state <= FETCH; - elsif (RDY = '1' and - zw_REG_OP = X"72") then - next_state <= s580; - else - next_state <= s510; - end if; - when s553 => - if (RDY = '1') then - next_state <= s565; - else - next_state <= s553; - end if; - when s555 => - if (RDY = '1') then - next_state <= s564; - else - next_state <= s555; - end if; - when s558 => - if (RDY = '1') then - next_state <= s566; - else - next_state <= s558; - end if; - when s560 => - if (RDY = '1') then - next_state <= s565; - else - next_state <= s560; - end if; - when s561 => - if (RDY = '1') then - next_state <= s563; - else - next_state <= s561; - end if; - when s563 => - if (RDY = '1') then - next_state <= s553; - else - next_state <= s563; - end if; - when s564 => - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= s565; - else - next_state <= s564; - end if; - when s565 => - if (RDY = '1' and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' and - reg_F(3) = '1') then - next_state <= FETCH; - else - next_state <= s565; - end if; - when s566 => - if (RDY = '1') then - next_state <= s564; - else - next_state <= s566; - end if; - when s266 => - if (RDY = '1' and ( - (reg_F(0) = '1' and zw_REG_OP = X"90") or (reg_F(0) = '0' and zw_REG_OP = X"B0") or - (reg_F(1) = '0' and zw_REG_OP = X"F0") or (reg_F(7) = '0' and zw_REG_OP = X"30") or - (reg_F(1) = '1' and zw_REG_OP = X"D0") or (reg_F(7) = '1' and zw_REG_OP = X"10") or - (reg_F(6) = '1' and zw_REG_OP = X"50") or (reg_F(6) = '0' and zw_REG_OP = X"70"))) then - next_state <= FETCH; - elsif (RDY = '1' and ( - zw_REG_OP = X"8F" or - zw_REG_OP = X"9F" or - zw_REG_OP = X"AF" or - zw_REG_OP = X"BF" or - zw_REG_OP = X"CF" or - zw_REG_OP = X"DF" or - zw_REG_OP = X"EF" or - zw_REG_OP = X"FF" or - zw_REG_OP = X"0F" or - zw_REG_OP = X"1F" or - zw_REG_OP = X"2F" or - zw_REG_OP = X"3F" or - zw_REG_OP = X"4F" or - zw_REG_OP = X"5F" or - zw_REG_OP = X"6F" or - zw_REG_OP = X"7F")) then - next_state <= s267; - elsif (RDY = '1') then - next_state <= s301; - else - next_state <= s266; - end if; - when s301 => - if (RDY = '1' and - zw_b3 = adr_nxt_PC (15 downto 8)) then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= s302; - else - next_state <= s301; - end if; - when s302 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s302; - end if; - when RES => - next_state <= s544; - when s511 => - if (RDY = '1' and - zw_REG_OP = X"E5") then - next_state <= s574; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' and - zw_REG_OP = X"F5") then - next_state <= s569; - elsif (RDY = '1' and - zw_REG_OP = X"ED") then - next_state <= s559; - elsif (RDY = '1' and - zw_REG_OP = X"FD") then - next_state <= s567; - elsif (RDY = '1' and - zw_REG_OP = X"F9") then - next_state <= s567; - elsif (RDY = '1' and - zw_REG_OP = X"F1") then - next_state <= s568; - elsif (RDY = '1' and - zw_REG_OP = X"E1") then - next_state <= s570; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '1') then - next_state <= FETCH; - elsif (RDY = '1' and - zw_REG_OP = X"F2") then - next_state <= s578; - else - next_state <= s511; - end if; - when s559 => - if (RDY = '1') then - next_state <= s574; - else - next_state <= s559; - end if; - when s567 => - if (RDY = '1') then - next_state <= s573; - else - next_state <= s567; - end if; - when s568 => - if (RDY = '1') then - next_state <= s571; - else - next_state <= s568; - end if; - when s569 => - if (RDY = '1') then - next_state <= s574; - else - next_state <= s569; - end if; - when s570 => - if (RDY = '1') then - next_state <= s572; - else - next_state <= s570; - end if; - when s571 => - if (RDY = '1') then - next_state <= s573; - else - next_state <= s571; - end if; - when s572 => - if (RDY = '1') then - next_state <= s559; - else - next_state <= s572; - end if; - when s573 => - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= s574; - else - next_state <= s573; - end if; - when s574 => - if (RDY = '1' and - reg_F(3) = '0') then - next_state <= FETCH; - elsif (RDY = '1' and - reg_F(3) = '1') then - next_state <= FETCH; - else - next_state <= s574; - end if; - when s548 => - if (RDY = '1') then - next_state <= s551; - else - next_state <= s548; - end if; - when s551 => - next_state <= s552; - when s552 => - next_state <= s576; - when s575 => - if (RDY = '1') then - next_state <= s577; - else - next_state <= s575; - end if; - when s576 => - next_state <= s575; - when s577 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s577; - end if; - when s532 => - if (RDY = '1') then - next_state <= s533; - else - next_state <= s532; - end if; - when s533 => - next_state <= s534; - when s534 => - next_state <= s536; - when s535 => - if (RDY = '1') then - next_state <= s537; - else - next_state <= s535; - end if; - when s536 => - next_state <= s535; - when s537 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s537; - end if; - when s274 => - if (RDY = '1') then - next_state <= s305; - else - next_state <= s274; - end if; - when s305 => - if (RDY = '1') then - next_state <= s304; - else - next_state <= s305; - end if; - when s203 => - if (RDY = '1' and - zw_REG_OP = X"34") then - next_state <= s219; - elsif (RDY = '1' and - zw_REG_OP = X"3C") then - next_state <= s212; - elsif (RDY = '1' and - zw_REG_OP = X"24") then - next_state <= s227; - elsif (RDY = '1' and - zw_REG_OP = X"2C") then - next_state <= s360; - elsif (RDY = '1' and - zw_REG_OP = X"89") then - next_state <= FETCH; - else - next_state <= s203; - end if; - when s212 => - if (RDY = '1') then - next_state <= s228; - else - next_state <= s212; - end if; - when s219 => - if (RDY = '1') then - next_state <= s227; - else - next_state <= s219; - end if; - when s227 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s227; - end if; - when s228 => - if (RDY = '1' AND - zw_b2(0) = '0') then - next_state <= FETCH; - elsif (RDY = '1') then - next_state <= s227; - else - next_state <= s228; - end if; - when s267 => - if (RDY = '1') then - next_state <= s269; - else - next_state <= s267; - end if; - when s268 => - if (RDY = '1' and ( - (zw_b2(0) = '1' and zw_REG_OP = X"8F") or - (zw_b2(1) = '1' and zw_REG_OP = X"9F") or - (zw_b2(2) = '1' and zw_REG_OP = X"AF") or - (zw_b2(3) = '1' and zw_REG_OP = X"BF") or - (zw_b2(4) = '1' and zw_REG_OP = X"CF") or - (zw_b2(5) = '1' and zw_REG_OP = X"DF") or - (zw_b2(6) = '1' and zw_REG_OP = X"EF") or - (zw_b2(7) = '1' and zw_REG_OP = X"FF") or - (zw_b2(0) = '0' and zw_REG_OP = X"0F") or - (zw_b2(1) = '0' and zw_REG_OP = X"1F") or - (zw_b2(2) = '0' and zw_REG_OP = X"2F") or - (zw_b2(3) = '0' and zw_REG_OP = X"3F") or - (zw_b2(4) = '0' and zw_REG_OP = X"4F") or - (zw_b2(5) = '0' and zw_REG_OP = X"5F") or - (zw_b2(6) = '0' and zw_REG_OP = X"6F") or - (zw_b2(7) = '0' and zw_REG_OP = X"7F"))) then - next_state <= s301; - elsif (RDY = '1') then - next_state <= FETCH; - else - next_state <= s268; - end if; - when s269 => - if (RDY = '1') then - next_state <= s268; - else - next_state <= s269; - end if; - when s578 => - if (RDY = '1') then - next_state <= s567; - else - next_state <= s578; - end if; - when s580 => - if (RDY = '1') then - next_state <= s555; - else - next_state <= s580; - end if; - when s25 => - if (RDY = '1') then - next_state <= FETCH; - else - next_state <= s25; - end if; - when others => - next_state <= RES; - end case; - end process nextstate_proc; - - ----------------------------------------------------------------- - output_proc : process ( - D_IN, - IRQn, - RDY, - adr_PC, - adr_SP, - adr_nxt_PC, - current_state, - d_ALU, - d_REGS, - q_a, - q_x, - q_y, - reg_F, - sig_PC, - zw_ALU, - zw_ALU1, - zw_ALU2, - zw_ALU3, - zw_ALU4, - zw_REG_NMI, - zw_REG_OP, - zw_b1, - zw_b2, - zw_b3, - zw_b4, - zw_w1 - ) - ----------------------------------------------------------------- - begin - -- Default Assignment - A <= sig_PC; - a_ALU <= X"00"; - adr_out <= X"0000"; - b_ALU <= X"00"; - d_REGS_out <= X"00"; - ld <= "00"; - ld_PC <= '0'; - ld_SP <= '0'; - load_REGS <= '0'; - offset <= X"0000"; - reg_0F_out <= reg_F(0); - reg_1F_out <= reg_F(1); - reg_3F_out <= reg_F(3); - reg_7F_out <= reg_F(7); - -- Default Assignment To Internals - sig_D_OUT <= X"00"; - sig_RD <= '0'; - sig_RWn <= '1'; - sig_SYNC <= '0'; - sig_WR <= '0'; - zw_ALU <= '0' & X"00"; - zw_ALU1 <= '0' & X"00"; - zw_ALU2 <= '0' & X"00"; - zw_ALU3 <= '0' & X"00"; - zw_ALU4 <= '0' & X"00"; - - -- Combined Actions - case current_state is - when FETCH => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= NOT (RDY); - if ((zw_REG_NMI = '1') and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((IRQn = '0' and - reg_F(2) = '0') and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"69" or - D_IN = X"65" or - D_IN = X"75" or - D_IN = X"6D" or - D_IN = X"7D" or - D_IN = X"79" or - D_IN = X"61" or - D_IN = X"71" or - D_IN = X"72") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"06" or - D_IN = X"16" or - D_IN = X"0E" or - D_IN = X"1E" or - D_IN (3 downto 0) = X"7" or - D_IN = X"14" or - D_IN = X"04" or - D_IN = X"0C" or - D_IN = X"1C") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"90" or - D_IN = X"B0" or - D_IN = X"F0" or - D_IN = X"30" or - D_IN = X"D0" or - D_IN = X"10" or - D_IN = X"50" or - D_IN = X"70" or - D_IN = X"80" or - D_IN (3 downto 0) = X"F") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"24" or - D_IN = X"2C" or - D_IN = X"3C" or - D_IN = X"34" or - D_IN = X"89") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"00") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"18") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"D8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"58") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"B8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"E0" or - D_IN = X"E4" or - D_IN = X"EC") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"C0" or - D_IN = X"C4" or - D_IN = X"CC") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"C6" or - D_IN = X"D6" or - D_IN = X"CE" or - D_IN = X"DE") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"CA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"88") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"49" or - D_IN = X"45" or - D_IN = X"55" or - D_IN = X"4D" or - D_IN = X"5D" or - D_IN = X"59" or - D_IN = X"41" or - D_IN = X"51" or - D_IN = X"09" or - D_IN = X"05" or - D_IN = X"15" or - D_IN = X"0D" or - D_IN = X"1D" or - D_IN = X"19" or - D_IN = X"01" or - D_IN = X"11" or - D_IN = X"29" or - D_IN = X"25" or - D_IN = X"35" or - D_IN = X"2D" or - D_IN = X"3D" or - D_IN = X"39" or - D_IN = X"21" or - D_IN = X"31" or - D_IN = X"C9" or - D_IN = X"C5" or - D_IN = X"D5" or - D_IN = X"CD" or - D_IN = X"DD" or - D_IN = X"D9" or - D_IN = X"C1" or - D_IN = X"D1" or - D_IN = X"32" or - D_IN = X"D2" or - D_IN = X"52" or - D_IN = X"12") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"E6" or - D_IN = X"F6" or - D_IN = X"EE" or - D_IN = X"FE") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"E8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"C8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"4C" or - D_IN = X"6C" or - D_IN = X"7C") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"20") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"A9" or - D_IN = X"A5" or - D_IN = X"B5" or - D_IN = X"AD" or - D_IN = X"BD" or - D_IN = X"B9" or - D_IN = X"A1" or - D_IN = X"B1" or - D_IN = X"B2") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"A2" or - D_IN = X"A6" or - D_IN = X"B6" or - D_IN = X"AE" or - D_IN = X"BE") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"A0" or - D_IN = X"A4" or - D_IN = X"B4" or - D_IN = X"AC" or - D_IN = X"BC") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"46" or - D_IN = X"56" or - D_IN = X"4E" or - D_IN = X"5E") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"EA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"48") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"08") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"7A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"28") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"26" or - D_IN = X"36" or - D_IN = X"2E" or - D_IN = X"3E") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"66" or - D_IN = X"76" or - D_IN = X"6E" or - D_IN = X"7E") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"40") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"60") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"E9" or - D_IN = X"E5" or - D_IN = X"F5" or - D_IN = X"ED" or - D_IN = X"FD" or - D_IN = X"F9" or - D_IN = X"E1" or - D_IN = X"F1" or - D_IN = X"F2") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"38") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"F8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"78") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"85" or - D_IN = X"95" or - D_IN = X"8D" or - D_IN = X"9D" or - D_IN = X"99" or - D_IN = X"81" or - D_IN = X"91" or - D_IN = X"11") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"86" or - D_IN = X"96" or - D_IN = X"8E") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"84" or - D_IN = X"94" or - D_IN = X"8C") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"AA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"0A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"4A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"2A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"6A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"A8") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"98") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"BA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"8A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"9A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"DA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"5A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"68") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"FA") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"9C" or - D_IN = X"9E" or - D_IN = X"64" or - D_IN = X"74") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"3A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif ((D_IN = X"1A") and (RDY = '1')) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s1 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s2 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s5 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s3 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s4 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - zw_REG_OP = X"9A") then - adr_out <= X"01" & d_REGS; - ld <= "11"; - ld_SP <= '1'; - sig_SYNC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"BA") then - d_REGS_out <= adr_SP (7 downto 0); - a_ALU <= adr_SP (7 downto 0); - b_ALU <= X"00"; - load_REGS <= '1'; - sig_SYNC <= '1'; - elsif (RDY = '1') then - a_ALU <= d_REGS; - b_ALU <= X"00"; - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when s12 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s16 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s17 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s24 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s271 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s273 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - ld <= "11"; - ld_PC <= '1'; - end if; - when s304 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s307 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - end if; - when s177 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - (zw_REG_OP = X"85" OR - zw_REG_OP = X"86" OR - zw_REG_OP = X"64" OR - zw_REG_OP = X"84")) then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"95" OR - zw_REG_OP = X"74" OR - zw_REG_OP = X"94")) then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"8D" OR - zw_REG_OP = X"8E" OR - zw_REG_OP = X"9C" OR - zw_REG_OP = X"8C")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"9D" OR - zw_REG_OP = X"9E")) then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"99") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - zw_REG_OP = X"91") then - a_ALU <= D_IN; - b_ALU <= X"01"; - elsif (RDY = '1' and - zw_REG_OP = X"81") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"96") then - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - zw_REG_OP = X"92") then - a_ALU <= D_IN; - b_ALU <= X"01"; - end if; - when s180 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s181 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= q_y; - end if; - when s183 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - ld <= "11"; - ld_PC <= '1'; - end if; - when s184 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s185 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - ld <= "11"; - ld_PC <= '1'; - end if; - when s186 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s187 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s188 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= zw_b1; - b_ALU <= X"01"; - end if; - when s189 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s190 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s191 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - when s192 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - ld <= "11"; - ld_PC <= '1'; - when s193 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s377 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= d_REGS; - ld <= "11"; - ld_SP <= '1'; - end if; - when s381 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s378 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= reg_F; - ld <= "11"; - ld_SP <= '1'; - end if; - when s382 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_SYNC <= '1'; - when s379 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s383 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s384 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - d_REGS_out <= D_IN; - load_REGS <= '1'; - a_ALU <= D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s380 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s385 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s386 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s387 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s388 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s389 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s391 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s392 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - end if; - when s390 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s393 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - end if; - when s394 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s395 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - ld <= "11"; - ld_PC <= '1'; - end if; - when s396 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s397 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - ld_PC <= '1'; - end if; - when s398 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (15 downto 8); - end if; - when s399 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (7 downto 0); - when s400 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s401 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - end if; - when s526 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - ld_PC <= '1'; - end if; - when s527 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (15 downto 8); - when s528 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (7 downto 0); - when s529 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= reg_F; - when s530 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s531 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s544 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - when s545 => - sig_RWn <= '1'; - sig_RD <= '1'; - adr_out <= X"FFFB"; - ld <= "11"; - ld_PC <= '1'; - when s546 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_PC <= '1'; - when s547 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s549 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_w1 (7 downto 0); - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - end if; - when s550 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - when s404 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= q_a (6 downto 0) & '0'; - b_ALU <= X"00"; - d_REGS_out <= q_a (6 downto 0) & '0'; - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when s556 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= '0' & q_a (7 downto 1); - b_ALU <= X"00"; - d_REGS_out <= '0' & q_a (7 downto 1); - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when s557 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= q_a (6 downto 0) & reg_F(0); - b_ALU <= X"00"; - d_REGS_out <= q_a (6 downto 0) & reg_F(0); - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when s579 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= reg_F(0) & q_a (7 downto 1); - b_ALU <= X"00"; - d_REGS_out <= reg_F(0) & q_a (7 downto 1); - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when s201 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR - zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR - zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR - zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then - ld <= "11"; - ld_PC <= '1'; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= D_IN OR q_a; - load_REGS <= '1'; - a_ALU <= D_IN OR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= D_IN XOR q_a; - load_REGS <= '1'; - a_ALU <= D_IN XOR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= D_IN AND q_a; - load_REGS <= '1'; - a_ALU <= D_IN AND q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' and - (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 - 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 - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - ld <= "11"; - ld_PC <= '1'; - zw_ALU <= unsigned ('0' & d_REGS) + unsigned ('0' & NOT (D_IN)) + 1; - sig_SYNC <= '1'; - elsif (RDY = '1' and - (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 - zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= D_IN; - load_REGS <= '1'; - a_ALU <= D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"B5" OR - zw_REG_OP = X"B4" OR - zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR - zw_REG_OP = X"35" OR - zw_REG_OP = X"D5")) then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"AD" OR - zw_REG_OP = X"AE" OR - zw_REG_OP = X"AC" OR - zw_REG_OP = X"4D" OR - zw_REG_OP = X"0D" OR - zw_REG_OP = X"2D" OR - zw_REG_OP = X"CD" OR - zw_REG_OP = X"EC" OR - zw_REG_OP = X"CC")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"BD" OR - zw_REG_OP = X"BC" OR - zw_REG_OP = X"5D" OR - zw_REG_OP = X"1D" OR - zw_REG_OP = X"3D" OR - zw_REG_OP = X"DD")) then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"B9" OR - zw_REG_OP = X"BE" OR - zw_REG_OP = X"59" OR - zw_REG_OP = X"19" OR - zw_REG_OP = X"39" OR - zw_REG_OP = X"D9")) then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - (zw_REG_OP = X"B1" OR - zw_REG_OP = X"51" OR - zw_REG_OP = X"11" OR - zw_REG_OP = X"31" OR - zw_REG_OP = X"D1")) then - a_ALU <= D_IN; - b_ALU <= X"01"; - elsif (RDY = '1' and - (zw_REG_OP = X"A1" OR - zw_REG_OP = X"41" OR - zw_REG_OP = X"01" OR - zw_REG_OP = X"21" OR - zw_REG_OP = X"C1")) then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"B6") then - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - (zw_REG_OP = X"32" OR - zw_REG_OP = X"D2" OR - zw_REG_OP = X"52" OR - zw_REG_OP = X"B2" OR - zw_REG_OP = X"12")) then - a_ALU <= D_IN; - b_ALU <= X"01"; - end if; - when s202 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s211 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s215 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= q_y; - end if; - when s217 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s218 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s222 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= zw_b1; - b_ALU <= X"01"; - end if; - when s223 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s224 => - sig_RWn <= '1'; - sig_RD <= '1'; - if ((RDY = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - d_REGS_out <= D_IN OR q_a; - load_REGS <= '1'; - a_ALU <= D_IN OR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - d_REGS_out <= D_IN XOR q_a; - load_REGS <= '1'; - a_ALU <= D_IN XOR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - d_REGS_out <= D_IN AND q_a; - load_REGS <= '1'; - a_ALU <= D_IN AND q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - zw_ALU <= unsigned ('0' & d_REGS) + unsigned ('0' & NOT (D_IN)) + 1; - sig_SYNC <= '1'; - elsif (RDY = '1') then - d_REGS_out <= D_IN; - load_REGS <= '1'; - a_ALU <= D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s225 => - sig_RWn <= '1'; - sig_RD <= '1'; - if ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or - zw_REG_OP = X"15" or zw_REG_OP = X"0D" or - zw_REG_OP = X"1D" or zw_REG_OP = X"19" or - zw_REG_OP = X"01" or zw_REG_OP = X"11" or - zw_REG_OP = X"12")) then - d_REGS_out <= D_IN OR q_a; - load_REGS <= '1'; - a_ALU <= D_IN OR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or - zw_REG_OP = X"55" or zw_REG_OP = X"4D" or - zw_REG_OP = X"5D" or zw_REG_OP = X"59" or - zw_REG_OP = X"41" or zw_REG_OP = X"51" or - zw_REG_OP = X"52")) then - d_REGS_out <= D_IN XOR q_a; - load_REGS <= '1'; - a_ALU <= D_IN XOR q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or - zw_REG_OP = X"35" or zw_REG_OP = X"2D" or - zw_REG_OP = X"3D" or zw_REG_OP = X"39" or - zw_REG_OP = X"21" or zw_REG_OP = X"31" or - zw_REG_OP = X"32" or zw_REG_OP = X"D2")) then - d_REGS_out <= D_IN AND q_a; - load_REGS <= '1'; - a_ALU <= D_IN AND q_a; - b_ALU <= X"00"; - sig_SYNC <= '1'; - elsif ((RDY = '1' AND - zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or - zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or - zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or - zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or - zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or - zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or - zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then - zw_ALU <= unsigned ('0' & d_REGS) + unsigned ('0' & NOT (D_IN)) + 1; - sig_SYNC <= '1'; - elsif (RDY = '1' AND - zw_b2(0) = '0') then - d_REGS_out <= D_IN; - load_REGS <= '1'; - a_ALU <= D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s226 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - (zw_REG_OP = X"C6" OR - zw_REG_OP = X"E6")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"D6" OR - zw_REG_OP = X"F6")) then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"CE" OR - zw_REG_OP = X"EE")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"DE" OR - zw_REG_OP = X"FE")) then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - end if; - when s243 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s244 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s247 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s344 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s343 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= zw_b4; - end if; - when s250 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= zw_b1; - end if; - when s251 => - sig_RWn <= '1'; - sig_RD <= '1'; - a_ALU <= zw_b1; - b_ALU <= X"00"; - sig_SYNC <= '1'; - when s360 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s403 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - (zw_REG_OP = X"1E" or - zw_REG_OP = X"7E" or - zw_REG_OP = X"3E" or - zw_REG_OP = X"5E")) then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"06" or zw_REG_OP = X"66" or - zw_REG_OP = X"26" or zw_REG_OP = X"46" or - zw_REG_OP = X"04" or zw_REG_OP = X"14")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"16" or - zw_REG_OP = X"76" or - zw_REG_OP = X"36" or - zw_REG_OP = X"56")) then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - (zw_REG_OP = X"0E" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"4E"or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP (3 downto 0) = X"7") then - ld <= "11"; - ld_PC <= '1'; - end if; - when s406 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s407 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s409 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s412 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s413 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s416 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - (zw_REG_OP = X"06" or - zw_REG_OP = X"16" or - zw_REG_OP = X"0E" or - zw_REG_OP = X"1E")) then - sig_D_OUT <= D_IN(6 downto 0) & '0'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"46" or - zw_REG_OP = X"56" or - zw_REG_OP = X"4E" or - zw_REG_OP = X"5E")) then - sig_D_OUT <= '0' & D_IN(7 downto 1); - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"26" or - zw_REG_OP = X"36" or - zw_REG_OP = X"2E" or - zw_REG_OP = X"3E")) then - sig_D_OUT <= D_IN(6 downto 0) & reg_F(0); - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"66" or - zw_REG_OP = X"76" or - zw_REG_OP = X"6E" or - zw_REG_OP = X"7E")) then - sig_D_OUT <= reg_F(0) & D_IN(7 downto 1); - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - zw_REG_OP (7) = '0' and - zw_REG_OP (3 downto 0) = X"7") then - sig_D_OUT <= D_IN and NOT (d_ALU); - a_ALU <= "00000" & zw_REG_OP (6 downto 4) ; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - zw_REG_OP (7) = '1' and - zw_REG_OP (3 downto 0) = X"7") then - sig_D_OUT <= D_IN or d_ALU; - a_ALU <= "00000" & zw_REG_OP (6 downto 4) ; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"14" or - zw_REG_OP = X"1C")) then - sig_D_OUT <= D_IN and NOT (q_a); - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - elsif (RDY = '1' and - (zw_REG_OP = X"04" or - zw_REG_OP = X"0C")) then - sig_D_OUT <= D_IN or q_a; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - end if; - when s418 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (zw_REG_OP (3 downto 0) = X"7") then - sig_SYNC <= '1'; - elsif ((zw_REG_OP = X"14" or - zw_REG_OP = X"04" or - zw_REG_OP = X"0C" or - zw_REG_OP = X"1C")) then - a_ALU <= zw_b1; - b_ALU <= X"00"; - sig_SYNC <= '1'; - else - a_ALU <= zw_b1; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s510 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - zw_REG_OP = X"65") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '0') then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & D_IN) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"75") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"6D") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"7D") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"79") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - zw_REG_OP = X"71") then - a_ALU <= D_IN; - b_ALU <= X"01"; - elsif (RDY = '1' and - zw_REG_OP = X"61") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"69" and - reg_F(3) = '1') then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU4(7 downto 5)); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU3(7 downto 5)); - - zw_ALU4(7 downto 5) <= (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0'; - zw_ALU3(7 downto 5) <= (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0'; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & D_IN(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4)); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & D_IN(3 downto 0)) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"72") then - a_ALU <= D_IN; - b_ALU <= X"01"; - end if; - when s553 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s555 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= X"01"; - ld <= "11"; - ld_PC <= '1'; - end if; - when s558 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= q_y; - end if; - when s560 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s561 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s563 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= zw_b1; - b_ALU <= X"01"; - end if; - when s564 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & D_IN) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU4(7 downto 5)); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU3(7 downto 5)); - - zw_ALU4(7 downto 5) <= (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0'; - zw_ALU3(7 downto 5) <= (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0'; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & D_IN(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4)); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & D_IN(3 downto 0)) + reg_F(0); - sig_SYNC <= '1'; - end if; - when s565 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - reg_F(3) = '0') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & D_IN) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - reg_F(3) = '1') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU4(7 downto 5)); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU3(7 downto 5)); - - zw_ALU4(7 downto 5) <= (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0'; - zw_ALU3(7 downto 5) <= (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0'; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & D_IN(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4)); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & D_IN(3 downto 0)) + reg_F(0); - sig_SYNC <= '1'; - end if; - when s566 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= X"01"; - ld <= "11"; - ld_PC <= '1'; - end if; - when s266 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and ( - (reg_F(0) = '1' and zw_REG_OP = X"90") or (reg_F(0) = '0' and zw_REG_OP = X"B0") or - (reg_F(1) = '0' and zw_REG_OP = X"F0") or (reg_F(7) = '0' and zw_REG_OP = X"30") or - (reg_F(1) = '1' and zw_REG_OP = X"D0") or (reg_F(7) = '1' and zw_REG_OP = X"10") or - (reg_F(6) = '1' and zw_REG_OP = X"50") or (reg_F(6) = '0' and zw_REG_OP = X"70"))) then - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - elsif (RDY = '1' and ( - zw_REG_OP = X"8F" or - zw_REG_OP = X"9F" or - zw_REG_OP = X"AF" or - zw_REG_OP = X"BF" or - zw_REG_OP = X"CF" or - zw_REG_OP = X"DF" or - zw_REG_OP = X"EF" or - zw_REG_OP = X"FF" or - zw_REG_OP = X"0F" or - zw_REG_OP = X"1F" or - zw_REG_OP = X"2F" or - zw_REG_OP = X"3F" or - zw_REG_OP = X"4F" or - zw_REG_OP = X"5F" or - zw_REG_OP = X"6F" or - zw_REG_OP = X"7F")) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s301 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - zw_b3 = adr_nxt_PC (15 downto 8)) then - offset <= (zw_b2(7) & zw_b2(7) & - zw_b2(7) & zw_b2(7) & zw_b2(7) & - zw_b2(7) & zw_b2(7) & zw_b2(7) & - zw_b2(7) & zw_b2(6 downto 0)); - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - elsif (RDY = '1') then - offset <= (zw_b2(7) & zw_b2(7) & zw_b2(7) & - zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & - zw_b2(7) & zw_b2(7) & zw_b2(6 downto 0)); - ld <= "11"; - ld_PC <= '1'; - end if; - when s302 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when RES => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_PC <= '1'; - ld_SP <= '1'; - sig_RWn <= '1'; - sig_RD <= '1'; - when s511 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - zw_REG_OP = X"E5") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '0') then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & NOT (D_IN)) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"F5") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"ED") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"FD") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"F9") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_y; - elsif (RDY = '1' and - zw_REG_OP = X"F1") then - a_ALU <= D_IN; - b_ALU <= X"01"; - elsif (RDY = '1' and - zw_REG_OP = X"E1") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"E9" and - reg_F(3) = '1') then - ld <= "11"; - ld_PC <= '1'; - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + - unsigned ((zw_ALU4(8 downto 5))); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + - unsigned ((zw_ALU3(8 downto 5))); - - zw_ALU4(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & - (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0'; - zw_ALU3(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & - (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & NOT (D_IN(7 downto 4))) + zw_ALU1(4); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & NOT (D_IN(3 downto 0))) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"F2") then - a_ALU <= D_IN; - b_ALU <= X"01"; - end if; - when s559 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s567 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= X"01"; - ld <= "11"; - ld_PC <= '1'; - end if; - when s568 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= q_y; - end if; - when s569 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s570 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s571 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= X"01"; - ld <= "11"; - ld_PC <= '1'; - end if; - when s572 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= zw_b1; - b_ALU <= X"01"; - end if; - when s573 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '0') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & NOT (D_IN)) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' AND - zw_b2(0) = '0' and - reg_F(3) = '1') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + - unsigned ((zw_ALU4(8 downto 5))); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + - unsigned ((zw_ALU3(8 downto 5))); - - zw_ALU4(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & - (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0'; - zw_ALU3(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & - (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & NOT (D_IN(7 downto 4))) + zw_ALU1(4); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & NOT (D_IN(3 downto 0))) + reg_F(0); - sig_SYNC <= '1'; - end if; - when s574 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - reg_F(3) = '0') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU <= unsigned ('0' & q_a) + unsigned ('0' & NOT (D_IN)) + reg_F(0); - sig_SYNC <= '1'; - elsif (RDY = '1' and - reg_F(3) = '1') then - d_REGS_out <= zw_ALU(7 downto 0); - load_REGS <= '1'; - zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + - unsigned ((zw_ALU4(8 downto 5))); - zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + - unsigned ((zw_ALU3(8 downto 5))); - - zw_ALU4(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' & - (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0'; - zw_ALU3(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' & - (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ; - - zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6; - zw_ALU2(4 downto 0) <= unsigned ('0' & q_a(7 downto 4)) + unsigned - ('0' & NOT (D_IN(7 downto 4))) + zw_ALU1(4); - - zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6; - zw_ALU1(4 downto 0) <= unsigned ('0' & q_a(3 downto 0)) + unsigned - ('0' & NOT (D_IN(3 downto 0))) + reg_F(0); - sig_SYNC <= '1'; - end if; - when s548 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - ld_PC <= '1'; - end if; - when s551 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (15 downto 8); - when s552 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (7 downto 0); - when s575 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s576 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= reg_F; - when s577 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s532 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_SP <= '1'; - ld_PC <= '1'; - end if; - when s533 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (15 downto 8); - when s534 => - sig_RWn <= '1'; - sig_RD <= '1'; - ld <= "11"; - ld_SP <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= adr_PC (7 downto 0); - when s535 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s536 => - sig_RWn <= '1'; - sig_RD <= '1'; - sig_RWn <= '0'; - sig_RD <= '0'; - sig_WR <= '1'; - sig_D_OUT <= reg_F; - when s537 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - sig_SYNC <= '1'; - end if; - when s274 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - adr_out <= D_IN & zw_b1; - offset <= (X"00" & q_x); - ld <= "11"; - ld_PC <= '1'; - end if; - when s305 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s203 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and - zw_REG_OP = X"34") then - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"3C") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= D_IN; - b_ALU <= q_x; - elsif (RDY = '1' and - zw_REG_OP = X"24") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"2C") then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1' and - zw_REG_OP = X"89") then - ld <= "11"; - ld_PC <= '1'; - a_ALU <= q_a AND D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s212 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= D_IN; - b_ALU <= "0000000" & zw_b2(0); - ld <= "11"; - ld_PC <= '1'; - end if; - when s219 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - end if; - when s227 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - a_ALU <= q_a AND D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s228 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' AND - zw_b2(0) = '0') then - a_ALU <= q_a AND D_IN; - b_ALU <= X"00"; - sig_SYNC <= '1'; - end if; - when s267 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s268 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1' and ( - (zw_b2(0) = '1' and zw_REG_OP = X"8F") or - (zw_b2(1) = '1' and zw_REG_OP = X"9F") or - (zw_b2(2) = '1' and zw_REG_OP = X"AF") or - (zw_b2(3) = '1' and zw_REG_OP = X"BF") or - (zw_b2(4) = '1' and zw_REG_OP = X"CF") or - (zw_b2(5) = '1' and zw_REG_OP = X"DF") or - (zw_b2(6) = '1' and zw_REG_OP = X"EF") or - (zw_b2(7) = '1' and zw_REG_OP = X"FF") or - (zw_b2(0) = '0' and zw_REG_OP = X"0F") or - (zw_b2(1) = '0' and zw_REG_OP = X"1F") or - (zw_b2(2) = '0' and zw_REG_OP = X"2F") or - (zw_b2(3) = '0' and zw_REG_OP = X"3F") or - (zw_b2(4) = '0' and zw_REG_OP = X"4F") or - (zw_b2(5) = '0' and zw_REG_OP = X"5F") or - (zw_b2(6) = '0' and zw_REG_OP = X"6F") or - (zw_b2(7) = '0' and zw_REG_OP = X"7F"))) then - ld <= "11"; - ld_PC <= '1'; - elsif (RDY = '1') then - ld <= "11"; - ld_PC <= '1'; - sig_SYNC <= '1'; - end if; - when s269 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s578 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s580 => - sig_RWn <= '1'; - sig_RD <= '1'; - when s25 => - sig_RWn <= '1'; - sig_RD <= '1'; - if (RDY = '1') then - d_REGS_out <= d_ALU; - a_ALU <= d_REGS; - b_ALU <= zw_b4; - load_REGS <= '1'; - sig_SYNC <= '1'; - end if; - when others => - null; - end case; - end process output_proc; - - -- Concurrent Statements - -- Clocked output assignments - D_OUT <= D_OUT_cld; - RD <= RD_cld; - RWn <= RWn_cld; - SYNC <= SYNC_cld; - WR <= WR_cld; - sel_ALU_as <= sel_ALU_as_cld; - sel_ALU_out <= sel_ALU_out_cld; - sel_PC_as <= sel_PC_as_cld; - sel_PC_in <= sel_PC_in_cld; - sel_PC_val <= sel_PC_val_cld; - sel_RB_in <= sel_RB_in_cld; - sel_RB_out <= sel_RB_out_cld; - sel_SP_as <= sel_SP_as_cld; - sel_SP_in <= sel_SP_in_cld; - sel_SP_val <= sel_SP_val_cld; - sel_reg <= sel_reg_cld; -end fsm;
trunk/rtl/vhdl/fsm_core_v2_0.vhd Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: trunk/doc/65C02_opcodes_cycles_testet_V0_9_DRAFT.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/65C02_opcodes_cycles_testet_V0_9_DRAFT.pdf =================================================================== --- trunk/doc/65C02_opcodes_cycles_testet_V0_9_DRAFT.pdf (revision 7) +++ trunk/doc/65C02_opcodes_cycles_testet_V0_9_DRAFT.pdf (nonexistent)
trunk/doc/65C02_opcodes_cycles_testet_V0_9_DRAFT.pdf Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_4.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_4.doc =================================================================== --- trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_4.doc (revision 7) +++ trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_4.doc (nonexistent)
trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_4.doc Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/doc/src/65C02_opcodes_cycles_testet_V0_9_DRAFT.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/65C02_opcodes_cycles_testet_V0_9_DRAFT.doc =================================================================== --- trunk/doc/src/65C02_opcodes_cycles_testet_V0_9_DRAFT.doc (revision 7) +++ trunk/doc/src/65C02_opcodes_cycles_testet_V0_9_DRAFT.doc (nonexistent)
trunk/doc/src/65C02_opcodes_cycles_testet_V0_9_DRAFT.doc Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_5.doc =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_5.doc =================================================================== --- trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_5.doc (nonexistent) +++ trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_5.doc (revision 8)
trunk/doc/src/EXAMPLE_6502 IP Core Specification_V0_5.doc Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

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