# Turbo Decoder Design based on an LUT-Normalized Log-MAP Algorithm
## 4 The SISO Design of the Turbo Decoder  
The decoding process of turbo codes in SISO is shown in Figure 8[14; 15]. Firstly, received system information \(\lambda_{c}(u_{k})\), check information \(\lambda_{c}(p_{k})\), and priori information \(\lambda_{a}(u_{k})\) are used to compute \(\gamma_{k}\), \(\gamma_{k}^{e}\), and _Lach_ in the branch unit. Then, we use a generated branch metric and initialized value \(\alpha\) and to compute the new \(\alpha\) and \(\beta\) through a forward and backward recursive (FBR) unit. Finally, add compare select 1 (ACS1) and ACS2 are used to compute posteriori information \(\lambda_{o}(u_{k})\) and external information \(\lambda_{e}(u_{k})\)[16; 17]. Figure 8: SISO structure of turbo decoder. Figure 6: Decoding performance of Nor-Log-MAP in a hardware simulation. Figure 7: Comparison of different Log-MAP approximate algorithms in decoding performance. In Figure 7, the LUT-Log-MAP algorithm is demonstrated to be superior to the Nor-Log-MAP algorithm in decoding performance, so we tried to employ these two algorithms using a turbo decoder for better decoding performance. In the simulation, the LUT-Log-MAP algorithm is adopted in computing forward-state and backward-state metrics, while posteriori information and external information are computed by the Nor-Log-MAP algorithm. The decoding performance of this hybrid algorithm is shown in Figure 9. As can be seen, the LUT-Nor-Log-MAP algorithm not only compensates for the decoding performance of the Nor-Log-MAP algorithm with a low SNR, but also maintains the advantages of the Nor-Log-MAP algorithm with a high SNR. Furthermore, compared to the Max-Log-MAP algorithm, it has maximum of a 0.5 dB increase in decoding performance. At the same time, we also propose the Nor-LUT-Log-MAP algorithm, which uses the Nor-Log-MAP algorithm to calculate forward-state and backward-state metrics as well as the LUT-Log-MAP algorithm to compute external information and posteriori information. As shown in Figure 9, the decoding performance of the Nor-LUT-Log-MAP algorithm is less than that of the LUT-Nor-Log-MAP algorithm, and it can be concluded that the forward-state and backward-state metric computation requires a better algorithm in the turbo decoding process [18]. In [10], [PERSON] et al. proposed FFU to compute the metrics of every state. The structure of the FFU is shown in Figure 10, where the input signals of the module are \(\alpha\) and \(\gamma\) during the forward-state metric computation. In order to satisfy the proposed LUT-Nor-Log-MAP algorithm, we designed an NFU based on the FFU, which is applicable to all state metric calculation at the same time. The structure of the NFU is shown in Figure 11. The operation of the lookup table unit and the normalization unit are controlled by control signals (CSs). LUT-s and _Nor_ represent lookup table approximation and the normalized approximation for function \(\log(1+e^{-|\text{a}-\text{b}|})\), respectively. Hence, it is possible to adopt different approximation methods for satisfying the forward-state and backward-state metrics, as well as posteriori information and external information computation. Figure 10: Function module structure of the FFU. Figure 9: Decoding performance of the LUT-Nor-Log-MAP algorithm. Figure 12 shows the rule of the state trellis transition of the turbo decoder under the time division long term evolution (TD-LTE) standard. In order to satisfy the eight-state transition rule of the turbo trellis network in the decoding process [19; 20], the FBR unit calls eight NFUs, and the ACS1 and ACS2 units call eight and six NFUs, respectively. The structure of the modified SISO unit is shown in Figure 13. Each NFU will complete the calculation of max* one at a time. As can be seen from Figures 11 and 13, for the eight-state turbo code with TD-LTE standard, a codeword for each turbo code needs at least 16 LUTs for the calculation of forward-state and backward-state metrics [21], and an external or posteriori information bit requires 14 LUTs for max* operation.