Line 358... |
Line 358... |
|
|
//
|
//
|
// Implement multiply-and-accumulate
|
// Implement multiply-and-accumulate
|
//
|
//
|
// By default MAC is implemented. To
|
// By default MAC is implemented. To
|
// implement MAC, multiplier needs to be
|
// implement MAC, multiplier (non-serial) needs to be
|
// implemented.
|
// implemented.
|
//
|
//
|
`define OR1200_MAC_IMPLEMENTED
|
//`define OR1200_MAC_IMPLEMENTED
|
|
|
//
|
//
|
// Implement optional l.div/l.divu instructions
|
// Implement optional l.div/l.divu instructions
|
//
|
//
|
// By default divide instructions are not implemented
|
// By default divide instructions are not implemented
|
// to save area and increase clock frequency. or32 C/C++
|
// to save area.
|
// compiler can use soft library for division.
|
|
//
|
//
|
// To implement divide, both multiplier and MAC needs to be implemented.
|
|
//
|
//
|
`define OR1200_DIV_IMPLEMENTED
|
`define OR1200_DIV_IMPLEMENTED
|
|
|
//
|
//
|
// Low power, slower multiplier
|
// Serial multiplier.
|
//
|
//
|
// Select between low-power (larger) multiplier
|
`define OR1200_MULT_SERIAL
|
// and faster multiplier. The actual difference
|
|
// is only AND logic that prevents distribution
|
//
|
// of operands into the multiplier when instruction
|
// Serial divider.
|
// in execution is not multiply instruction
|
// Uncomment to use a serial divider, otherwise will
|
|
// be a generic parallel implementation.
|
//
|
//
|
//`define OR1200_LOWPWR_MULT
|
`define OR1200_DIV_SERIAL
|
|
|
//
|
//
|
// Implement HW Single Precision FPU
|
// Implement HW Single Precision FPU
|
//
|
//
|
//`define OR1200_FPU_IMPLEMENTED
|
//`define OR1200_FPU_IMPLEMENTED
|
Line 462... |
Line 461... |
`define OR1200_ALUOP_MUL 4'd6
|
`define OR1200_ALUOP_MUL 4'd6
|
`define OR1200_ALUOP_CUST5 4'd7
|
`define OR1200_ALUOP_CUST5 4'd7
|
`define OR1200_ALUOP_SHROT 4'd8
|
`define OR1200_ALUOP_SHROT 4'd8
|
`define OR1200_ALUOP_DIV 4'd9
|
`define OR1200_ALUOP_DIV 4'd9
|
`define OR1200_ALUOP_DIVU 4'd10
|
`define OR1200_ALUOP_DIVU 4'd10
|
/* Order not specifically defined. */
|
`define OR1200_ALUOP_MULU 4'd11
|
`define OR1200_ALUOP_IMM 4'd11
|
/* Values sent to ALU from decode unit - not strictly defined by ISA */
|
`define OR1200_ALUOP_MOVHI 4'd12
|
`define OR1200_ALUOP_MOVHI 4'd12
|
`define OR1200_ALUOP_COMP 4'd13
|
`define OR1200_ALUOP_COMP 4'd13
|
`define OR1200_ALUOP_MTSR 4'd14
|
`define OR1200_ALUOP_MTSR 4'd14
|
`define OR1200_ALUOP_MFSR 4'd15
|
`define OR1200_ALUOP_MFSR 4'd15
|
`define OR1200_ALUOP_CMOV 4'd14
|
`define OR1200_ALUOP_CMOV 4'd14
|