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

Subversion Repositories rf6809

[/] [rf6809/] [trunk/] [rtl/] [cpu/] [rf6809_pkg.sv] - Rev 22

Compare with Previous | Blame | View Log


package rf6809_pkg;

typedef logic [23:0] Address;
typedef logic [11:0] Data;

// Breakpoint Control Register
// One for each breakpoint address register
typedef struct packed
{
        logic hit;
        logic [2:0] pad;
        logic en;
        logic trace_en;
        logic [1:0] match_type;
        logic [3:0] amask;
} brkCtrl;

// Breakpoint match types
parameter BMT_IA = 2'd0;
parameter BMT_DS = 2'd1;
parameter BMT_LS = 2'd3;

parameter bitsPerByte = $bits(Data);
parameter BPB = bitsPerByte;
parameter BPBM1 =       BPB-1;
parameter BPBX2M1 =     BPB*2-1;

// The following adds support for many 6309 instructions.
`define SUPPORT_6309    1
// Support BCD arithmetic mode and the decimal mode flag
`define SUPPORT_BCD             1
// Support divide operations
`define SUPPORT_DIVIDE 1

`define SUPPORT_DEBUG_REG       1

// The following allows asynchronous reads for icache updating.
// It increases the size of the core.
//`define SUPPORT_AREAD 1

// The following includes an instruction buffer when icache is
// not used.
//`define SUPPORT_IBUF  1

// The following enables support for the checkpoint interrupt.
//`define SUPPORT_CHECKPOINT

//`define EIGHTBIT      1
`define TWELVEBIT       2

`ifdef EIGHTBIT
`define LOBYTE  7:0
`define HIBYTE  15:8
`define DBLBYTE 15:0
`define TRPBYTE         23:0
`define QUADBYTE        31:0
`define BYTE1           7:0
`define BYTE2           15:8
`define BYTE3           23:16
`define BYTE4           31:24
`define BYTE5           39:32
`define QUINBYTE        47:0
`define HEXBYTE         55:0
`define DBLBYTEP1       16:0
`define LOBYTEP1        8:0
`define HCBIT           3
`endif

`ifdef TWELVEBIT
`define LOBYTE  11:0
`define HIBYTE  23:12
`define DBLBYTE 23:0
`define TRPBYTE         35:0
`define QUADBYTE        47:0
`define BYTE1           11:0
`define BYTE2           23:12
`define BYTE3           35:24
`define BYTE4           47:36
`define BYTE5           59:48
`define QUINBYTE        59:0
`define HEXBYTE         71:0
`define DBLBYTEP1       24:0
`define LOBYTEP1        12:0
`define HCBIT           3
`endif

`define TRUE            1'b1
`define FALSE           1'b0

`define RST_VECT        24'hFFFFFE
`define NMI_VECT        24'hFFFFFC
`define SWI_VECT        24'hFFFFFA
`define IRQ_VECT        24'hFFFFF8
`define FIRQ_VECT       24'hFFFFF6
`define SWI2_VECT       24'hFFFFF4
`define SWI3_VECT       24'hFFFFF2
`define IOP_VECT        24'hFFFFF0
`define IPL7_VECT       24'hFFFFEE
`define IPL6_VECT 24'hFFFFEC
`define IPL5_VECT 24'hFFFFEA
`define IPL4_VECT       24'hFFFFE8
`define IPL3_VECT 24'hFFFFE6
`define IPL2_VECT 24'hFFFFE4
`define IPL1_VECT       24'hFFFFE2
`define DBG_VECT        24'hFFFFE0

`define MSCOUNT         24'hFFFF14
`define CHKPOINT        24'hFFFF11
`define CORENO          24'hFFFF10

`define BRKCTRL3        24'hFFFF0B
`define BRKCTRL2        24'hFFFF0A
`define BRKCTRL1        24'hFFFF09
`define BRKCTRL0        24'hFFFF08
`define BRKAD3          24'hFFFF06
`define BRKAD2          24'hFFFF04
`define BRKAD1          24'hFFFF02
`define BRKAD0          24'hFFFF00


`define NEG_DP          12'h000
`define OIM_DP          12'h001
`define AIM_DP          12'h002
`define COM_DP          12'h003
`define LSR_DP          12'h004
`define EIM_DP          12'h005
`define ROR_DP          12'h006
`define ASR_DP          12'h007
`define ASL_DP          12'h008
`define ROL_DP          12'h009
`define DEC_DP          12'h00A
`define TIM_DP          12'h00B
`define INC_DP          12'h00C
`define TST_DP          12'h00D
`define JMP_DP          12'h00E
`define CLR_DP          12'h00F

`define PG2                     12'h010
`define PG3                     12'h011
`define NOP                     12'h012
`define SYNC            12'h013
`define SEXW            12'h014
`define FAR                     12'h015
`define LBRA            12'h016
`define LBSR            12'h017
`define DAA                     12'h019
`define ORCC            12'h01A
`define OUTER           12'h01B
`define ANDCC           12'h01C
`define SEX                     12'h01D
`define EXG                     12'h01E
`define TFR                     12'h01F

`define BRA                     12'h020
`define BRN                     12'h021
`define BHI                     12'h022
`define BLS                     12'h023
`define BHS                     12'h024
`define BLO                     12'h025
`define BNE                     12'h026
`define BEQ                     12'h027
`define BVC                     12'h028
`define BVS                     12'h029
`define BPL                     12'h02A
`define BMI                     12'h02B
`define BGE                     12'h02C
`define BLT                     12'h02D
`define BGT                     12'h02E
`define BLE                     12'h02F

`define LEAX_NDX        12'h030
`define LEAY_NDX        12'h031
`define LEAS_NDX        12'h032
`define LEAU_NDX        12'h033
`define PSHS            12'h034
`define PULS            12'h035
`define PSHU            12'h036
`define PULU            12'h037
`define RTF                     12'h038
`define RTS                     12'h039
`define ABX                     12'h03A
`define RTI                     12'h03B
`define CWAI            12'h03C
`define MUL                     12'h03D
`define SWI                     12'h03F

`define NEGA            12'h040
`define COMA            12'h043
`define LSRA            12'h044
`define RORA            12'h046
`define ASRA            12'h047
`define ASLA            12'h048
`define ROLA            12'h049
`define DECA            12'h04A
`define INCA            12'h04C
`define TSTA            12'h04D
`define CLRA            12'h04F

`define NEGB            12'h050
`define COMB            12'h053
`define LSRB            12'h054
`define RORB            12'h056
`define ASRB            12'h057
`define ASLB            12'h058
`define ROLB            12'h059
`define DECB            12'h05A
`define INCB            12'h05C
`define TSTB            12'h05D
`define CLRB            12'h05F

`define NEG_NDX         12'h060
`define OIM_NDX         12'h061
`define AIM_NDX         12'h062
`define COM_NDX         12'h063
`define LSR_NDX         12'h064
`define EIM_NDX         12'h065
`define ROR_NDX         12'h066
`define ASR_NDX         12'h067
`define ASL_NDX         12'h068
`define ROL_NDX         12'h069
`define DEC_NDX         12'h06A
`define TIM_NDX         12'h06B
`define INC_NDX         12'h06C
`define TST_NDX         12'h06D
`define JMP_NDX         12'h06E
`define CLR_NDX         12'h06F

`define NEG_EXT         12'h070
`define OIM_EXT         12'h071
`define AIM_EXT         12'h072
`define COM_EXT         12'h073
`define LSR_EXT         12'h074
`define EIM_EXT         12'h075
`define ROR_EXT         12'h076
`define ASR_EXT         12'h077
`define ASL_EXT         12'h078
`define ROL_EXT         12'h079
`define DEC_EXT         12'h07A
`define TIM_EXT         12'h07B
`define INC_EXT         12'h07C
`define TST_EXT         12'h07D
`define JMP_EXT         12'h07E
`define CLR_EXT         12'h07F

`define SUBA_IMM        12'h080
`define CMPA_IMM        12'h081
`define SBCA_IMM        12'h082
`define SUBD_IMM        12'h083
`define ANDA_IMM        12'h084
`define BITA_IMM        12'h085
`define LDA_IMM         12'h086
`define EORA_IMM        12'h088
`define ADCA_IMM        12'h089
`define ORA_IMM         12'h08A
`define ADDA_IMM        12'h08B
`define CMPX_IMM        12'h08C
`define BSR                     12'h08D
`define LDX_IMM         12'h08E
`define JMP_FAR         12'h08F

`define SUBA_DP         12'h090
`define CMPA_DP         12'h091
`define SBCA_DP         12'h092
`define SUBD_DP         12'h093
`define ANDA_DP         12'h094
`define BITA_DP         12'h095
`define LDA_DP          12'h096
`define STA_DP          12'h097
`define EORA_DP         12'h098
`define ADCA_DP         12'h099
`define ORA_DP          12'h09A
`define ADDA_DP         12'h09B
`define CMPX_DP         12'h09C
`define JSR_DP          12'h09D
`define LDX_DP          12'h09E
`define STX_DP          12'h09F

`define SUBA_NDX        12'h0A0
`define CMPA_NDX        12'h0A1
`define SBCA_NDX        12'h0A2
`define SUBD_NDX        12'h0A3
`define ANDA_NDX        12'h0A4
`define BITA_NDX        12'h0A5
`define LDA_NDX         12'h0A6
`define STA_NDX         12'h0A7
`define EORA_NDX        12'h0A8
`define ADCA_NDX        12'h0A9
`define ORA_NDX         12'h0AA
`define ADDA_NDX        12'h0AB
`define CMPX_NDX        12'h0AC
`define JSR_NDX         12'h0AD
`define LDX_NDX         12'h0AE
`define STX_NDX         12'h0AF

`define SUBA_EXT        12'h0B0
`define CMPA_EXT        12'h0B1
`define SBCA_EXT        12'h0B2
`define SUBD_EXT        12'h0B3
`define ANDA_EXT        12'h0B4
`define BITA_EXT        12'h0B5
`define LDA_EXT         12'h0B6
`define STA_EXT         12'h0B7
`define EORA_EXT        12'h0B8
`define ADCA_EXT        12'h0B9
`define ORA_EXT         12'h0BA
`define ADDA_EXT        12'h0BB
`define CMPX_EXT        12'h0BC
`define JSR_EXT         12'h0BD
`define LDX_EXT         12'h0BE
`define STX_EXT         12'h0BF

`define SUBB_IMM        12'h0C0
`define CMPB_IMM        12'h0C1
`define SBCB_IMM        12'h0C2
`define ADDD_IMM        12'h0C3
`define ANDB_IMM        12'h0C4
`define BITB_IMM        12'h0C5
`define LDB_IMM         12'h0C6
`define EORB_IMM        12'h0C8
`define ADCB_IMM        12'h0C9
`define ORB_IMM         12'h0CA
`define ADDB_IMM        12'h0CB
`define LDD_IMM         12'h0CC
`define LDQ_IMM         12'h0CD
`define LDU_IMM         12'h0CE
`define JSR_FAR         12'h0CF

`define SUBB_DP         12'h0D0
`define CMPB_DP         12'h0D1
`define SBCB_DP         12'h0D2
`define ADDD_DP         12'h0D3
`define ANDB_DP         12'h0D4
`define BITB_DP         12'h0D5
`define LDB_DP          12'h0D6
`define STB_DP          12'h0D7
`define EORB_DP         12'h0D8
`define ADCB_DP         12'h0D9
`define ORB_DP          12'h0DA
`define ADDB_DP         12'h0DB
`define LDD_DP          12'h0DC
`define STD_DP          12'h0DD
`define LDU_DP          12'h0DE
`define STU_DP          12'h0DF

`define SUBB_NDX        12'h0E0
`define CMPB_NDX        12'h0E1
`define SBCB_NDX        12'h0E2
`define ADDD_NDX        12'h0E3
`define ANDB_NDX        12'h0E4
`define BITB_NDX        12'h0E5
`define LDB_NDX         12'h0E6
`define STB_NDX         12'h0E7
`define EORB_NDX        12'h0E8
`define ADCB_NDX        12'h0E9
`define ORB_NDX         12'h0EA
`define ADDB_NDX        12'h0EB
`define LDD_NDX         12'h0EC
`define STD_NDX         12'h0ED
`define LDU_NDX         12'h0EE
`define STU_NDX         12'h0EF

`define SUBB_EXT        12'h0F0
`define CMPB_EXT        12'h0F1
`define SBCB_EXT        12'h0F2
`define ADDD_EXT        12'h0F3
`define ANDB_EXT        12'h0F4
`define BITB_EXT        12'h0F5
`define LDB_EXT         12'h0F6
`define STB_EXT         12'h0F7
`define EORB_EXT        12'h0F8
`define ADCB_EXT        12'h0F9
`define ORB_EXT         12'h0FA
`define ADDB_EXT        12'h0FB
`define LDD_EXT         12'h0FC
`define STD_EXT         12'h0FD
`define LDU_EXT         12'h0FE
`define STU_EXT         12'h0FF

`define TFS                     12'h11E
`define TTS                     12'h11F

`define LBRN            12'h121
`define LBHI            12'h122
`define LBLS            12'h123
`define LBHS            12'h124
`define LBLO            12'h125
`define LBNE            12'h126
`define LBEQ            12'h127
`define LBVC            12'h128
`define LBVS            12'h129
`define LBPL            12'h12A
`define LBMI            12'h12B
`define LBGE            12'h12C
`define LBLT            12'h12D
`define LBGT            12'h12E
`define LBLE            12'h12F

`define ADDR            12'h130
`define ADCR            12'h131
`define SUBR            12'h132
`define SBCR            12'h133
`define ANDR            12'h134
`define ORR                     12'h135
`define EORR            12'h136
`define CMPR            12'h137
`define SWI2            12'h13F
`define NEGD            12'h140
`define COMD            12'h143
`define LSRD            12'h144
`define RORD            12'h146
`define ASRD            12'h147
`define ASLD            12'h148
`define ROLD            12'h149
`define DECD            12'h14A
`define INCD            12'h14C
`define TSTD            12'h14D
`define CLRD            12'h14F
`define COMW            12'h153
`define LSRW            12'h154
`define RORW            12'h156
`define ROLW            12'h159
`define DECW            12'h15A
`define INCW            12'h15C
`define TSTW            12'h15D
`define CLRW            12'h15F
`define SUBW_IMM        12'h180
`define CMPW_IMM        12'h181
`define SBCD_IMM        12'h182
`define CMPD_IMM        12'h183
`define ANDD_IMM        12'h184
`define BITD_IMM        12'h185
`define LDW_IMM         12'h186
`define EORD_IMM        12'h188
`define ADCD_IMM        12'h189
`define ORD_IMM         12'h18A
`define ADDW_IMM        12'h18B
`define CMPY_IMM        12'h18C
`define LDY_IMM         12'h18E
`define SUBW_DP         12'h190
`define CMPW_DP         12'h191
`define SBCD_DP         12'h192
`define CMPD_DP         12'h193
`define ANDD_DP         12'h194
`define BITD_DP         12'h195
`define LDW_DP          12'h196
`define STW_DP          12'h197
`define EORD_DP         12'h198
`define ADCD_DP         12'h199
`define ORD_DP          12'h19A
`define ADDW_DP         12'h19B
`define CMPY_DP         12'h19C
`define LDY_DP          12'h19E
`define STY_DP          12'h19F
`define SUBW_NDX        12'h1A0
`define CMPW_NDX        12'h1A1
`define SBCD_NDX        12'h1A2
`define CMPD_NDX        12'h1A3
`define ANDD_NDX        12'h1A4
`define BITD_NDX        12'h1A5
`define LDW_NDX         12'h1A6
`define STW_NDX         12'h1A7
`define EORD_NDX        12'h1A8
`define ADCD_NDX        12'h1A9
`define ORD_NDX         12'h1AA
`define ADDW_NDX        12'h1AB
`define CMPY_NDX        12'h1AC
`define LDY_NDX         12'h1AE
`define STY_NDX         12'h1AF
`define SUBW_EXT        12'h1B0
`define CMPW_EXT        12'h1B1
`define SBCD_EXT        12'h1B2
`define CMPD_EXT        12'h1B3
`define ANDD_EXT        12'h1B4
`define BITD_EXT        12'h1B5
`define LDW_EXT         12'h1B6
`define STW_EXT         12'h1B7
`define EORD_EXT        12'h1B8
`define ADCD_EXT        12'h1B9
`define ORD_EXT         12'h1BA
`define ADDW_EXT        12'h1BB
`define CMPY_EXT        12'h1BC
`define LDY_EXT         12'h1BE
`define STY_EXT         12'h1BF
`define LDS_IMM         12'h1CE
`define LDQ_DP          12'h1DC
`define STQ_DP          12'h1DD
`define LDS_DP          12'h1DE
`define STS_DP          12'h1DF
`define LDQ_NDX         12'h1EC
`define STQ_NDX         12'h1ED
`define LDS_NDX         12'h1EE
`define STS_NDX         12'h1EF
`define LDQ_EXT         12'h1FC
`define STQ_EXT         12'h1FD
`define LDS_EXT         12'h1FE
`define STS_EXT         12'h1FF
`define BITMD           12'h23C
`define LDMD            12'h23D
`define SWI3            12'h23F
`define COME            12'h243
`define DECE            12'h24A
`define INCE            12'h24C
`define TSTE            12'h24D
`define CLRE            12'h24F
`define COMF            12'h253
`define DECF            12'h25A
`define INCF            12'h25C
`define TSTF            12'h25D
`define CLRF            12'h25F
`define SUBE_IMM        12'h280
`define CMPU_IMM        12'h283
`define LDE_IMM         12'h286
`define ADDE_IMM        12'h28B
`define DIVD_IMM        12'h28D
`define DIVQ_IMM        12'h28E
`define MULD_IMM        12'h28F
`define SUBE_DP         12'h290
`define LDE_DP          12'h296
`define ADDE_DP         12'h29B
`define DIVD_DP         12'h29D
`define DIVQ_DP         12'h29E
`define MULD_DP         12'h29F
`define SUBE_NDX        12'h2A0
`define LDE_NDX         12'h2A6
`define ADDE_NDX        12'h2AB
`define DIVD_NDX        12'h2AD
`define DIVQ_NDX        12'h2AE
`define MULD_NDX        12'h2AF
`define SUBE_EXT        12'h2B0
`define LDE_EXT         12'h2B6
`define ADDE_EXT        12'h2BB
`define DIVD_EXT        12'h2BD
`define DIVQ_EXT        12'h2BE
`define MULD_EXT        12'h2BF
`define SUBF_IMM        12'h2C0
`define LDF_IMM         12'h2C6
`define ADDF_IMM        12'h2CB
`define SUBF_DP         12'h2D0
`define LDF_DP          12'h2D6
`define ADDF_DP         12'h2DB
`define SUBF_NDX        12'h2E0
`define LDF_NDX         12'h2E6
`define ADDF_NDX        12'h2EB
`define SUBF_EXT        12'h2F0
`define LDF_EXT         12'h2F6
`define ADDF_EXT        12'h2FB
`define CMPE_IMM        12'h281
`define CMPE_DP         12'h291
`define STE_DP          12'h297
`define STE_NDX         12'h2A7
`define STE_EXT         12'h2B7
`define STF_DP          12'h2D7
`define STF_NDX         12'h2E7
`define STF_EXT         12'h2F7
`define CMPE_NDX        12'h2A1
`define CMPE_EXT        12'h2B1
`define CMPF_IMM        12'h2C1
`define CMPF_DP         12'h2D1
`define CMPF_NDX        12'h2E1
`define CMPF_EXT        12'h2F1
`define CMPS_IMM        12'h28C
`define CMPU_DP         12'h293
`define CMPS_DP         12'h29C
`define CMPU_NDX        12'h2A3
`define CMPS_NDX        12'h2AC
`define CMPU_EXT        12'h2B3
`define CMPS_EXT        12'h2BC

// Unused opcode
`define INT                     12'h33E

`define LW_CCR          6'd0
`define LW_ACCA         6'd1
`define LW_ACCB         6'd2
`define LW_DPR          6'd3
`define LW_XH           6'd4
`define LW_XL           6'd5
`define LW_YH           6'd6
`define LW_YL           6'd7
`define LW_USPH         6'd8
`define LW_USPL         6'd9
`define LW_SSPH         6'd10
`define LW_SSPL         6'd11
`define LW_PCH          6'd12
`define LW_PCL          6'd13
`define LW_BL           6'd14
`define LW_BH           6'd15
`define LW_IAL          6'd16
`define LW_IAH          6'd17
`define LW_PC3124       6'd18
`define LW_PC2316       6'd19
`define LW_IA3124       6'd20
`define LW_IA2316       6'd21
`define LW_B3124        6'd22
`define LW_B2316        6'd23
`define LW_X3124        6'd24
`define LW_X2316        6'd25
`define LW_Y3124        6'd26
`define LW_Y2316        6'd27
`define LW_USP3124      6'd28
`define LW_USP2316      6'd29
`define LW_SSP3124      6'd30
`define LW_SSP2316      6'd31
`define LW_ACCE                 6'd32
`define LW_ACCF                 6'd33
`define LW_NOTHING      6'd63

`define SW_ACCDH        6'd0
`define SW_ACCDL        6'd1
`define SW_ACCA         6'd2
`define SW_ACCB         6'd3
`define SW_DPR          6'd4
`define SW_XL           6'd5
`define SW_XH           6'd6
`define SW_YL           6'd7
`define SW_YH           6'd8
`define SW_USPL         6'd9
`define SW_USPH         6'd10
`define SW_SSPL         6'd11
`define SW_SSPH         6'd12
`define SW_PCH          6'd13
`define SW_PCL          6'd14
`define SW_CCR          6'd15
`define SW_RES8         6'd16
`define SW_RES16L       6'd17
`define SW_RES16H       6'd18
`define SW_DEF8         6'd19
`define SW_PC3124       6'd20
`define SW_PC2316       6'd21
`define SW_ACCQ3124     6'd22
`define SW_ACCQ2316     6'd23
`define SW_ACCQ158      6'd24
`define SW_ACCQ70       6'd25
`define SW_X3124        6'd26
`define SW_X2316        6'd27
`define SW_Y3124        6'd28
`define SW_Y2316        6'd29
`define SW_USP3124      6'd30
`define SW_USP2316      6'd31
`define SW_SSP3124      6'd32
`define SW_SSP2316      6'd33
`define SW_ACCA3124 6'd34
`define SW_ACCA2316 6'd35
`define SW_ACCA158      6'd36
`define SW_ACCA70       6'd37
`define SW_ACCB3124 6'd38
`define SW_ACCB2316 6'd39
`define SW_ACCB158      6'd40
`define SW_ACCB70       6'd41
`define SW_ACCE         6'd42
`define SW_ACCF         6'd43
`define SW_ACCWH        6'd44
`define SW_ACCWL        6'd45
`define SW_NOTHING      6'd63

endpackage

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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