mmserv

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

commit 067650a487012440aa095dae6a9974ef18c632e5
parent 652e7a9e271a57c42671de371ffcaa9b7b527fd6
Author: Egor Achkasov <eaachkasov@edu.hse.ru>
Date:   Thu,  9 Jan 2025 17:02:30 +0100

Impl separate re and im loading

Diffstat:
Mmain.c | 46++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 42 insertions(+), 4 deletions(-)

diff --git a/main.c b/main.c @@ -21,16 +21,54 @@ void load_data( } int main() { + size_t i, j, k; + /* Load the data */ complex x[NUM_TX_ANT][NUM_SC]; /* Transmitted signal */ complex H[NUM_RX_ANT][NUM_TX_ANT][NUM_SC]; /* Channel */ complex R[NUM_TX_ANT][NUM_TX_ANT][NUM_SC]; /* Noise covariance matrix */ complex y[NUM_RX_ANT][NUM_SC]; /* Received signal */ - load_data("data/x.bin", NUM_TX_ANT * NUM_SC * 2, x); - load_data("data/H.bin", NUM_RX_ANT * NUM_TX_ANT * NUM_SC * 2, H); - load_data("data/R.bin", NUM_TX_ANT * NUM_TX_ANT * NUM_SC * 2, R); - load_data("data/y.bin", NUM_RX_ANT * NUM_SC * 2, y); + data_t x_t[NUM_TX_ANT][NUM_SC]; + load_data("data/x_re.bin", NUM_TX_ANT * NUM_SC, x_t); + for (i = 0; i < NUM_TX_ANT; i++) + for (j = 0; j < NUM_SC; j++) + x[i][j].re = x_t[i][j]; + load_data("data/x_im.bin", NUM_TX_ANT * NUM_SC, x_t); + for (i = 0; i < NUM_TX_ANT; i++) + for (j = 0; j < NUM_SC; j++) + x[i][j].im = x_t[i][j]; + data_t H_t[NUM_RX_ANT][NUM_TX_ANT][NUM_SC]; + load_data("data/H_re.bin", NUM_RX_ANT * NUM_TX_ANT * NUM_SC, H_t); + for (i = 0; i < NUM_RX_ANT; i++) + for (j = 0; j < NUM_TX_ANT; j++) + for (k = 0; k < NUM_SC; k++) + H[i][j][k].re = H_t[i][j][k]; + load_data("data/H_im.bin", NUM_RX_ANT * NUM_TX_ANT * NUM_SC, H_t); + for (i = 0; i < NUM_RX_ANT; i++) + for (j = 0; j < NUM_TX_ANT; j++) + for (k = 0; k < NUM_SC; k++) + H[i][j][k].im = H_t[i][j][k]; + data_t R_t[NUM_TX_ANT][NUM_TX_ANT][NUM_SC]; + load_data("data/R_re.bin", NUM_TX_ANT * NUM_TX_ANT * NUM_SC, R_t); + for (i = 0; i < NUM_TX_ANT; i++) + for (j = 0; j < NUM_TX_ANT; j++) + for (k = 0; k < NUM_SC; k++) + R[i][j][k].re = R_t[i][j][k]; + load_data("data/R_im.bin", NUM_TX_ANT * NUM_TX_ANT * NUM_SC, R_t); + for (i = 0; i < NUM_TX_ANT; i++) + for (j = 0; j < NUM_TX_ANT; j++) + for (k = 0; k < NUM_SC; k++) + R[i][j][k].im = R_t[i][j][k]; + data_t y_t[NUM_RX_ANT][NUM_SC]; + load_data("data/y_re.bin", NUM_RX_ANT * NUM_SC, y_t); + for (i = 0; i < NUM_RX_ANT; i++) + for (j = 0; j < NUM_SC; j++) + y[i][j].re = y_t[i][j]; + load_data("data/y_im.bin", NUM_RX_ANT * NUM_SC, y_t); + for (i = 0; i < NUM_RX_ANT; i++) + for (j = 0; j < NUM_SC; j++) + y[i][j].im = y_t[i][j]; /* Calculate the MMSE approximation */ complex x_MMSE[NUM_TX_ANT][NUM_SC];