345 lines
19 KiB
C
345 lines
19 KiB
C
/*
|
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
|
* contributor license agreements. See the NOTICE file distributed with
|
|
* this work for additional information regarding copyright ownership.
|
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
|
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.openairinterface.org/?page_id=698
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*-------------------------------------------------------------------------------
|
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
|
* contact@openairinterface.org
|
|
*/
|
|
|
|
/***********************************************************************
|
|
*
|
|
* FILENAME : ul_ref_seq_nr.hh
|
|
*
|
|
* MODULE : generation of uplink reference sequence for nr
|
|
*
|
|
* DESCRIPTION : variables to generate sequences with low peak to average power
|
|
* see 3GPP TS 38.211 5.2.2 Low-PAPR sequence generation
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifndef LOWPAPR_SEQUENCES_NR_H
|
|
#define LOWPAPR_SEQUENCES_NR_H
|
|
|
|
#include "PHY/defs_nr_UE.h"
|
|
#include "PHY/types.h"
|
|
|
|
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
|
|
|
|
#include "PHY/defs_nr_common.h"
|
|
#include "PHY/defs_gNB.h"
|
|
|
|
|
|
#ifdef DEFINE_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
#define EXTERN
|
|
#define INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
#else
|
|
#define EXTERN extern
|
|
#endif
|
|
|
|
/************** DEFINE ********************************************/
|
|
#define U_GROUP_NUMBER (30) /* maximum number of sequence-group */
|
|
#define V_BASE_SEQUENCE_NUMBER (2) /* maximum number of base sequences */
|
|
#define SRS_SB_CONF (71) /* maximum number of configuration for srs subcarrier allocation */
|
|
|
|
/************** VARIABLES *****************************************/
|
|
|
|
#define INDEX_SB_LESS_32 (4) /* index of dftsizes array for which subcarrier number is less than 36 */
|
|
|
|
EXTERN const uint16_t ul_allocated_re[SRS_SB_CONF] /* number of uplink allocated resource elements */
|
|
/* this table is derivated from TS 38.211 Table 6.4.1.4.3-1: SRS bandwidth configuration which gives m_SRS_b then all possible values of sequence length is */
|
|
/* M_sc_b_SRS = m_SRS_b * N_SC_RB/K_TC with K_TC = 2 or K_TC = 4 as specified in TS 38.211 6.4.1.4.3 */
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= { /*
|
|
K_TC 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
|
|
m_SRS_b 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 */
|
|
6, 12, 18, 24, 30, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180, 192, 204, 216, 228, 240,
|
|
/*
|
|
K_TC 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 3 3
|
|
m_SRS_b 84 88 92 96 100 104 108 112 116 120 128 132 136 144 152 160 168 176 184 192 100 208 216 */
|
|
252, 264, 276, 288, 300, 312, 324, 336, 348, 360, 384, 396, 408, 432, 456, 480, 504, 528, 552, 576, 600, 624, 648,
|
|
/*
|
|
K_TC 3 6 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 6 6
|
|
m_SRS_b 224 116, 240 256 264 272 144 152 160 168 176 184 192 208 216 224 240 256 264 272 */
|
|
672, 696, 720, 768, 792, 816, 864, 912, 960, 1008, 1056, 1104, 1152, 1248, 1296, 1344, 1440, 1536, 1584, 1632,
|
|
|
|
/* below numbers have been added just to include all possible lengths already used for lte */
|
|
540, 900, 972, 1080, 1200,
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/* table of largest prime number lower than uplink allocated resource elements "ul_allocated_re" */
|
|
EXTERN const uint16_t ref_ul_primes[SRS_SB_CONF]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/* 6, 12, 18, 24, 30, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180, 192, 204, 216, 228, 240, */
|
|
5, 11, 17, 23, 29, 31, 47, 59, 71, 83, 89, 107, 113, 127, 139, 151, 167, 179, 191, 199, 211, 227, 239,
|
|
|
|
/* 252, 264, 276, 288, 300, 312, 324, 336, 348, 360, 384, 396, 408, 432, 456, 480, 504, 528, 552, 576, 600, 624, 648, */
|
|
251, 263, 271, 283, 293, 311, 317, 331, 347, 359, 383, 389, 401, 431, 449, 479, 503, 523, 547, 571, 599, 619, 647,
|
|
|
|
/* 672, 696, 720, 768, 792, 816, 864, 912, 960, 1008, 1056, 1104, 1152, 1248, 1296, 1344, 1440, 1536, 1584, 1632, */
|
|
661, 691, 719, 761, 787, 811, 863, 911, 953, 997, 1051, 1103, 1151, 1237, 1291, 1327, 1439, 1531, 1583, 1627,
|
|
|
|
/* 540, 900, 972, 1080, 1200, */
|
|
523, 887, 971, 1069, 1193,
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/* Low-PAPR base sequence; see TS 38.211 clause 5.2.2 */
|
|
EXTERN int16_t *rv_ul_ref_sig[U_GROUP_NUMBER][V_BASE_SEQUENCE_NUMBER][SRS_SB_CONF];
|
|
|
|
/* 38.211 table Table 5.2.2.2-1: Definition of phi(n) for M_ZC = 6 */
|
|
EXTERN const char phi_M_ZC_6[6*U_GROUP_NUMBER]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/* 0 1 2 3 4 5 */
|
|
/* 0 */ -3, -1, 3, 3, -1, -3,
|
|
/* 1 */ -3, 3, -1, -1, 3, -3,
|
|
/* 2 */ -3, -3, -3, 3, 1, -3,
|
|
/* 3 */ 1, 1, 1, 3, -1, -3,
|
|
/* 4 */ 1, 1, 1, -3, -1, 3,
|
|
/* 5 */ -3, 1, -1, -3, -3, -3,
|
|
/* 6 */ -3, 1, 3, -3, -3, -3,
|
|
/* 7 */ -3, -1, 1, -3, 1, -1,
|
|
/* 8 */ -3, -1, -3, 1, -3, -3,
|
|
/* 9 */ -3, -3, 1, -3, 3, -3,
|
|
/* 10 */ -3, 1, 3, 1, -3, -3,
|
|
/* 11 */ -3, -1, -3, 1, 1, -3,
|
|
/* 12 */ 1, 1, 3, -1, -3, 3,
|
|
/* 13 */ 1, 1, 3, 3, -1, 3,
|
|
/* 14 */ 1, 1, 1, -3, 3, -1,
|
|
/* 15 */ 1, 1, 1, -1, 3, -3,
|
|
/* 16 */ -3, -1, -1, -1, 3, -1,
|
|
/* 17 */ -3, -3, -1, 1, -1, -3,
|
|
/* 18 */ -3, -3, -3, 1, -3, -1,
|
|
/* 19 */ -3, 1, 1, -3, -1, -3,
|
|
/* 20 */ -3, 3, -3, 1, 1, -3,
|
|
/* 21 */ -3, 1, -3, -3, -3, -1,
|
|
/* 22 */ 1, 1, -3, 3, 1, 3,
|
|
/* 23 */ 1, 1, -3, -3, 1, -3,
|
|
/* 24 */ 1, 1, 3, -1, 3, 3,
|
|
/* 25 */ 1, 1, -3, 1, 3, 3,
|
|
/* 26 */ 1, 1, -1, -1, 3, -1,
|
|
/* 27 */ 1, 1, -1, 3, -1, -1,
|
|
/* 28 */ 1, 1, -1, 3, -3, -1,
|
|
/* 29 */ 1, 1, -3, 1, -1, -1,
|
|
}
|
|
#endif
|
|
;
|
|
/* Table 5.2.2.2-2: Definition of phi ( n ) for M ZC = 12 */
|
|
EXTERN const char phi_M_ZC_12[12*U_GROUP_NUMBER]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/* 0 1 2 3 4 5 6 7 8 9 10 11 */
|
|
/* 0 */ -3, 1, -3, -3, -3, 3, -3, -1, 1, 1, 1, -3,
|
|
/* 1 */ -3, 3, 1, -3, 1, 3, -1, -1, 1, 3, 3, 3,
|
|
/* 2 */ -3, 3, 3, 1, -3, 3, -1, 1, 3, -3, 3, -3,
|
|
/* 3 */ -3, -3, -1, 3, 3, 3, -3, 3, -3, 1, -1, -3,
|
|
/* 4 */ -3, -1, -1, 1, 3, 1, 1, -1, 1, -1, -3, 1,
|
|
/* 5 */ -3, -3, 3, 1, -3, -3, -3, -1, 3, -1, 1, 3,
|
|
/* 6 */ 1, -1, 3, -1, -1, -1, -3, -1, 1, 1, 1, -3,
|
|
/* 7 */ -1, -3, 3, -1, -3, -3, -3, -1, 1, -1, 1, -3,
|
|
/* 8 */ -3, -1, 3, 1, -3, -1, -3, 3, 1, 3, 3, 1,
|
|
/* 9 */ -3, -1, -1, -3, -3, -1, -3, 3, 1, 3, -1, -3,
|
|
/* 10 */ -3, 3, -3, 3, 3, -3, -1, -1, 3, 3, 1, -3,
|
|
/* 11 */ -3, -1, -3, -1, -1, -3, 3, 3, -1, -1, 1, -3,
|
|
/* 12 */ -3, -1, 3, -3, -3, -1, -3, 1, -1, -3, 3, 3,
|
|
/* 13 */ -3, 1, -1, -1, 3, 3, -3, -1, -1, -3, -1, -3,
|
|
/* 14 */ 1, 3, -3, 1, 3, 3, 3, 1, -1, 1, -1, 3,
|
|
/* 15 */ -3, 1, 3, -1, -1, -3, -3, -1, -1, 3, 1, -3,
|
|
/* 16 */ -1, -1, -1, -1, 1, -3, -1, 3, 3, -1, -3, 1,
|
|
/* 17 */ -1, 1, 1, -1, 1, 3, 3, -1, -1, -3, 1, -3,
|
|
/* 18 */ -3, 1, 3, 3, -1, -1, -3, 3, 3, -3, 3, -3,
|
|
/* 19 */ -3, -3, 3, -3, -1, 3, 3, 3, -1, -3, 1, -3,
|
|
/* 20 */ 3, 1, 3, 1, 3, -3, -1, 1, 3, 1, -1, -3,
|
|
/* 21 */ -3, 3, 1, 3, -3, 1, 1, 1, 1, 3, -3, 3,
|
|
/* 22 */ -3, 3, 3, 3, -1, -3, -3, -1, -3, 1, 3, -3,
|
|
/* 23 */ 3, -1, -3, 3, -3, -1, 3, 3, 3, -3, -1, -3,
|
|
/* 24 */ -3, -1, 1, -3, 1, 3, 3, 3, -1, -3, 3, 3,
|
|
/* 25 */ -3, 3, 1, -1, 3, 3, -3, 1, -1, 1, -1, 1,
|
|
/* 26 */ -1, 1, 3, -3, 1, -1, 1, -1, -1, -3, 1, -1,
|
|
/* 27 */ -3, -3, 3, 3, 3, -3, -1, 1, -3, 3, 1, -3,
|
|
/* 28 */ 1, -1, 3, 1, 1, -1, -1, -1, 1, 3, -3, 1,
|
|
/* 29 */ -3, 3, -3, 3, -3, -3, 3, -1, -1, 1, 3, -3,
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/* Table 5.2.2.2-3: Definition of phi (n ) for M_ZC = 18 */
|
|
EXTERN const char phi_M_ZC_18[18*U_GROUP_NUMBER]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 */
|
|
/* 0 */ -1, 3, -1, -3, 3, 1, -3, -1, 3, -3, -1, -1, 1, 1, 1, -1, -1, -1,
|
|
/* 1 */ 3, -3, 3, -1, 1, 3, -3, -1, -3, -3, -1, -3, 3, 1, -1, 3, -3, 3,
|
|
/* 2 */ -3, 3, 1, -1, -1, 3, -3, -1, 1, 1, 1, 1, 1, -1, 3, -1, -3, -1,
|
|
/* 3 */ -3, -3, 3, 3, 3, 1, -3, 1, 3, 3, 1, -3, -3, 3, -1, -3, -1, 1,
|
|
/* 4 */ 1, 1, -1, -1, -3, -1, 1, -3, -3, -3, 1, -3, -1, -1, 1, -1, 3, 1,
|
|
/* 5 */ 3, -3, 1, 1, 3, -1, 1, -1, -1, -3, 1, 1, -1, 3, 3, -3, 3, -1,
|
|
/* 6 */ -3, 3, -1, 1, 3, 1, -3, -1, 1, 1, -3, 1, 3, 3, -1, -3, -3, -3,
|
|
/* 7 */ 1, 1, -3, 3, 3, 1, 3, -3, 3, -1, 1, 1, -1, 1, -3, -3, -1, 3,
|
|
/* 8 */ -3, 1, -3, -3, 1, -3, -3, 3, 1, -3, -1, -3, -3, -3, -1, 1, 1, 3,
|
|
/* 9 */ 3, -1, 3, 1, -3, -3, -1, 1, -3, -3, 3, 3, 3, 1, 3, -3, 3, -3,
|
|
/* 10 */ -3, -3, -3, 1, -3, 3, 1, 1, 3, -3, -3, 1, 3, -1, 3, -3, -3, 3,
|
|
/* 11 */ -3, -3, 3, 3, 3, -1, -1, -3, -1, -1, -1, 3, 1, -3, -3, -1, 3, -1,
|
|
/* 12 */ -3, -1, -3, -3, 1, 1, -1, -3, -1, -3, -1, -1, 3, 3, -1, 3, 1, 3,
|
|
/* 13 */ 1, 1, -3, -3, -3, -3, 1, 3, -3, 3, 3, 1, -3, -1, 3, -1, -3, 1,
|
|
/* 14 */ -3, 3, -1, -3, -1, -3, 1, 1, -3, -3, -1, -1, 3, -3, 1, 3, 1, 1,
|
|
/* 15 */ 3, 1, -3, 1, -3, 3, 3, -1, -3, -3, -1, -3, -3, 3, -3, -1, 1, 3,
|
|
/* 16 */ -3, -1, -3, -1, -3, 1, 3, -3, -1, 3, 3, 3, 1, -1, -3, 3, -1, -3,
|
|
/* 17 */ -3, -1, 3, 3, -1, 3, -1, -3, -1, 1, -1, -3, -1, -1, -1, 3, 3, 1,
|
|
/* 18 */ -3, 1, -3, -1, -1, 3, 1, -3, -3, -3, -1, -3, -3, 1, 1, 1, -1, -1,
|
|
/* 19 */ 3, 3, 3, -3, -1, -3, -1, 3, -1, 1, -1, -3, 1, -3, -3, -1, 3, 3,
|
|
/* 20 */ -3, 1, 1, -3, 1, 1, 3, -3, -1, -3, -1, 3, -3, 3, -1, -1, -1, -3,
|
|
/* 21 */ 1, -3, -1, -3, 3, 3, -1, -3, 1, -3, -3, -1, -3, -1, 1, 3, 3, 3,
|
|
/* 22 */ -3, -3, 1, -1, -1, 1, 1, -3, -1, 3, 3, 3, 3, -1, 3, 1, 3, 1,
|
|
/* 23 */ 3, -1, -3, 1, -3, -3, -3, 3, 3, -1, 1, -3, -1, 3, 1, 1, 3, 3,
|
|
/* 24 */ 3, -1, -1, 1, -3, -1, -3, -1, -3, -3, -1, -3, 1, 1, 1, -3, -3, 3,
|
|
/* 25 */ -3, -3, 1, -3, 3, 3, 3, -1, 3, 1, 1, -3, -3, -3, 3, -3, -1, -1,
|
|
/* 26 */ -3, -1, -1, -3, 1, -3, 3, -1, -1, -3, 3, 3, -3, -1, 3, -1, -1, -1,
|
|
/* 27 */ -3, -3, 3, 3, -3, 1, 3, -1, -3, 1, -1, -3, 3, -3, -1, -1, -1, 3,
|
|
/* 28 */ -1, -3, 1, -3, -3, -3, 1, 1, 3, 3, -3, 3, 3, -3, -1, 3, -3, 1,
|
|
/* 29 */ -3, 3, 1, -1, -1, -1, -1, 1, -1, 3, 3, -3, -1, 1, 3, -1, 3, -1,
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/* Table 5.2.2.2-4: Definition of phi (n ) for M_ZC = 24 */
|
|
EXTERN const char phi_M_ZC_24[24*U_GROUP_NUMBER]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 */
|
|
/* 0 */ -1, -3, 3, -1, 3, 1, 3, -1, 1, -3, -1, -3, -1, 1, 3, -3, -1, -3, 3, 3, 3, -3, -3, -3,
|
|
/* 1 */ -1, -3, 3, 1, 1, -3, 1, -3, -3, 1, -3, -1, -1, 3, -3, 3, 3, 3, -3, 1, 3, 3, -3, -3,
|
|
/* 2 */ -1, -3, -3, 1, -1, -1, -3, 1, 3, -1, -3, -1, -1, -3, 1, 1, 3, 1, -3, -1, -1, 3, -3, -3,
|
|
/* 3 */ 1, -3, 3, -1, -3, -1, 3, 3, 1, -1, 1, 1, 3, -3, -1, -3, -3, -3, -1, 3, -3, -1, -3, -3,
|
|
/* 4 */ -1, 3, -3, -3, -1, 3, -1, -1, 1, 3, 1, 3, -1, -1, -3, 1, 3, 1, -1, -3, 1, -1, -3, -3,
|
|
/* 5 */ -3, -1, 1, -3, -3, 1, 1, -3, 3, -1, -1, -3, 1, 3, 1, -1, -3, -1, -3, 1, -3, -3, -3, -3,
|
|
/* 6 */ -3, 3, 1, 3, -1, 1, -3, 1, -3, 1, -1, -3, -1, -3, -3, -3, -3, -1, -1, -1, 1, 1, -3, -3,
|
|
/* 7 */ -3, 1, 3, -1, 1, -1, 3, -3, 3, -1, -3, -1, -3, 3, -1, -1, -1, -3, -1, -1, -3, 3, 3, -3,
|
|
/* 8 */ -3, 1, -3, 3, -1, -1, -1, -3, 3, 1, -1, -3, -1, 1, 3, -1, 1, -1, 1, -3, -3, -3, -3, -3,
|
|
/* 9 */ 1, 1, -1, -3, -1, 1, 1, -3, 1, -1, 1, -3, 3, -3, -3, 3, -1, -3, 1, 3, -3, 1, -3, -3,
|
|
/* 10 */ -3, -3, -3, -1, 3, -3, 3, 1, 3, 1, -3, -1, -1, -3, 1, 1, 3, 1, -1, -3, 3, 1, 3, -3,
|
|
/* 11 */ -3, 3, -1, 3, 1, -1, -1, -1, 3, 3, 1, 1, 1, 3, 3, 1, -3, -3, -1, 1, -3, 1, 3, -3,
|
|
/* 12 */ 3, -3, 3, -1, -3, 1, 3, 1, -1, -1, -3, -1, 3, -3, 3, -1, -1, 3, 3, -3, -3, 3, -3, -3,
|
|
/* 13 */ -3, 3, -1, 3, -1, 3, 3, 1, 1, -3, 1, 3, -3, 3, -3, -3, -1, 1, 3, -3, -1, -1, -3, -3,
|
|
/* 14 */ -3, 1, -3, -1, -1, 3, 1, 3, -3, 1, -1, 3, 3, -1, -3, 3, -3, -1, -1, -3, -3, -3, 3, -3,
|
|
/* 15 */ -3, -1, -1, -3, 1, -3, -3, -1, -1, 3, -1, 1, -1, 3, 1, -3, -1, 3, 1, 1, -1, -1, -3, -3,
|
|
/* 16 */ -3, -3, 1, -1, 3, 3, -3, -1, 1, -1, -1, 1, 1, -1, -1, 3, -3, 1, -3, 1, -1, -1, -1, -3,
|
|
/* 17 */ 3, -1, 3, -1, 1, -3, 1, 1, -3, -3, 3, -3, -1, -1, -1, -1, -1, -3, -3, -1, 1, 1, -3, -3,
|
|
/* 18 */ 3, 1, -3, 1, -3, -3, 1, -3, 1, -3, -3, -3, -3, -3, 1, -3, -3, 1, 1, -3, 1, 1, -3, -3,
|
|
/* 19 */ -3, -3, 3, 3, 1, -1, -1, -1, 1, -3, -1, 1, -1, 3, -3, -1, -3, -1, -1, 1, -3, 3, -1, -3,
|
|
/* 20 */ -3, -3, -1, -1, -1, -3, 1, -1, -3, -1, 3, -3, 1, -3, 3, -3, 3, 3, 1, -1, -1, 1, -3, -3,
|
|
/* 21 */ 3, -1, 1, -1, 3, -3, 1, 1, 3, -1, -3, 3, 1, -3, 3, -1, -1, -1, -1, 1, -3, -3, -3, -3,
|
|
/* 22 */ -3, 1, -3, 3, -3, 1, -3, 3, 1, -1, -3, -1, -3, -3, -3, -3, 1, 3, -1, 1, 3, 3, 3, -3,
|
|
/* 23 */ -3, -1, 1, -3, -1, -1, 1, 1, 1, 3, 3, -1, 1, -1, 1, -1, -1, -3, -3, -3, 3, 1, -1, -3,
|
|
/* 24 */ -3, 3, -1, -3, -1, -1, -1, 3, -1, -1, 3, -3, -1, 3, -3, 3, -3, -1, 3, 1, 1, -1, -3, -3,
|
|
/* 25 */ -3, 1, -1, -3, -3, -1, 1, -3, -1, -3, 1, 1, -1, 1, 1, 3, 3, 3, -1, 1, -1, 1, -1, -3,
|
|
/* 26 */ -1, 3, -1, -1, 3, 3, -1, -1, -1, 3, -1, -3, 1, 3, 1, 1, -3, -3, -3, -1, -3, -1, -3, -3,
|
|
/* 27 */ 3, -3, -3, -1, 3, 3, -3, -1, 3, 1, 1, 1, 3, -1, 3, -3, -1, 3, -1, 3, 1, -1, -3, -3,
|
|
/* 28 */ -3, 1, -3, 1, -3, 1, 1, 3, 1, -3, -3, -1, 1, 3, -1, -3, 3, 1, -1, -3, -3, -3, -3, -3,
|
|
/* 29 */ 3, -3, -1, 1, 3, -1, -1, -3, -1, 3, -1, -3, -1, -3, 3, -1, 3, 1, 1, -3, 3, -3, -3, -3,
|
|
}
|
|
#endif
|
|
;
|
|
/************** FUNCTION ******************************************/
|
|
|
|
|
|
EXTERN int16_t *base_sequence_36_or_larger(unsigned int M_ZC, unsigned int u, unsigned int v, unsigned int scaling, unsigned int if_dmrs_seq);
|
|
|
|
|
|
EXTERN int16_t *base_sequence_less_than_36(unsigned int M_ZC, unsigned int u, unsigned int scaling);
|
|
/*!
|
|
\brief This function generate the sounding reference symbol (SRS) for the uplink.
|
|
@param tables of srs
|
|
@param scaling amplitude of the reference signal
|
|
*/
|
|
void generate_ul_reference_signal_sequences(unsigned int scaling);
|
|
void free_ul_reference_signal_sequences(void);
|
|
|
|
|
|
|
|
// Supported for 100Mhz configuration - which has max 273 RBs
|
|
#define MAX_INDEX_DMRS_UL_ALLOCATED_REs 53
|
|
|
|
|
|
EXTERN const uint16_t dmrs_ul_allocated_res[MAX_INDEX_DMRS_UL_ALLOCATED_REs]
|
|
/* Number of possible DMRS REs based on PRBs allocated for PUSCH. Array has values until 273 RBs (100Mhz BW)
|
|
Number of PUSCH RBs allocated should be able to be expressed as 2topowerofn*3topowerofn*5tothepowerofn
|
|
According to 3GPP spec 38.211 section 6.3.1.4
|
|
Table used in calculating DMRS low papr type1 sequence for transform precoding */
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/*RBs 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, */
|
|
6, 12, 18, 24, 30, 36, 48, 54, 60, 72, 90, 96,
|
|
|
|
/*RBs 18, 20, 24, 25, 27, 30, 32, 36, 40, 45, 48, 50, */
|
|
108, 120, 144, 150, 162, 180, 192, 216, 240, 270, 288, 300,
|
|
|
|
/*RBs 54, 60, 64, 72 75, 80, 81, 90, 96, 100, (Bw 40Mhz) */
|
|
324, 360, 384, 432, 450, 480, 486, 540, 576, 600,
|
|
|
|
/*RBs 108, 120 125 128 135 144 150 160 162 180 192 200 */
|
|
648, 720, 750, 768, 810, 864, 900, 960, 972, 1080, 1152, 1200,
|
|
|
|
/*RBs 216 225 240 243 250 256 270 supported until 100Mhz */
|
|
1296, 1350, 1440, 1458, 1500, 1536, 1620
|
|
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/* Table of largest prime number N_ZC < possible DMRS REs M_ZC, this array has values until 100Mhz
|
|
According to 3GPP spec 38.211 section 5.2.2.1
|
|
Table used in calculating DMRS low papr type1 sequence for transform precoding */
|
|
EXTERN const uint16_t dmrs_ref_ul_primes[MAX_INDEX_DMRS_UL_ALLOCATED_REs]
|
|
#ifdef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
= {
|
|
/*DMRS REs 6, 12, 18, 24, 30, 36, 48, 54, 60, 72, 90, 96, */
|
|
5, 11, 17, 23, 29, 31, 47, 53, 59, 71, 89, 89,
|
|
|
|
/*DMRS REs 108, 120, 144, 150, 162, 180, 192, 216, 240, 270, 288, 300, */
|
|
107, 113, 139, 149, 157, 179, 191, 211, 239, 269, 283, 293,
|
|
|
|
/*DMRS REs 324, 360, 384, 432, 450, 480, 486, 540, 576, 600, */
|
|
317, 359, 383, 431, 449, 479, 479, 523, 571, 599,
|
|
|
|
/*DMRS REs 648, 720, 750, 768, 810, 864, 900, 960, 972, 1080, 1152, 1200, */
|
|
647, 719, 743, 761, 809, 863, 887, 953, 971, 1069, 1151, 1193,
|
|
|
|
/*DMRS REs 1296, 1350, 1440, 1458, 1500, 1536 1620 supported until 100Mhz */
|
|
1291, 1327, 1439, 1453, 1499, 1531, 1619
|
|
|
|
|
|
}
|
|
#endif
|
|
;
|
|
|
|
/// PUSCH DMRS for transform precoding
|
|
EXTERN int16_t *gNB_dmrs_lowpaprtype1_sequence[U_GROUP_NUMBER][V_BASE_SEQUENCE_NUMBER][MAX_INDEX_DMRS_UL_ALLOCATED_REs];
|
|
EXTERN int16_t *dmrs_lowpaprtype1_ul_ref_sig[U_GROUP_NUMBER][V_BASE_SEQUENCE_NUMBER][MAX_INDEX_DMRS_UL_ALLOCATED_REs];
|
|
int16_t get_index_for_dmrs_lowpapr_seq(int16_t num_dmrs_res);
|
|
void generate_lowpapr_typ1_refsig_sequences(unsigned int scaling);
|
|
void free_gnb_lowpapr_sequences(void);
|
|
|
|
|
|
#undef INIT_VARIABLES_LOWPAPR_SEQUENCES_NR_H
|
|
#undef EXTERN
|
|
|
|
#endif /* SSS_NR_H */
|