<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">ARS</journal-id><journal-title-group>
    <journal-title>Advances in Radio Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">ARS</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Adv. Radio Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1684-9973</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/ars-16-77-2018</article-id><title-group><article-title>Where
to go from here? New cross layer techniques for LTE Turbo-Code decoding at high code rates</article-title><alt-title>Cross layer techniques for Turbo-Code decoding at high code
rates</alt-title>
      </title-group><?xmltex \runningtitle{Cross layer techniques for Turbo-Code decoding at high code
rates}?><?xmltex \runningauthor{S. Weithoffer and N. Wehn}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes">
          <name><surname>Weithoffer</surname><given-names>Stefan</given-names></name>
          <email>weithoffer@eit.uni-kl.de</email>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name><surname>Wehn</surname><given-names>Norbert</given-names></name>
          
        </contrib>
        <aff id="aff1"><institution>Department of Electrical and Computer Engineering, University of
Kaiserslautern, Kaiserslautern, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Stefan Weithoffer (weithoffer@eit.uni-kl.de)</corresp></author-notes><pub-date><day>4</day><month>September</month><year>2018</year></pub-date>
      
      <volume>16</volume>
      <fpage>77</fpage><lpage>87</lpage>
      <history>
        <date date-type="received"><day>22</day><month>December</month><year>2017</year></date>
           <date date-type="accepted"><day>4</day><month>March</month><year>2018</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2018 Stefan Weithoffer</copyright-statement>
        <copyright-year>2018</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018.html">This article is available from https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018.html</self-uri><self-uri xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018.pdf">The full text article is available as a PDF file from https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018.pdf</self-uri>
      <abstract><title>Abstract</title>
    <p id="d1e78">The wide range of code rates and code block sizes supported by todays
wireless communication standards, together with the requirement for a
throughput in the order of Gbps, necessitates sophisticated and highly
parallel channel decoder architectures. Code rates specified in the LTE
standard, which uses Turbo-Codes, range up to <inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.94</mml:mn></mml:mrow></mml:math></inline-formula> to maximize the
information throughput by transmitting only a minimum amount of parity
information, which negatively impacts the error correcting performance. This
especially holds for highly parallel hardware architectures. Therefore, the
error correcting performance must be traded-off against the degree of
parallel processing.</p>
    <p id="d1e93">State-of-the-art Turbo-Code decoder hardware architectures are optimized on
code block level to alleviate this trade-off. In this paper, we follow a
cross-layer approach by combining system level knowledge about the
rate-matching and the transport block structure in LTE with the bit-level
technique of on-the-fly CRC calculation. Thereby, our proposed Turbo-Code
decoder hardware architecture achieves coding gains of <inline-formula><mml:math id="M2" display="inline"><mml:mn mathvariant="normal">0.4</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M3" display="inline"><mml:mn mathvariant="normal">1.8</mml:mn></mml:math></inline-formula> dB
compared to state-of-the-art accross a wide range of code block sizes.</p>
    <p id="d1e110">For the fully LTE compatible Turbo-Code decoder, we demonstrate a negligible
hardware overhead and a resulting high area and energy efficiency and give
post place and route synthesis numbers.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <title>Introduction</title>
      <p id="d1e120">Our information society is increasingly being shaped by communication systems
and this trend is accelerated by the evolution of mobile comminication
systems. Today, the monthly data traffic per smartphone is expected to
increase from <inline-formula><mml:math id="M4" display="inline"><mml:mn mathvariant="normal">2.7</mml:mn></mml:math></inline-formula> GB per month in <inline-formula><mml:math id="M5" display="inline"><mml:mn mathvariant="normal">2016</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M6" display="inline"><mml:mn mathvariant="normal">18</mml:mn></mml:math></inline-formula> GB per month in <inline-formula><mml:math id="M7" display="inline"><mml:mn mathvariant="normal">2021</mml:mn></mml:math></inline-formula>
due to the widespread use of streaming video services, which creates more
than <inline-formula><mml:math id="M8" display="inline"><mml:mn mathvariant="normal">50</mml:mn></mml:math></inline-formula> % of the annual mobile traffic increase as reported in the
Ericsson Mobility Report (<xref ref-type="bibr" rid="bib1.bibx12" id="year.1"/>). To satisfy this hunger for
higher data rates, sophisiticated wireless baseband signal processing is
necessary. Here, we focus on the channel decoder, which is one of the most
computationally intensive parts in baseband processing and thus a major
source of latency and power comsumption.</p>
      <p id="d1e162">Wireless communication standards like the 3GPP Long Term Evolution (LTE)
use rate compatible Turbo-Codes as channel code. There, the transmit data
rate (or <italic>code rate</italic>) <inline-formula><mml:math id="M9" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> is adjusted dynamically to achieve a desired
Signal-to-Noise-Ratio (SNR) while keeping the transmit power <inline-formula><mml:math id="M10" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> constant
and maximizing the information throughput (see <xref ref-type="bibr" rid="bib1.bibx4" id="altparen.2"/>). For the
LTE standards, including the newest release LTE-A Pro, code rates <inline-formula><mml:math id="M11" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> up to
<inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.94</mml:mn></mml:mrow></mml:math></inline-formula> and code block sizes <inline-formula><mml:math id="M13" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> between <inline-formula><mml:math id="M14" display="inline"><mml:mn mathvariant="normal">40</mml:mn></mml:math></inline-formula> and <inline-formula><mml:math id="M15" display="inline"><mml:mn mathvariant="normal">6144</mml:mn></mml:math></inline-formula> bit are defined
(see <xref ref-type="bibr" rid="bib1.bibx18" id="altparen.3"/>). As a result, the channel decoder has to be
extremely flexible with respect to code rates and code block sizes while
achieving a very high throughput and a low decoding latency for large code
block sizes. From the perspective of the decoder, flexibility means excellent
decoding performance across a wide range of code rates and code block sizes.
The high code rates are achieved by a rate-matching process, where a large
part of the parity information and a small part of the systematic information
of the code word, which is first encoded with a rate <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> Turbo-Code, is
disregarded and not transmitted. At the receiver side, LTE Turbo-Code
decoders then work on the de-rate-matched received code word and same decoder
hardware can be used for different code rates.</p>
      <p id="d1e241">Highly parallel architectures as presented by <xref ref-type="bibr" rid="bib1.bibx8" id="normal.4"/>,
<xref ref-type="bibr" rid="bib1.bibx21" id="normal.5"/>, <xref ref-type="bibr" rid="bib1.bibx16" id="normal.6"/> or <xref ref-type="bibr" rid="bib1.bibx1" id="normal.7"/>, achieve LTE
Turbo-Code throughput<?pagebreak page78?> requirements. However, for the high degree of
parallelism which is required to fulfill the throughput demands, the
individual code blocks have to be split into (small) sub-blocks, which makes
additional calculations to compute estimates for the state metrics at the
sub-block borders necessary in order to mitigate a degradation of the
decoding performance in terms of Frame Error Rate (FER). This, in turn,
limits the maximum degree of decoder parallelism that can be achieved for a
given target FER. Moreover, this effect is even more pronounced for high code
rates, which are mandatory to increase the information throughput. In
Summary, the flexibility of todays communication standards with respect to
code rates and code block sizes requires a special consideration of high code
rates for the architecture design.</p>
<sec id="Ch1.S1.SSx1" specific-use="unnumbered">
  <title>Contributions and outline</title>
      <p id="d1e261">In this paper, we follow a cross-layer approach to increase the FER
performance for a fully LTE-A Pro compatible Turbo-Code decoder hardware
architecture without the need to trade off throughput against FER
performance. We employ a combination of new techniques developed in our group
and use synergies accross different layers of the decoding to improve the FER
performance significantly accross a wide range of code block sizes and code
rates. Starting from a fully LTE-A Pro Turbo-Code decoder architecture
optimized for high throughput, we demonstrate the negligible hardware
overhead of the improved algorithms. To the best of our knowledge, a most
advanced hardware implementation of a complete Turbo-Code decoder with the
new techniques, which enable coding gains up to <inline-formula><mml:math id="M17" display="inline"><mml:mn mathvariant="normal">1.8</mml:mn></mml:math></inline-formula> dB compared to
state-of the-art with negligible overhead, is demonstrated for the first
time. The rest of this paper is structured as follows:
Sect. <xref ref-type="sec" rid="Ch1.S2"/> will give background information on
state-of-the-art Turbo-Code decoder architectures and the LTE Turbo-Coding
scheme. Section <xref ref-type="sec" rid="Ch1.S3"/> then describes our Cross-Layer approach
and the employed techniques before Sect. <xref ref-type="sec" rid="Ch1.S4"/> discusses the
proposed Turbo-Code decoder architecture with a focus on the architectural
changes for the implemented techniques compared to state-of-the-art.</p>
      <p id="d1e277">Post place and route implementation results will be discussed in
Sects. <xref ref-type="sec" rid="Ch1.S5"/> and <xref ref-type="sec" rid="Ch1.S6"/> concludes the paper.</p>
</sec>
</sec>
<sec id="Ch1.S2">
  <title>State-of-the-art</title>
      <p id="d1e291">A Turbo-Code decoder consists of two component decoders that process the
received code word in an iterative loop (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>a).
First the component decoder 1 processes the data in the original order and
passes so called extrinsic information <inline-formula><mml:math id="M18" display="inline"><mml:mi mathvariant="normal">Λ</mml:mi></mml:math></inline-formula> to component decoder 2.
Then, component decoder 2 works on the permuted (interleaved) input data and
extrinsic information. The extrinsic information generated by component
decoder 2 is then passed to component decoder 1 for the next iteration of the
loop. Each run of one component decoder is counted as one half-iteration
(HI). In practical implementations, one decoder, implementing the max-Log-Map
algorithm (see <xref ref-type="bibr" rid="bib1.bibx13" id="altparen.8"/>), functions alternately as component
decoder 1 and component decoder 2. The decoding continues until either a
maximum number of HIs has been reached, or until a stopping criterion is
fulfilled.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1" specific-use="star"><label>Figure 1</label><caption><p id="d1e308"><bold>(a)</bold> General Turbo-Code decoder with CRC. <inline-formula><mml:math id="M19" display="inline"><mml:mi mathvariant="normal">Π</mml:mi></mml:math></inline-formula>:
Interleaver. <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="normal">Π</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>: De-interleaver; <bold>(b)</bold> LTE-A channel coding
scheme for DL-SCH</p></caption>
        <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f01.pdf"/>

      </fig>

<sec id="Ch1.S2.SS1">
  <title>High throughput turbo-decoder hardware architectures</title>
      <p id="d1e348">State-of-the-art Turbo-Code decoder hardware architectures can be classified
based on their approach on how to parallelize the inherrently serial
max-Log-Map algorithm:</p>
      <p id="d1e351"><italic>Parallel Map.</italic> (PMAP) – decoders use spacial parallelism by
splitting the code block trellis into sub-trellises (or <italic>sub-blocks</italic>)
that are decoded on <inline-formula><mml:math id="M21" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> parallel sub-decoder cores (see
Fig. <xref ref-type="fig" rid="Ch1.F2"/>a) and parallel <italic>windowed</italic>
processing of forward and backward recursions within the cores.
Implementations which use the PMAP architecture are reported, for example by
<xref ref-type="bibr" rid="bib1.bibx1" id="normal.9"/>, <xref ref-type="bibr" rid="bib1.bibx17" id="normal.10"/>, <xref ref-type="bibr" rid="bib1.bibx8" id="normal.11"/> and <xref ref-type="bibr" rid="bib1.bibx16" id="normal.12"/>.</p>
      <p id="d1e384"><italic>Fully Pipelined Map.</italic> (FPMAP) – decoders implement a fully parallel
processing of both component codes <xref ref-type="bibr" rid="bib1.bibx10" id="normal.13"/>, <xref ref-type="bibr" rid="bib1.bibx9" id="normal.14"/> (see
Fig. <xref ref-type="fig" rid="Ch1.F2"/>b). The recently published architecture
promises very high throughput and can be seen as an extreme case of the PMAP
architecture where each sub-trellis essentially consists of one step of the
original trellis.</p>
      <p id="d1e397"><italic>Pipelined Map.</italic> (XMAP) – decoders, as reported by <xref ref-type="bibr" rid="bib1.bibx6" id="normal.15"/>
or <xref ref-type="bibr" rid="bib1.bibx21" id="normal.16"/>, unroll and pipeline the recursions, a functional
parallelization. Each clock cycle, one continuous sub-trellis
(<italic>window</italic>) is fed into the “X”-shaped pipeline structure (see
Fig. <xref ref-type="fig" rid="Ch1.F2"/>c) which gives the decoder its name.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2" specific-use="star"><label>Figure 2</label><caption><p id="d1e416">Decoding of a code word of size <inline-formula><mml:math id="M22" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> on a: <bold>(a)</bold> PMAP decoder
with <inline-formula><mml:math id="M23" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> sub-decoder cores, <bold>(b)</bold> FPMAP decoder, <bold>(c)</bold> XMAP
decoder with <inline-formula><mml:math id="M24" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> pipeline stages; <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:mi mathvariant="normal">Π</mml:mi><mml:mo>/</mml:mo><mml:msup><mml:mi mathvariant="normal">Π</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>: Interleaver/Deinterleaver.</p></caption>
          <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f02.pdf"/>

        </fig>

      <p id="d1e474">Spliting up the code block trellis into sub-blocks or windows, however,
weakens the protection of the bits at the sub-block/window borders, because
state metric information is lost. Since the FPMAP architecture leads to
sub-trellises consisting of only one step, this effect is more pronounced for
the FPMAP and is the reason why it needs more iterations than the other
decoder types, even at rate <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>. For the other decoder types, the state
metrics at the sub-block borders can to be estimated.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3" specific-use="star"><label>Figure 3</label><caption><p id="d1e491">Cross-layer Optimization.</p></caption>
          <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f03.pdf"/>

        </fig>

      <p id="d1e500">The estimation for the state metrics at the sub-block borders can be taken
from a warm-up recursion phase (acquisition – ACQ) or from the state
metric calculations of the previous iteration (Next Iteration Initialization
– NII) as proposed by <xref ref-type="bibr" rid="bib1.bibx5" id="normal.17"/>. For very small windows and/or high
code rates, a combination of ACQ and NII can be used to mitigate very long
acquisition lengths (see <xref ref-type="bibr" rid="bib1.bibx14" id="altparen.18"/>). Note, that state-of-the-art
Turbo-Code decoders expect their input depunctured to rate <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> and thus do
not take into account the puncturing pattern that is used to adapt the rate.</p>
      <?pagebreak page79?><p id="d1e521"><?xmltex \hack{\newpage}?>For small code block sizes <inline-formula><mml:math id="M28" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> and large degrees of parallelism <inline-formula><mml:math id="M29" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>, the
sub-block sizes <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mi>K</mml:mi><mml:mo>/</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:math></inline-formula> become very small. Thus, the achievable level of
parallelism for a desired Quality of Service (QoS) is limited, especially
for high code rates. Therefore, in state-of-the-art PMAP decoders, smaller
code words are only decoded on a fraction of the available sub-decoder cores
and the smallest code block sizes (i.e. <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>) are decoded only
using a single sub-decoder core while the others remain idle.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <title>LTE-A turbo coding for DL-SCH</title>
      <p id="d1e577">The LTE standard organizes the data to be transmitted over the Downlink
Shared Channel (DL-SCH) in each transmission time interval (TTI) in
transport blocks (TB) which have sizes ranging from <inline-formula><mml:math id="M32" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mn mathvariant="normal">97</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">896</mml:mn></mml:mrow></mml:math></inline-formula> bit
(see <xref ref-type="bibr" rid="bib1.bibx18" id="altparen.19"/>). The DL-SCH channel coding scheme is depicted in
Fig. <xref ref-type="fig" rid="Ch1.F1"/>b. The uncoded transport block is first attached
with a <inline-formula><mml:math id="M34" display="inline"><mml:mn mathvariant="normal">24</mml:mn></mml:math></inline-formula> bit CRC for the hybrid automatic repeat request (HARQ)
protocol. Then, the transport block is divided into smaller code blocks if
its size (with attached CRC) is larger than <inline-formula><mml:math id="M35" display="inline"><mml:mn mathvariant="normal">6144</mml:mn></mml:math></inline-formula> bit. This process is
called code block segmentation. After segmentation, the code blocks contain a
maximum of <inline-formula><mml:math id="M36" display="inline"><mml:mn mathvariant="normal">6120</mml:mn></mml:math></inline-formula> bits and are each attached with another <inline-formula><mml:math id="M37" display="inline"><mml:mn mathvariant="normal">24</mml:mn></mml:math></inline-formula> bit CRC (the
<italic>code block CRC</italic>) before being encoded with a rate <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> Turbo-Code.
The code block segmentation step is followed by a circular buffer rate
matching to adapt the code rate by puncturing or repetition. Last step is the
code block concatenation.</p>
</sec>
</sec>
<?pagebreak page80?><sec id="Ch1.S3">
  <title>Cross-layer optimization of the communication performance</title>
      <p id="d1e654">The state-of-the-art techniques which have been discussed in the previous
section exclusively work on the code block level (shown green in
Fig. <xref ref-type="fig" rid="Ch1.F3"/>). The parallel processing of the individual code
blocks does not take into account the TB structure and since the decoder
input is expected to be depunctured to rate <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>, the puncturing patterns
are also not taken into account.</p>
      <p id="d1e671">Figure <xref ref-type="fig" rid="Ch1.F3"/> illustrates our cross-layer approach: We
consider the TB structure of LTE and also the puncturing patterns on the
system level and their impact on the decoding performance of the Turbo-Code
decoder on code block level. For that, we focus on the PMAP decoder
architecture optimized for high throughput LTE-A Turbo-Code decoding. As
described in Sect. <xref ref-type="sec" rid="Ch1.S2"/>, the architecture consists of <inline-formula><mml:math id="M40" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>
sub-decoder cores working in parallel. The architecture features a CRC based
iteration control and uses only one sub-decoder core for the smallest code
block sizes.</p>
<sec id="Ch1.S3.SS1">
  <title>Iteration balancing</title>
      <p id="d1e690">With a CRC based iteration control, the decoding process is terminated early,
as soon as the CRC on the decoded code word evaluates to zero. Otherwise, the
decoding is continued until a maximum number of half-iterations
(<inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>) is reached. This is depicted in
Fig. <xref ref-type="fig" rid="Ch1.F4"/>b, whereas Fig. <xref ref-type="fig" rid="Ch1.F4"/>a illustrates
the case without early stopping.</p>
      <p id="d1e710">For iteration balancing, the CRC based iteration control, which is used to
terminate the decoding process early in the event of successful decoding, is
extended to account for the TB structure on system level. Iteration balancing
makes use of the fact, that most code blocks are decoded in less than
<inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> half-iterations and that large code block
buffers are available in the rate matching unit for the incremental
redundancy of the HARQ (see <xref ref-type="bibr" rid="bib1.bibx23" id="altparen.20"/>). Instead of stopping the
decoder after <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> half-iterations and signaling a
failed decoding if the CRC does not evaluate to zero, with iteration
balancing a budged
            <disp-formula id="Ch1.E1" content-type="numbered"><mml:math id="M44" display="block"><mml:mrow><mml:mi>B</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">CB</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></disp-formula>
          is considered, where <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">CB</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the number of code blocks within a TB
(see Fig. <xref ref-type="fig" rid="Ch1.F4"/>c). By keeping track of the iterations that
have been spent on previous code blocks belonging to the same TB, the
Turbo-Code decoder is able to spent more decoding iterations on blocks that
contain more errors, thereby using the iterations saved by the early
stopping. To avoid the case where a single undecodable code block at the
beginning of a TB consumes the complete iteration budget, the decoding for
each code block is allowed to run for <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>
half-iterations. Our investigations have shown that this value is a very good
trade-off. As can be seen in Fig. <xref ref-type="fig" rid="Ch1.F4"/>c and as was shown in
<xref ref-type="bibr" rid="bib1.bibx23" id="year.21"/>, iteration balancing can not only be used to improve the
communications performance, but can also be used to guarantee a higher
throughput on system level. For this work, however, we focus on the
improvement in communications performance.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4" specific-use="star"><label>Figure 4</label><caption><p id="d1e804">Schedule for a TB with 6 code blocks: <bold>(a)</bold> No early
stopping; <bold>(b)</bold> with early stopping; <bold>(c)</bold> Early stopping with
HI Balancing.</p></caption>
          <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f04.pdf"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS2">
  <title>Enhanced high-rate decoding for short blocks</title>
      <p id="d1e828">For LTE, code rates <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> are achieved by puncturing the rate <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> mother
Turbo-Code (see Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>). To limit the degradation of the
Turbo-Code performance at code rates as high as <inline-formula><mml:math id="M49" display="inline"><mml:mn mathvariant="normal">0.94</mml:mn></mml:math></inline-formula>, not only the parity
information but also the systematic information is punctured. In recent work,
we identified the positions where the systematic bit is punctured away as
<italic>critical bit</italic> positions (see <xref ref-type="bibr" rid="bib1.bibx24" id="altparen.22"/>). We could show,
that, if these positions are not correctly decoded by the decoder in the
first few half-iterations, the decoding process is likely to fail, since the
decoder has trouble recovering the correct hard decision bit for these
positions in the later half-iterations. In LTE, the critical bit positons are
at the bit indices
            <disp-formula id="Ch1.E2" content-type="numbered"><mml:math id="M50" display="block"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable columnspacing="1em" class="cases" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">16</mml:mn><mml:mo>⋅</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>for</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>K</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mn mathvariant="normal">16</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">13</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">16</mml:mn><mml:mo>⋅</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>for</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>K</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mn mathvariant="normal">16</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">N</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>
          assuming the bit indices start at <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. At high code rates, these critical
positions exhibit the majority of residual errors after Turbo-Code decoding.</p>
      <p id="d1e981">The remainder of this section describes new approaches to improve the
decoding performance for small code blocks at high code rates on system
level. In Sect. <xref ref-type="sec" rid="Ch1.S4"/>, we show, for the first time, the
application of these system level techniques onto a fully LTE compatible
hardware architecture on bit level.</p>
<sec id="Ch1.S3.SS2.SSS1">
  <title>Improved flip-and-check</title>
      <p id="d1e991">Based on the error detection via CRC, we recently proposed in
<xref ref-type="bibr" rid="bib1.bibx24" id="year.23"/> the improved flip-and-check (FC) method. The
algorithm shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/> makes use of critical
positions, that result from the puncturing, to increase the<?pagebreak page81?> communications
performance of the Turbo-Code decoding with a greatly reduced complexity
compared to similar approaches like <italic>event flipping</italic> <xref ref-type="bibr" rid="bib1.bibx3" id="normal.24"/>
or <italic>flip-and-check</italic> <xref ref-type="bibr" rid="bib1.bibx19" id="normal.25"/>. It takes as input a set <inline-formula><mml:math id="M52" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> of
critical positions determined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>), a set <inline-formula><mml:math id="M53" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> of least
reliable bit positions with <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>∪</mml:mo><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∅</mml:mi></mml:mrow></mml:math></inline-formula> and a set of decoded hard
decision bits. Then, the bits are flipped at the critical and least reliable
positions for all combinations. The CRC is tested for the <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>+</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> patterns
and the CRC results are used as stopping criterion for the iteration control
of a Turbo-Code decoder. However, in a state-of-the-art hardware
implementation, the complete set of hard decisions and the set of least
reliable bit positions is only known after each half iteration. Therefore, in
this work, we further optimized the algorithm and integrated it into an
on-the-fly CRC calculation scheme (see Sect. <xref ref-type="sec" rid="Ch1.S4"/>).</p>

      <fig id="Ch1.F5"><label>Figure 5</label><caption><p id="d1e1064">Pseudocode for the improved iteration control.</p></caption>
            <?xmltex \igopts{width=227.622047pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f05.pdf"/>

          </fig>

</sec>
<sec id="Ch1.S3.SS2.SSS2">
  <title>Parallel improved forced symbol decoding</title>
      <p id="d1e1079">We use the sub-decoder cores that are not used for small code blocks to
employ parallel improved forced symbol decoding. This technique, in contrast
to similar techniques like enhanced forced symbol method (EFSM)
(<xref ref-type="bibr" rid="bib1.bibx11 bib1.bibx15" id="altparen.26"/>), does not require the decoding process to be
restarted after forcing symbols to a certain value. With parallel improved
forced symbol decoding, one sub-decoder core decodes <inline-formula><mml:math id="M56" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> half-iterations on a
single sub-decoder core for small code blocks with <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>. This allows
the decoder to “warm up” the extrinsic information, i.e. improve the
extrinsic information through the iterative Turbo-Code decoding. Then, each
of the <inline-formula><mml:math id="M58" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> available sub-decoders receives its own set of extrinsic
information with symbols saturated to the maximum/minimum values at the last
<inline-formula><mml:math id="M59" display="inline"><mml:mi>o</mml:mi></mml:math></inline-formula> critical positions, so that we get <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mi>o</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> saturation patterns. Now the
decoding continues in parallel on all <inline-formula><mml:math id="M61" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> sub-decoder cores and the CRC is
checked individually on each core after every half-iteration.</p>
      <p id="d1e1141">In the new architecture, the improved FC method is used for each sub-decoder
and calculated on-the-fly. If more than one of the numbered sub-decoder cores
have a succeeding CRC after the same half-iteration, the decoder with the
lower index is chosen to provide the output. As the rate of false positives
is very low for the <inline-formula><mml:math id="M62" display="inline"><mml:mn mathvariant="normal">24</mml:mn></mml:math></inline-formula> bit CRC used in LTE, this does not degrade the
communications performance.</p>
</sec>
</sec>
<sec id="Ch1.S3.SS3">
  <title>Communications performance simulations</title>
      <p id="d1e1159">The new LTE-A Turbo-Code decoder architecture, which will be presented in
Sect. <xref ref-type="sec" rid="Ch1.S4"/>, incorporates for the first time enhanced
event-flipping and forced symbol decoding on-the-fly to improve the
communications performance for small code blocks at high code rates, as well
as an iteration control with iteration balancing to improve communications
performance on transport block level for high code rates. To put the
communications performance into context, we performed detailed simulations to
compare our new approach to<?pagebreak page82?> other state-of-the-art Turbo-Code decoders
achieving a similar throughput.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1" specific-use="star"><label>Table 1</label><caption><p id="d1e1167">Algorithm parameters of LTE Turbo-Code
decoders.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:colspec colnum="5" colname="col5" align="left"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">This Work</oasis:entry>
         <oasis:entry colname="col3">
                    <xref ref-type="bibr" rid="bib1.bibx8" id="text.27"/>
                  </oasis:entry>
         <oasis:entry colname="col4">
                    <xref ref-type="bibr" rid="bib1.bibx16" id="text.28"/>
                  </oasis:entry>
         <oasis:entry colname="col5">
                    <xref ref-type="bibr" rid="bib1.bibx14" id="text.29"/>
                  </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Algorithm</oasis:entry>
         <oasis:entry namest="col2" nameend="col5" align="center">max-Log Map </oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">No. of Sub-Cores</oasis:entry>
         <oasis:entry colname="col2">16</oasis:entry>
         <oasis:entry colname="col3">32</oasis:entry>
         <oasis:entry colname="col4">64</oasis:entry>
         <oasis:entry colname="col5">16</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ESF</oasis:entry>
         <oasis:entry colname="col2">0.75</oasis:entry>
         <oasis:entry colname="col3">0.75</oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">0.75</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Radix</oasis:entry>
         <oasis:entry colname="col2">4</oasis:entry>
         <oasis:entry colname="col3">4</oasis:entry>
         <oasis:entry colname="col4">2</oasis:entry>
         <oasis:entry colname="col5">4</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M63" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M64" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M65" display="inline"><mml:mi>o</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">4, 1, 4</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">State-Metric Warm-up</oasis:entry>
         <oasis:entry colname="col2">NII</oasis:entry>
         <oasis:entry colname="col3">NII</oasis:entry>
         <oasis:entry colname="col4">ACQ</oasis:entry>
         <oasis:entry colname="col5">NII <inline-formula><mml:math id="M66" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> ACQ</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ACQ Length</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">32</oasis:entry>
         <oasis:entry colname="col5">32</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Max. Window Size</oasis:entry>
         <oasis:entry colname="col2">192</oasis:entry>
         <oasis:entry colname="col3">192</oasis:entry>
         <oasis:entry colname="col4">96</oasis:entry>
         <oasis:entry colname="col5">32</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Input Quant.</oasis:entry>
         <oasis:entry colname="col2">6</oasis:entry>
         <oasis:entry colname="col3">6</oasis:entry>
         <oasis:entry colname="col4">7</oasis:entry>
         <oasis:entry colname="col5">5</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Max. Block Size K</oasis:entry>
         <oasis:entry namest="col2" nameend="col5" align="center">6144 </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Max. Iteration Budget</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">CB</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">6</oasis:entry>
         <oasis:entry colname="col4">8</oasis:entry>
         <oasis:entry colname="col5">5.5</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e1443">Table <xref ref-type="table" rid="Ch1.T1"/> gives the algorithm parameters of the compared
decoder architectures, while Table <xref ref-type="table" rid="Ch1.T2"/> lists the
implementation related data. Our investigatons have shown <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>
to be a good match for the LTE configuration, while still allowing an
integration of the new on-the-fly flip-and-check CRC calculation scheme with
negligible hardware overhead. The parameter <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mi>o</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> results from the usable
<inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:mn mathvariant="normal">16</mml:mn><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> sub-decoder cores.</p>
<sec id="Ch1.S3.SS3.SSS1">
  <title>Impact of combined enhanced event-flipping and forced symbol decoding</title>
      <p id="d1e1507">Figure <xref ref-type="fig" rid="Ch1.F6"/> shows the impact of the proposed enhanced
event-flipping and forced symbol decoding for code block sizes <inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">160</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">240</mml:mn></mml:mrow></mml:math></inline-formula>
and rates <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M74" display="inline"><mml:mn mathvariant="normal">0.94</mml:mn></mml:math></inline-formula>. For those small code bock sizes, commonly only
one sub-decoder core is used for the decoding of the code block. Therefore,
the communications performance for the decoders listed in
Table <xref ref-type="table" rid="Ch1.T1"/> is approximated by that of a non-windowed
serial max-Log-Map decoder (in the following called <italic>reference decoder</italic>) with an input quantization of <inline-formula><mml:math id="M75" display="inline"><mml:mn mathvariant="normal">6</mml:mn></mml:math></inline-formula> bit, an extrinsic scaling with
<inline-formula><mml:math id="M76" display="inline"><mml:mn mathvariant="normal">0.75</mml:mn></mml:math></inline-formula>, which decodes for <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:math></inline-formula> half-iterations.
Frame error rate (FER) simulations have been carried out over an additive
white gaussian noise (AWGN) channel with BPSK modulation.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6" specific-use="star"><label>Figure 6</label><caption><p id="d1e1590">FER over SNR for <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula> and: <bold>(a)</bold> rate <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>,
<bold>(b)</bold> rate <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.94</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
            <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f06.pdf"/>

          </fig>

      <p id="d1e1645">For rate <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>, coding gains of up to <inline-formula><mml:math id="M82" display="inline"><mml:mn mathvariant="normal">1</mml:mn></mml:math></inline-formula> dB at a target FER of <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>
can be observed over the reference decoder when decoding blocks with <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula>.
Coding gains of <inline-formula><mml:math id="M85" display="inline"><mml:mn mathvariant="normal">0.9</mml:mn></mml:math></inline-formula> and <inline-formula><mml:math id="M86" display="inline"><mml:mn mathvariant="normal">0.3</mml:mn></mml:math></inline-formula> dB over the reference decoder are achieved
for <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">160</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">240</mml:mn></mml:mrow></mml:math></inline-formula> respectively.</p>
      <p id="d1e1732">Rate <inline-formula><mml:math id="M89" display="inline"><mml:mn mathvariant="normal">0.94</mml:mn></mml:math></inline-formula> allows the largest coding gains compared to the reference with
<inline-formula><mml:math id="M90" display="inline"><mml:mn mathvariant="normal">1.6</mml:mn></mml:math></inline-formula> dB for <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M92" display="inline"><mml:mn mathvariant="normal">0.6</mml:mn></mml:math></inline-formula> dB for <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">160</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">240</mml:mn></mml:mrow></mml:math></inline-formula>. Note, that, due
to the steaper slopes of the FER curves, the coding gains for lower target
FER values will be even larger.</p>
</sec>
<sec id="Ch1.S3.SS3.SSS2">
  <title>Impact of iteration balancing</title>
      <p id="d1e1800">FER simulation results for a transport block size of <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:mn mathvariant="normal">98</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">696</mml:mn></mml:mrow></mml:math></inline-formula> bit, which
results in <inline-formula><mml:math id="M96" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> code blocks of size <inline-formula><mml:math id="M97" display="inline"><mml:mn mathvariant="normal">6144</mml:mn></mml:math></inline-formula> illustrate the impact of iteration
balancing for the proposed architecture in comparison to the state-of-the art
architectures listed in Table <xref ref-type="table" rid="Ch1.T1"/>. The decoding of
<inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mn mathvariant="normal">625</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">000</mml:mn></mml:mrow></mml:math></inline-formula> LTE-A transport blocks over an AWGN channel was simulated.</p>
      <p id="d1e1841">At rate <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>, the investigated decoders reach the target FER of <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> at
<inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:mn mathvariant="normal">3.9</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> dB (see Fig. <xref ref-type="fig" rid="Ch1.F7"/>a). For the single code block case
(i.e. <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mi>B</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:math></inline-formula>), our decoder performs similar,
reaching the target FER at <inline-formula><mml:math id="M103" display="inline"><mml:mn mathvariant="normal">3.9</mml:mn></mml:math></inline-formula> dB, while achieving a coding gain of
<inline-formula><mml:math id="M104" display="inline"><mml:mn mathvariant="normal">0.3</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M105" display="inline"><mml:mn mathvariant="normal">0.35</mml:mn></mml:math></inline-formula> dB for the case of 16 code blocks.</p>
      <p id="d1e1927">For rate <inline-formula><mml:math id="M106" display="inline"><mml:mn mathvariant="normal">0.94</mml:mn></mml:math></inline-formula>, the best performing reference decoders are the decoders from
<xref ref-type="bibr" rid="bib1.bibx16" id="normal.30"/> and <xref ref-type="bibr" rid="bib1.bibx14" id="normal.31"/> (see Fig. <xref ref-type="fig" rid="Ch1.F7"/>b). They
reach the target FER of <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> at an SNR of <inline-formula><mml:math id="M108" display="inline"><mml:mn mathvariant="normal">5.1</mml:mn></mml:math></inline-formula> dB while the decoder
from <xref ref-type="bibr" rid="bib1.bibx8" id="normal.32"/> lies within <inline-formula><mml:math id="M109" display="inline"><mml:mn mathvariant="normal">0.05</mml:mn></mml:math></inline-formula> dB. Our decoder, if the single
code block case is considered, achieves the target FER at around <inline-formula><mml:math id="M110" display="inline"><mml:mn mathvariant="normal">5</mml:mn></mml:math></inline-formula> dB. For
the case of <inline-formula><mml:math id="M111" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> code blocks, however, our decoder outperforms the reference
decoders by 0.35–0.4 dB.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F7" specific-use="star"><label>Figure 7</label><caption><p id="d1e1993">FER over SNR for <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6144</mml:mn></mml:mrow></mml:math></inline-formula> and: <bold>(a)</bold> rate <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>,
<bold>(b)</bold> rate <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.94</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
            <?xmltex \igopts{width=497.923228pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f07.pdf"/>

          </fig>

</sec>
</sec>
</sec>
<sec id="Ch1.S4">
  <title>Turbo-code decoder hardware architecture</title>
      <p id="d1e2056">As stated above, we implemented the techniques for improved decoding of high
rate LTE Turbo-Codes in a Turbo-Code decoder which uses the PMAP architecture
with <inline-formula><mml:math id="M115" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> sub-decoder cores. The algorithmic parameters for the architecture
are listed in Table <xref ref-type="table" rid="Ch1.T1"/> of Sect. <xref ref-type="sec" rid="Ch1.S3"/>.
An overview of the architecture is depicted in
Fig. <xref ref-type="fig" rid="Ch1.F8"/>.</p>
      <p id="d1e2072">The individual sub-decoder cores use an extrinsic scaling factor (ESF, see
<xref ref-type="bibr" rid="bib1.bibx20" id="altparen.33"/>) of <inline-formula><mml:math id="M116" display="inline"><mml:mn mathvariant="normal">0.75</mml:mn></mml:math></inline-formula> and make use of the well known radix-<inline-formula><mml:math id="M117" display="inline"><mml:mn mathvariant="normal">4</mml:mn></mml:math></inline-formula>
transform to reduce the amount of state metrics that need to be stored by the
sub-decoder cores (see <xref ref-type="bibr" rid="bib1.bibx2" id="altparen.34"/>). Next iteration Initialization
(NII) is used for the state metric Initialization, a large maximum window
size of <inline-formula><mml:math id="M118" display="inline"><mml:mn mathvariant="normal">192</mml:mn></mml:math></inline-formula> is used for optimal communications performance, and input
values are quantized with <inline-formula><mml:math id="M119" display="inline"><mml:mn mathvariant="normal">6</mml:mn></mml:math></inline-formula> bit.</p>
      <p id="d1e2110">The extrinsic and the hard decision (HD) memories are split into even and odd
memories due to the LTE Turbo-Code internal interleaver (odd-even splitting)
and are accessed via crossbars. Memory addresses and crossbar permutation
patterns are generated on-the-fly by an interleaver address generator based
on the work of <xref ref-type="bibr" rid="bib1.bibx7" id="normal.35"/>.</p>
      <p id="d1e2116">The decoder supports the complete range of LTE code block sizes from <inline-formula><mml:math id="M120" display="inline"><mml:mn mathvariant="normal">40</mml:mn></mml:math></inline-formula> to
<inline-formula><mml:math id="M121" display="inline"><mml:mn mathvariant="normal">6144</mml:mn></mml:math></inline-formula> bit. This results in a maximum sub-block size of <inline-formula><mml:math id="M122" display="inline"><mml:mn mathvariant="normal">384</mml:mn></mml:math></inline-formula> bit processed
by each sub-decoder core. For smaller code blocks, the sub-block size is
reduced. If the code block size is smaller than <inline-formula><mml:math id="M123" display="inline"><mml:mn mathvariant="normal">2048</mml:mn></mml:math></inline-formula> bit, the number of
sub-decoder cores, in other words the number of sub-blocks processed in
parallel, is halved. This mitigates a decrease in communications performance
due to the sub-trellises becoming to small. Similarly, for code block sizes
<inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mn mathvariant="normal">512</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1008</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mn mathvariant="normal">256</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">504</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M126" display="inline"><mml:mn mathvariant="normal">4</mml:mn></mml:math></inline-formula> and <inline-formula><mml:math id="M127" display="inline"><mml:mn mathvariant="normal">2</mml:mn></mml:math></inline-formula> sub-decoder cores
are used, respectively. The smallest code blocks with <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula> are
decoded using parallel symbol forcing and FC. For that, all <inline-formula><mml:math id="M129" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> sub-decoder
cores are used.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F8" specific-use="star"><label>Figure 8</label><caption><p id="d1e2220">Architecture Overview. The symbol forcin unit saturates the
extrinsic information at the critical positions to the maximum and minimum
possible values (see Sect. <xref ref-type="sec" rid="Ch1.S3.SS2.SSS2"/>)</p></caption>
        <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f08.pdf"/>

      </fig>

      <p id="d1e2231">The following subsections describe in detail the integration of the parallel
symbol forcing and FC. Both use as input a list of critical addresses, which
is calculated from the critical positions and is dependent on the code block
size <inline-formula><mml:math id="M130" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula>. Considering the odd-even splitting and the LTE code block sizes <inline-formula><mml:math id="M131" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula>
resulting from the code block segmentation defined in LTE (see
<xref ref-type="bibr" rid="bib1.bibx18" id="altparen.36"/>), the calculation for the critical positons from
Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) can be formulated as:
          <disp-formula id="Ch1.E3" content-type="numbered"><mml:math id="M132" display="block"><mml:mrow><mml:mi mathvariant="normal">crit</mml:mi><mml:mi mathvariant="italic">_</mml:mi><mml:mi mathvariant="normal">addr</mml:mi><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>K</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>K</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>-</mml:mo><mml:mi>j</mml:mi><mml:mo>⋅</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
        which can easily be implemted.</p><?xmltex \hack{\newpage}?>
<?pagebreak page83?><sec id="Ch1.S4.SS1">
  <title>Parallel symbol forcing</title>
      <p id="d1e2304">For the smallest LTE code block sizes, i.e. <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>, the decoder
uses improved parallel symbol forcing to improve the communications
performance. At design time, the available <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula> sub-decoder cores are
assigned a sub-decoder index from <inline-formula><mml:math id="M135" display="inline"><mml:mn mathvariant="normal">0</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M136" display="inline"><mml:mn mathvariant="normal">15</mml:mn></mml:math></inline-formula>.</p>
      <p id="d1e2349">While decoding, the extrinsic values at the critical positions are saturated
after the first two half-iterations before being written to RAM. Saturation
is performed according to a pattern that corresponds to their sub-decoder
index. The extrinsic values for sub-decoder Map<inline-formula><mml:math id="M137" display="inline"><mml:msub><mml:mi/><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:math></inline-formula>, for example, will be
saturated to the maximum value for all four critcal positions.
Figure <xref ref-type="fig" rid="Ch1.F8"/> also illustrates the symbol forcing
unit.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <title>Flip-and-check extended crc unit</title>
      <p id="d1e2369">Figure <xref ref-type="fig" rid="Ch1.F9"/> shows the structure of the FC extended CRC unit
which is based on the on-the-fly architecture we presented in 2015. This
section will describe the structure of the FC extended CRC unit and give the
underlying equations where appropriate. For an in-depth derivation of the
on-the-fly CRC calculation scheme, the reader is referred to the original
publication (see <xref ref-type="bibr" rid="bib1.bibx22" id="altparen.37"/>).</p>
      <?pagebreak page84?><p id="d1e2377">The CRC unit calculates the CRC over the decoded code word <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:mi>A</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> based on
the following equation:
            <disp-formula id="Ch1.E4" content-type="numbered"><mml:math id="M139" display="block"><mml:mrow><mml:mi mathvariant="normal">CRC</mml:mi><mml:mo>[</mml:mo><mml:mi>A</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>]</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="normal">CRC</mml:mi><mml:mo>[</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mo>-</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:mfenced><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mo>⋅</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          There, <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the CRC generator polynomial of degree <inline-formula><mml:math id="M141" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M142" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> is the
parallelism , <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mi>K</mml:mi><mml:mo>/</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:math></inline-formula> is the sub-block size, <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the sub-block offset
and <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the partial sub-block CRC. In our case, it is <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="normal">CRC</mml:mi><mml:mrow><mml:mn mathvariant="normal">24</mml:mn><mml:mi>B</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for which <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">24</mml:mn></mml:mrow></mml:math></inline-formula> (see also <xref ref-type="bibr" rid="bib1.bibx18" id="altparen.38"/>), <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula>.
A table lookup is used to realize the <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">CRC</mml:mi><mml:mo>[</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mo>-</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msup><mml:mo>]</mml:mo><mml:msup><mml:mo>)</mml:mo><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> from
Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>) and this lookup table is initialized at the beginning of
the decoding (<inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> LUT in Fig. <xref ref-type="fig" rid="Ch1.F9"/>).</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F9" specific-use="star"><label>Figure 9</label><caption><p id="d1e2662">FC enhanced on-the-fly CRC unit.</p></caption>
          <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://ars.copernicus.org/articles/16/77/2018/ars-16-77-2018-f09.pdf"/>

        </fig>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2" specific-use="star"><label>Table 2</label><caption><p id="d1e2675">Architecture parameters of LTE Turbo-Code
decoders.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">This Work</oasis:entry>
         <oasis:entry colname="col3">
                    <xref ref-type="bibr" rid="bib1.bibx8" id="text.39"/>
                  </oasis:entry>
         <oasis:entry colname="col4">
                    <xref ref-type="bibr" rid="bib1.bibx16" id="text.40"/>
                  </oasis:entry>
         <oasis:entry colname="col5">
                    <xref ref-type="bibr" rid="bib1.bibx14" id="text.41"/>
                  </oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Standard</oasis:entry>
         <oasis:entry colname="col2">LTE-A</oasis:entry>
         <oasis:entry colname="col3">LTE-A</oasis:entry>
         <oasis:entry colname="col4">LTE</oasis:entry>
         <oasis:entry colname="col5">LTE-A</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Technology [nm]</oasis:entry>
         <oasis:entry colname="col2">28 FDSOI</oasis:entry>
         <oasis:entry colname="col3">65</oasis:entry>
         <oasis:entry colname="col4">90</oasis:entry>
         <oasis:entry colname="col5">65</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Supply Voltage [V]</oasis:entry>
         <oasis:entry colname="col2">1.0</oasis:entry>
         <oasis:entry colname="col3">1.1</oasis:entry>
         <oasis:entry colname="col4">1.0</oasis:entry>
         <oasis:entry colname="col5">1.2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Core Area [mm<inline-formula><mml:math id="M151" display="inline"><mml:msup><mml:mi/><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col2">0.55</oasis:entry>
         <oasis:entry colname="col3">7.7</oasis:entry>
         <oasis:entry colname="col4">19.75</oasis:entry>
         <oasis:entry colname="col5">2.49</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Gate Count [kGE]</oasis:entry>
         <oasis:entry colname="col2">1124</oasis:entry>
         <oasis:entry colname="col3">4867</oasis:entry>
         <oasis:entry colname="col4">5304</oasis:entry>
         <oasis:entry colname="col5">1574</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Clock Freq. [MHz]</oasis:entry>
         <oasis:entry colname="col2">825</oasis:entry>
         <oasis:entry colname="col3">450</oasis:entry>
         <oasis:entry colname="col4">625</oasis:entry>
         <oasis:entry colname="col5">410</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">12</oasis:entry>
         <oasis:entry colname="col3">11</oasis:entry>
         <oasis:entry colname="col4">16</oasis:entry>
         <oasis:entry colname="col5">11</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Min. Throughput at <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> [Gb s<inline-formula><mml:math id="M154" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col2">1.375</oasis:entry>
         <oasis:entry colname="col3">2.150</oasis:entry>
         <oasis:entry colname="col4">2.274</oasis:entry>
         <oasis:entry colname="col5">1.013</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Power Consuption [W]</oasis:entry>
         <oasis:entry colname="col2">0.672</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">1.450</oasis:entry>
         <oasis:entry colname="col5">0.966</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Energy Efficiency [nJ bit<inline-formula><mml:math id="M155" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> iter<inline-formula><mml:math id="M156" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col2">0.04</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.079</oasis:entry>
         <oasis:entry colname="col5">0.17</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e2976">The sub-block CRCs <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the sub-blocks are calculated according to
            <disp-formula id="Ch1.E5" content-type="numbered"><mml:math id="M158" display="block"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mi>S</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>S</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="normal">CRC</mml:mi><mml:mi mathvariant="normal">even</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>S</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="normal">CRC</mml:mi><mml:mi mathvariant="normal">odd</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Dedicated blocks are used to calculate the partial CRCs CRC<inline-formula><mml:math id="M159" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">even</mml:mi></mml:msub></mml:math></inline-formula>
and CRC<inline-formula><mml:math id="M160" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">odd</mml:mi></mml:msub></mml:math></inline-formula> for the hard decision bits <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>S</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and
<inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mi>S</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> respectively. The bit index offset for the <inline-formula><mml:math id="M163" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>th
sub-block is given by <inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>⋅</mml:mo><mml:mi>S</mml:mi></mml:mrow></mml:math></inline-formula> and the function <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> describes the
bit index offset within the sub-blocks according to
            <disp-formula id="Ch1.E6" content-type="numbered"><mml:math id="M166" display="block"><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mtext>for non-interleaved hi</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Π</mml:mi><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">mod</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>S</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mtext>for interleaved hi.</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>
          For efficient implementation, the sub-block internal bit index offset is
broken down into <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">addr</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">24</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="normal">addr</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">mod</mml:mi><mml:mn mathvariant="normal">24</mml:mn></mml:mrow></mml:math></inline-formula>
(Divide by <inline-formula><mml:math id="M168" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> in Fig. <xref ref-type="fig" rid="Ch1.F9"/>). Using these, CRC<inline-formula><mml:math id="M169" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">even</mml:mi></mml:msub></mml:math></inline-formula>
and CRC<inline-formula><mml:math id="M170" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">odd</mml:mi></mml:msub></mml:math></inline-formula> are calculated with a combination of table lookup and
dedicated block.</p>
      <p id="d1e3293">The FC extensions, which are used for the code blocks with <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>, consist of three parts:
<list list-type="bullet"><list-item>
      <p id="d1e3314">Selectively storing the partial CRCs for the critical positions,</p></list-item><list-item>
      <p id="d1e3318">finding the most unreliable bit position and stroring the according partial CRC, and</p></list-item><list-item>
      <p id="d1e3322">calculating the list of partial CRC combinations.</p></list-item></list>
The partial CRCs for the critical positions are selected according to
addr<inline-formula><mml:math id="M172" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">even</mml:mi></mml:msub></mml:math></inline-formula> and stored in registers during the decoding phase. Note,
that none of the partial CRCs for the critical positions are added to the
<inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> registers, which for <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula> serve as registers for the
intermediate CRC result of each of the <inline-formula><mml:math id="M175" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> sub-decoder cores.</p>
      <p id="d1e3370">The most unreliable bit position is selected and stored in parallel to the
decoding, and individually for each sub-decoder core. If the current
LLR-input to the CRC unit is of<?pagebreak page85?> smaller magnitude than the previously stored
one and the bit position is not included in the set of critical positions,
the bit position (calculated from the address), its magnitude and its partial
CRC are stored in registers. The same happens, when the magnitude is
identical, but the bit index is smaller. Lastly, after decoding, the list of
the <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula> different combined sums of partial CRCs for the critical
positions and the position with the minimum LLR is compiled and sent to the
iteration control.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <title>Iteration control</title>
      <p id="d1e3406">The iteration control uses iteration balancing with a configurable budget of
<inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mi>B</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">192</mml:mn></mml:mrow></mml:math></inline-formula> half-iterations (see Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>). For
transport blocks with more than one code block, the budget is reset at the
start of the transport block. Transport blocks consisting of one code block
use a budget of <inline-formula><mml:math id="M178" display="inline"><mml:mn mathvariant="normal">12</mml:mn></mml:math></inline-formula> half-iterations.</p>
      <p id="d1e3430">For all code block sizes, a CRC based early stopping is used. If the output
from the CRC unit evaluates to <inline-formula><mml:math id="M179" display="inline"><mml:mn mathvariant="normal">0</mml:mn></mml:math></inline-formula> after the decoding of a half-iteration has
finished, i.e. the CRC check is passed successfully, the decoding process is
terminated early.</p>
      <p id="d1e3440"><?xmltex \hack{\newpage}?>For code blocks with size <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:mn mathvariant="normal">40</mml:mn><mml:mo>≤</mml:mo><mml:mi>K</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>, however, a list of <inline-formula><mml:math id="M181" display="inline"><mml:mn mathvariant="normal">32</mml:mn></mml:math></inline-formula> CRC
results is passed from each sub-decoder core. The decoding process is then
terminated early if (at least) one decoder core has (at least) one succeeding
CRC in the according list. If there are more than one successful CRCs whithin
a list, the successful CRC with the smallest list index is chosen as the
valid solution. Similarly, if there are more than one sub-decoder cores with
a successful CRC in the same half-iteration, the result of the sub-decoder
with the lower index is chosen as the correct result.</p>
      <p id="d1e3467">From the selected result, a correction pattern is generated and the address
of the weakest LLR position is send to the output of the Turbo-Code decoder.
Thereby, the hard decision bits can be corrected on-the-fly when they are
read from the hard decision memory.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <title>Implementation results</title>
      <p id="d1e3478">The architecture described in Sect. <xref ref-type="sec" rid="Ch1.S4"/> was implemented in
VHDL. Synthesis was done with Synopsys Design Compiler and place and route
with Synopsys IC Compiler on <inline-formula><mml:math id="M182" display="inline"><mml:mn mathvariant="normal">28</mml:mn></mml:math></inline-formula> nm<?pagebreak page86?> Global Foundries FDSOI technology.
Worst case PVT (process/variation/time) conditions were assumed for
synthesis and place and route and the power estimation was carried out the
back-annotated netlist post place and route.</p>
      <p id="d1e3490">Our architecture achieves a maximum frequency of <inline-formula><mml:math id="M183" display="inline"><mml:mn mathvariant="normal">825</mml:mn></mml:math></inline-formula> MHz leading to a
minimum throughput of <inline-formula><mml:math id="M184" display="inline"><mml:mn mathvariant="normal">1.375</mml:mn></mml:math></inline-formula> Gb s<inline-formula><mml:math id="M185" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for the largest LTE code block
size <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6144</mml:mn></mml:mrow></mml:math></inline-formula> and a budget of <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mi>B</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">CB</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">HI</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (see Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>). Power
consumption yields <inline-formula><mml:math id="M188" display="inline"><mml:mn mathvariant="normal">0.672</mml:mn></mml:math></inline-formula> W under nominal conditions (<inline-formula><mml:math id="M189" display="inline"><mml:mn mathvariant="normal">1.0</mml:mn></mml:math></inline-formula> V,
25 <inline-formula><mml:math id="M190" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C), which translates to an energy efficiency of
<inline-formula><mml:math id="M191" display="inline"><mml:mn mathvariant="normal">0.04</mml:mn></mml:math></inline-formula> nJ bit<inline-formula><mml:math id="M192" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> iter<inline-formula><mml:math id="M193" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>.</p>
      <p id="d1e3613">Table <xref ref-type="table" rid="Ch1.T2"/> lists the results of this work along with
other reported LTE Turbo-Code decoder implementations achieving a throughput
of more than <inline-formula><mml:math id="M194" display="inline"><mml:mn mathvariant="normal">1</mml:mn></mml:math></inline-formula> Gbb s<inline-formula><mml:math id="M195" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. However, since these contain results from
different technology nodes, a fair comparison of area and throughput is
difficult because normalization is not straightforward. Thus, the numbers are
given “as is” and the comparison is performed only for gate count and
energy efficiency.</p>
      <p id="d1e3637">Among the other reported implementations, only <xref ref-type="bibr" rid="bib1.bibx14" id="normal.42"/> specifically
aimed for a support of high code rates, while <xref ref-type="bibr" rid="bib1.bibx8" id="normal.43"/> and
<xref ref-type="bibr" rid="bib1.bibx16" id="normal.44"/> aimed at high throughput. The presented Turbo-Code decoder
has the lowest gate count and the best energy efficiency of all listed
implementations.</p>
</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <title>Conclusions</title>
      <p id="d1e3655">The flexibility of todays communication standards with respect to code rates
and code block sizes requires a special consideration of high code rates for
the architecture design. In this paper, we show, how cross-layer
considerations can be used to improve the communication performance of
Turbo-Code decoder hardware architectures beyond the state-of-the-art, which
only considers optimizations on code block level.</p>
      <p id="d1e3658">The fully LTE compatible Turbo-Code decoder architecture we present employs
techniques which use knowledge from the system level and combines them with a
CRC calculation technique on the bit level: The combined improved
flip-and-check/forced symbol decoding for small code blocks and iteration
balancing on transport block level both improve the communication performance
for high code rates. For code block sizes with <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>&lt;</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">248</mml:mn></mml:mrow></mml:math></inline-formula>, combined improved
flip-and-check/forced symbol decoding is used and coding gains of more than
<inline-formula><mml:math id="M197" display="inline"><mml:mn mathvariant="normal">1.5</mml:mn></mml:math></inline-formula> dB are achieved, while on transport block level, the use of iteration
balancing yields coding gains of up to <inline-formula><mml:math id="M198" display="inline"><mml:mn mathvariant="normal">0.4</mml:mn></mml:math></inline-formula> dB for high code rates.</p>
      <p id="d1e3689">To the best of our knowledge, a hardware implementation of these techniques
is demonstrated for the first time. Post place and route results, obtained
for <inline-formula><mml:math id="M199" display="inline"><mml:mn mathvariant="normal">28</mml:mn></mml:math></inline-formula> nm FDSOI technology, show the architecture to be competetive in
terms of throughput (<inline-formula><mml:math id="M200" display="inline"><mml:mn mathvariant="normal">1.375</mml:mn></mml:math></inline-formula> Gb s<inline-formula><mml:math id="M201" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>), area (0.55 mm<inline-formula><mml:math id="M202" display="inline"><mml:msup><mml:mi/><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:math></inline-formula>) and energy
efficiency (<inline-formula><mml:math id="M203" display="inline"><mml:mn mathvariant="normal">0.04</mml:mn></mml:math></inline-formula> nJ bit<inline-formula><mml:math id="M204" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> iter<inline-formula><mml:math id="M205" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>).</p><?xmltex \hack{\newpage}?>
</sec>

      
      </body>
    <back><notes notes-type="dataavailability"><title>Data availability</title>

      <p id="d1e3764">All data are represented in the text and functions. The raw
data is not meaningfully interpretable without the use of special
simulation/synthesis tools which are not publicly available.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e3770">The authors declare that they have no conflict of
interest.</p>
  </notes><notes notes-type="sistatement"><title>Special issue statement</title>

      <p id="d1e3776">This article is part of the special issue “Kleinheubacher
Berichte 2017”. It is a result of the Kleinheubacher Tagung 2017,
Miltenberg, Germany, 25–27 September 2017.</p>
  </notes><ack><title>Acknowledgements</title><p id="d1e3782">We gratefully acknowledge financial support by the EU (project-ID:
760150-EPIC).<?xmltex \hack{\newline}?><?xmltex \hack{\newline}?> Edited by: Jens
Anders<?xmltex \hack{\newline}?> Reviewed by: two anonymous referees</p></ack><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Belfanti et al.(2013)</label><mixed-citation>
Belfanti, S., Roth, C., Gautschi, M., Benkeser, C., and Huang, Q.: A
1Gbps
LTE-advanced turbo-decoder ASIC in 65nm CMOS, in: VLSI Circuits
(VLSIC), 2013 Symposium on,   C284–C285, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Bickerstaff et al.(2003)</label><mixed-citation>Bickerstaff, M., Davis, L., Thomas, C., Garrett, D., and Nicol, C.: A 24Mb/s
Radix-4 LogMAP Turbo Decoder for 3GPP-HSDPA Mobile Wireless, in: Proc. 2003
IEEE International Solid-State Circuits Conference (ISSCC '03),  150–484,
vol. 1,   San Francisco, CA, USA,  <ext-link xlink:href="https://doi.org/10.1109/ISSCC.2003.1234244" ext-link-type="DOI">10.1109/ISSCC.2003.1234244</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Crozier and Gracie(2008)</label><mixed-citation>Crozier, S. and Gracie, K.: Improving the flare performance of turbo codes
using error detection and event flipping, in: 2008 5th International
Symposium on Turbo Codes and Related Topics,   266–271,
<ext-link xlink:href="https://doi.org/10.1109/TURBOCODING.2008.4658709" ext-link-type="DOI">10.1109/TURBOCODING.2008.4658709</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Dahlman et al.(2010)</label><mixed-citation>
Dahlman, E., Parkvall, S., Skold, J., and Beming, P.: 3G evolution: HSPA
and LTE for mobile broadband, Academic press, Oxford, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Dielissen and Huiskens(2000)</label><mixed-citation>
Dielissen, J. and Huiskens, J.: State Vector Reduction for Initialization of
Sliding Windows MAP, in: Proc. 2nd International Symposium on Turbo Codes
&amp;  Related Topics,   Brest, France, 387–390, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Ilnseher et al.(2010)</label><mixed-citation>
Ilnseher, T., May, M., and Wehn, N.: A Multi-Mode 3GPP-LTE/HSDPA
Turbo Decoder, in: Proc. IEEE International Conference on Communication
Systems (ICCS 2010),  336–340, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Ilnseher et al.(2011)</label><mixed-citation>
Ilnseher, T., May, M., and Wehn, N.: A Monolithic LTE Interleaver
Generator for Highly Parallel SMAP Decoders, in: Proc. Tenth Annual
Wireless Telecommunications Symposium (WTS 2011), 2011.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Ilnseher et al.(2012)</label><mixed-citation>
Ilnseher, T., Kienle, F., Weis, C., and Wehn, N.: A 2.12Gbit/s Turbo Code
Decoder for LTE Advanced Base Station Applications, in: 2012 7th
International Symposium on Turbo Codes and Iterative Information Processing
(ISTC) (ISTC 2012), Gothenburg, Sweden, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx9"><?xmltex \def\ref@label{{Li et~al.(2016{\natexlab{a}})}}?><label>Li et al.(2016a)</label><mixed-citation>Li, A., Hailes, P., Maunder, R. G., Al-Hashimi, B. M., and Hanzo, L.: 1.5
Gbit/s FPGA Implementation of a Fully-Parallel Turbo Decoder
Designed for Mission-Critical Machine-Type Communication
Applications, IEEE Access, 4, 5452–5473,
<ext-link xlink:href="https://doi.org/10.1109/ACCESS.2016.2599408" ext-link-type="DOI">10.1109/ACCESS.2016.2599408</ext-link>, 2016a.</mixed-citation></ref>
      <ref id="bib1.bibx10"><?xmltex \def\ref@label{{Li et~al.(2016{\natexlab{b}})}}?><label>Li et al.(2016b)</label><mixed-citation>Li, A., Xiang, L., Chen, T., Maunder, R. G., Al-Hashimi, B. M., and Hanzo,
L.:
VLSI Implementation of Fully Parallel LTE Turbo Decoders, IEEE
Access, 4, 323–346, <ext-link xlink:href="https://doi.org/10.1109/ACCESS.2016.2515719" ext-link-type="DOI">10.1109/ACCESS.2016.2515719</ext-link>, 2016b.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Ould-Cheikh-Mouhamedou and Crozier(2007)</label><mixed-citation>Ould-Cheikh-Mouhamedou, Y. and Crozier, S.: Improving the Error Rate
Performance of Turbo Codes using the Forced Symbol Method, IEEE
Commun. Lett., 11, 616–618, <ext-link xlink:href="https://doi.org/10.1109/LCOMM.2007.070171" ext-link-type="DOI">10.1109/LCOMM.2007.070171</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Cerwall et al.(2016)</label><mixed-citation>Cerwall, P., Carson, S., and Lundvall, A.: Ericsson Mobility Report
November 2016, <uri>https://www.ericsson.com/en/mobility-report/reports</uri> (last access: 15 March 2018),
2016.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Robertson et al.(1995)</label><mixed-citation>
Robertson, P., Villebrun, E., and Hoeher, P.: A Comparison of Optimal and
Sub-Optimal MAP decoding Algorithms Operating in the Log-Domain, in: Proc.
1995 International Conference on Communications (ICC '95),
Seattle, Washington, USA,  1009–1013, 1995.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Roth et al.(2014)</label><mixed-citation>Roth, C., Belfanti, S., Benkeser, C., and Huang, Q.: Efficient Parallel
Turbo-Decoding for High-Throughput Wireless Systems, IEEE
T. Circuits  I, 61, 1824–1835,
<ext-link xlink:href="https://doi.org/10.1109/TCSI.2013.2290831" ext-link-type="DOI">10.1109/TCSI.2013.2290831</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Sattar et al.(2011)</label><mixed-citation>Sattar, Z., Al-Sanie, A. M., and Ould-Cheikh-Mouhamedou, Y.: Enhanced
Forced Symbol Method for improving the error rate performance of turbo
codes, in: Electronics, Communications and Photonics Conference (SIECPC),
2011 Saudi International,   1–5, <ext-link xlink:href="https://doi.org/10.1109/SIECPC.2011.5876993" ext-link-type="DOI">10.1109/SIECPC.2011.5876993</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Shrestha and Paily(2014)</label><mixed-citation>Shrestha, R. and Paily, R. P.: High-Throughput Turbo Decoder With
Parallel Architecture for LTE Wireless Communication Standards,
IEEE T. Circuits  I, 61, 2699–2710,
<ext-link xlink:href="https://doi.org/10.1109/TCSI.2014.2332266" ext-link-type="DOI">10.1109/TCSI.2014.2332266</ext-link>, 2014.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx17"><label>Sun and Cavallaro(2010)</label><mixed-citation>Sun, Y. and Cavallaro, J.: Efficient hardware implementation of a
highly-parallel 3GPP LTE/LTE-advance turbo decoder, Integration VLSI
Journal, 44, 305–315, <ext-link xlink:href="https://doi.org/10.1016/j.vlsi.2010.07.001" ext-link-type="DOI">10.1016/j.vlsi.2010.07.001</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Third Generation Partnership Project(2016)</label><mixed-citation>
Third Generation Partnership Project: LTE; Evolved Universal Terrestrial
Radio Access (E-UTRA); Multiplexing and channel coding (3GPP TS 36.213
version 13.1.0 Release 13), 2016.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Tonnellier et al.(2016)</label><mixed-citation>Tonnellier, T., Leroux, C., Gal, B. L., Gadat, B., Jego, C., and Wambeke,
N. V.: Lowering the Error Floor of Turbo Codes With CRC
Verification, IEEE Wireless Commun. Le., 5, 404–407,
<ext-link xlink:href="https://doi.org/10.1109/LWC.2016.2571283" ext-link-type="DOI">10.1109/LWC.2016.2571283</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Vogt and Finger(2000)</label><mixed-citation>
Vogt, J. and Finger, A.: Improving the Max-Log-MAP Turbo Decoder, IEEE
Electronic Letters, 36, 1937–1939, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Wang et al.(2014)</label><mixed-citation>Wang, G., Shen, H., Sun, Y., Cavallaro, J. R., Vosoughi, A., and Guo, Y.:
Parallel Interleaver Design for a High throughput HSPA+/LTE
Multi-Standard Turbo Decoder, IEEE T. Circuits
I, 61, 1376–1389, <ext-link xlink:href="https://doi.org/10.1109/TCSI.2014.2309810" ext-link-type="DOI">10.1109/TCSI.2014.2309810</ext-link>,
2014.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Weithoffer and Wehn(2015)</label><mixed-citation>Weithoffer, S. and Wehn, N.: Latency reduction for LTE/LTE-A
turbo-code
decoders by on-the-fly calculation of CRC, in: Personal, Indoor, and Mobile
Radio Communications (PIMRC), 2015 IEEE 26th Annual International Symposium
on,  1409–1414, <ext-link xlink:href="https://doi.org/10.1109/PIMRC.2015.7343519" ext-link-type="DOI">10.1109/PIMRC.2015.7343519</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx23"><?xmltex \def\ref@label{{Weithoffer and Wehn(2017{\natexlab{a}})}}?><label>Weithoffer and Wehn(2017a)</label><mixed-citation>
Weithoffer, S. and Wehn, N.: Latency Reduced LTE-A Turbo-Code
Decoding with Iteration Balancing on Transport Block Level, in:
SCC 2017; 11th International ITG Conference on Systems, Communications and
Coding, 2017a.</mixed-citation></ref>
      <ref id="bib1.bibx24"><?xmltex \def\ref@label{{Weithoffer and Wehn(2017{\natexlab{b}})}}?><label>Weithoffer and Wehn(2017b)</label><mixed-citation>
Weithoffer, S. and Wehn, N.: Enhanced decoding for high-rate LTE
Turbo-Codes with short block lengths, in: 2017 IEEE International
Conference on Communications Workshops (ICC), 2017b.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Where to go from here? New cross layer techniques for LTE Turbo-Code decoding at high code rates</article-title-html>
<abstract-html><p>The wide range of code rates and code block sizes supported by todays
wireless communication standards, together with the requirement for a
throughput in the order of Gbps, necessitates sophisticated and highly
parallel channel decoder architectures. Code rates specified in the LTE
standard, which uses Turbo-Codes, range up to <i>r</i> = 0.94 to maximize the
information throughput by transmitting only a minimum amount of parity
information, which negatively impacts the error correcting performance. This
especially holds for highly parallel hardware architectures. Therefore, the
error correcting performance must be traded-off against the degree of
parallel processing.</p><p>State-of-the-art Turbo-Code decoder hardware architectures are optimized on
code block level to alleviate this trade-off. In this paper, we follow a
cross-layer approach by combining system level knowledge about the
rate-matching and the transport block structure in LTE with the bit-level
technique of on-the-fly CRC calculation. Thereby, our proposed Turbo-Code
decoder hardware architecture achieves coding gains of 0.4–1.8&thinsp;dB
compared to state-of-the-art accross a wide range of code block sizes.</p><p>For the fully LTE compatible Turbo-Code decoder, we demonstrate a negligible
hardware overhead and a resulting high area and energy efficiency and give
post place and route synthesis numbers.</p></abstract-html>
<ref-html id="bib1.bib1"><label>Belfanti et al.(2013)</label><mixed-citation>
Belfanti, S., Roth, C., Gautschi, M., Benkeser, C., and Huang, Q.: A
1Gbps
LTE-advanced turbo-decoder ASIC in 65nm CMOS, in: VLSI Circuits
(VLSIC), 2013 Symposium on,   C284–C285, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Bickerstaff et al.(2003)</label><mixed-citation>
Bickerstaff, M., Davis, L., Thomas, C., Garrett, D., and Nicol, C.: A 24Mb/s
Radix-4 LogMAP Turbo Decoder for 3GPP-HSDPA Mobile Wireless, in: Proc. 2003
IEEE International Solid-State Circuits Conference (ISSCC '03),  150–484,
vol. 1,   San Francisco, CA, USA,  <a href="https://doi.org/10.1109/ISSCC.2003.1234244" target="_blank">https://doi.org/10.1109/ISSCC.2003.1234244</a>, 2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Crozier and Gracie(2008)</label><mixed-citation>
Crozier, S. and Gracie, K.: Improving the flare performance of turbo codes
using error detection and event flipping, in: 2008 5th International
Symposium on Turbo Codes and Related Topics,   266–271,
<a href="https://doi.org/10.1109/TURBOCODING.2008.4658709" target="_blank">https://doi.org/10.1109/TURBOCODING.2008.4658709</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Dahlman et al.(2010)</label><mixed-citation>
Dahlman, E., Parkvall, S., Skold, J., and Beming, P.: 3G evolution: HSPA
and LTE for mobile broadband, Academic press, Oxford, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Dielissen and Huiskens(2000)</label><mixed-citation>
Dielissen, J. and Huiskens, J.: State Vector Reduction for Initialization of
Sliding Windows MAP, in: Proc. 2nd International Symposium on Turbo Codes
&amp;  Related Topics,   Brest, France, 387–390, 2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Ilnseher et al.(2010)</label><mixed-citation>
Ilnseher, T., May, M., and Wehn, N.: A Multi-Mode 3GPP-LTE/HSDPA
Turbo Decoder, in: Proc. IEEE International Conference on Communication
Systems (ICCS 2010),  336–340, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Ilnseher et al.(2011)</label><mixed-citation>
Ilnseher, T., May, M., and Wehn, N.: A Monolithic LTE Interleaver
Generator for Highly Parallel SMAP Decoders, in: Proc. Tenth Annual
Wireless Telecommunications Symposium (WTS 2011), 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Ilnseher et al.(2012)</label><mixed-citation>
Ilnseher, T., Kienle, F., Weis, C., and Wehn, N.: A 2.12Gbit/s Turbo Code
Decoder for LTE Advanced Base Station Applications, in: 2012 7th
International Symposium on Turbo Codes and Iterative Information Processing
(ISTC) (ISTC 2012), Gothenburg, Sweden, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Li et al.(2016a)</label><mixed-citation>
Li, A., Hailes, P., Maunder, R. G., Al-Hashimi, B. M., and Hanzo, L.: 1.5
Gbit/s FPGA Implementation of a Fully-Parallel Turbo Decoder
Designed for Mission-Critical Machine-Type Communication
Applications, IEEE Access, 4, 5452–5473,
<a href="https://doi.org/10.1109/ACCESS.2016.2599408" target="_blank">https://doi.org/10.1109/ACCESS.2016.2599408</a>, 2016a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Li et al.(2016b)</label><mixed-citation>
Li, A., Xiang, L., Chen, T., Maunder, R. G., Al-Hashimi, B. M., and Hanzo,
L.:
VLSI Implementation of Fully Parallel LTE Turbo Decoders, IEEE
Access, 4, 323–346, <a href="https://doi.org/10.1109/ACCESS.2016.2515719" target="_blank">https://doi.org/10.1109/ACCESS.2016.2515719</a>, 2016b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Ould-Cheikh-Mouhamedou and Crozier(2007)</label><mixed-citation>
Ould-Cheikh-Mouhamedou, Y. and Crozier, S.: Improving the Error Rate
Performance of Turbo Codes using the Forced Symbol Method, IEEE
Commun. Lett., 11, 616–618, <a href="https://doi.org/10.1109/LCOMM.2007.070171" target="_blank">https://doi.org/10.1109/LCOMM.2007.070171</a>, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Cerwall et al.(2016)</label><mixed-citation>
Cerwall, P., Carson, S., and Lundvall, A.: Ericsson Mobility Report
November 2016, <a href="https://www.ericsson.com/en/mobility-report/reports" target="_blank">https://www.ericsson.com/en/mobility-report/reports</a> (last access: 15 March 2018),
2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Robertson et al.(1995)</label><mixed-citation>
Robertson, P., Villebrun, E., and Hoeher, P.: A Comparison of Optimal and
Sub-Optimal MAP decoding Algorithms Operating in the Log-Domain, in: Proc.
1995 International Conference on Communications (ICC '95),
Seattle, Washington, USA,  1009–1013, 1995.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Roth et al.(2014)</label><mixed-citation>
Roth, C., Belfanti, S., Benkeser, C., and Huang, Q.: Efficient Parallel
Turbo-Decoding for High-Throughput Wireless Systems, IEEE
T. Circuits  I, 61, 1824–1835,
<a href="https://doi.org/10.1109/TCSI.2013.2290831" target="_blank">https://doi.org/10.1109/TCSI.2013.2290831</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Sattar et al.(2011)</label><mixed-citation>
Sattar, Z., Al-Sanie, A. M., and Ould-Cheikh-Mouhamedou, Y.: Enhanced
Forced Symbol Method for improving the error rate performance of turbo
codes, in: Electronics, Communications and Photonics Conference (SIECPC),
2011 Saudi International,   1–5, <a href="https://doi.org/10.1109/SIECPC.2011.5876993" target="_blank">https://doi.org/10.1109/SIECPC.2011.5876993</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Shrestha and Paily(2014)</label><mixed-citation>
Shrestha, R. and Paily, R. P.: High-Throughput Turbo Decoder With
Parallel Architecture for LTE Wireless Communication Standards,
IEEE T. Circuits  I, 61, 2699–2710,
<a href="https://doi.org/10.1109/TCSI.2014.2332266" target="_blank">https://doi.org/10.1109/TCSI.2014.2332266</a>, 2014.

</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Sun and Cavallaro(2010)</label><mixed-citation>
Sun, Y. and Cavallaro, J.: Efficient hardware implementation of a
highly-parallel 3GPP LTE/LTE-advance turbo decoder, Integration VLSI
Journal, 44, 305–315, <a href="https://doi.org/10.1016/j.vlsi.2010.07.001" target="_blank">https://doi.org/10.1016/j.vlsi.2010.07.001</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Third Generation Partnership Project(2016)</label><mixed-citation>
Third Generation Partnership Project: LTE; Evolved Universal Terrestrial
Radio Access (E-UTRA); Multiplexing and channel coding (3GPP TS 36.213
version 13.1.0 Release 13), 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Tonnellier et al.(2016)</label><mixed-citation>
Tonnellier, T., Leroux, C., Gal, B. L., Gadat, B., Jego, C., and Wambeke,
N. V.: Lowering the Error Floor of Turbo Codes With CRC
Verification, IEEE Wireless Commun. Le., 5, 404–407,
<a href="https://doi.org/10.1109/LWC.2016.2571283" target="_blank">https://doi.org/10.1109/LWC.2016.2571283</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Vogt and Finger(2000)</label><mixed-citation>
Vogt, J. and Finger, A.: Improving the Max-Log-MAP Turbo Decoder, IEEE
Electronic Letters, 36, 1937–1939, 2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Wang et al.(2014)</label><mixed-citation>
Wang, G., Shen, H., Sun, Y., Cavallaro, J. R., Vosoughi, A., and Guo, Y.:
Parallel Interleaver Design for a High throughput HSPA+/LTE
Multi-Standard Turbo Decoder, IEEE T. Circuits
I, 61, 1376–1389, <a href="https://doi.org/10.1109/TCSI.2014.2309810" target="_blank">https://doi.org/10.1109/TCSI.2014.2309810</a>,
2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Weithoffer and Wehn(2015)</label><mixed-citation>
Weithoffer, S. and Wehn, N.: Latency reduction for LTE/LTE-A
turbo-code
decoders by on-the-fly calculation of CRC, in: Personal, Indoor, and Mobile
Radio Communications (PIMRC), 2015 IEEE 26th Annual International Symposium
on,  1409–1414, <a href="https://doi.org/10.1109/PIMRC.2015.7343519" target="_blank">https://doi.org/10.1109/PIMRC.2015.7343519</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Weithoffer and Wehn(2017a)</label><mixed-citation>
Weithoffer, S. and Wehn, N.: Latency Reduced LTE-A Turbo-Code
Decoding with Iteration Balancing on Transport Block Level, in:
SCC 2017; 11th International ITG Conference on Systems, Communications and
Coding, 2017a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Weithoffer and Wehn(2017b)</label><mixed-citation>
Weithoffer, S. and Wehn, N.: Enhanced decoding for high-rate LTE
Turbo-Codes with short block lengths, in: 2017 IEEE International
Conference on Communications Workshops (ICC), 2017b.
</mixed-citation></ref-html>--></article>
