nrDCIEncode versus physical layer subcomponents

4 次查看(过去 30 天)
I expect the MATLAB function nrDCIEncode to return the same output as when the chain of nrCRCEncode, nrPolarEncode, and nrRateMatchPolar functions are used for encoding DCI. In other words, rate_matched_dci_bits in the following code is expected to be equal to dcicw. But it is not! Why?
A = 64;
poly = '24C';
rnti = 100;
E = 864;
L = 24;
n_max = 9;
iil = true;
ibil = false;
K = A + L;
dci_bits = randi([0 1] , A , 1 , 'int8');
crc_attached_dci_bits = nrCRCEncode(dci_bits , poly , rnti);
polar_encoded_dci_bits = nrPolarEncode(crc_attached_dci_bits , E , n_max , iil);
rate_matched_dci_bits = nrRateMatchPolar(polar_encoded_dci_bits , K , E , ibil);
dcicw = nrDCIEncode(dci_bits , rnti , E);

回答(1 个)

Saffan
Saffan 2023-5-4
Hi Alireza,
The reason for the difference comes from the implementation of "nrDCIEncode" function. The implementation in this function is different from the way you are encoding in the following ways:
  • The “nrDCIEncode” function contains an additional step of prepending 24 ones to the input bits before calculating the CRC.
  • It then removes the ones after CRC is calculated before proceeding to channel coding and rate matching.
Additionally, it also includes a step for converting the 24 CRC bits to a MSB first decimal representation using a binary-to-decimal conversion formula.

标签

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by