NR_PSS/NR_SSS
This commit is contained in:
@@ -1238,6 +1238,8 @@ set(PHY_SRC_UE
|
||||
# actual source
|
||||
${OPENAIR1_DIR}/PHY/INIT/nr_init.c
|
||||
${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pss.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sss.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
||||
|
||||
@@ -30,6 +30,9 @@ int phy_init_nr_gNB(nfapi_param_t* nfapi_params)
|
||||
nfapi_params->subframe_config.dl_cyclic_prefix_type.value = 0; //NORMAL
|
||||
nfapi_params->rf_config.dl_channel_bandwidth.value = 106;
|
||||
nfapi_params->rf_config.ul_channel_bandwidth.value = 106;
|
||||
nfapi_params->rf_config.tx_antenna_ports.value = 1;
|
||||
|
||||
nfapi_params->sch_config.physical_cell_id.value = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,8 @@ int nr_init_frame_parms(nfapi_param_t nfapi_params,
|
||||
#if DISABLE_LOG_X
|
||||
printf("Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
|
||||
#else
|
||||
LOG_I(PHY,"Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
|
||||
//LOG_I(PHY,"Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
|
||||
printf("Initializing frame parms for mu %d, N_RB %d, Ncp %d\n",mu, N_RB, Ncp);
|
||||
#endif
|
||||
|
||||
if (Ncp == 1) //EXTENDED, to be modified after lte defs are properly linked
|
||||
@@ -133,9 +134,14 @@ int nr_init_frame_parms(nfapi_param_t nfapi_params,
|
||||
|
||||
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *frame_parms)
|
||||
{
|
||||
LOG_I(PHY,"frame_parms->scs=%d\n",frame_parms->subcarrier_spacing);
|
||||
/*LOG_I(PHY,"frame_parms->scs=%d\n",frame_parms->subcarrier_spacing);
|
||||
LOG_I(PHY,"frame_parms->ofdm_symbol_size=%d\n",frame_parms->ofdm_symbol_size);
|
||||
LOG_I(PHY,"frame_parms->samples_per_tti=%d\n",frame_parms->samples_per_tti);
|
||||
LOG_I(PHY,"frame_parms->nb_prefix_samples0=%d\n",frame_parms->nb_prefix_samples0);
|
||||
LOG_I(PHY,"frame_parms->nb_prefix_samples=%d\n",frame_parms->nb_prefix_samples);
|
||||
LOG_I(PHY,"frame_parms->nb_prefix_samples=%d\n",frame_parms->nb_prefix_samples);*/
|
||||
printf("frame_parms->scs=%d\n",frame_parms->subcarrier_spacing);
|
||||
printf("frame_parms->ofdm_symbol_size=%d\n",frame_parms->ofdm_symbol_size);
|
||||
printf("frame_parms->samples_per_tti=%d\n",frame_parms->samples_per_tti);
|
||||
printf("frame_parms->nb_prefix_samples0=%d\n",frame_parms->nb_prefix_samples0);
|
||||
printf("frame_parms->nb_prefix_samples=%d\n",frame_parms->nb_prefix_samples);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
% octave script for generating NR specific modulated symbols
|
||||
%
|
||||
% 0 .. "0"
|
||||
% 1,2 .. BPSK(0),BPSK(1)
|
||||
|
||||
% 2^15 /sqrt(2) K = 768;
|
||||
K = 768*sqrt(2)/2^15;
|
||||
|
||||
% Amplitude for BPSK (\f$ 2^15 \times 1/\sqrt{2}\f$)
|
||||
BPSK = 23170;
|
||||
|
||||
% BPSK
|
||||
for b = 0:1
|
||||
bpsk_table(b+1) = (1 - 2*b)*BPSK + 1j*(1-2*b)*BPSK;
|
||||
end
|
||||
|
||||
table = round(K * [ 0; bpsk_table(:) ]);
|
||||
|
||||
save mod_table.mat table
|
||||
|
||||
table2 = zeros(1,length(table)*2);
|
||||
table2(1:2:end) = real(table);
|
||||
table2(2:2:end) = imag(table);
|
||||
|
||||
fd = fopen("nr_mod_table.h","w");
|
||||
fprintf(fd,"#define MOD_TABLE_SIZE_SHORT %d\n", length(table)*2);
|
||||
fprintf(fd,"#define MOD_TABLE_BPSK_OFFSET %d\n", 1);
|
||||
fprintf(fd,"short nr_mod_table[MOD_TABLE_SIZE_SHORT] = {");
|
||||
fprintf(fd,"%d,",table2(1:end-1));
|
||||
fprintf(fd,"%d};\n",table2(end));
|
||||
fclose(fd);
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#define MOD_TABLE_SIZE_SHORT 6
|
||||
#define MOD_TABLE_BPSK_OFFSET 1
|
||||
short nr_mod_table[MOD_TABLE_SIZE_SHORT] = {0,0,768,768,-768,-768};
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include "../defs_NR.h"
|
||||
|
||||
#define NR_PSS_DEBUG
|
||||
|
||||
short nr_mod_table[MOD_TABLE_SIZE_SHORT] = {0,0,768,768,-768,-768};
|
||||
|
||||
int nr_generate_pss( int16_t *d_pss,
|
||||
int32_t **txdataF,
|
||||
int16_t amp,
|
||||
int16_t ssb_first_subcarrier,
|
||||
uint8_t slot_offset,
|
||||
nfapi_param_t nfapi_params,
|
||||
NR_DL_FRAME_PARMS *frame_parms)
|
||||
{
|
||||
int i,n,m,k;
|
||||
int16_t a, aa;
|
||||
int16_t x[NR_PSS_LENGTH];
|
||||
int16_t pss_mod[2* NR_PSS_LENGTH];
|
||||
const int x_initial[7] = {0, 1, 1 , 0, 1, 1, 1};
|
||||
|
||||
uint8_t Nid2 = nfapi_params.sch_config.physical_cell_id.value % 3;
|
||||
uint8_t Nsymb = (nfapi_params.subframe_config.dl_cyclic_prefix_type.value == 0)? 14 : 12;
|
||||
|
||||
// Binary sequence generation
|
||||
for (i=0; i < 7; i++)
|
||||
x[i] = x_initial[i];
|
||||
|
||||
for (i=0; i < (NR_PSS_LENGTH - 7); i++) {
|
||||
x[i+7] = (x[i + 4] + x[i]) %2;
|
||||
}
|
||||
|
||||
for (n=0; n < NR_PSS_LENGTH; n++) {
|
||||
m = (n + 43*Nid2)%(NR_PSS_LENGTH);
|
||||
d_pss[n] = x[m]; // 1 - 2*x[m] is taken into account in the mod_table (binary input)
|
||||
}
|
||||
|
||||
// BPSK modulation and resource mapping
|
||||
a = (nfapi_params.rf_config.tx_antenna_ports.value == 1) ? amp : (amp*ONE_OVER_SQRT2_Q15)>>15;
|
||||
for (i = 0; i < NR_PSS_LENGTH; i++)
|
||||
{
|
||||
pss_mod[2*i] = nr_mod_table[ 2 * (MOD_TABLE_BPSK_OFFSET + d_pss[i]) ];
|
||||
pss_mod[2*i + 1] = nr_mod_table[ 2 * (MOD_TABLE_BPSK_OFFSET + d_pss[i]) + 1];
|
||||
}
|
||||
|
||||
for (aa = 0; aa < nfapi_params.rf_config.tx_antenna_ports.value; aa++)
|
||||
{
|
||||
|
||||
// PSS occupies a predefined position (symbol 0, subcarriers 56-182) within the SSB block starting from
|
||||
k = frame_parms->first_carrier_offset + ssb_first_subcarrier + 56; // to be retrieved from ssb scheduling function
|
||||
|
||||
for (m = 0; m < NR_PSS_LENGTH; m++) {
|
||||
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb*frame_parms->ofdm_symbol_size + k)] = (a * pss_mod[2*m]) >> 15;
|
||||
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb*frame_parms->ofdm_symbol_size + k) + 1] = (a * pss_mod[2*m + 1]) >> 15;
|
||||
k+=1;
|
||||
|
||||
if (k >= frame_parms->ofdm_symbol_size) {
|
||||
k++; //skip DC
|
||||
k-=frame_parms->ofdm_symbol_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include "../defs_NR.h"
|
||||
|
||||
extern short nr_mod_table[MOD_TABLE_SIZE_SHORT];
|
||||
|
||||
#define NR_SSS_DEBUG
|
||||
|
||||
int nr_generate_sss( int16_t *d_sss,
|
||||
int32_t **txdataF,
|
||||
int16_t amp,
|
||||
int16_t ssb_first_subcarrier,
|
||||
uint8_t slot_offset,
|
||||
nfapi_param_t nfapi_params,
|
||||
NR_DL_FRAME_PARMS *frame_parms)
|
||||
{
|
||||
int i,m,k;
|
||||
int m0, m1;
|
||||
int Nid, Nid1, Nid2;
|
||||
int16_t a, aa;
|
||||
int16_t x0[NR_SSS_LENGTH], x1[NR_SSS_LENGTH];
|
||||
int16_t sss_mod[2* NR_SSS_LENGTH];
|
||||
const int x0_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
||||
const int x1_initial[7] = { 1, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
uint8_t Nsymb = (nfapi_params.subframe_config.dl_cyclic_prefix_type.value == 0)? 14 : 12;
|
||||
|
||||
// Binary sequence generation
|
||||
Nid = nfapi_params.sch_config.physical_cell_id.value;
|
||||
Nid2 = Nid % 3;
|
||||
Nid1 = (Nid - Nid2)/3;
|
||||
|
||||
for ( i=0 ; i < 7 ; i++) {
|
||||
x0[i] = x0_initial[i];
|
||||
x1[i] = x1_initial[i];
|
||||
}
|
||||
|
||||
for ( i=0 ; i < NR_SSS_LENGTH - 7 ; i++) {
|
||||
x0[i+7] = (x0[i + 4] + x0[i]) % 2;
|
||||
x1[i+7] = (x1[i + 1] + x1[i]) % 2;
|
||||
}
|
||||
|
||||
m0 = 15*(Nid1/112) + (5*Nid2);
|
||||
m1 = Nid1 % 112;
|
||||
|
||||
for (i = 0; i < NR_SSS_LENGTH ; i++) {
|
||||
d_sss[i] = (1 - 2*x0[(i + m0) % NR_SSS_LENGTH] ) * (1 - 2*x1[(i + m1) % NR_SSS_LENGTH] );
|
||||
if (d_sss[i] == -1) // This step -1 -> 0 is necessary to use nr_mod_table for the next step
|
||||
d_sss[i] = 0;
|
||||
}
|
||||
|
||||
// BPSK modulation and resource mapping
|
||||
a = (nfapi_params.rf_config.tx_antenna_ports.value == 1) ? amp : (amp*ONE_OVER_SQRT2_Q15)>>15;
|
||||
for (i = 0; i < NR_SSS_LENGTH; i++)
|
||||
{
|
||||
sss_mod[2*i] = nr_mod_table[ 2 * (MOD_TABLE_BPSK_OFFSET + d_sss[i]) ];
|
||||
sss_mod[2*i + 1] = nr_mod_table[ 2 * (MOD_TABLE_BPSK_OFFSET + d_sss[i]) + 1];
|
||||
}
|
||||
|
||||
for (aa = 0; aa < nfapi_params.rf_config.tx_antenna_ports.value; aa++)
|
||||
{
|
||||
|
||||
// SSS occupies a predefined position (symbol 2, subcarriers 56-182) within the SSB block starting from
|
||||
k = frame_parms->first_carrier_offset + ssb_first_subcarrier + 56; // to be retrieved from ssb scheduling function
|
||||
|
||||
for (m = 0; m < NR_SSS_LENGTH; m++) {
|
||||
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb*frame_parms->ofdm_symbol_size + 2*frame_parms->ofdm_symbol_size + k)] = (a * sss_mod[2*m]) >> 15;
|
||||
((int16_t*)txdataF[aa])[2*(slot_offset*Nsymb*frame_parms->ofdm_symbol_size + 2*frame_parms->ofdm_symbol_size + k) + 1] = (a * sss_mod[2*m + 1]) >> 15;
|
||||
k+=1;
|
||||
|
||||
if (k >= frame_parms->ofdm_symbol_size) {
|
||||
k++; //skip DC
|
||||
k-=frame_parms->ofdm_symbol_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __INIT_DEFS_NR__H__
|
||||
#define __INIT_DEFS_NR__H__
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#include <sched.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
#include <linux/sched.h>
|
||||
#include <signal.h>
|
||||
#include <execinfo.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/sysinfo.h>
|
||||
#include <malloc.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "../nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h"
|
||||
#include "assertions.h"
|
||||
#include "impl_defs_nr.h"
|
||||
|
||||
#define MAX_NUM_SUBCARRIER_SPACING 5
|
||||
|
||||
#define NR_PSS_LENGTH 127
|
||||
#define NR_SSS_LENGTH 127
|
||||
|
||||
#define ONE_OVER_SQRT2_Q15 23170
|
||||
#define ONE_OVER_TWO_Q15 16384
|
||||
|
||||
#define MOD_TABLE_SIZE_SHORT 6
|
||||
#define MOD_TABLE_BPSK_OFFSET 1
|
||||
|
||||
typedef enum {
|
||||
NR_MU_0=0,
|
||||
NR_MU_1,
|
||||
NR_MU_2,
|
||||
NR_MU_3,
|
||||
NR_MU_4,
|
||||
} nr_numerology_index_e;
|
||||
|
||||
typedef struct {
|
||||
uint32_t subcarrier_spacing;
|
||||
/// 3/4 sampling
|
||||
uint8_t threequarter_fs;
|
||||
/// Size of FFT
|
||||
uint16_t ofdm_symbol_size;
|
||||
/// Number of prefix samples in all but first symbol of slot
|
||||
uint16_t nb_prefix_samples;
|
||||
/// Number of prefix samples in first symbol of slot
|
||||
uint16_t nb_prefix_samples0;
|
||||
/// Carrier offset in FFT buffer for first RE in PRB0
|
||||
uint16_t first_carrier_offset;
|
||||
/// Number of samples in a subframe
|
||||
uint32_t samples_per_tti;
|
||||
/// Number of OFDM/SC-FDMA symbols in one slot
|
||||
uint16_t symbols_per_slot;
|
||||
/// Number of slots per subframe
|
||||
uint16_t slots_per_subframe;
|
||||
} NR_DL_FRAME_PARMS;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __PHY_IMPLEMENTATION_DEFS_LTE_H__
|
||||
#define __PHY_IMPLEMENTATION_DEFS_LTE_H__
|
||||
|
||||
|
||||
#include "types.h"
|
||||
//#include "nfapi_interface.h"
|
||||
//#include "defs.h"
|
||||
#include "openair2/COMMON/platform_types.h"
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
/// \brief Pointers (dynamic) to the received data in the time domain.
|
||||
/// - first index: rx antenna [0..nb_antennas_rx[
|
||||
/// - second index: ? [0..2*ofdm_symbol_size*frame_parms->symbols_per_tti[
|
||||
int32_t **rxdata;
|
||||
/// \brief Pointers (dynamic) to the received data in the frequency domain.
|
||||
/// - first index: rx antenna [0..nb_antennas_rx[
|
||||
/// - second index: ? [0..2*ofdm_symbol_size*frame_parms->symbols_per_tti[
|
||||
int32_t **rxdataF;
|
||||
/// \brief holds the transmit data in the frequency domain.
|
||||
/// For IFFT_FPGA this points to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER. //?
|
||||
/// - first index: eNB id [0..2] (hard coded)
|
||||
/// - second index: tx antenna [0..14[ where 14 is the total supported antenna ports.
|
||||
/// - third index: sample [0..]
|
||||
int32_t **txdataF;
|
||||
} NR_gNB_COMMON;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include "PHY/defs_NR.h"
|
||||
//#include "PHY/extern.h"
|
||||
#include "SCHED/defs.h"
|
||||
#include "SCHED/extern.h"
|
||||
//#include "nfapi_interface.h"
|
||||
//#include "fapi_l1.h"
|
||||
#include "UTIL/LOG/log.h"
|
||||
#include "UTIL/LOG/vcd_signal_dumper.h"
|
||||
|
||||
#include "T.h"
|
||||
|
||||
#include "assertions.h"
|
||||
#include "msc.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
# include "intertask_interface.h"
|
||||
#endif
|
||||
|
||||
|
||||
void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int subframe) {
|
||||
|
||||
|
||||
}
|
||||
@@ -21,8 +21,6 @@
|
||||
|
||||
#include "nr-softmodem.h"
|
||||
#include "PHY/types.h"
|
||||
#include "../../nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h"
|
||||
//#include "PHY/defs.h"
|
||||
#include "PHY/defs_NR.h"
|
||||
|
||||
//Temporary main function
|
||||
@@ -52,11 +50,26 @@ void exit_fun(const char* s)
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
nfapi_param_t nfapi_params;
|
||||
NR_DL_FRAME_PARMS frame_parms;
|
||||
NR_DL_FRAME_PARMS* frame_parms = malloc(sizeof(NR_DL_FRAME_PARMS));
|
||||
int16_t amp;
|
||||
//malloc to move
|
||||
int16_t** txdataF = (int16_t **)malloc(2048*2*14*2*2* sizeof(int16_t));
|
||||
int16_t* d_pss = malloc(NR_PSS_LENGTH * sizeof(int16_t));
|
||||
int16_t *d_sss = malloc(NR_SSS_LENGTH * sizeof(int16_t));
|
||||
|
||||
//logInit();
|
||||
|
||||
phy_init_nr_gNB(&nfapi_params);
|
||||
nr_init_frame_parms(nfapi_params, &frame_parms);
|
||||
nr_dump_frame_parms(&frame_parms);
|
||||
nr_init_frame_parms(nfapi_params, frame_parms);
|
||||
nr_dump_frame_parms(frame_parms);
|
||||
|
||||
amp = 32767; //1_Q_15
|
||||
//nr_generate_pss(d_pss, txdataF, amp, 0, 0, nfapi_params, frame_parms);
|
||||
nr_generate_sss(d_sss, txdataF, amp, 0, 0, nfapi_params, frame_parms);
|
||||
|
||||
free(txdataF);
|
||||
free(d_pss);
|
||||
free(d_sss);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user