Line 2... |
Line 2... |
package rf6809_pkg;
|
package rf6809_pkg;
|
|
|
typedef logic [23:0] Address;
|
typedef logic [23:0] Address;
|
typedef logic [11:0] Data;
|
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 bitsPerByte = $bits(Data);
|
parameter BPB = bitsPerByte;
|
parameter BPB = bitsPerByte;
|
parameter BPBM1 = BPB-1;
|
parameter BPBM1 = BPB-1;
|
parameter BPBX2M1 = BPB*2-1;
|
parameter BPBX2M1 = BPB*2-1;
|
|
|
// The following adds support for many 6309 instructions.
|
// The following adds support for many 6309 instructions.
|
//`define SUPPORT_6309
|
`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.
|
// The following allows asynchronous reads for icache updating.
|
// It increases the size of the core.
|
// It increases the size of the core.
|
//`define SUPPORT_AREAD 1
|
//`define SUPPORT_AREAD 1
|
|
|
Line 29... |
Line 52... |
`ifdef EIGHTBIT
|
`ifdef EIGHTBIT
|
`define LOBYTE 7:0
|
`define LOBYTE 7:0
|
`define HIBYTE 15:8
|
`define HIBYTE 15:8
|
`define DBLBYTE 15:0
|
`define DBLBYTE 15:0
|
`define TRPBYTE 23:0
|
`define TRPBYTE 23:0
|
|
`define QUADBYTE 31:0
|
`define BYTE1 7:0
|
`define BYTE1 7:0
|
`define BYTE2 15:8
|
`define BYTE2 15:8
|
`define BYTE3 23:16
|
`define BYTE3 23:16
|
`define BYTE4 31:24
|
`define BYTE4 31:24
|
`define BYTE5 39:32
|
`define BYTE5 39:32
|
Line 46... |
Line 70... |
`ifdef TWELVEBIT
|
`ifdef TWELVEBIT
|
`define LOBYTE 11:0
|
`define LOBYTE 11:0
|
`define HIBYTE 23:12
|
`define HIBYTE 23:12
|
`define DBLBYTE 23:0
|
`define DBLBYTE 23:0
|
`define TRPBYTE 35:0
|
`define TRPBYTE 35:0
|
|
`define QUADBYTE 47:0
|
`define BYTE1 11:0
|
`define BYTE1 11:0
|
`define BYTE2 23:12
|
`define BYTE2 23:12
|
`define BYTE3 35:24
|
`define BYTE3 35:24
|
`define BYTE4 47:36
|
`define BYTE4 47:36
|
`define BYTE5 59:48
|
`define BYTE5 59:48
|
Line 68... |
Line 93... |
`define SWI_VECT 24'hFFFFFA
|
`define SWI_VECT 24'hFFFFFA
|
`define IRQ_VECT 24'hFFFFF8
|
`define IRQ_VECT 24'hFFFFF8
|
`define FIRQ_VECT 24'hFFFFF6
|
`define FIRQ_VECT 24'hFFFFF6
|
`define SWI2_VECT 24'hFFFFF4
|
`define SWI2_VECT 24'hFFFFF4
|
`define SWI3_VECT 24'hFFFFF2
|
`define SWI3_VECT 24'hFFFFF2
|
`define RESV_VECT 24'hFFFFF0
|
`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 NEG_DP 12'h000
|
`define OIM_DP 12'h001
|
`define OIM_DP 12'h001
|
`define AIM_DP 12'h002
|
`define AIM_DP 12'h002
|
`define COM_DP 12'h003
|
`define COM_DP 12'h003
|
Line 446... |
Line 493... |
`define STS_NDX 12'h1EF
|
`define STS_NDX 12'h1EF
|
`define LDQ_EXT 12'h1FC
|
`define LDQ_EXT 12'h1FC
|
`define STQ_EXT 12'h1FD
|
`define STQ_EXT 12'h1FD
|
`define LDS_EXT 12'h1FE
|
`define LDS_EXT 12'h1FE
|
`define STS_EXT 12'h1FF
|
`define STS_EXT 12'h1FF
|
|
`define BITMD 12'h23C
|
`define LDMD 12'h23D
|
`define LDMD 12'h23D
|
`define SWI3 12'h23F
|
`define SWI3 12'h23F
|
`define COME 12'h243
|
`define COME 12'h243
|
`define DECE 12'h24A
|
`define DECE 12'h24A
|
`define INCE 12'h24C
|
`define INCE 12'h24C
|
Line 463... |
Line 511... |
`define SUBE_IMM 12'h280
|
`define SUBE_IMM 12'h280
|
`define CMPU_IMM 12'h283
|
`define CMPU_IMM 12'h283
|
`define LDE_IMM 12'h286
|
`define LDE_IMM 12'h286
|
`define ADDE_IMM 12'h28B
|
`define ADDE_IMM 12'h28B
|
`define DIVD_IMM 12'h28D
|
`define DIVD_IMM 12'h28D
|
|
`define DIVQ_IMM 12'h28E
|
|
`define MULD_IMM 12'h28F
|
`define SUBE_DP 12'h290
|
`define SUBE_DP 12'h290
|
`define LDE_DP 12'h296
|
`define LDE_DP 12'h296
|
`define ADDE_DP 12'h29B
|
`define ADDE_DP 12'h29B
|
`define DIVD_DP 12'h29D
|
`define DIVD_DP 12'h29D
|
|
`define DIVQ_DP 12'h29E
|
|
`define MULD_DP 12'h29F
|
`define SUBE_NDX 12'h2A0
|
`define SUBE_NDX 12'h2A0
|
`define LDE_NDX 12'h2A6
|
`define LDE_NDX 12'h2A6
|
`define ADDE_NDX 12'h2AB
|
`define ADDE_NDX 12'h2AB
|
`define DIVD_NDX 12'h2AD
|
`define DIVD_NDX 12'h2AD
|
|
`define DIVQ_NDX 12'h2AE
|
|
`define MULD_NDX 12'h2AF
|
`define SUBE_EXT 12'h2B0
|
`define SUBE_EXT 12'h2B0
|
`define LDE_EXT 12'h2B6
|
`define LDE_EXT 12'h2B6
|
`define ADDE_EXT 12'h2BB
|
`define ADDE_EXT 12'h2BB
|
`define DIVD_EXT 12'h2BD
|
`define DIVD_EXT 12'h2BD
|
|
`define DIVQ_EXT 12'h2BE
|
|
`define MULD_EXT 12'h2BF
|
`define SUBF_IMM 12'h2C0
|
`define SUBF_IMM 12'h2C0
|
`define LDF_IMM 12'h2C6
|
`define LDF_IMM 12'h2C6
|
`define ADDF_IMM 12'h2CB
|
`define ADDF_IMM 12'h2CB
|
`define SUBF_DP 12'h2D0
|
`define SUBF_DP 12'h2D0
|
`define LDF_DP 12'h2D6
|
`define LDF_DP 12'h2D6
|