⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc8051_p.vhd

📁 这是用C语言编写的关于8051的VHDL的源代码
💻 VHD
📖 第 1 页 / 共 3 页
字号:
---------------------------------------------------------------------------------                                                                           ----          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          ----          XX     XX  X      X  X      X  X      X  X           XX          ----          X X   X X  X         X      X  X      X  X          X X          ----          X  X X  X  X         X      X  X      X  X         X  X          ----          X   X   X  X          XXXXXX   X      X   XXXXXX      X          ----          X       X  X         X      X  X      X         X     X          ----          X       X  X         X      X  X      X         X     X          ----          X       X  X      X  X      X  X      X         X     X          ----          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          ----                                                                           ----                                                                           ----                       O R E G A N O   S Y S T E M S                       ----                                                                           ----                            Design & Consulting                            ----                                                                           -----------------------------------------------------------------------------------                                                                           ----         Web:           http://www.oregano.at/                             ----                                                                           ----         Contact:       mc8051@oregano.at                                  ----                                                                           -----------------------------------------------------------------------------------                                                                           ----  MC8051 - VHDL 8051 Microcontroller IP Core                               ----  Copyright (C) 2001 OREGANO SYSTEMS                                       ----                                                                           ----  This library is free software; you can redistribute it and/or            ----  modify it under the terms of the GNU Lesser General Public               ----  License as published by the Free Software Foundation; either             ----  version 2.1 of the License, or (at your option) any later version.       ----                                                                           ----  This library 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        ----  Lesser General Public License for more details.                          ----                                                                           ----  Full details of the license can be found in the file LGPL.TXT.           ----                                                                           ----  You should have received a copy of the GNU Lesser General Public         ----  License along with this library; if not, write to the Free Software      ----  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  ----                                                                           ---------------------------------------------------------------------------------------         Author:                 Roland H鰈ler----         Filename:               mc8051_p.vhd----         Date of Creation:       Mon Aug  9 12:14:48 1999----         Version:                $Revision: 1.14 $----         Date of Latest Version: $Date: 2002/01/07 12:17:45 $------         Description: Collection of constants, types, and components.---------------------------------------------------------------------------------------library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; package mc8051_p is  -----------------------------------------------------------------------------  -- Set data width of mc8051_alu (no other than 8 supported at the moment!)  -- Default: 8  constant C_DWIDTH : integer := 8;  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------  -- Select whether to implement (1) or skip (0) the multiplier  -- Default: 1  constant C_IMPL_MUL : integer := 1;  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------  -- Select whether to implement (1) or skip (0) the divider  -- Default: 1  constant C_IMPL_DIV : integer := 1;  -----------------------------------------------------------------------------				     -----------------------------------------------------------------------------  -- Select whether to implement (1) or skip (0) the decimal adjustment command  -- Default: 1  constant C_IMPL_DA  : integer := 1;  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------  -- Select how many timer/counter units should be implemented  -- Default: 1  constant C_IMPL_N_TMR : integer := 1;  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------  -- Select how many serial interface units should be implemented  -- Default: C_IMPL_N_TMR ---(DO NOT CHANGE!)---		       constant C_IMPL_N_SIU : integer := C_IMPL_N_TMR;  -----------------------------------------------------------------------------				       -----------------------------------------------------------------------------  -- Select how many external interrupt-inputs should be implemented  -- Default: C_IMPL_N_TMR ---(DO NOT CHANGE!)---  constant C_IMPL_N_EXT : integer := C_IMPL_N_TMR;  -----------------------------------------------------------------------------  constant OFF            : std_logic_vector(5 downto 0) := "000000";  constant DA             : std_logic_vector(5 downto 0) := "100000";  constant ADD_ACC_RAM    : std_logic_vector(5 downto 0) := "100001";  constant ADD_ACC_ROM    : std_logic_vector(5 downto 0) := "100010";  constant ADDC_ACC_RAM   : std_logic_vector(5 downto 0) := "100011";  constant ADDC_ACC_ROM   : std_logic_vector(5 downto 0) := "100100";  constant AND_ACC_RAM    : std_logic_vector(5 downto 0) := "100101";  constant AND_ACC_ROM    : std_logic_vector(5 downto 0) := "100110";  constant AND_RAM_ROM    : std_logic_vector(5 downto 0) := "100111";  constant SUB_ACC_RAM    : std_logic_vector(5 downto 0) := "101000";  constant SUB_ACC_ROM    : std_logic_vector(5 downto 0) := "101001";  constant MUL_ACC_RAM    : std_logic_vector(5 downto 0) := "101010";  constant DIV_ACC_RAM    : std_logic_vector(5 downto 0) := "101011";  constant OR_RAM_ACC     : std_logic_vector(5 downto 0) := "101100";  constant OR_ROM_ACC     : std_logic_vector(5 downto 0) := "101101";  constant OR_ROM_RAM     : std_logic_vector(5 downto 0) := "101110";  constant XOR_RAM_ACC    : std_logic_vector(5 downto 0) := "101111";  constant XOR_ROM_ACC    : std_logic_vector(5 downto 0) := "110000";  constant XOR_ROM_RAM    : std_logic_vector(5 downto 0) := "110001";  constant RL_ACC         : std_logic_vector(5 downto 0) := "110010";  constant RLC_ACC        : std_logic_vector(5 downto 0) := "110011";  constant RR_ACC         : std_logic_vector(5 downto 0) := "110100";  constant RRC_ACC        : std_logic_vector(5 downto 0) := "110101";  constant INV_ACC        : std_logic_vector(5 downto 0) := "110110";  constant INV_RAM        : std_logic_vector(5 downto 0) := "110111";  constant DEC_ACC        : std_logic_vector(5 downto 0) := "111000";  constant DEC_RAM        : std_logic_vector(5 downto 0) := "111001";  constant COMP_RAM_ACC   : std_logic_vector(5 downto 0) := "111010";  constant COMP_ROM_ACC   : std_logic_vector(5 downto 0) := "111011";  constant COMP_ROM_RAM   : std_logic_vector(5 downto 0) := "111100";  constant INC_ACC        : std_logic_vector(5 downto 0) := "111110";  constant INC_RAM        : std_logic_vector(5 downto 0) := "111111";  constant ACALL         : std_logic_vector(4 downto 0) :=    "10001";  constant ADD_A_RR      : std_logic_vector(4 downto 0) := "00101";  constant ADD_A_D       : std_logic_vector(7 downto 0) := "00100101";  constant ADD_A_ATRI    : std_logic_vector(6 downto 0) := "0010011";  constant ADD_A_DATA    : std_logic_vector(7 downto 0) := "00100100";  constant ADDC_A_RR     : std_logic_vector(4 downto 0) := "00111";  constant ADDC_A_D      : std_logic_vector(7 downto 0) := "00110101";  constant ADDC_A_ATRI   : std_logic_vector(6 downto 0) := "0011011";  constant ADDC_A_DATA   : std_logic_vector(7 downto 0) := "00110100";  constant AJMP          : std_logic_vector(4 downto 0) :=    "00001";  constant ANL_A_RR      : std_logic_vector(4 downto 0) := "01011";  constant ANL_A_D       : std_logic_vector(7 downto 0) := "01010101";  constant ANL_A_ATRI    : std_logic_vector(6 downto 0) := "0101011";  constant ANL_A_DATA    : std_logic_vector(7 downto 0) := "01010100";  constant ANL_D_A       : std_logic_vector(7 downto 0) := "01010010";  constant ANL_D_DATA    : std_logic_vector(7 downto 0) := "01010011";  constant ANL_C_BIT     : std_logic_vector(7 downto 0) := "10000010";  constant ANL_C_NBIT    : std_logic_vector(7 downto 0) := "10110000";  constant CJNE_A_D      : std_logic_vector(7 downto 0) := "10110101";  constant CJNE_A_DATA   : std_logic_vector(7 downto 0) := "10110100";  constant CJNE_RR_DATA  : std_logic_vector(4 downto 0) := "10111";  constant CJNE_ATRI_DATA: std_logic_vector(6 downto 0) := "1011011" ;  constant CLR_A         : std_logic_vector(7 downto 0) := "11100100";  constant CLR_C         : std_logic_vector(7 downto 0) := "11000011";  constant CLR_BIT       : std_logic_vector(7 downto 0) := "11000010";  constant CPL_A         : std_logic_vector(7 downto 0) := "11110100";  constant CPL_C         : std_logic_vector(7 downto 0) := "10110011";  constant CPL_BIT       : std_logic_vector(7 downto 0) := "10110010";  constant DA_A          : std_logic_vector(7 downto 0) := "11010100";  constant DEC_A         : std_logic_vector(7 downto 0) := "00010100";  constant DEC_RR        : std_logic_vector(4 downto 0) := "00011";  constant DEC_D         : std_logic_vector(7 downto 0) := "00010101";  constant DEC_ATRI      : std_logic_vector(6 downto 0) := "0001011";  constant DIV_AB        : std_logic_vector(7 downto 0) := "10000100";  constant DJNZ_RR       : std_logic_vector(4 downto 0) := "11011";  constant DJNZ_D        : std_logic_vector(7 downto 0) := "11010101";  constant INC_A         : std_logic_vector(7 downto 0) := "00000100";  constant INC_RR        : std_logic_vector(4 downto 0) := "00001";  constant INC_D         : std_logic_vector(7 downto 0) := "00000101";  constant INC_ATRI      : std_logic_vector(6 downto 0) := "0000011";  constant INC_DPTR      : std_logic_vector(7 downto 0) := "10100011";  constant JB            : std_logic_vector(7 downto 0) := "00100000";  constant JBC           : std_logic_vector(7 downto 0) := "00010000";  constant JC            : std_logic_vector(7 downto 0) := "01000000";  constant JMP_A_DPTR    : std_logic_vector(7 downto 0) := "01110011";  constant JNB           : std_logic_vector(7 downto 0) := "00110000";  constant JNC           : std_logic_vector(7 downto 0) := "01010000";  constant JNZ           : std_logic_vector(7 downto 0) := "01110000";  constant JZ            : std_logic_vector(7 downto 0) := "01100000";  constant LCALL         : std_logic_vector(7 downto 0) := "00010010";  constant LJMP          : std_logic_vector(7 downto 0) := "00000010";  constant MOV_A_RR      : std_logic_vector(4 downto 0) := "11101";  constant MOV_A_D       : std_logic_vector(7 downto 0) := "11100101";  constant MOV_A_ATRI    : std_logic_vector(6 downto 0) := "1110011";  constant MOV_A_DATA    : std_logic_vector(7 downto 0) := "01110100";  constant MOV_RR_A      : std_logic_vector(4 downto 0) := "11111";  constant MOV_RR_D      : std_logic_vector(4 downto 0) := "10101";  constant MOV_RR_DATA   : std_logic_vector(4 downto 0) := "01111";  constant MOV_D_A       : std_logic_vector(7 downto 0) := "11110101";  constant MOV_D_RR      : std_logic_vector(4 downto 0) := "10001";  constant MOV_D_D       : std_logic_vector(7 downto 0) := "10000101";  constant MOV_D_ATRI    : std_logic_vector(6 downto 0) := "1000011";  constant MOV_D_DATA    : std_logic_vector(7 downto 0) := "01110101";  constant MOV_ATRI_A    : std_logic_vector(6 downto 0) := "1111011";  constant MOV_ATRI_D    : std_logic_vector(6 downto 0) := "1010011";  constant MOV_ATRI_DATA : std_logic_vector(6 downto 0) := "0111011";  constant MOVC_A_ATDPTR : std_logic_vector(7 downto 0) := "10010011";  constant MOVC_A_ATPC   : std_logic_vector(7 downto 0) := "10000011";  constant MOVX_A_ATRI   : std_logic_vector(6 downto 0) := "1110001";  constant MOVX_A_ATDPTR : std_logic_vector(7 downto 0) := "11100000";  constant MOVX_ATRI_A   : std_logic_vector(6 downto 0) := "1111001";  constant MOVX_ATDPTR_A : std_logic_vector(7 downto 0) := "11110000";  constant MOV_C_BIT     : std_logic_vector(7 downto 0) := "10100010";  constant MOV_BIT_C     : std_logic_vector(7 downto 0) := "10010010";  constant MOV_DPTR_DATA : std_logic_vector(7 downto 0) := "10010000";  constant MUL_AB        : std_logic_vector(7 downto 0) := "10100100";  constant NOP           : std_logic_vector(7 downto 0) := "00000000";  constant ORL_A_RR      : std_logic_vector(4 downto 0) := "01001";  constant ORL_A_D       : std_logic_vector(7 downto 0) := "01000101";  constant ORL_A_ATRI    : std_logic_vector(6 downto 0) := "0100011";  constant ORL_A_DATA    : std_logic_vector(7 downto 0) := "01000100";  constant ORL_D_A       : std_logic_vector(7 downto 0) := "01000010";  constant ORL_D_DATA    : std_logic_vector(7 downto 0) := "01000011";  constant ORL_C_BIT     : std_logic_vector(7 downto 0) := "01110010";  constant ORL_C_NBIT    : std_logic_vector(7 downto 0) := "10100000";  constant POP           : std_logic_vector(7 downto 0) := "11010000";  constant PUSH          : std_logic_vector(7 downto 0) := "11000000";  constant RET           : std_logic_vector(7 downto 0) := "00100010";  constant RETI          : std_logic_vector(7 downto 0) := "00110010";  constant RL_A          : std_logic_vector(7 downto 0) := "00100011";  constant RLC_A         : std_logic_vector(7 downto 0) := "00110011";  constant RR_A          : std_logic_vector(7 downto 0) := "00000011";  constant RRC_A         : std_logic_vector(7 downto 0) := "00010011";  constant SETB_C        : std_logic_vector(7 downto 0) := "11010011";  constant SETB_BIT      : std_logic_vector(7 downto 0) := "11010010";  constant SJMP          : std_logic_vector(7 downto 0) := "10000000";  constant SUBB_A_RR     : std_logic_vector(4 downto 0) := "10011";  constant SUBB_A_D      : std_logic_vector(7 downto 0) := "10010101";  constant SUBB_A_ATRI   : std_logic_vector(6 downto 0) := "1001011";  constant SUBB_A_DATA   : std_logic_vector(7 downto 0) := "10010100";  constant SWAP_A        : std_logic_vector(7 downto 0) := "11000100";  constant XCH_A_RR      : std_logic_vector(4 downto 0) := "11001";  constant XCH_A_D       : std_logic_vector(7 downto 0) := "11000101";  constant XCH_A_ATRI    : std_logic_vector(6 downto 0) := "1100011";  constant XCHD_A_ATRI   : std_logic_vector(6 downto 0) := "1101011";  constant XRL_A_RR      : std_logic_vector(4 downto 0) := "01101";  constant XRL_A_D       : std_logic_vector(7 downto 0) := "01100101";  constant XRL_A_ATRI    : std_logic_vector(6 downto 0) := "0110011";  constant XRL_A_DATA    : std_logic_vector(7 downto 0) := "01100100";  constant XRL_D_A       : std_logic_vector(7 downto 0) := "01100010";  constant XRL_D_DATA    : std_logic_vector(7 downto 0) := "01100011";    type t_state is (STARTUP,                   FETCH,                   EXEC1,                   EXEC2,                   EXEC3);  type t_instr_category is (IC_ACALL,                            IC_ADD_A_RR,                            IC_ADD_A_D,                            IC_ADD_A_ATRI,                            IC_ADD_A_DATA,                            IC_ADDC_A_RR,                            IC_ADDC_A_D,                            IC_ADDC_A_ATRI,                            IC_ADDC_A_DATA,                            IC_AJMP,                            IC_ANL_A_RR,                            IC_ANL_A_D,                            IC_ANL_A_ATRI,                            IC_ANL_A_DATA,                            IC_ANL_D_A,                            IC_ANL_D_DATA,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -