mc8051_p.vhd
上传用户:sztwq510
上传日期:2007-04-20
资源大小:209k
文件大小:42k
源码类别:

VHDL/FPGA/Verilog

开发平台:

Matlab

  1. -------------------------------------------------------------------------------
  2. --                                                                           --
  3. --          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          --
  4. --          XX     XX  X      X  X      X  X      X  X           XX          --
  5. --          X X   X X  X         X      X  X      X  X          X X          --
  6. --          X  X X  X  X         X      X  X      X  X         X  X          --
  7. --          X   X   X  X          XXXXXX   X      X   XXXXXX      X          --
  8. --          X       X  X         X      X  X      X         X     X          --
  9. --          X       X  X         X      X  X      X         X     X          --
  10. --          X       X  X      X  X      X  X      X         X     X          --
  11. --          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          --
  12. --                                                                           --
  13. --                                                                           --
  14. --                       O R E G A N O   S Y S T E M S                       --
  15. --                                                                           --
  16. --                            Design & Consulting                            --
  17. --                                                                           --
  18. -------------------------------------------------------------------------------
  19. --                                                                           --
  20. --         Web:           http://www.oregano.at/                             --
  21. --                                                                           --
  22. --         Contact:       mc8051@oregano.at                                  --
  23. --                                                                           --
  24. -------------------------------------------------------------------------------
  25. --                                                                           --
  26. --  MC8051 - VHDL 8051 Microcontroller IP Core                               --
  27. --  Copyright (C) 2001 OREGANO SYSTEMS                                       --
  28. --                                                                           --
  29. --  This library is free software; you can redistribute it and/or            --
  30. --  modify it under the terms of the GNU Lesser General Public               --
  31. --  License as published by the Free Software Foundation; either             --
  32. --  version 2.1 of the License, or (at your option) any later version.       --
  33. --                                                                           --
  34. --  This library is distributed in the hope that it will be useful,          --
  35. --  but WITHOUT ANY WARRANTY; without even the implied warranty of           --
  36. --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU        --
  37. --  Lesser General Public License for more details.                          --
  38. --                                                                           --
  39. --  Full details of the license can be found in the file LGPL.TXT.           --
  40. --                                                                           --
  41. --  You should have received a copy of the GNU Lesser General Public         --
  42. --  License along with this library; if not, write to the Free Software      --
  43. --  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  --
  44. --                                                                           --
  45. -------------------------------------------------------------------------------
  46. --
  47. --
  48. --         Author:                 Roland H鰈ler
  49. --
  50. --         Filename:               mc8051_p.vhd
  51. --
  52. --         Date of Creation:       Mon Aug  9 12:14:48 1999
  53. --
  54. --         Version:                $Revision: 1.14 $
  55. --
  56. --         Date of Latest Version: $Date: 2002/01/07 12:17:45 $
  57. --
  58. --
  59. --         Description: Collection of constants, types, and components.
  60. --
  61. --
  62. --
  63. --
  64. -------------------------------------------------------------------------------
  65. library IEEE; 
  66. use IEEE.std_logic_1164.all; 
  67. use IEEE.std_logic_arith.all; 
  68. package mc8051_p is
  69.   -----------------------------------------------------------------------------
  70.   -- Set data width of mc8051_alu (no other than 8 supported at the moment!)
  71.   -- Default: 8
  72.   constant C_DWIDTH : integer := 8;
  73.   -----------------------------------------------------------------------------
  74.   -----------------------------------------------------------------------------
  75.   -- Select whether to implement (1) or skip (0) the multiplier
  76.   -- Default: 1
  77.   constant C_IMPL_MUL : integer := 1;
  78.   -----------------------------------------------------------------------------
  79.   -----------------------------------------------------------------------------
  80.   -- Select whether to implement (1) or skip (0) the divider
  81.   -- Default: 1
  82.   constant C_IMPL_DIV : integer := 1;
  83.   -----------------------------------------------------------------------------
  84.    
  85.   -----------------------------------------------------------------------------
  86.   -- Select whether to implement (1) or skip (0) the decimal adjustment command
  87.   -- Default: 1
  88.   constant C_IMPL_DA  : integer := 1;
  89.   -----------------------------------------------------------------------------
  90.   -----------------------------------------------------------------------------
  91.   -- Select how many timer/counter units should be implemented
  92.   -- Default: 1
  93.   constant C_IMPL_N_TMR : integer := 1;
  94.   -----------------------------------------------------------------------------
  95.   -----------------------------------------------------------------------------
  96.   -- Select how many serial interface units should be implemented
  97.   -- Default: C_IMPL_N_TMR ---(DO NOT CHANGE!)---      
  98.   constant C_IMPL_N_SIU : integer := C_IMPL_N_TMR;
  99.   -----------------------------------------------------------------------------
  100.      
  101.   -----------------------------------------------------------------------------
  102.   -- Select how many external interrupt-inputs should be implemented
  103.   -- Default: C_IMPL_N_TMR ---(DO NOT CHANGE!)---
  104.   constant C_IMPL_N_EXT : integer := C_IMPL_N_TMR;
  105.   -----------------------------------------------------------------------------
  106.   constant OFF            : std_logic_vector(5 downto 0) := "000000";
  107.   constant DA             : std_logic_vector(5 downto 0) := "100000";
  108.   constant ADD_ACC_RAM    : std_logic_vector(5 downto 0) := "100001";
  109.   constant ADD_ACC_ROM    : std_logic_vector(5 downto 0) := "100010";
  110.   constant ADDC_ACC_RAM   : std_logic_vector(5 downto 0) := "100011";
  111.   constant ADDC_ACC_ROM   : std_logic_vector(5 downto 0) := "100100";
  112.   constant AND_ACC_RAM    : std_logic_vector(5 downto 0) := "100101";
  113.   constant AND_ACC_ROM    : std_logic_vector(5 downto 0) := "100110";
  114.   constant AND_RAM_ROM    : std_logic_vector(5 downto 0) := "100111";
  115.   constant SUB_ACC_RAM    : std_logic_vector(5 downto 0) := "101000";
  116.   constant SUB_ACC_ROM    : std_logic_vector(5 downto 0) := "101001";
  117.   constant MUL_ACC_RAM    : std_logic_vector(5 downto 0) := "101010";
  118.   constant DIV_ACC_RAM    : std_logic_vector(5 downto 0) := "101011";
  119.   constant OR_RAM_ACC     : std_logic_vector(5 downto 0) := "101100";
  120.   constant OR_ROM_ACC     : std_logic_vector(5 downto 0) := "101101";
  121.   constant OR_ROM_RAM     : std_logic_vector(5 downto 0) := "101110";
  122.   constant XOR_RAM_ACC    : std_logic_vector(5 downto 0) := "101111";
  123.   constant XOR_ROM_ACC    : std_logic_vector(5 downto 0) := "110000";
  124.   constant XOR_ROM_RAM    : std_logic_vector(5 downto 0) := "110001";
  125.   constant RL_ACC         : std_logic_vector(5 downto 0) := "110010";
  126.   constant RLC_ACC        : std_logic_vector(5 downto 0) := "110011";
  127.   constant RR_ACC         : std_logic_vector(5 downto 0) := "110100";
  128.   constant RRC_ACC        : std_logic_vector(5 downto 0) := "110101";
  129.   constant INV_ACC        : std_logic_vector(5 downto 0) := "110110";
  130.   constant INV_RAM        : std_logic_vector(5 downto 0) := "110111";
  131.   constant DEC_ACC        : std_logic_vector(5 downto 0) := "111000";
  132.   constant DEC_RAM        : std_logic_vector(5 downto 0) := "111001";
  133.   constant COMP_RAM_ACC   : std_logic_vector(5 downto 0) := "111010";
  134.   constant COMP_ROM_ACC   : std_logic_vector(5 downto 0) := "111011";
  135.   constant COMP_ROM_RAM   : std_logic_vector(5 downto 0) := "111100";
  136.   constant INC_ACC        : std_logic_vector(5 downto 0) := "111110";
  137.   constant INC_RAM        : std_logic_vector(5 downto 0) := "111111";
  138.   constant ACALL         : std_logic_vector(4 downto 0) :=    "10001";
  139.   constant ADD_A_RR      : std_logic_vector(4 downto 0) := "00101";
  140.   constant ADD_A_D       : std_logic_vector(7 downto 0) := "00100101";
  141.   constant ADD_A_ATRI    : std_logic_vector(6 downto 0) := "0010011";
  142.   constant ADD_A_DATA    : std_logic_vector(7 downto 0) := "00100100";
  143.   constant ADDC_A_RR     : std_logic_vector(4 downto 0) := "00111";
  144.   constant ADDC_A_D      : std_logic_vector(7 downto 0) := "00110101";
  145.   constant ADDC_A_ATRI   : std_logic_vector(6 downto 0) := "0011011";
  146.   constant ADDC_A_DATA   : std_logic_vector(7 downto 0) := "00110100";
  147.   constant AJMP          : std_logic_vector(4 downto 0) :=    "00001";
  148.   constant ANL_A_RR      : std_logic_vector(4 downto 0) := "01011";
  149.   constant ANL_A_D       : std_logic_vector(7 downto 0) := "01010101";
  150.   constant ANL_A_ATRI    : std_logic_vector(6 downto 0) := "0101011";
  151.   constant ANL_A_DATA    : std_logic_vector(7 downto 0) := "01010100";
  152.   constant ANL_D_A       : std_logic_vector(7 downto 0) := "01010010";
  153.   constant ANL_D_DATA    : std_logic_vector(7 downto 0) := "01010011";
  154.   constant ANL_C_BIT     : std_logic_vector(7 downto 0) := "10000010";
  155.   constant ANL_C_NBIT    : std_logic_vector(7 downto 0) := "10110000";
  156.   constant CJNE_A_D      : std_logic_vector(7 downto 0) := "10110101";
  157.   constant CJNE_A_DATA   : std_logic_vector(7 downto 0) := "10110100";
  158.   constant CJNE_RR_DATA  : std_logic_vector(4 downto 0) := "10111";
  159.   constant CJNE_ATRI_DATA: std_logic_vector(6 downto 0) := "1011011" ;
  160.   constant CLR_A         : std_logic_vector(7 downto 0) := "11100100";
  161.   constant CLR_C         : std_logic_vector(7 downto 0) := "11000011";
  162.   constant CLR_BIT       : std_logic_vector(7 downto 0) := "11000010";
  163.   constant CPL_A         : std_logic_vector(7 downto 0) := "11110100";
  164.   constant CPL_C         : std_logic_vector(7 downto 0) := "10110011";
  165.   constant CPL_BIT       : std_logic_vector(7 downto 0) := "10110010";
  166.   constant DA_A          : std_logic_vector(7 downto 0) := "11010100";
  167.   constant DEC_A         : std_logic_vector(7 downto 0) := "00010100";
  168.   constant DEC_RR        : std_logic_vector(4 downto 0) := "00011";
  169.   constant DEC_D         : std_logic_vector(7 downto 0) := "00010101";
  170.   constant DEC_ATRI      : std_logic_vector(6 downto 0) := "0001011";
  171.   constant DIV_AB        : std_logic_vector(7 downto 0) := "10000100";
  172.   constant DJNZ_RR       : std_logic_vector(4 downto 0) := "11011";
  173.   constant DJNZ_D        : std_logic_vector(7 downto 0) := "11010101";
  174.   constant INC_A         : std_logic_vector(7 downto 0) := "00000100";
  175.   constant INC_RR        : std_logic_vector(4 downto 0) := "00001";
  176.   constant INC_D         : std_logic_vector(7 downto 0) := "00000101";
  177.   constant INC_ATRI      : std_logic_vector(6 downto 0) := "0000011";
  178.   constant INC_DPTR      : std_logic_vector(7 downto 0) := "10100011";
  179.   constant JB            : std_logic_vector(7 downto 0) := "00100000";
  180.   constant JBC           : std_logic_vector(7 downto 0) := "00010000";
  181.   constant JC            : std_logic_vector(7 downto 0) := "01000000";
  182.   constant JMP_A_DPTR    : std_logic_vector(7 downto 0) := "01110011";
  183.   constant JNB           : std_logic_vector(7 downto 0) := "00110000";
  184.   constant JNC           : std_logic_vector(7 downto 0) := "01010000";
  185.   constant JNZ           : std_logic_vector(7 downto 0) := "01110000";
  186.   constant JZ            : std_logic_vector(7 downto 0) := "01100000";
  187.   constant LCALL         : std_logic_vector(7 downto 0) := "00010010";
  188.   constant LJMP          : std_logic_vector(7 downto 0) := "00000010";
  189.   constant MOV_A_RR      : std_logic_vector(4 downto 0) := "11101";
  190.   constant MOV_A_D       : std_logic_vector(7 downto 0) := "11100101";
  191.   constant MOV_A_ATRI    : std_logic_vector(6 downto 0) := "1110011";
  192.   constant MOV_A_DATA    : std_logic_vector(7 downto 0) := "01110100";
  193.   constant MOV_RR_A      : std_logic_vector(4 downto 0) := "11111";
  194.   constant MOV_RR_D      : std_logic_vector(4 downto 0) := "10101";
  195.   constant MOV_RR_DATA   : std_logic_vector(4 downto 0) := "01111";
  196.   constant MOV_D_A       : std_logic_vector(7 downto 0) := "11110101";
  197.   constant MOV_D_RR      : std_logic_vector(4 downto 0) := "10001";
  198.   constant MOV_D_D       : std_logic_vector(7 downto 0) := "10000101";
  199.   constant MOV_D_ATRI    : std_logic_vector(6 downto 0) := "1000011";
  200.   constant MOV_D_DATA    : std_logic_vector(7 downto 0) := "01110101";
  201.   constant MOV_ATRI_A    : std_logic_vector(6 downto 0) := "1111011";
  202.   constant MOV_ATRI_D    : std_logic_vector(6 downto 0) := "1010011";
  203.   constant MOV_ATRI_DATA : std_logic_vector(6 downto 0) := "0111011";
  204.   constant MOVC_A_ATDPTR : std_logic_vector(7 downto 0) := "10010011";
  205.   constant MOVC_A_ATPC   : std_logic_vector(7 downto 0) := "10000011";
  206.   constant MOVX_A_ATRI   : std_logic_vector(6 downto 0) := "1110001";
  207.   constant MOVX_A_ATDPTR : std_logic_vector(7 downto 0) := "11100000";
  208.   constant MOVX_ATRI_A   : std_logic_vector(6 downto 0) := "1111001";
  209.   constant MOVX_ATDPTR_A : std_logic_vector(7 downto 0) := "11110000";
  210.   constant MOV_C_BIT     : std_logic_vector(7 downto 0) := "10100010";
  211.   constant MOV_BIT_C     : std_logic_vector(7 downto 0) := "10010010";
  212.   constant MOV_DPTR_DATA : std_logic_vector(7 downto 0) := "10010000";
  213.   constant MUL_AB        : std_logic_vector(7 downto 0) := "10100100";
  214.   constant NOP           : std_logic_vector(7 downto 0) := "00000000";
  215.   constant ORL_A_RR      : std_logic_vector(4 downto 0) := "01001";
  216.   constant ORL_A_D       : std_logic_vector(7 downto 0) := "01000101";
  217.   constant ORL_A_ATRI    : std_logic_vector(6 downto 0) := "0100011";
  218.   constant ORL_A_DATA    : std_logic_vector(7 downto 0) := "01000100";
  219.   constant ORL_D_A       : std_logic_vector(7 downto 0) := "01000010";
  220.   constant ORL_D_DATA    : std_logic_vector(7 downto 0) := "01000011";
  221.   constant ORL_C_BIT     : std_logic_vector(7 downto 0) := "01110010";
  222.   constant ORL_C_NBIT    : std_logic_vector(7 downto 0) := "10100000";
  223.   constant POP           : std_logic_vector(7 downto 0) := "11010000";
  224.   constant PUSH          : std_logic_vector(7 downto 0) := "11000000";
  225.   constant RET           : std_logic_vector(7 downto 0) := "00100010";
  226.   constant RETI          : std_logic_vector(7 downto 0) := "00110010";
  227.   constant RL_A          : std_logic_vector(7 downto 0) := "00100011";
  228.   constant RLC_A         : std_logic_vector(7 downto 0) := "00110011";
  229.   constant RR_A          : std_logic_vector(7 downto 0) := "00000011";
  230.   constant RRC_A         : std_logic_vector(7 downto 0) := "00010011";
  231.   constant SETB_C        : std_logic_vector(7 downto 0) := "11010011";
  232.   constant SETB_BIT      : std_logic_vector(7 downto 0) := "11010010";
  233.   constant SJMP          : std_logic_vector(7 downto 0) := "10000000";
  234.   constant SUBB_A_RR     : std_logic_vector(4 downto 0) := "10011";
  235.   constant SUBB_A_D      : std_logic_vector(7 downto 0) := "10010101";
  236.   constant SUBB_A_ATRI   : std_logic_vector(6 downto 0) := "1001011";
  237.   constant SUBB_A_DATA   : std_logic_vector(7 downto 0) := "10010100";
  238.   constant SWAP_A        : std_logic_vector(7 downto 0) := "11000100";
  239.   constant XCH_A_RR      : std_logic_vector(4 downto 0) := "11001";
  240.   constant XCH_A_D       : std_logic_vector(7 downto 0) := "11000101";
  241.   constant XCH_A_ATRI    : std_logic_vector(6 downto 0) := "1100011";
  242.   constant XCHD_A_ATRI   : std_logic_vector(6 downto 0) := "1101011";
  243.   constant XRL_A_RR      : std_logic_vector(4 downto 0) := "01101";
  244.   constant XRL_A_D       : std_logic_vector(7 downto 0) := "01100101";
  245.   constant XRL_A_ATRI    : std_logic_vector(6 downto 0) := "0110011";
  246.   constant XRL_A_DATA    : std_logic_vector(7 downto 0) := "01100100";
  247.   constant XRL_D_A       : std_logic_vector(7 downto 0) := "01100010";
  248.   constant XRL_D_DATA    : std_logic_vector(7 downto 0) := "01100011";
  249.   
  250.   type t_state is (STARTUP,
  251.                    FETCH,
  252.                    EXEC1,
  253.                    EXEC2,
  254.                    EXEC3);
  255.   type t_instr_category is (IC_ACALL,
  256.                             IC_ADD_A_RR,
  257.                             IC_ADD_A_D,
  258.                             IC_ADD_A_ATRI,
  259.                             IC_ADD_A_DATA,
  260.                             IC_ADDC_A_RR,
  261.                             IC_ADDC_A_D,
  262.                             IC_ADDC_A_ATRI,
  263.                             IC_ADDC_A_DATA,
  264.                             IC_AJMP,
  265.                             IC_ANL_A_RR,
  266.                             IC_ANL_A_D,
  267.                             IC_ANL_A_ATRI,
  268.                             IC_ANL_A_DATA,
  269.                             IC_ANL_D_A,
  270.                             IC_ANL_D_DATA,
  271.                             IC_ANL_C_BIT,
  272.                             IC_ANL_C_NBIT,
  273.                             IC_CJNE_A_D,
  274.                             IC_CJNE_A_DATA,
  275.                             IC_CJNE_RR_DATA,
  276.                             IC_CJNE_ATRI_DATA,
  277.                             IC_CLR_A,
  278.                             IC_CLR_C,
  279.                             IC_CLR_BIT,
  280.                             IC_CPL_A,
  281.                             IC_CPL_C,
  282.                             IC_CPL_BIT,
  283.                             IC_DA_A,
  284.                             IC_DEC_A,
  285.                             IC_DEC_RR,
  286.                             IC_DEC_D,
  287.                             IC_DEC_ATRI,
  288.                             IC_DIV_AB,
  289.                             IC_DJNZ_RR,
  290.                             IC_DJNZ_D,
  291.                             IC_INC_A,
  292.                             IC_INC_RR,
  293.                             IC_INC_D,
  294.                             IC_INC_ATRI,
  295.                             IC_INC_DPTR,
  296.                             IC_JB,
  297.                             IC_JBC,
  298.                             IC_JC,
  299.                             IC_JMP_A_DPTR,
  300.                             IC_JNB,
  301.                             IC_JNC,
  302.                             IC_JNZ,
  303.                             IC_JZ,
  304.                             IC_LCALL,
  305.                             IC_LJMP,
  306.                             IC_MOV_A_RR,
  307.                             IC_MOV_A_D,
  308.                             IC_MOV_A_ATRI,
  309.                             IC_MOV_A_DATA,
  310.                             IC_MOV_RR_A,
  311.                             IC_MOV_RR_D,
  312.                             IC_MOV_RR_DATA,
  313.                             IC_MOV_D_A,
  314.                             IC_MOV_D_RR,
  315.                             IC_MOV_D_D,
  316.                             IC_MOV_D_ATRI,
  317.                             IC_MOV_D_DATA,
  318.                             IC_MOV_ATRI_A,
  319.                             IC_MOV_ATRI_D,
  320.                             IC_MOV_ATRI_DATA,
  321.                             IC_MOVC_A_ATDPTR,
  322.                             IC_MOVC_A_ATPC,
  323.                             IC_MOVX_A_ATRI,
  324.                             IC_MOVX_A_ATDPTR,
  325.                             IC_MOVX_ATRI_A,
  326.                             IC_MOVX_ATDPTR_A,
  327.                             IC_MOV_C_BIT,
  328.                             IC_MOV_BIT_C,
  329.                             IC_MOV_DPTR_DATA,
  330.                             IC_MUL_AB,
  331.                             IC_NOP,
  332.                             IC_ORL_A_RR,
  333.                             IC_ORL_A_D,
  334.                             IC_ORL_A_ATRI,
  335.                             IC_ORL_A_DATA,
  336.                             IC_ORL_D_A,
  337.                             IC_ORL_D_DATA,
  338.                             IC_ORL_C_BIT,
  339.                             IC_ORL_C_NBIT,
  340.                             IC_POP,
  341.                             IC_PUSH,
  342.                             IC_RET,
  343.                             IC_RETI,
  344.                             IC_RL_A,
  345.                             IC_RLC_A,
  346.                             IC_RR_A,
  347.                             IC_RRC_A,
  348.                             IC_SETB_C,
  349.                             IC_SETB_BIT,
  350.                             IC_SJMP,
  351.                             IC_SUBB_A_RR,
  352.                             IC_SUBB_A_D,
  353.                             IC_SUBB_A_ATRI,
  354.                             IC_SUBB_A_DATA,
  355.                             IC_SWAP_A,
  356.                             IC_XCH_A_RR,
  357.                             IC_XCH_A_D,
  358.                             IC_XCH_A_ATRI,
  359.                             IC_XCHD_A_ATRI,
  360.                             IC_XRL_A_RR,
  361.                             IC_XRL_A_D,
  362.                             IC_XRL_A_ATRI,
  363.                             IC_XRL_A_DATA,
  364.                             IC_XRL_D_A,
  365.                             IC_XRL_D_DATA);
  366.   
  367.   type t_tmr_lv is array(C_IMPL_N_TMR-1 downto 0) of
  368.     std_logic_vector(7 downto 0);
  369.   
  370.   type t_tmr_us is array(C_IMPL_N_TMR-1 downto 0) of unsigned(7 downto 0);
  371.   
  372.   type t_tmr_us2 is array(C_IMPL_N_TMR-1 downto 0) of unsigned(1 downto 0);
  373.   
  374.   type t_tmr_l is array(C_IMPL_N_TMR-1 downto 0) of std_logic;
  375.   
  376.   type t_siu_lv is array(C_IMPL_N_SIU-1 downto 0) of
  377.     std_logic_vector(7 downto 0);
  378.   
  379.   type t_siu_us is array(C_IMPL_N_SIU-1 downto 0) of unsigned(7 downto 0);
  380.   
  381.   type t_siu_l is array(C_IMPL_N_SIU-1 downto 0) of std_logic;
  382.   
  383.   type t_ext_l is array(C_IMPL_N_EXT-1 downto 0) of std_logic;
  384.   
  385.   component addsub_cy
  386.     generic (DWIDTH : integer);
  387.     port (opa_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  388.           opb_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  389.           addsub_i : in  std_logic;
  390.           cy_i     : in  std_logic;
  391.           cy_o     : out std_logic;
  392.           rslt_o   : out std_logic_vector(DWIDTH-1 downto 0));
  393.   end component;
  394.   component addsub_ovcy
  395.     generic (DWIDTH : integer);
  396.     port (opa_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  397.           opb_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  398.           addsub_i : in  std_logic;
  399.           cy_i     : in  std_logic;
  400.           cy_o     : out std_logic;
  401.           ov_o     : out std_logic;
  402.           rslt_o   : out std_logic_vector(DWIDTH-1 downto 0));
  403.   end component;
  404.   component addsub_core
  405.     generic (DWIDTH : integer);
  406.     port (opa_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  407.           opb_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  408.           addsub_i : in  std_logic;
  409.           cy_i     : in  std_logic;
  410.           cy_o     : out std_logic_vector((DWIDTH-1)/4 downto 0);
  411.           ov_o     : out std_logic;
  412.           rslt_o   : out std_logic_vector(DWIDTH-1 downto 0));
  413.   end component;
  414.   component alucore
  415.     generic (DWIDTH : integer);
  416.     port (op_a_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  417.           op_b_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  418.           alu_cmd_i : in  std_logic_vector(3 downto 0);
  419.           cy_i      : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  420.           cy_o      : out std_logic_vector((DWIDTH-1)/4 downto 0);
  421.           result_o  : out std_logic_vector(DWIDTH-1 downto 0));
  422.   end component;
  423.   component comb_divider
  424.     generic (
  425.       DWIDTH : integer);
  426.     port (
  427.       dvdnd_i : in  std_logic_vector(DWIDTH-1 downto 0);
  428.       dvsor_i : in  std_logic_vector(DWIDTH-1 downto 0);
  429.       qutnt_o : out std_logic_vector(DWIDTH-1 downto 0);
  430.       rmndr_o : out std_logic_vector(DWIDTH-1 downto 0));
  431.   end component;
  432.   component comb_mltplr
  433.     generic (
  434.       DWIDTH : integer);
  435.     port (
  436.       mltplcnd_i : in  std_logic_vector(DWIDTH-1 downto 0);
  437.       mltplctr_i : in  std_logic_vector(DWIDTH-1 downto 0);
  438.       product_o  : out std_logic_vector((DWIDTH*2)-1 downto 0));
  439.   end component;
  440.   component dcml_adjust
  441.     generic (
  442.       DWIDTH : integer);
  443.     port (
  444.       data_i : in  std_logic_vector(DWIDTH-1 downto 0);
  445.       cy_i   : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  446.       data_o : out std_logic_vector(DWIDTH-1 downto 0);
  447.       cy_o   : out std_logic);
  448.   end component;
  449.   component alumux
  450.     generic (DWIDTH : integer);
  451.     port (rom_data_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  452.           ram_data_i    : in  std_logic_vector(DWIDTH-1 downto 0);
  453.           acc_i         : in  std_logic_vector(DWIDTH-1 downto 0);
  454.           cmd_i         : in  std_logic_vector(5 downto 0);
  455.           cy_i          : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  456.           ov_i          : in  std_logic;
  457.           cy_o          : out std_logic_vector((DWIDTH-1)/4 downto 0);
  458.           ov_o          : out std_logic;
  459.           result_a_o    : out std_logic_vector(DWIDTH-1 downto 0);
  460.           result_b_o    : out std_logic_vector(DWIDTH-1 downto 0);
  461.           result_i      : in  std_logic_vector(DWIDTH-1 downto 0);
  462.           new_cy_i      : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  463.           addsub_rslt_i : in  std_logic_vector(DWIDTH-1 downto 0);
  464.           addsub_cy_i   : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  465.           addsub_ov_i   : in  std_logic;
  466.           op_a_o        : out std_logic_vector(DWIDTH-1 downto 0);
  467.           op_b_o        : out std_logic_vector(DWIDTH-1 downto 0);
  468.           alu_cmd_o     : out std_logic_vector(3 downto 0);
  469.           opa_o         : out std_logic_vector(DWIDTH-1 downto 0);
  470.           opb_o         : out std_logic_vector(DWIDTH-1 downto 0);
  471.           addsub_o      : out std_logic;
  472.           addsub_cy_o   : out std_logic;
  473.           dvdnd_o       : out std_logic_vector(DWIDTH-1 downto 0);
  474.           dvsor_o       : out std_logic_vector(DWIDTH-1 downto 0);
  475.           qutnt_i       : in  std_logic_vector(DWIDTH-1 downto 0);
  476.           rmndr_i       : in  std_logic_vector(DWIDTH-1 downto 0);
  477.           mltplcnd_o    : out std_logic_vector(DWIDTH-1 downto 0);
  478.           mltplctr_o    : out std_logic_vector(DWIDTH-1 downto 0);
  479.           product_i     : in  std_logic_vector((DWIDTH*2)-1 downto 0);
  480.           dcml_data_o   : out std_logic_vector(DWIDTH-1 downto 0);
  481.           dcml_data_i   : in  std_logic_vector(DWIDTH-1 downto 0);
  482.           dcml_cy_i     : in  std_logic);
  483.   end component;
  484.   component mc8051_alu
  485.     generic (
  486.       DWIDTH : integer);
  487.     port (
  488.       rom_data_i : in  std_logic_vector(DWIDTH-1 downto 0);
  489.       ram_data_i : in  std_logic_vector(DWIDTH-1 downto 0);
  490.       acc_i      : in  std_logic_vector(DWIDTH-1 downto 0);
  491.       cmd_i      : in  std_logic_vector(5 downto 0);
  492.       cy_i       : in  std_logic_vector((DWIDTH-1)/4 downto 0);
  493.       ov_i       : in  std_logic;
  494.       new_cy_o   : out std_logic_vector((DWIDTH-1)/4 downto 0);
  495.       new_ov_o   : out std_logic;
  496.       result_a_o : out std_logic_vector(DWIDTH-1 downto 0);
  497.       result_b_o : out std_logic_vector(DWIDTH-1 downto 0));
  498.   end component;
  499.   component mc8051_siu
  500.     port (clk     : in  std_logic;
  501.           reset   : in  std_logic;
  502.           tf_i    : in  std_logic;
  503.           trans_i : in  std_logic;
  504.           rxd_i   : in  std_logic;
  505.           scon_i  : in  std_logic_vector(5 downto 0);
  506.           sbuf_i  : in  std_logic_vector(7 downto 0);
  507.           smod_i  : in  std_logic;
  508.           sbuf_o  : out std_logic_vector(7 downto 0);
  509.           scon_o  : out std_logic_vector(2 downto 0);
  510.           rxdwr_o : out std_logic;
  511.           rxd_o   : out std_logic;
  512.           txd_o   : out std_logic);
  513.   end component;
  514.   component mc8051_tmrctr
  515.     port (clk        : in  std_logic;
  516.           reset      : in  std_logic;
  517.           int0_i     : in  std_logic;
  518.           int1_i     : in  std_logic;
  519.           t0_i       : in  std_logic;
  520.           t1_i       : in  std_logic;
  521.           tmod_i     : in  std_logic_vector(7 downto 0);
  522.           tcon_tr0_i : in  std_logic;
  523.           tcon_tr1_i : in  std_logic;
  524.           reload_i   : in  std_logic_vector(7 downto 0);
  525.           wt_en_i    : in  std_logic;
  526.           wt_i       : in  std_logic_vector(1 downto 0);
  527.           th0_o      : out std_logic_vector(7 downto 0);
  528.           tl0_o      : out std_logic_vector(7 downto 0);
  529.           th1_o      : out std_logic_vector(7 downto 0);
  530.           tl1_o      : out std_logic_vector(7 downto 0);
  531.           tf0_o      : out std_logic;
  532.           tf1_o      : out std_logic);
  533.   end component;
  534.   component control_fsm
  535.     port ( state_i     : in t_state;    -- actual state
  536.             help_i     : in std_logic_vector (7 downto 0);  -- general help-reg
  537.             bit_data_i : in std_logic;  -- bitdata from regs
  538.             aludata_i  : in std_logic_vector (7 downto 0);  -- ALU result
  539.             command_i  : in std_logic_vector (7 downto 0);  -- actual command
  540.             inthigh_i  : in std_logic;  -- an interrupt must start
  541.             intlow_i   : in std_logic;  -- prepare for interrupt
  542.             intpre_i   : in std_logic;  -- high priority int is running
  543.             intpre2_i  : in std_logic;  -- low priority int is running
  544.             ti_i       : in std_logic;
  545.             ri_i       : in std_logic;
  546.             it0_i      : in std_logic;
  547.             ie0_i      : in std_logic;
  548.             it1_i      : in std_logic;
  549.             ie1_i      : in std_logic;
  550.             tf0_i      : in std_logic;
  551.             tf1_i      : in std_logic;
  552.             acc        : in std_logic_vector(7 downto 0);
  553.             psw        : in std_logic_vector(7 downto 0);
  554.             ie         : in std_logic_vector(7 downto 0);
  555.             ip         : in std_logic_vector(7 downto 0);
  556.             alu_cmd_o    : out std_logic_vector (5 downto 0);  -- ALU code
  557.             pc_inc_en_o  : out std_logic_vector (3 downto 0);
  558.             nextstate_o  : out t_state;  -- enable signal for state
  559.             adr_mux_o    : out std_logic_vector (3 downto 0);
  560.             adrx_mux_o   : out std_logic_vector (1 downto 0);
  561.             wrx_mux_o    : out std_logic;
  562.             data_mux_o   : out std_logic_vector (3 downto 0);
  563.             bdata_mux_o  : out std_logic_vector (3 downto 0);
  564.             regs_wr_en_o : out std_logic_vector (2 downto 0);
  565.             help_en_o    : out std_logic_vector (3 downto 0);
  566.             help16_en_o  : out std_logic_vector (1 downto 0);
  567.             helpb_en_o   : out std_logic;
  568.             inthigh_en_o : out std_logic;
  569.             intlow_en_o  : out std_logic;
  570.             intpre2_en_o : out std_logic;
  571.             inthigh_d_o  : out std_logic;
  572.             intlow_d_o   : out std_logic;
  573.             intpre2_d_o  : out std_logic);
  574.   end component;
  575.   component control_mem
  576.     port (pc_o           : out std_logic_vector(15 downto 0);
  577.           rom_data_i     : in  std_logic_vector(7 downto 0);
  578.           ram_data_o     : out std_logic_vector(7 downto 0);
  579.           ram_data_i     : in  std_logic_vector(7 downto 0);
  580.           ram_adr_o      : out std_logic_vector(6 downto 0);
  581.           reg_data_o     : out std_logic_vector(7 downto 0);
  582.           ram_wr_o       : out std_logic;
  583.           cy_o           : out std_logic_vector(1 downto 0);
  584.           ov_o           : out std_logic;
  585.           ram_en_o       : out std_logic;
  586.           aludata_i      : in  std_logic_vector (7 downto 0);
  587.           aludatb_i      : in  std_logic_vector (7 downto 0);
  588.           acc_o          : out std_logic_vector (7 downto 0);
  589.           new_cy_i       : in  std_logic_vector(1 downto 0);
  590.           new_ov_i       : in  std_logic;
  591.           reset          : in  std_logic;
  592.           clk            : in  std_logic;
  593.           int0_i         : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  594.           int1_i         : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  595.           p0_i           : in  std_logic_vector(7 downto 0);
  596.           p1_i           : in  std_logic_vector(7 downto 0);
  597.           p2_i           : in  std_logic_vector(7 downto 0);
  598.           p3_i           : in  std_logic_vector(7 downto 0);
  599.           p0_o           : out std_logic_vector(7 downto 0);
  600.           p1_o           : out std_logic_vector(7 downto 0);
  601.           p2_o           : out std_logic_vector(7 downto 0);
  602.           p3_o           : out std_logic_vector(7 downto 0);
  603.           all_trans_o    : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  604.           all_scon_o     : out std_logic_vector(6*C_IMPL_N_SIU-1 downto 0);
  605.           all_sbuf_o     : out std_logic_vector(8*C_IMPL_N_SIU-1 downto 0);
  606.           all_smod_o     : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  607.           all_scon_i     : in  std_logic_vector(3*C_IMPL_N_SIU-1 downto 0);
  608.           all_sbuf_i     : in  std_logic_vector(8*C_IMPL_N_SIU-1 downto 0);
  609.           all_tcon_tr0_o : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  610.           all_tcon_tr1_o : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  611.           all_tmod_o     : out std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  612.           all_reload_o   : out std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  613.           all_wt_o       : out std_logic_vector(2*C_IMPL_N_TMR-1 downto 0);
  614.           all_wt_en_o    : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  615.           all_tf0_i      : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  616.           all_tf1_i      : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  617.           all_tl0_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  618.           all_tl1_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  619.           all_th0_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  620.           all_th1_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  621.           state_o        : out t_state;
  622.           help_o         : out std_logic_vector(7 downto 0);
  623.           bit_data_o     : out std_logic;
  624.           command_o      : out std_logic_vector (7 downto 0);
  625.           inthigh_o      : out std_logic;
  626.           intlow_o       : out std_logic;
  627.           intpre_o       : out std_logic;
  628.           intpre2_o      : out std_logic;
  629.           ti_o           : out std_logic;
  630.           ri_o           : out std_logic;
  631.           it0_o          : out std_logic;
  632.           ie0_o          : out std_logic;
  633.           it1_o          : out std_logic;
  634.           ie1_o          : out std_logic;
  635.           tf0_o          : out std_logic;
  636.           tf1_o          : out std_logic;
  637.           psw_o          : out std_logic_vector(7 downto 0);
  638.           ie_o           : out std_logic_vector(7 downto 0);
  639.           ip_o           : out std_logic_vector(7 downto 0);
  640.           adrx_o         : out std_logic_vector(15 downto 0);
  641.           datax_o        : out std_logic_vector(7 downto 0);
  642.           wrx_o          : out std_logic;
  643.           datax_i        : in  std_logic_vector(7 downto 0);
  644.           pc_inc_en_i    : in  std_logic_vector (3 downto 0);
  645.           nextstate_i    : in  t_state;
  646.           adr_mux_i      : in  std_logic_vector (3 downto 0);
  647.           adrx_mux_i     : in  std_logic_vector (1 downto 0);
  648.           wrx_mux_i      : in  std_logic;
  649.           data_mux_i     : in  std_logic_vector (3 downto 0);
  650.           bdata_mux_i    : in  std_logic_vector (3 downto 0);
  651.           regs_wr_en_i   : in  std_logic_vector (2 downto 0);
  652.           help_en_i      : in  std_logic_vector (3 downto 0);
  653.           help16_en_i    : in  std_logic_vector (1 downto 0);
  654.           helpb_en_i     : in  std_logic;
  655.           inthigh_en_i   : in  std_logic;
  656.           intlow_en_i    : in  std_logic;
  657.           intpre2_en_i   : in  std_logic;
  658.           inthigh_d_i    : in  std_logic;
  659.           intlow_d_i     : in  std_logic;
  660.           intpre2_d_i    : in  std_logic);
  661.   end component;
  662.   component mc8051_control
  663.     port (pc_o           : out std_logic_vector(15 downto 0);
  664.           rom_data_i     : in  std_logic_vector(7 downto 0);
  665.           ram_data_o     : out std_logic_vector(7 downto 0);
  666.           ram_data_i     : in  std_logic_vector(7 downto 0);
  667.           ram_adr_o      : out std_logic_vector(6 downto 0);
  668.           reg_data_o     : out std_logic_vector(7 downto 0);
  669.           ram_wr_o       : out std_logic;
  670.           cy_o           : out std_logic_vector(1 downto 0);
  671.           ov_o           : out std_logic;
  672.           ram_en_o       : out std_logic;
  673.           alu_cmd_o      : out std_logic_vector (5 downto 0);
  674.           aludata_i      : in  std_logic_vector (7 downto 0);
  675.           aludatb_i      : in  std_logic_vector (7 downto 0);
  676.           acc_o          : out std_logic_vector (7 downto 0);
  677.           new_cy_i       : in  std_logic_vector(1 downto 0);
  678.           new_ov_i       : in  std_logic;
  679.           reset          : in  std_logic;
  680.           clk            : in  std_logic;
  681.           int0_i         : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  682.           int1_i         : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  683.           datax_i        : in  std_logic_vector (7 downto 0);
  684.           datax_o        : out std_logic_vector (7 downto 0);
  685.           adrx_o         : out std_logic_vector (15 downto 0);
  686.           wrx_o          : out std_logic;
  687.           p0_i           : in  std_logic_vector(7 downto 0);
  688.           p1_i           : in  std_logic_vector(7 downto 0);
  689.           p2_i           : in  std_logic_vector(7 downto 0);
  690.           p3_i           : in  std_logic_vector(7 downto 0);
  691.           p0_o           : out std_logic_vector(7 downto 0);
  692.           p1_o           : out std_logic_vector(7 downto 0);
  693.           p2_o           : out std_logic_vector(7 downto 0);
  694.           p3_o           : out std_logic_vector(7 downto 0);
  695.           all_trans_o    : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  696.           all_scon_o     : out std_logic_vector(6*C_IMPL_N_SIU-1 downto 0);
  697.           all_sbuf_o     : out std_logic_vector(8*C_IMPL_N_SIU-1 downto 0);
  698.           all_smod_o     : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  699.           all_scon_i     : in  std_logic_vector(3*C_IMPL_N_SIU-1 downto 0);
  700.           all_sbuf_i     : in  std_logic_vector(8*C_IMPL_N_SIU-1 downto 0);
  701.           all_tcon_tr0_o : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  702.           all_tcon_tr1_o : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  703.           all_tmod_o     : out std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  704.           all_reload_o   : out std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  705.           all_wt_o       : out std_logic_vector(2*C_IMPL_N_TMR-1 downto 0);
  706.           all_wt_en_o    : out std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  707.           all_tf0_i      : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  708.           all_tf1_i      : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  709.           all_tl0_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  710.           all_tl1_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  711.           all_th0_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0);
  712.           all_th1_i      : in  std_logic_vector(8*C_IMPL_N_TMR-1 downto 0));
  713.   end component;
  714.   component mc8051_core
  715.     port (clk         : in  std_logic;
  716.           reset       : in  std_logic;
  717.           rom_data_i  : in  std_logic_vector(7 downto 0);
  718.           ram_data_i  : in  std_logic_vector(7 downto 0);
  719.           int0_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  720.           int1_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  721.           all_t0_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  722.           all_t1_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  723.           all_rxd_i   : in  std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  724.           p0_i        : in  std_logic_vector(7 downto 0);
  725.           p1_i        : in  std_logic_vector(7 downto 0);
  726.           p2_i        : in  std_logic_vector(7 downto 0);
  727.           p3_i        : in  std_logic_vector(7 downto 0);
  728.           p0_o        : out std_logic_vector(7 downto 0);
  729.           p1_o        : out std_logic_vector(7 downto 0);
  730.           p2_o        : out std_logic_vector(7 downto 0);
  731.           p3_o        : out std_logic_vector(7 downto 0);
  732.           all_rxd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  733.           all_txd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  734.           all_rxdwr_o : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  735.           rom_adr_o   : out std_logic_vector(15 downto 0);
  736.           ram_data_o  : out std_logic_vector(7 downto 0);
  737.           ram_adr_o   : out std_logic_vector(6 downto 0);
  738.           ram_wr_o    : out std_logic;
  739.           ram_en_o    : out std_logic;
  740.           datax_i     : in  std_logic_vector (7 downto 0);
  741.           datax_o     : out std_logic_vector (7 downto 0);
  742.           adrx_o      : out std_logic_vector (15 downto 0);
  743.           wrx_o       : out std_logic);
  744.   end component;
  745.   component mc8051_top
  746.     port (clk         : in  std_logic;
  747.           reset       : in  std_logic;
  748.           int0_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  749.           int1_i      : in  std_logic_vector(C_IMPL_N_EXT-1 downto 0);
  750.           all_t0_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  751.           all_t1_i    : in  std_logic_vector(C_IMPL_N_TMR-1 downto 0);
  752.           all_rxd_i   : in  std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  753.           p0_i        : in  std_logic_vector(7 downto 0);
  754.           p1_i        : in  std_logic_vector(7 downto 0);
  755.           p2_i        : in  std_logic_vector(7 downto 0);
  756.           p3_i        : in  std_logic_vector(7 downto 0);
  757.           p0_o        : out std_logic_vector(7 downto 0);
  758.           p1_o        : out std_logic_vector(7 downto 0);
  759.           p2_o        : out std_logic_vector(7 downto 0);
  760.           p3_o        : out std_logic_vector(7 downto 0);
  761.           all_rxd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  762.           all_txd_o   : out std_logic_vector(C_IMPL_N_SIU-1 downto 0);
  763.           all_rxdwr_o : out std_logic_vector(C_IMPL_N_SIU-1 downto 0));  
  764.   end component;
  765.   -----------------------------------------------------------------------------
  766.   -- START: Component declarations for simulation models
  767.   -----------------------------------------------------------------------------
  768.   component mc8051_ram
  769.     port (clk        : in  std_logic;
  770.   reset      : in  std_logic;
  771.   ram_data_i : in  std_logic_vector(7 downto 0);
  772.           ram_data_o : out std_logic_vector(7 downto 0);
  773.           ram_adr_i  : in  std_logic_vector(6 downto 0);
  774.           ram_wr_i   : in  std_logic;
  775.           ram_en_i   : in  std_logic);
  776.   end component;
  777.   component mc8051_ramx
  778.     port (clk        : in  std_logic;
  779.   reset      : in  std_logic;
  780.   ram_data_i : in  std_logic_vector(7 downto 0);
  781.           ram_data_o : out std_logic_vector(7 downto 0);
  782.           ram_adr_i  : in  std_logic_vector(15 downto 0);
  783.           ram_wr_i   : in  std_logic);
  784.   end component;
  785.   component mc8051_rom
  786.     port (clk        : in  std_logic;
  787.   reset      : in  std_logic;
  788.   rom_data_o : out std_logic_vector(7 downto 0); 
  789.           rom_adr_i  : in  std_logic_vector(15 downto 0));
  790.     
  791.   end component;
  792.   -----------------------------------------------------------------------------
  793.   -- END: Component declarations for simulation models
  794.   -----------------------------------------------------------------------------
  795. end mc8051_p;