Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
355b62f1
Commit
355b62f1
authored
May 18, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polar encoding init
parent
d02a5ecc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
38 additions
and
112 deletions
+38
-112
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+25
-0
openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
+4
-112
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+5
-0
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+4
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
355b62f1
...
...
@@ -1061,11 +1061,35 @@ set(PHY_LDPCSRC
${
OPENAIR1_DIR
}
/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrLDPC_encoder/ldpc_generate_coefficient.c
)
set
(
PHY_POLARSRC
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_init.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/get_3GPP_info_bit_pattern.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/get_crc_generator_matrix.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/get_PC_bit_pattern.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_bitwise_operations.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_crc_byte.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_bit_insertion_2.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_bit_insertion.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_channel_interleaver_pattern.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_crc.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_info_bit_pattern.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_interleave.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_kernal_operation.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_kronecker_power_matrices.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_output_length.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_rate_match.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
${
OPENAIR1_DIR
}
/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
)
set
(
PHY_TURBOIF
${
OPENAIR1_DIR
}
/PHY/CODING/coding_load.c
)
add_library
(
coding MODULE
${
PHY_TURBOSRC
}
)
set
(
PHY_SRC_COMMON
# depend on code generation from asn1c
${
RRC_FULL_DIR
}
/asn1_constants.h
...
...
@@ -1214,6 +1238,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/TOOLS/sqrt.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/time_meas.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/lut.c
${
PHY_POLARSRC
}
)
set
(
PHY_NR_UE_SRC
...
...
openair1/PHY/CODING/nrPolar_tools/nr_crc_byte.c
View file @
355b62f1
#include "PHY/CODING/nrPolar_tools/nr_polar_defs.h"
/*ref 38-212 v15.0.0, pp 8-9 */
/* the highest degree is set by default */
unsigned
int
poly24a
=
0x864cfb00
;
// 1000 0110 0100 1100 1111 1011 D^24 + D^23 + D^18 + D^17 + D^14 + D^11 + D^10 + D^7 + D^6 + D^5 + D^4 + D^3 + D + 1
unsigned
int
poly24b
=
0x80006300
;
// 1000 0000 0000 0000 0110 0011 D^24 + D^23 + D^6 + D^5 + D + 1
unsigned
int
poly24c
=
0xb2b11700
;
// 1011 0010 1011 0001 0001 0111 D^24 + D^23 + D^21 + D^20 + D^17 + D^15 + D^13 + D^12 + D^8 + D^4 + D^2 + D + 1
unsigned
int
poly16
=
0x10210000
;
// 0001 0000 0010 0001 D^16 + D^12 + D^5 + 1
unsigned
int
poly11
=
0xe2100000
;
// 1110 0010 0001 D^11 + D^10 + D^9 + D^5 + 1
unsigned
int
poly6
=
0x61000000
;
// 0110 0001 D^6 + D^5 + 1
/*********************************************************
For initialization && verification purposes,
bit by bit implementation with any polynomial
The first bit is in the MSB of each byte
*********************************************************/
unsigned
int
crcbit
(
unsigned
char
*
inputptr
,
int
octetlen
,
unsigned
int
poly
)
{
unsigned
int
i
,
crc
=
0
,
c
;
while
(
octetlen
--
>
0
)
{
c
=
(
*
inputptr
++
)
<<
24
;
for
(
i
=
8
;
i
!=
0
;
i
--
)
{
if
((
1
<<
31
)
&
(
c
^
crc
))
crc
=
(
crc
<<
1
)
^
poly
;
else
crc
<<=
1
;
c
<<=
1
;
}
}
return
crc
;
}
/*********************************************************
crc table initialization
*********************************************************/
static
unsigned
int
crc24aTable
[
256
];
static
unsigned
int
crc24bTable
[
256
];
static
unsigned
int
crc24cTable
[
256
];
static
unsigned
short
crc16Table
[
256
];
/*static unsigned int crc24cTable[256];
static unsigned short crc11Table[256];
static unsigned char crc6Table[256];
void
crcTableInit
(
void
)
{
unsigned
char
c
=
0
;
do
{
crc24aTable
[
c
]
=
crcbit
(
&
c
,
1
,
poly24a
);
crc24bTable
[
c
]
=
crcbit
(
&
c
,
1
,
poly24b
);
crc24cTable
[
c
]
=
crcbit
(
&
c
,
1
,
poly24c
);
crc16Table
[
c
]
=
(
unsigned
short
)
(
crcbit
(
&
c
,
1
,
poly16
)
>>
16
);
crc11Table
[
c
]
=
(
unsigned
short
)
(
crcbit
(
&
c
,
1
,
poly11
)
>>
16
);
crc6Table
[
c
]
=
(
unsigned
char
)
(
crcbit
(
&
c
,
1
,
poly6
)
>>
24
);
}
while
(
++
c
);
}
/*********************************************************
Byte by byte implementations,
assuming initial byte is 0 padded (in MSB) if necessary
*********************************************************/
unsigned
int
crc24a
(
unsigned
char
*
inptr
,
int
bitlen
)
{
int
octetlen
,
resbit
;
unsigned
int
crc
=
0
;
octetlen
=
bitlen
/
8
;
/* Change in octets */
resbit
=
(
bitlen
%
8
);
while
(
octetlen
--
>
0
)
{
// printf("in %x => crc %x\n",crc,*inptr);
crc
=
(
crc
<<
8
)
^
crc24aTable
[(
*
inptr
++
)
^
(
crc
>>
24
)];
}
if
(
resbit
>
0
)
crc
=
(
crc
<<
resbit
)
^
crc24aTable
[((
*
inptr
)
>>
(
8
-
resbit
))
^
(
crc
>>
(
32
-
resbit
))];
return
crc
;
}
unsigned
int
crc24b
(
unsigned
char
*
inptr
,
int
bitlen
)
{
int
octetlen
,
resbit
;
unsigned
int
crc
=
0
;
octetlen
=
bitlen
/
8
;
resbit
=
(
bitlen
%
8
);
while
(
octetlen
--
>
0
)
{
crc
=
(
crc
<<
8
)
^
crc24bTable
[(
*
inptr
++
)
^
(
crc
>>
24
)];
}
if
(
resbit
>
0
)
crc
=
(
crc
<<
resbit
)
^
crc24bTable
[((
*
inptr
)
>>
(
8
-
resbit
))
^
(
crc
>>
(
32
-
resbit
))];
return
crc
;
}
unsigned int crc24c (unsigned char * inptr, int bitlen)
{
...
...
@@ -122,29 +30,13 @@ unsigned int crc24c (unsigned char * inptr, int bitlen)
return crc;
}
unsigned
int
crc16
(
unsigned
char
*
inptr
,
int
bitlen
)
{
int
octetlen
,
resbit
;
unsigned
int
crc
=
0
;
octetlen
=
bitlen
/
8
;
/* Change in octets */
resbit
=
(
bitlen
%
8
);
while
(
octetlen
--
>
0
)
{
crc
=
(
crc
<<
8
)
^
(
crc16Table
[(
*
inptr
++
)
^
(
crc
>>
24
)]
<<
16
);
}
if
(
resbit
>
0
)
crc
=
(
crc
<<
resbit
)
^
(
crc16Table
[((
*
inptr
)
>>
(
8
-
resbit
))
^
(
crc
>>
(
32
-
resbit
))]
<<
16
);
return
crc
;
}
unsigned int crc11 (unsigned char * inptr, int bitlen)
{
int octetlen, resbit;
unsigned int crc = 0;
octetlen
=
bitlen
/
8
;
/
* Change in octets */
octetlen = bitlen / 8; /
/ Change in octets
resbit = (bitlen % 8);
while (octetlen-- > 0) {
...
...
@@ -161,7 +53,7 @@ unsigned int crc6 (unsigned char * inptr, int bitlen)
{
int octetlen, resbit;
unsigned int crc = 0;
octetlen
=
bitlen
/
8
;
/
* Change in octets */
octetlen = bitlen / 8; /
/ Change in octets
resbit = (bitlen % 8);
while (octetlen-- > 0) {
...
...
@@ -237,7 +129,7 @@ uint8_t check_crc(uint8_t *decoded_bytes, uint16_t len, uint8_t crc_type)
printf("old CRC %x, CRC %x \n",oldcrc,crc);
return (crc == oldcrc);
}
}
*/
uint8_t
**
crc24c_generator_matrix
(
uint16_t
payloadSizeBits
){
...
...
openair1/PHY/INIT/nr_init.c
View file @
355b62f1
...
...
@@ -23,6 +23,7 @@
#include "SCHED/sched_eNB.h"
#include "PHY/phy_extern.h"
#include "PHY/INIT/phy_init.h"
#include "PHY/CODING/nrPolar_tools/nr_polar_pbch_defs.h"
#include "RadioResourceConfigCommonSIB.h"
#include "RadioResourceConfigDedicated.h"
#include "TDD-Config.h"
...
...
@@ -112,7 +113,11 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
);*/
LOG_D
(
PHY
,
"[MSC_NEW][FRAME 00000][PHY_gNB][MOD %02"
PRIu8
"][]
\n
"
,
gNB
->
Mod_id
);
// PBCH DMRS gold sequences generation
nr_init_pbch_dmrs
(
gNB
);
// Polar encoder init for PBCH
nr_polar_init
(
&
fp
->
pbch_polar_params
,
1
);
/*
lte_gold(fp,gNB->lte_gold_table,fp->Nid_cell);
generate_pcfich_reg_mapping(fp);
...
...
openair1/PHY/defs_nr_common.h
View file @
355b62f1
...
...
@@ -34,6 +34,7 @@
#define __PHY_DEFS_NR_COMMON__H__
#include "defs_common.h"
#include "PHY/CODING/nrPolar_tools/nr_polar_defs.h"
#define nr_subframe_t lte_subframe_t
...
...
@@ -110,7 +111,10 @@ typedef struct NR_DL_FRAME_PARMS {
//SSB related params
/// Start in Subcarrier index of the SSB block
uint16_t
ssb_start_subcarrier
;
/// SSB type
nr_ssb_type_e
ssb_type
;
/// PBCH polar encoder params
t_nrPolar_params
pbch_polar_params
;
}
NR_DL_FRAME_PARMS
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment