mmserv

Minimum Mean Square Error detection on RISC-V Vector Extention
git clone https://git.ea.contact/mmserv
Log | Files | Refs | README

commit 006841ff46ec83e606d11a7f4ec1d0eb9414c11b
parent 8de15ac9e793aaeabe0ee48892008f8cc63b755c
Author: Egor Achkasov <eaachkasov@gmail.com>
Date:   Fri, 23 May 2025 01:40:35 +0200

Fix array continuity

Diffstat:
Minclude/common.h | 38+++++++++++++++++++-------------------
Mmain.c | 22+++++++++++-----------
2 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/include/common.h b/include/common.h @@ -31,30 +31,30 @@ typedef struct { /* Raw data */ /* Transmitted signal */ -extern data_t x_re[NUM_TX][NUM_SC]; -extern data_t x_im[NUM_TX][NUM_SC]; +extern data_t x_re[NUM_TX * NUM_SC]; +extern data_t x_im[NUM_TX * NUM_SC]; /* Channel */ -extern data_t H_re[NUM_RX][NUM_TX][NUM_SC]; -extern data_t H_im[NUM_RX][NUM_TX][NUM_SC]; +extern data_t H_re[NUM_RX * NUM_TX * NUM_SC]; +extern data_t H_im[NUM_RX * NUM_TX * NUM_SC]; /* Noise covariance matrix */ -extern data_t R_re[NUM_TX][NUM_TX][NUM_SC]; -extern data_t R_im[NUM_TX][NUM_TX][NUM_SC]; +extern data_t R_re[NUM_TX * NUM_TX * NUM_SC]; +extern data_t R_im[NUM_TX * NUM_TX * NUM_SC]; /* Received signal */ -extern data_t y_re[NUM_RX][NUM_SC]; -extern data_t y_im[NUM_RX][NUM_SC]; +extern data_t y_re[NUM_RX * NUM_SC]; +extern data_t y_im[NUM_RX * NUM_SC]; /* MMSE raw data */ -extern data_t G_re[NUM_TX][NUM_TX][NUM_SC]; -extern data_t G_im[NUM_TX][NUM_TX][NUM_SC]; -extern data_t L_re[NUM_TX][NUM_TX][NUM_SC]; -extern data_t L_im[NUM_TX][NUM_TX][NUM_SC]; -extern data_t g_D[NUM_TX][NUM_SC]; /* no imaginary part in D */ -extern data_t HHy_re[NUM_TX][NUM_SC]; -extern data_t HHy_im[NUM_TX][NUM_SC]; -extern data_t z_re[NUM_TX][NUM_SC]; -extern data_t z_im[NUM_TX][NUM_SC]; +extern data_t G_re[NUM_TX * NUM_TX * NUM_SC]; +extern data_t G_im[NUM_TX * NUM_TX * NUM_SC]; +extern data_t L_re[NUM_TX * NUM_TX * NUM_SC]; +extern data_t L_im[NUM_TX * NUM_TX * NUM_SC]; +extern data_t g_D[NUM_TX * NUM_SC]; /* no imaginary part in D */ +extern data_t HHy_re[NUM_TX * NUM_SC]; +extern data_t HHy_im[NUM_TX * NUM_SC]; +extern data_t z_re[NUM_TX * NUM_SC]; +extern data_t z_im[NUM_TX * NUM_SC]; /* Result of MMSE approximation */ -extern data_t x_MMSE_re[NUM_TX][NUM_SC]; -extern data_t x_MMSE_im[NUM_TX][NUM_SC]; +extern data_t x_MMSE_re[NUM_TX * NUM_SC]; +extern data_t x_MMSE_im[NUM_TX * NUM_SC]; /* Same data but casted to vcomplex */ extern vcomplex g_x; diff --git a/main.c b/main.c @@ -36,17 +36,17 @@ IMPORT_BIN(.rodata, "data/y_re.bin", y_re); IMPORT_BIN(.rodata, "data/y_im.bin", y_im); /* Allocate space for MMSE raw data */ -data_t G_re[NUM_TX][NUM_TX][NUM_SC]; -data_t G_im[NUM_TX][NUM_TX][NUM_SC]; -data_t L_re[NUM_TX][NUM_TX][NUM_SC]; -data_t L_im[NUM_TX][NUM_TX][NUM_SC]; -data_t g_D[NUM_TX][NUM_SC]; /* no imaginary part in D */ -data_t HHy_re[NUM_TX][NUM_SC]; -data_t HHy_im[NUM_TX][NUM_SC]; -data_t z_re[NUM_TX][NUM_SC]; -data_t z_im[NUM_TX][NUM_SC]; -data_t x_MMSE_re[NUM_TX][NUM_SC]; -data_t x_MMSE_im[NUM_TX][NUM_SC]; +data_t G_re[NUM_TX * NUM_TX * NUM_SC]; +data_t G_im[NUM_TX * NUM_TX * NUM_SC]; +data_t L_re[NUM_TX * NUM_TX * NUM_SC]; +data_t L_im[NUM_TX * NUM_TX * NUM_SC]; +data_t g_D[NUM_TX * NUM_SC]; /* no imaginary part in D */ +data_t HHy_re[NUM_TX * NUM_SC]; +data_t HHy_im[NUM_TX * NUM_SC]; +data_t z_re[NUM_TX * NUM_SC]; +data_t z_im[NUM_TX * NUM_SC]; +data_t x_MMSE_re[NUM_TX * NUM_SC]; +data_t x_MMSE_im[NUM_TX * NUM_SC]; /* Initialize data */ vcomplex g_x = { .re = (data_t *)x_re, .im = (data_t *)x_im };