Commit 62133070 authored by Francesco Mani's avatar Francesco Mani

fix indentation in nr_prach

parent bba103dc
...@@ -301,205 +301,203 @@ void rx_nr_prach_ru(RU_t *ru, ...@@ -301,205 +301,203 @@ void rx_nr_prach_ru(RU_t *ru,
// do DFT // do DFT
if (mu==1) { if (mu==1) {
if (fp->N_RB_UL <= 100) if (fp->N_RB_UL <= 100)
AssertFatal(1==0,"N_RB_UL %d not support for NR PRACH yet\n",fp->N_RB_UL); AssertFatal(1==0,"N_RB_UL %d not support for NR PRACH yet\n",fp->N_RB_UL);
else if (fp->N_RB_UL < 137) { else if (fp->N_RB_UL < 137) {
if (fp->threequarter_fs==0) { if (fp->threequarter_fs==0) {
//40 MHz @ 61.44 Ms/s //40 MHz @ 61.44 Ms/s
//50 MHz @ 61.44 Ms/s //50 MHz @ 61.44 Ms/s
prach2 = prach[aa] + (Ncp<<2); // Ncp is for 30.72 Ms/s, so multiply by 2 for I/Q, and 2 to bring to 61.44 Ms/s prach2 = prach[aa] + (Ncp<<2); // Ncp is for 30.72 Ms/s, so multiply by 2 for I/Q, and 2 to bring to 61.44 Ms/s
if (prach_sequence_length == 0) { if (prach_sequence_length == 0) {
if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) {
dftlen=49152; dftlen=49152;
dft(DFT_49152,prach2,rxsigF[aa],1); dft(DFT_49152,prach2,rxsigF[aa],1);
}
if (prachFormat == 1 || prachFormat == 2) {
dft(DFT_49152,prach2+98304,rxsigF[aa]+98304,1);
reps++;
}
if (prachFormat == 2) {
dft(DFT_49152,prach2+(98304*2),rxsigF[aa]+(98304*2),1);
dft(DFT_49152,prach2+(98304*3),rxsigF[aa]+(98304*3),1);
reps+=2;
}
if (prachFormat == 3) {
dftlen=12288;
for (int i=0;i<4;i++) dft(DFT_12288,prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1);
reps=4;
}
}// 839 sequence
else {
if (prachStartSymbol == 0)
prach2+=64; // 32 samples @ 61.44 Ms/s in first symbol of each half subframe (15/30 kHz only)
dftlen=2048;
dft(DFT_2048,prach2,rxsigF[aa],1);
if (prachFormat != 9/*C0*/) {
dft(DFT_2048,prach2+4096,rxsigF[aa]+4096,1);
reps++;
}
if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) {
dft(DFT_2048,prach2+4096*2,rxsigF[aa]+4096*2,1);
dft(DFT_2048,prach2+4096*3,rxsigF[aa]+4096*3,1);
reps+=2;
}
if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
dft(DFT_2048,prach2+4096*4,rxsigF[aa]+4096*4,1);
dft(DFT_2048,prach2+4096*5,rxsigF[aa]+4096*5,1);
reps+=2;
}
if (prachFormat == 8/*B4*/) {
for (int i=6;i<12;i++) dft(DFT_2048,prach2+(4096*i),rxsigF[aa]+(4096*i),1);
reps+=6;
}
} }
if (prachFormat == 1 || prachFormat == 2) { } else { // threequarter sampling
dft(DFT_49152,prach2+98304,rxsigF[aa]+98304,1); // 40 MHz @ 46.08 Ms/s
reps++; prach2 = prach[aa] + (3*Ncp); // 46.08 is 1.5 * 30.72, times 2 for I/Q
} if (prach_sequence_length == 0) {
if (prachFormat == 2) { AssertFatal(fp->N_RB_UL <= 107,"cannot do 108..136 PRBs with 3/4 sampling\n");
dft(DFT_49152,prach2+(98304*2),rxsigF[aa]+(98304*2),1); if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) {
dft(DFT_49152,prach2+(98304*3),rxsigF[aa]+(98304*3),1); dftlen=36864;
reps+=2; dft(DFT_36864,prach2,rxsigF[aa],1);
} reps++;
if (prachFormat == 3) { }
dftlen=12288; if (prachFormat == 1 || prachFormat == 2) {
for (int i=0;i<4;i++) dft(DFT_12288,prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1); dft(DFT_36864,prach2+73728,rxsigF[aa]+73728,1);
reps=4; reps++;
} }
}// 839 sequence if (prachFormat == 2) {
else { dft(DFT_36864,prach2+(73728*2),rxsigF[aa]+(73728*2),1);
if (prachStartSymbol == 0) dft(DFT_36864,prach2+(73728*3),rxsigF[aa]+(73728*3),1);
prach2+=64; // 32 samples @ 61.44 Ms/s in first symbol of each half subframe (15/30 kHz only) reps+=2;
}
dftlen=2048; if (prachFormat == 3) {
dft(DFT_2048,prach2,rxsigF[aa],1); dftlen=9216;
if (prachFormat != 9/*C0*/) { for (int i=0;i<4;i++) dft(DFT_9216,prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1);
dft(DFT_2048,prach2+4096,rxsigF[aa]+4096,1); reps=4;
reps++; }
} } else {
if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) { if (prachStartSymbol == 0) prach2+=48; // 24 samples @ 46.08 Ms/s in first symbol of each half subframe (15/30 kHz only)
dft(DFT_2048,prach2+4096*2,rxsigF[aa]+4096*2,1); dftlen=1536;
dft(DFT_2048,prach2+4096*3,rxsigF[aa]+4096*3,1); dft(DFT_1536,prach2,rxsigF[aa],1);
reps+=2; if (prachFormat != 9/*C0*/) {
} dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1);
if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) { reps++;
dft(DFT_2048,prach2+4096*4,rxsigF[aa]+4096*4,1); }
dft(DFT_2048,prach2+4096*5,rxsigF[aa]+4096*5,1); if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) {
reps+=2; dft(DFT_1536,prach2+3072*2,rxsigF[aa]+3072*2,1);
} dft(DFT_1536,prach2+3072*3,rxsigF[aa]+3072*3,1);
if (prachFormat == 8/*B4*/) { reps+=2;
for (int i=6;i<12;i++) dft(DFT_2048,prach2+(4096*i),rxsigF[aa]+(4096*i),1); }
reps+=6; if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
} dft(DFT_1536,prach2+3072*4,rxsigF[aa]+3072*4,1);
} dft(DFT_1536,prach2+3072*5,rxsigF[aa]+3072*5,1);
} else { // threequarter sampling reps+=2;
// 40 MHz @ 46.08 Ms/s }
prach2 = prach[aa] + (3*Ncp); // 46.08 is 1.5 * 30.72, times 2 for I/Q if (prachFormat == 8/*B4*/) {
if (prach_sequence_length == 0) { for (int i=6;i<12;i++) dft(DFT_1536,prach2+(3072*i),rxsigF[aa]+(3072*i),1);
AssertFatal(fp->N_RB_UL <= 107,"cannot do 108..136 PRBs with 3/4 sampling\n"); reps+=6;
if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { }
dftlen=36864; } // short format
dft(DFT_36864,prach2,rxsigF[aa],1); } // 3/4 sampling
reps++; } // <=50 MHz BW
} else if (fp->N_RB_UL <= 273) {
if (prachFormat == 1 || prachFormat == 2) { if (fp->threequarter_fs==0) {
dft(DFT_36864,prach2+73728,rxsigF[aa]+73728,1); prach2 = prach[aa] + (Ncp<<3);
reps++; //80,90,100 MHz @ 122.88 Ms/s
}
if (prachFormat == 2) { if (prach_sequence_length == 0) {
dft(DFT_36864,prach2+(73728*2),rxsigF[aa]+(73728*2),1); if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) {
dft(DFT_36864,prach2+(73728*3),rxsigF[aa]+(73728*3),1); dftlen=98304;
reps+=2; dft(DFT_98304,prach2,rxsigF[aa],1);
} }
if (prachFormat == 3) { if (prachFormat == 1 || prachFormat == 2) {
dftlen=9216; dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1);
for (int i=0;i<4;i++) dft(DFT_9216,prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1); reps++;
reps=4; }
} if (prachFormat == 2) {
} else { dft(DFT_98304,prach2+(196608*2),rxsigF[aa]+(196608*2),1);
if (prachStartSymbol == 0) prach2+=48; // 24 samples @ 46.08 Ms/s in first symbol of each half subframe (15/30 kHz only) dft(DFT_98304,prach2+(196608*3),rxsigF[aa]+(196608*3),1);
dftlen=1536; reps+=2;
dft(DFT_1536,prach2,rxsigF[aa],1); }
if (prachFormat != 9/*C0*/) { if (prachFormat == 3) {
dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1); dftlen=24576;
reps++; for (int i=0;i<4;i++) dft(DFT_24576,prach2+(i*2*24576),rxsigF[aa]+(i*2*24576),1);
} reps=4;
}
if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) {
dft(DFT_1536,prach2+3072*2,rxsigF[aa]+3072*2,1);
dft(DFT_1536,prach2+3072*3,rxsigF[aa]+3072*3,1);
reps+=2;
}
if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
dft(DFT_1536,prach2+3072*4,rxsigF[aa]+3072*4,1);
dft(DFT_1536,prach2+3072*5,rxsigF[aa]+3072*5,1);
reps+=2;
}
if (prachFormat == 8/*B4*/) {
for (int i=6;i<12;i++) dft(DFT_1536,prach2+(3072*i),rxsigF[aa]+(3072*i),1);
reps+=6;
}
} // short format
} // 3/4 sampling
} // <=50 MHz BW
else if (fp->N_RB_UL <= 273) {
if (fp->threequarter_fs==0) {
prach2 = prach[aa] + (Ncp<<3);
//80,90,100 MHz @ 122.88 Ms/s
if (prach_sequence_length == 0) {
if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) {
dftlen=98304;
dft(DFT_98304,prach2,rxsigF[aa],1);
} }
if (prachFormat == 1 || prachFormat == 2) { else {
dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); if (prachStartSymbol == 0) prach2+=128; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only)
reps++;
} dftlen=4096;
if (prachFormat == 2) { dft(DFT_4096,prach2,rxsigF[aa],1);
dft(DFT_98304,prach2+(196608*2),rxsigF[aa]+(196608*2),1); if (prachFormat != 9/*C0*/) {
dft(DFT_98304,prach2+(196608*3),rxsigF[aa]+(196608*3),1); dft(DFT_4096,prach2+8192,rxsigF[aa]+8192,1);
reps+=2; reps++;
} }
if (prachFormat == 3) {
dftlen=24576; if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) {
for (int i=0;i<4;i++) dft(DFT_24576,prach2+(i*2*24576),rxsigF[aa]+(i*2*24576),1); dft(DFT_4096,prach2+8192*2,rxsigF[aa]+8192*2,1);
reps=4; dft(DFT_4096,prach2+8192*3,rxsigF[aa]+8192*3,1);
} reps+=2;
} }
else { if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
if (prachStartSymbol == 0) prach2+=128; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only) dft(DFT_4096,prach2+8192*4,rxsigF[aa]+8192*4,1);
dft(DFT_4096,prach2+8192*5,rxsigF[aa]+8192*5,1);
dftlen=4096; reps+=2;
dft(DFT_4096,prach2,rxsigF[aa],1); }
if (prachFormat != 9/*C0*/) { if (prachFormat == 8/*B4*/) {
dft(DFT_4096,prach2+8192,rxsigF[aa]+8192,1); for (int i=6;i<12;i++) dft(DFT_4096,prach2+(8192*i),rxsigF[aa]+(8192*i),1);
reps++; reps+=6;
} }
}
if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) { } else {
dft(DFT_4096,prach2+8192*2,rxsigF[aa]+8192*2,1); AssertFatal(fp->N_RB_UL <= 217,"cannot do more than 217 PRBs with 3/4 sampling\n");
dft(DFT_4096,prach2+8192*3,rxsigF[aa]+8192*3,1); prach2 = prach[aa] + (6*Ncp);
reps+=2; // 80 MHz @ 92.16 Ms/s
} if (prach_sequence_length == 0) {
if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) { if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) {
dft(DFT_4096,prach2+8192*4,rxsigF[aa]+8192*4,1); dftlen=73728;
dft(DFT_4096,prach2+8192*5,rxsigF[aa]+8192*5,1); dft(DFT_73728,prach2,rxsigF[aa],1);
reps+=2; reps++;
} }
if (prachFormat == 8/*B4*/) { if (prachFormat == 1 || prachFormat == 2) {
for (int i=6;i<12;i++) dft(DFT_4096,prach2+(8192*i),rxsigF[aa]+(8192*i),1); dft(DFT_73728,prach2+(2*73728),rxsigF[aa]+(2*73728),1);
reps+=6; reps++;
} }
} if (prachFormat == 3) {
} else { dftlen=18432;
AssertFatal(fp->N_RB_UL <= 217,"cannot do more than 217 PRBs with 3/4 sampling\n"); for (int i=0;i<4;i++) dft(DFT_18432,prach2+(i*2*18432),rxsigF[aa]+(i*2*18432),1);
prach2 = prach[aa] + (6*Ncp); reps=4;
// 80 MHz @ 92.16 Ms/s }
if (prach_sequence_length == 0) { } else {
if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { if (prachStartSymbol == 0) prach2+=96; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only)
dftlen=73728;
dft(DFT_73728,prach2,rxsigF[aa],1); dftlen=3072;
reps++; dft(DFT_3072,prach2,rxsigF[aa],1);
} if (prachFormat != 9/*C0*/) {
if (prachFormat == 1 || prachFormat == 2) { dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1);
dft(DFT_73728,prach2+(2*73728),rxsigF[aa]+(2*73728),1); reps++;
reps++; }
}
if (prachFormat == 3) { if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) {
dftlen=18432; dft(DFT_3072,prach2+6144*2,rxsigF[aa]+6144*2,1);
for (int i=0;i<4;i++) dft(DFT_18432,prach2+(i*2*18432),rxsigF[aa]+(i*2*18432),1); dft(DFT_3072,prach2+6144*3,rxsigF[aa]+6144*3,1);
reps=4; reps+=2;
} }
} else { if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
if (prachStartSymbol == 0) prach2+=96; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only) dft(DFT_3072,prach2+6144*4,rxsigF[aa]+6144*4,1);
dft(DFT_3072,prach2+6144*5,rxsigF[aa]+6144*5,1);
dftlen=3072; reps+=2;
dft(DFT_3072,prach2,rxsigF[aa],1); }
if (prachFormat != 9/*C0*/) { if (prachFormat == 8/*B4*/) {
dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1); for (int i=6;i<12;i++) dft(DFT_3072,prach2+(6144*i),rxsigF[aa]+(6144*i),1);
reps++; reps+=6;
} }
}
if (prachFormat == 5/*A2*/ || prachFormat == 6/*A3*/|| prachFormat == 8/*B4*/ || prachFormat == 10/*C2*/) { }
dft(DFT_3072,prach2+6144*2,rxsigF[aa]+6144*2,1);
dft(DFT_3072,prach2+6144*3,rxsigF[aa]+6144*3,1);
reps+=2;
}
if (prachFormat == 6/*A3*/ || prachFormat == 8/*B4*/) {
dft(DFT_3072,prach2+6144*4,rxsigF[aa]+6144*4,1);
dft(DFT_3072,prach2+6144*5,rxsigF[aa]+6144*5,1);
reps+=2;
}
if (prachFormat == 8/*B4*/) {
for (int i=6;i<12;i++) dft(DFT_3072,prach2+(6144*i),rxsigF[aa]+(6144*i),1);
reps+=6;
}
}
} }
} }
}
else if (mu==3) { else if (mu==3) {
if (fp->threequarter_fs) { if (fp->threequarter_fs) {
AssertFatal(1==0,"3/4 sampling not supported for numerology %d\n",mu); AssertFatal(1==0,"3/4 sampling not supported for numerology %d\n",mu);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment