7 #ifndef __MSP430WARE_MPY32_H__
8 #define __MSP430WARE_MPY32_H__
12 #ifdef __MSP430_HAS_MPY32__
33 #define MPY32_WRITEDELAY_OFF (!(MPYDLY32 + MPYDLYWRTEN))
34 #define MPY32_WRITEDELAY_32BIT (MPYDLYWRTEN)
35 #define MPY32_WRITEDELAY_64BIT (MPYDLY32 + MPYDLYWRTEN)
45 #define MPY32_MULTIPLY_UNSIGNED (0x00)
46 #define MPY32_MULTIPLY_SIGNED (0x02)
47 #define MPY32_MULTIPLYACCUMULATE_UNSIGNED (0x04)
48 #define MPY32_MULTIPLYACCUMULATE_SIGNED (0x06)
56 #define MPY32_SATURATION_MODE_DISABLED 0x00
57 #define MPY32_SATURATION_MODE_ENABLED MPYSAT
65 #define MPY32_FRACTIONAL_MODE_DISABLED 0x00
66 #define MPY32_FRACTIONAL_MODE_ENABLED MPYFRAC
99 extern void MPY32_setWriteDelay(uint16_t writeDelaySelect);
116 extern void MPY32_enableSaturationMode(
void);
129 extern void MPY32_disableSaturationMode(
void);
145 extern uint8_t MPY32_getSaturationMode(
void);
157 extern void MPY32_enableFractionalMode(
void);
169 extern void MPY32_disableFractionalMode(
void);
185 extern uint8_t MPY32_getFractionalMode(
void);
207 extern void MPY32_setOperandOne8Bit(uint8_t multiplicationType,
230 extern void MPY32_setOperandOne16Bit(uint8_t multiplicationType,
253 extern void MPY32_setOperandOne24Bit(uint8_t multiplicationType,
276 extern void MPY32_setOperandOne32Bit(uint8_t multiplicationType,
291 extern void MPY32_setOperandTwo8Bit(uint8_t
operand);
306 extern void MPY32_setOperandTwo16Bit(uint16_t
operand);
321 extern void MPY32_setOperandTwo24Bit(uint32_t
operand);
336 extern void MPY32_setOperandTwo32Bit(uint32_t
operand);
348 extern uint64_t MPY32_getResult(
void);
363 extern uint16_t MPY32_getSumExtension(
void);
377 extern uint16_t MPY32_getCarryBitValue(
void);
389 extern void MPY32_clearCarryBitValue(
void);
402 extern void MPY32_preloadResult(uint64_t result);