1)TB添加CRC校验
输入参数:
\[{a_0},{a_1},{a_2},{a_3},...,{a_{A - 1}}\]
输出参数:
\[_0{D^{A + 23}} + {a_1}{D^{A + 22}} + ... + {a_{A - 1}}{D^{24}} + {p_0}{D^{23}} + {p_1}{D^{22}} + ... + {p_{22}}{D^1} + {p_{23}}\]
2)码块分段及CRC添加
2.1)确定码块数量C:
\[\begin{array}{l}
if\;B \le Z\\
\;\;\;L = 0;\\
\;\;\;number\;of\;code\;blocks:\;C = 1;\\
\;\;\;B' = B;\\
else\\
\;\;\;L = 24;\\
\;\;\;number\;of\;code\;blocks:C = \left\lceil {B/\left( {Z - L} \right)} \right\rceil ;\\
\;\;\;B' = B + C \cdot L;\\
end\;if;
\end{array}\]
代码为:
<span style="font-size:18px;">if B<=Z
L = 0;
C = 1;
B_p = B;
else
L = 24;
C = ceil(B/(Z-L));
B_p = B + C*L;
end</span>
2.2)确定每个码块的长度(前C-码块长K- ,后C+码块长K+)
码块长度需要满足如下两个条件:
K+=minimum K in table below such CK>B'
K- =maximum K in table below such K<K+
因此有,
\[{\Delta _K} = {K_ + } - {K_ - }\]
\[{C_ - } = \left\lfloor {\frac{{C \cdot {K_ + } - B'}}{{{\Delta _K}}}} \right\rfloor \]
\[{C_ + } = C - {C_ - }\]
此时,需要填充的比特数为:
\[F = {C_ + } \cdot {K_ + } + {C_ - } \cdot {K_ - } - B'\]
代码片段为:
a)计算K+在表内的index
<span style="font-size:18px;">avg_code_block_size = (B_p/C);
index_number = avg_code_block_size/8 - 4;
if index_number > 60 && index_number <= 124
real_index = avg_code_block_size/16 + 28;
elseif index_number > 124 && index_number <= 252
real_index = avg_code_block_size/32 + 60;
elseif index_number > 252
real_index = avg_code_block_size/64 + 92;
else
real_index = index_number;
end</span>
b)计算K+和K-
<span style="font-size:18px;">K_plus = LTE_params.turbo_interleaver_table(ceil(real_index),1);
if C==1
K_minus = 0;
else
K_minus = LTE_params.turbo_interleaver_table(ceil(real_index)-1,1);
end</span>
c)计算两中块长对应的数量
<span style="font-size:18px;">if C==1
C_plus = 1;
K_minus = 0;
C_minus = 0;
else
diff_K = K_plus - K_minus;
C_minus = floor((C*K_plus-B_p)/diff_K);
C_plus = C - C_minus;
end</span>
d)计算需要填充的比特数
<span style="font-size:18px;">F = C_plus*K_plus + C_minus*K_minus - B_p;
</span>
输入参数:
\[{b_0},{b_1},{b_2},{b_3},...,{b_{B - 1}}\]
输出参数:
\[{c_{r0}},{c_{r1}},{c_{r2}},{c_{r3}},...,{c_{r\left( {{K_r} - 1} \right)}}\;\;\;\;\;r = 0,...C,{K_r} = {K_ - }\;or\;{K_ + }\]
3)Turbo编码器
其中,交织器为:
| |||||||||||||||
1 | 40 | 3 | 10 | 48 | 416 | 25 | 52 | 95 | 1120 | 67 | 140 | 142 | 3200 | 111 | 240 |
2 | 48 | 7 | 12 | 49 | 424 | 51 | 106 | 96 | 1152 | 35 | 72 | 143 | 3264 | 443 | 204 |
3 | 56 | 19 | 42 | 50 | 432 | 47 | 72 | 97 | 1184 | 19 | 74 | 144 | 3328 | 51 | 104 |
4 | 64 | 7 | 16 | 51 | 440 | 91 | 110 | 98 | 1216 | 39 | 76 | 145 | 3392 | 51 | 212 |
5 | 72 | 7 | 18 | 52 | 448 | 29 | 168 | 99 | 1248 | 19 | 78 | 146 | 3456 | 451 | 192 |
6 | 80 | 11 | 20 | 53 | 456 | 29 | 114 | 100 | 1280 | 199 | 240 | 147 | 3520 | 257 | 220 |
7 | 88 | 5 | 22 | 54 | 464 | 247 | 58 | 101 | 1312 | 21 | 82 | 148 | 3584 | 57 | 336 |
8 | 96 | 11 | 24 | 55 | 472 | 29 | 118 | 102 | 1344 | 211 | 252 | 149 | 3648 | 313 | 228 |
9 | 104 | 7 | 26 | 56 | 480 | 89 | 180 | 103 | 1376 | 21 | 86 | 150 | 3712 | 271 | 232 |
10 | 112 | 41 | 84 | 57 | 488 | 91 | 122 | 104 | 1408 | 43 | 88 | 151 | 3776 | 179 | 236 |
11 | 120 | 103 | 90 | 58 | 496 | 157 | 62 | 105 | 1440 | 149 | 60 | 152 | 3840 | 331 | 120 |
12 | 128 | 15 | 32 | 59 | 504 | 55 | 84 | 106 | 1472 | 45 | 92 | 153 | 3904 | 363 | 244 |
13 | 136 | 9 | 34 | 60 | 512 | 31 | 64 | 107 | 1504 | 49 | 846 | 154 | 3968 | 375 | 248 |
14 | 144 | 17 | 108 | 61 | 528 | 17 | 66 | 108 | 1536 | 71 | 48 | 155 | 4032 | 127 | 168 |
15 | 152 | 9 | 38 | 62 | 544 | 35 | 68 | 109 | 1568 | 13 | 28 | 156 | 4096 | 31 | 64 |
16 | 160 | 21 | 120 | 63 | 560 | 227 | 420 | 110 | 1600 | 17 | 80 | 157 | 4160 | 33 | 130 |
17 | 168 | 101 | 84 | 64 | 576 | 65 | 96 | 111 | 1632 | 25 | 102 | 158 | 4224 | 43 | 264 |
18 | 176 | 21 | 44 | 65 | 592 | 19 | 74 | 112 | 1664 | 183 | 104 | 159 | 4288 | 33 | 134 |
19 | 184 | 57 | 46 | 66 | 608 | 37 | 76 | 113 | 1696 | 55 | 954 | 160 | 4352 | 477 | 408 |
20 | 192 | 23 | 48 | 67 | 624 | 41 | 234 | 114 | 1728 | 127 | 96 | 161 | 4416 | 35 | 138 |
21 | 200 | 13 | 50 | 68 | 640 | 39 | 80 | 115 | 1760 | 27 | 110 | 162 | 4480 | 233 | 280 |
22 | 208 | 27 | 52 | 69 | 656 | 185 | 82 | 116 | 1792 | 29 | 112 | 163 | 4544 | 357 | 142 |
23 | 216 | 11 | 36 | 70 | 672 | 43 | 252 | 117 | 1824 | 29 | 114 | 164 | 4608 | 337 | 480 |
24 | 224 | 27 | 56 | 71 | 688 | 21 | 86 | 118 | 1856 | 57 | 116 | 165 | 4672 | 37 | 146 |
25 | 232 | 85 | 58 | 72 | 704 | 155 | 44 | 119 | 1888 | 45 | 354 | 166 | 4736 | 71 | 444 |
26 | 240 | 29 | 60 | 73 | 720 | 79 | 120 | 120 | 1920 | 31 | 120 | 167 | 4800 | 71 | 120 |
27 | 248 | 33 | 62 | 74 | 736 | 139 | 92 | 121 | 1952 | 59 | 610 | 168 | 4864 | 37 | 152 |
28 | 256 | 15 | 32 | 75 | 752 | 23 | 94 | 122 | 1984 | 185 | 124 | 169 | 4928 | 39 | 462 |
29 | 264 | 17 | 198 | 76 | 768 | 217 | 48 | 123 | 2016 | 113 | 420 | 170 | 4992 | 127 | 234 |
30 | 272 | 33 | 68 | 77 | 784 | 25 | 98 | 124 | 2048 | 31 | 64 | 171 | 5056 | 39 | 158 |
31 | 280 | 103 | 210 | 78 | 800 | 17 | 80 | 125 | 2112 | 17 | 66 | 172 | 5120 | 39 | 80 |
32 | 288 | 19 | 36 | 79 | 816 | 127 | 102 | 126 | 2176 | 171 | 136 | 173 | 5184 | 31 | 96 |
33 | 296 | 19 | 74 | 80 | 832 | 25 | 52 | 127 | 2240 | 209 | 420 | 174 | 5248 | 113 | 902 |
34 | 304 | 37 | 76 | 81 | 848 | 239 | 106 | 128 | 2304 | 253 | 216 | 175 | 5312 | 41 | 166 |
35 | 312 | 19 | 78 | 82 | 864 | 17 | 48 | 129 | 2368 | 367 | 444 | 176 | 5376 | 251 | 336 |
36 | 320 | 21 | 120 | 83 | 880 | 137 | 110 | 130 | 2432 | 265 | 456 | 177 | 5440 | 43 | 170 |
37 | 328 | 21 | 82 | 84 | 896 | 215 | 112 | 131 | 2496 | 181 | 468 | 178 | 5504 | 21 | 86 |
38 | 336 | 115 | 84 | 85 | 912 | 29 | 114 | 132 | 2560 | 39 | 80 | 179 | 5568 | 43 | 174 |
39 | 344 | 193 | 86 | 86 | 928 | 15 | 58 | 133 | 2624 | 27 | 164 | 180 | 5632 | 45 | 176 |
40 | 352 | 21 | 44 | 87 | 944 | 147 | 118 | 134 | 2688 | 127 | 504 | 181 | 5696 | 45 | 178 |
41 | 360 | 133 | 90 | 88 | 960 | 29 | 60 | 135 | 2752 | 143 | 172 | 182 | 5760 | 161 | 120 |
42 | 368 | 81 | 46 | 89 | 976 | 59 | 122 | 136 | 2816 | 43 | 88 | 183 | 5824 | 89 | 182 |
43 | 376 | 45 | 94 | 90 | 992 | 65 | 124 | 137 | 2880 | 29 | 300 | 184 | 5888 | 323 | 184 |
44 | 384 | 23 | 48 | 91 | 1008 | 55 | 84 | 138 | 2944 | 45 | 92 | 185 | 5952 | 47 | 186 |
45 | 392 | 243 | 98 | 92 | 1024 | 31 | 64 | 139 | 3008 | 157 | 188 | 186 | 6016 | 23 | 94 |
46 | 400 | 151 | 40 | 93 | 1056 | 17 | 66 | 140 | 3072 | 47 | 96 | 187 | 6080 | 47 | 190 |
47 | 408 | 155 | 102 | 94 | 1088 | 171 | 204 | 141 | 3136 | 13 | 28 | 188 | 6144 | 263 | 480 |
\[\begin{array}{l}
d_k^{(0)} = {x_k}\\
d_k^{(1)} = {z_k}\\
d_k^{(2)} = {{z'}_k}
\end{array}\]
尾比特为:
\[\begin{array}{l}
d_K^{(0)} = {x_K},d_{K + 1}^{(0)} = {z_{K + 1}},d_{K + 2}^{(0)} = {{x'}_K},d_{K + 3}^{(0)} = {{z'}_{K + 1}}\\
d_K^{(1)} = {z_K},d_{K + 1}^{(1)} = {x_{K + 2}},d_{K + 2}^{(1)} = {{z'}_K},d_{K + 3}^{(1)} = {{x'}_{K + 2}}\\
d_K^{(2)} = {x_{K + 1}},d_{K + 1}^{(2)} = {z_{K + 2}},d_{K + 2}^{(2)} = {{x'}_{K + 1}},d_{K + 3}^{(2)} = {{z'}_{K + 2}}
\end{array}\]
输入参数:
\[{c_{r0}},{c_{r1}},{c_{r2}},{c_{r3}},...,{c_{r\left( {{K_r} - 1} \right)}}\]
输出参数:
\[\begin{array}{l}
d_{r0}^i,d_{r1}^i,d_{r2}^i,d_{r3}^i,...,d_{r\left( {{D_r} - 1} \right)}^i\\
i = 0,1\;and2\\
{D_r} = {K_r} + 4\;bit
\end{array}\]
4)速率匹配:
4.1)子块交织器
\[{K_\Pi } = \left( {R_{subblock}^{TC} \times C_{subblock}^{TC}} \right)\;bit\]
4.2)比特搜集器
\[{w_k} = v_k^{(0)},{w_{{K_\Pi } + 2k}} = v_k^{(1)},{w_{{K_\Pi } + 2k + 1}} = v_k^{(2)}\]
4.3)比特选择与发送
\[{N_{IR}} = \left\lfloor {\frac{{{N_{soft}}}}{{{K_C} \cdot {K_{{\rm{MIMO}}}} \cdot \min \left( {{M_{{\rm{DL\_HARQ}}}},\;{M_{{\rm{limit}}}}} \right)}}} \right\rfloor \]
其中,代码为
if UE.mode==3 || UE.mode==4 || UE.mode==8 % According to 36.212, 5.1.4.1.2
K_MIMO = 2;
else
K_MIMO = 1;
end
M_limit = 8;
N_IR = floor(UE.N_soft / (K_MIMO*min(LTE_params.HARQ_processes,M_limit)));
5)码块级联
\[\begin{array}{l}
algorithm:\\
set\;k = 0\;and\;r = 0;\\
while\;r < C,\\
\;\;\;\;set\;j = 0;\\
\;\;\;\;while\;j < {E_r},\\
\;\;\;\;\;\;\;\;{f_k} = {e_{rj}};\\
\;\;\;\;\;\;\;\;k = k + 1;\\
\;\;\;\;\;\;\;\;j = j + 1\\
\;\;\;\;end\;while;\\
\;\;\;\;r = r + 1;\\
end\;while;
\end{array}\]
输入参数:
\[\begin{array}{l}
{e_{r0}},{e_{r1}},{e_{r2}},{e_{r3}},...,{e_{r\left( {{E_r} - 1} \right)}}\\
r = 0,1,...C - 1
\end{array}\]
输出参数:
\[{f_0},{f_1},{f_2},{f_3},...,{f_{G - 1}}\]
\[G = \sum\limits_{r = 0}^{C - 1} {{E_r}} \;bit\]
6)加扰
\[{\tilde b^q}(i) = \left( {{b^q}(i) + {c^q}(i)} \right)\bmod 2\]
其中,扰码序列\({c^q}(i)\)为Gold序列
\[\left\{ \begin{array}{c}
c(n) = \left( {{x_1}(n + {N_C}) + {x_2}(n + {N_C})} \right)\bmod 2\\
{x_1}(n + 31) = \left( {{x_1}(n + 3) + {x_1}(n)} \right)\bmod 2\\
{x_2}(n + 31) = \left( {{x_2}(n + 3) + {x_2}(n + 2) + {x_2}(n + 1) + {x_2}(n)} \right)\bmod 2
\end{array} \right.\]
其中,\({N_C} = 1600\),\({x_1}(0) = 1,{x_1}(n) = 0,n = 1,2,...,30\)
\[{c_{{\rm{init}}}} = \left\{ {\begin{array}{*{20}{l}}
{{n_{{\rm{RNTI}}}} \cdot {{\rm{2}}^{{\rm{14}}}} + q \cdot {{\rm{2}}^{{\rm{13}}}} + \left\lfloor {{{{n_{\rm{s}}}} \mathord{\left/
{\vphantom {{{n_{\rm{s}}}} {\rm{2}}}} \right.
\kern-\nulldelimiterspace} {\rm{2}}}} \right\rfloor \cdot {{\rm{2}}^{\rm{9}}} + N_{{\rm{ID}}}^{{\rm{cell}}}}&{{\rm{for PDSCH}}}\\
{\left\lfloor {{{{n_{\rm{s}}}} \mathord{\left/
{\vphantom {{{n_{\rm{s}}}} {\rm{2}}}} \right.
\kern-\nulldelimiterspace} {\rm{2}}}} \right\rfloor \cdot {{\rm{2}}^{\rm{9}}} + N_{{\rm{ID}}}^{{\rm{MBSFN}}}}&{{\rm{for PMCH}}}
\end{array}} \right.\]
输入参数:
\[\begin{array}{l}
data:b(0),...,b({M_{{\rm{bit}}}} - 1)\\
gold:c(0),...,c({M_{{\rm{bit}}}} - 1)
\end{array}\]
输出参数:
\[\tilde b(0),...,\tilde b({M_{{\rm{bit}}}} - 1)\]
7)数据调制:
物理信道 | 调制/解调方案 |
PUSCH(物理上行共享信道) | QPSK/16QAM/64QAM |
PDSCH(物理下行共享信道) | QPSK/16QAM/64QAM |
PMCH(物理多播信道) | QPSK/16QAM/64QAM |
PCFICH(物理控制格式指示信道) | QPSK |
PDCCH(物理下行控制信道) | QPSK |
PBCH(物理广播信道) | QPSK |
QPSK:
8)层映射
传输的每个码字的复值调制符号映射到一个或多个层。
输入参数:
\[{d^{\left( q \right)}}(0),...,{d^{\left( q \right)}}(M_{{\rm{symb}}}^{\left( q \right)} - 1)\]
输出参数:
\[x(i) = {\left[ {\begin{array}{*{20}{c}}
{{x^{(0)}}(i)}&{...}&{{x^{(\upsilon - 1)}}(i)}
\end{array}} \right]^T},i = 0,...,M_{{\rm{symb}}}^{{\rm{layer}}} - 1\]
8.1)单个天线上的传输的层映射:(v=1,q=0,p=1)
8.2)空间复用(v<=p,q=0,1)
8.3)发射分集
9)预编码
{{x^{(0)}}(i)}&{...}&{{x^{(\upsilon - 1)}}(i)}
\end{array}} \right]^T}\]
{...}&{{y^{(p)}}(i)}&{...}
\end{array}} \right]^T},i = 0,1,...,M_{{\rm{symb}}}^{{\rm{ap}}} - 1\]