This example demonstrates how to use the msp_matrix_mpy_q15 API to perform multiplication of two real source matrices.
#include "msp430.h"
#include <math.h>
#include <stdint.h>
#include <stdbool.h>
#include "DSPLib.h"
#define FS 8192
#define SIGNAL_ROWS1 8
#define SIGNAL_COLS1 10
#define SIGNAL_FREQUENCY1 200
#define SIGNAL_AMPLITUDE1 0.6
#define SIGNAL_ROWS2 10
#define SIGNAL_COLS2 12
#define SIGNAL_FREQUENCY2 2100
#define SIGNAL_AMPLITUDE2 0.15
#define PI 3.1415926536
_q15 inputA[SIGNAL_ROWS1][SIGNAL_COLS1];
_q15 inputB[SIGNAL_ROWS2][SIGNAL_COLS2];
_q15 result[SIGNAL_ROWS1][SIGNAL_COLS2];
volatile uint32_t cycleCount;
extern void initSignals(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
#ifdef __MSP430_HAS_PMM__
PM5CTL0 &= ~LOCKLPM5;
#endif
initSignals();
__no_operation();
}
void initSignals(void)
{
uint16_t i;
for (i = 0; i < SIGNAL_ROWS1; i++) {
sinParams.
length = SIGNAL_COLS1;
sinParams.
cosOmega =
_Q15(cosf((
float)i*2*PI*SIGNAL_FREQUENCY1/FS/(
float)SIGNAL_ROWS1));
sinParams.
sinOmega =
_Q15(sinf((
float)i*2*PI*SIGNAL_FREQUENCY1/FS/(
float)SIGNAL_ROWS1));
}
for (i = 0; i < SIGNAL_ROWS2; i++) {
sinParams.
length = SIGNAL_COLS2;
sinParams.
cosOmega =
_Q15(cosf((
float)i*2*PI*SIGNAL_FREQUENCY2/FS/(
float)SIGNAL_ROWS2));
sinParams.
sinOmega =
_Q15(sinf((
float)i*2*PI*SIGNAL_FREQUENCY2/FS/(
float)SIGNAL_ROWS2));
}
}