diff --git a/openair1/PHY/NR_REFSIG/dmrs_nr.h b/openair1/PHY/NR_REFSIG/dmrs_nr.h
new file mode 100644
index 0000000000000000000000000000000000000000..a695006304762b3eee95e0d644ce2cb5b7d683e0
--- /dev/null
+++ b/openair1/PHY/NR_REFSIG/dmrs_nr.h
@@ -0,0 +1,62 @@
+/*
+ * 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    :  dmrs.h
+*
+* MODULE      :  demodulation reference signals
+*
+* DESCRIPTION :  generation of dmrs sequences for NR 5G
+*                3GPP TS 38.211
+*
+************************************************************************/
+
+#ifndef DMRS_NR_H
+#define DMRS_NR_H
+
+#include "PHY/defs_nr_UE.h"
+#include "PHY/types.h"
+#include "PHY/NR_REFSIG/ss_pbch_nr.h"
+#include "PHY/NR_REFSIG/pss_nr.h"
+#include "PHY/NR_REFSIG/sss_nr.h"
+
+/************** CODE GENERATION ***********************************/
+
+/************** DEFINE ********************************************/
+
+
+/************* STRUCTURES *****************************************/
+
+
+/************** VARIABLES *****************************************/
+
+/************** FUNCTION ******************************************/
+
+int pseudo_random_sequence(int M_PN, uint32_t *c, uint32_t cinit);
+void lte_gold_new(LTE_DL_FRAME_PARMS *frame_parms, uint32_t lte_gold_table[20][2][14], uint16_t Nid_cell);
+void generate_dmrs_pbch(uint32_t dmrs_pbch_bitmap[DMRS_PBCH_I_SSB][DMRS_PBCH_N_HF][DMRS_BITMAP_SIZE], uint16_t Nid_cell);
+
+#undef EXTERN
+
+#endif /* DMRS_NR_H */
+
+
diff --git a/openair1/PHY/NR_REFSIG/pss_nr.h b/openair1/PHY/NR_REFSIG/pss_nr.h
new file mode 100644
index 0000000000000000000000000000000000000000..c171cf501bdf64257c03df398f023dcacf798f92
--- /dev/null
+++ b/openair1/PHY/NR_REFSIG/pss_nr.h
@@ -0,0 +1,142 @@
+/*
+ * 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    :  pss_nr.h
+*
+* MODULE      :  primary synchronisation signal
+*
+* DESCRIPTION :  elements related to pss
+*
+************************************************************************/
+
+#ifndef PSS_NR_H
+#define PSS_NR_H
+
+#include "PHY/defs_nr_UE.h"
+#include "PHY/types.h"
+
+#include "PHY/NR_REFSIG/ss_pbch_nr.h"
+
+#ifdef DEFINE_VARIABLES_PSS_NR_H
+#define EXTERN
+#else
+#define EXTERN  extern
+#endif
+
+/************** CODE GENERATION ***********************************/
+
+//#define PSS_DECIMATOR                          /* decimation of sample is done between time correlation */
+
+//#define CIC_DECIMATOR                          /* it allows enabling decimation based on CIC filter. By default, decimation is based on a FIF filter */
+
+#define TEST_SYNCHRO_TIMING_PSS        (1)     /* enable time profiling */
+
+//#define DBG_PSS_NR
+
+/************** DEFINE ********************************************/
+
+/* PROFILING */
+#define TIME_PSS                      (0)
+#define TIME_RATE_CHANGE              (TIME_PSS+1)
+#define TIME_SSS                      (TIME_RATE_CHANGE+1)
+#define TIME_LAST                     (TIME_SSS+1)
+
+/* PSS configuration */
+
+#define SYNCHRO_FFT_SIZE_MAX           (2048)                       /* maximum size of fft for synchronisation */
+
+#define  NO_RATE_CHANGE                (1)
+
+#ifdef PSS_DECIMATOR
+  #define  RATE_CHANGE                 (SYNCHRO_FFT_SIZE_MAX/SYNCHRO_FFT_SIZE_PSS)
+  #define  SYNCHRO_FFT_SIZE_PSS        (256)
+  #define  OFDM_SYMBOL_SIZE_PSS        (SYNCHRO_FFT_SIZE_PSS)
+  #define  SYNCHRO_RATE_CHANGE_FACTOR  (SYNCHRO_FFT_SIZE_MAX/SYNCHRO_FFT_SIZE_PSS)
+  #define  CIC_FILTER_STAGE_NUMBER     (4)
+#else
+  #define  RATE_CHANGE                 (1)
+  #define  SYNCHRO_RATE_CHANGE_FACTOR  (1)
+#endif
+
+#define SYNC_TMP_SIZE                  (NB_ANTENNAS_RX*SYNCHRO_FFT_SIZE_MAX*IQ_SIZE) /* to be aligned with existing lte synchro */
+#define SYNCF_TMP_SIZE                 (SYNCHRO_FFT_SIZE_MAX*IQ_SIZE)
+
+/************* STRUCTURES *****************************************/
+
+
+/************** VARIABLES *****************************************/
+
+//#define STATIC_SYNC_BUFFER
+
+#ifdef STATIC_SYNC_BUFFER
+/* buffer defined in file lte_sync_time */
+EXTERN int16_t synchro_tmp[SYNC_TMP_SIZE]   __attribute__((aligned(32)));
+EXTERN int16_t synchroF_tmp[SYNCF_TMP_SIZE] __attribute__((aligned(32)));
+#else
+EXTERN int16_t *synchro_tmp;
+EXTERN int16_t *synchroF_tmp;
+#endif
+
+EXTERN int16_t *primary_synchro_nr[NUMBER_PSS_SEQUENCE]
+#ifdef INIT_VARIABLES_PSS_NR_H
+= { NULL, NULL, NULL}
+#endif
+;
+EXTERN int16_t *primary_synchro_time_nr[NUMBER_PSS_SEQUENCE]
+#ifdef INIT_VARIABLES_PSS_NR_H
+= { NULL, NULL, NULL}
+#endif
+;
+
+EXTERN int *pss_corr_ue[NUMBER_PSS_SEQUENCE]
+#ifdef INIT_VARIABLES_PSS_NR_H
+= { NULL, NULL, NULL}
+#endif
+;
+
+/* profiling structure */
+EXTERN double cpuf;
+time_stats_t generic_time[TIME_LAST];
+
+#ifndef DEFINE_HEADER_ONLY
+
+/************** FUNCTION ******************************************/
+
+void *get_idft(int ofdm_symbol_size);
+void *get_dft(int ofdm_symbol_size);
+void init_context_synchro_nr(NR_DL_FRAME_PARMS *frame_parms_ue);
+void free_context_synchro_nr(void);
+void init_context_pss_nr(NR_DL_FRAME_PARMS *frame_parms_ue);
+void free_context_pss_nr(void);
+int set_pss_nr(int ofdm_symbol_size);
+int pss_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int rate_change);
+int pss_search_time_nr(int **rxdata, ///rx data in time domain
+                       NR_DL_FRAME_PARMS *frame_parms,
+                       int *eNB_id);
+
+#endif
+#undef EXTERN
+
+#endif /* PSS_NR_H */
+
+
diff --git a/openair1/PHY/NR_REFSIG/ss_pbch_nr.h b/openair1/PHY/NR_REFSIG/ss_pbch_nr.h
new file mode 100644
index 0000000000000000000000000000000000000000..e230d8035b86d49120f0812cd62cb6c0ef2027be
--- /dev/null
+++ b/openair1/PHY/NR_REFSIG/ss_pbch_nr.h
@@ -0,0 +1,81 @@
+/*
+ * 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    :  ss_pbch_nr.h
+*
+* MODULE      : this file contains define only
+*
+* DESCRIPTION : define elements related to SS/PBCH block ie synchronisation (pss/sss) and pbch
+*
+*               see TS 38.211  7.4.2 Synchronisation Signals
+*               see TS 38.213  4 Synchronisation procedures
+*
+************************************************************************/
+
+#ifndef SS_PBCH_NR_H
+#define SS_PBCH_NR_H
+
+/************** DEFINE ********************************************/
+
+#define VOID_PARAMETER                (void)   /* avoid a compiler warning for unused parameters of function */
+
+/* PSS parameters */
+#define  NUMBER_PSS_SEQUENCE          (3)
+#define  INVALID_PSS_SEQUENCE         (NUMBER_PSS_SEQUENCE)
+#define  LENGTH_PSS_NR                (127)
+#define  N_SC_RB                      (12)     /* Resource block size in frequency domain expressed as a number if subcarriers */
+#define  SCALING_PSS_NR               (3)
+#define  SCALING_CE_PSS_NR            (13)     /* scaling channel estimation based on ps */
+#define  PSS_IFFT_SIZE                (256)
+
+#define  PSS_SC_START_NR              (52)     /* see from TS 38.211 table 7.4.3.1-1: Resources within an SS/PBCH block for PSS... */
+
+/* define ofdm symbol offset in the SS/PBCH block of NR synchronisation */
+#define  PSS_SYMBOL_NB                (0)     /* symbol numbers for each element */
+#define  PBCH_SYMBOL_NB               (1)
+#define  SSS_SYMBOL_NB                (2)
+#define  PBCH_LAST_SYMBOL_NB          (3)
+
+/* SS/PBCH parameters */
+#define  N_RB_SS_PBCH_BLOCK           (20)
+#define  NB_SYMBOLS_PBCH              (3)
+
+#define  IQ_SIZE                      (sizeof(int16_t) * 2)        /* I and Q are alternatively stored into buffers */
+#define  N_SYMB_SLOT                  (14)
+
+/* SS/PBCH parameters :  see from TS 38.211 table 7.4.3.1-1: Resources within an SS/PBCH block for PSS... */
+#define  DMRS_PBCH_PER_RB             (N_SC_RB >> 4)               /* at 0+v, 4+v, 8+v for a resource block with v = NcellID modulo 4 */
+#define  DMRS_END_FIRST_PART          (44)
+#define  DMRS_START_SECOND_PART       (192)
+#define  DMRS_END_SECOND_PART         (236)
+#define  DMRS_PBCH_NUMBER             (NB_SYMBOLS_PBCH*(N_RB_SS_PBCH_BLOCK * DMRS_PBCH_PER_RB))    /* there are both PBCH and SSS/(Set to 0) at the second OFDM symbol of SS/PBCH so size is increased */
+
+/* see TS 38211 7.4.1.4 Demodulation reference signals for PBCH */
+#define  DMRS_PBCH_I_SSB              (8)         /* maximum index value for SSB/PBCH which can have alength of L=4 or L=8 */
+#define  DMRS_PBCH_N_HF               (2)         /* half frame indication - 0 for first part of frame and 1 for second part of frame */
+#define  DMRS_ALIGNMENT_32_BIT        (20)        /* it is just for ensuring a 32 bits alignment for storing dmrs pbch into a 32 bits map */
+#define  DMRS_BITMAP_SIZE             ((DMRS_PBCH_NUMBER-DMRS_ALIGNMENT_32_BIT)/32)   /* size is divided by 32 (to get bitmap on uint32) DMRS_PBCH_NUMBER should be a multiple of 32 */
+
+#endif /* SS_PBCH_NR_H */
+
+
diff --git a/openair1/PHY/NR_REFSIG/sss_nr.h b/openair1/PHY/NR_REFSIG/sss_nr.h
new file mode 100644
index 0000000000000000000000000000000000000000..fb16bb1ca4d430191e6d99983774174af3cfb403
--- /dev/null
+++ b/openair1/PHY/NR_REFSIG/sss_nr.h
@@ -0,0 +1,107 @@
+/*
+ * 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.0  (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    :  sss_nr.h
+*
+* MODULE      :  Secondary synchronisation signal
+*
+* DESCRIPTION :  variables related to sss
+*
+************************************************************************/
+
+#ifndef SSS_NR_H
+#define SSS_NR_H
+
+#include "PHY/defs_nr_UE.h"
+#include "PHY/types.h"
+
+#include "pss_nr.h"
+
+#ifdef DEFINE_VARIABLES_SSS_NR_H
+#define EXTERN
+#define INIT_VARIABLES_SSS_NR_H
+#else
+#define EXTERN  extern
+#endif
+
+/************** DEFINE ********************************************/
+
+#define  INT_MIN	   (-2147483647 - 1)
+#define  SAMPLES_IQ                   (sizeof(int16_t)*2)
+#define  NUMBER_SSS_SEQUENCE          (336)
+#define  INVALID_SSS_SEQUENCE         (NUMBER_SSS_SEQUENCE)
+#define  LENGTH_SSS_NR                (127)
+#define  SCALING_METRIC_SSS_NR        (19)
+
+#define  N_ID_2_NUMBER                (NUMBER_PSS_SEQUENCE)
+#define  N_ID_1_NUMBER                (NUMBER_SSS_SEQUENCE)
+
+#define  GET_NID2(Nid_cell)           (Nid_cell%3)
+#define  GET_NID1(Nid_cell)           (Nid_cell/3)
+
+#define  PSS_SC_START_NR              (52)     /* see from TS 38.211 table 7.4.3.1-1: Resources within an SS/PBCH block for PSS... */
+
+/************** VARIABLES *****************************************/
+
+#define PHASE_HYPOTHESIS_NUMBER       (7)
+#define INDEX_NO_PHASE_DIFFERENCE     (3)          /* this is for no phase shift case */
+
+EXTERN const int16_t phase_re_nr[PHASE_HYPOTHESIS_NUMBER]
+#ifdef INIT_VARIABLES_SSS_NR_H
+= {16383, 25101, 30791, 32767, 30791, 25101, 16383}
+#endif
+;
+
+EXTERN const int16_t phase_im_nr[PHASE_HYPOTHESIS_NUMBER]
+#ifdef INIT_VARIABLES_SSS_NR_H
+= {-28378, -21063, -11208, 0, 11207, 21062, 28377};
+#endif
+;
+
+EXTERN int16_t d_sss[N_ID_2_NUMBER][N_ID_1_NUMBER][LENGTH_SSS_NR];
+
+/************** FUNCTION ******************************************/
+
+void init_context_sss_nr(int amp);
+void free_context_sss_nr(void);
+
+void insert_sss_nr(int16_t *sss_time,
+                   NR_DL_FRAME_PARMS *frame_parms);
+
+int pss_ch_est_nr(PHY_VARS_NR_UE *ue,
+                  int32_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR],
+                  int32_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR]);
+
+int _do_pss_sss_extract_nr(PHY_VARS_NR_UE *ue,
+                           int32_t pss_ext[NB_ANTENNAS_RX][LENGTH_PSS_NR],
+                           int32_t sss_ext[NB_ANTENNAS_RX][LENGTH_SSS_NR],
+                           uint8_t doPss, uint8_t doSss,
+					       uint8_t subframe);
+
+int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric, uint8_t *phase_max);
+
+#undef INIT_VARIABLES_SSS_NR_H
+#undef EXTERN
+
+#endif /* SSS_NR_H */
+