<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Software Models for Investigation of Turbo-Product- codes Decoding</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oleksandr Kylymovych</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Petro Mohyla Black Sea National University</institution>
          ,
          <addr-line>10. 68 Desantnykiv str., Mykolaiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>0000</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>In the following paper we provide analysis on testing procedure and development of software models, and application architecture for investigation of error-correcting codes' parameters and decoding algorithms. The proposed models can be applied for the development of software for decoding Turbo-Product Codes (TPC). They allow simplifying development process and retrieve universal solution for TPC investigation. The models are described in the Unified Modeling Language (UML) and follow design pattern recommendations. They can be used for software implementation in various programming languages that support object-oriented model. Heatmap visualization tool is supposed to be the main part for visual investigation of the decoding process. In this work, we propose metrics for heatmap organization and explained behavior of the cells to deliver comprehensible presentation of the message state during decoding process. The combination of metric and heatmap component provides effective way to observe impact of each decoding algorithm element on the process and gives abundant information for comparative analysis about algorithm improvements.</p>
      </abstract>
      <kwd-group>
        <kwd>Turbo-Product code</kwd>
        <kwd>software model</kwd>
        <kwd>decoding</kwd>
        <kwd>metric</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Telecommunication systems are complex systems that includes various set of
components on the different levels. One of the substantial parts is coding systems where
errorcorrecting codes (ECC) are heavily utilized [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4">1-4</xref>
        ].
      </p>
      <p>The problem of investigation of ECCs’ parameters is one of the most important
issues to achieve better performance of the system. Different codes reveal different
characteristics under changeable conditions. Even slight optimization might be critical for
the realization of the final system. It also should be mentioned that it requires much
time to meticulously check combination of parameters of the code, compare different
codes with each other, and select the most suitable code according to the expected
properties.</p>
      <p>The first testing stage is usually performed on software level as it takes minimum
time to verify proof-of-concept. Testing on hardware level implies actual
implementation of the device that can be insufficient. However, available software solutions either
provide only limited functionality without possibility to change coding parameters or
requires payment for the software usage. Consequently, there is a lack of software that
provide flexibility in configuration of the code and decoding algorithms.</p>
      <p>Decoding algorithms are the cornerstone of the coding level in telecommunication
systems as throughput as well as complexity are directly connected with them. Their
implementation requires execution immense number of computational operations.</p>
      <p>Testing of the ECC is concerned with processing tremendous amount of data. Input
message, intermediate results, decoding results, computations performed according to
the algorithm form the list of the most important information required to investigate
decoding performance. It is important to observe transitions inside the message and
conclude how each part of the algorithm makes impact on the decoding process and
whether it can be improved.</p>
      <p>In this paper, we propose architecture and models for development of software that
assists in investigation of ECC and respective decoding methods. The proposed
software models are supposed to be extensible in terms of adding new codes or decoding
algorithms. The software is designed to work with block ECC but can be improved by
adding support of convolutional codes.
2</p>
      <p>
        Analysis of Scientific Sources and Software Solutions
Software decoding of ECC is represented by several well-known software packages
and libraries [
        <xref ref-type="bibr" rid="ref5 ref6 ref7 ref8 ref9">5-9</xref>
        ]. In general, they contain several additional components besides
decoding process itself. Typically, encoders, channel models, various modulation
schemes are the part of the libraries to represent all stages of data transmission over
channel.
      </p>
      <p>
        Before considering ECC software itself, it is worth to mention that various ECCs are
employed in the modern electronic applications. Two most popular fields are data
transmission and data storage. However, some of the codes are preferable due to the
characteristics they demonstrate. The most important parameter of ECC is error-correcting
ability that strongly depends on the procedure of decoding and data representation.
Another significant parameter is throughput. Once again, typically, it depends on the
number of operations in the decoding algorithm, their complexity, and suitability for
parallelization. The following group of the ECCs stands out among the others according to
their involvement in different technologies and their main properties:
 Low-Density Parity Check (LDPC) codes (have high correction ability, suitable for
complex systems) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ];
 Polar codes (claimed to be the best ECC, require further investigation);
 Hamming codes (simple ECC that is a basis for Turbo-Product codes);
 Reed-Solomon codes;
 Turbo-Product codes (TPC; constructed from Hamming codes or other ECC to
achieve better performance) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        In this work, we are investigating software development for TPC-decoding system.
Therefore, it is worth mentioning that many decoding algorithms can be applied to
process TPC. Chase, Chase-Pyndiah [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], syndrome decoding, etc. The decision on the
algorithm choice is actually a trade-off between computational complexity and correction
ability. This is the reason why some of the algorithms are not feasible for concrete
systems as they are hard to implement.
      </p>
      <p>
        Matlab [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] system includes Communication toolbox that implements full stack of
the technologies that work in the telecommunication field. It contains abundant amount
of models, classes, and functions that greatly simplifies research on almost every topic
connected with data transmission. However, Matlab is a product that distributes under
commercial license. Another important drawback of the Matlab is the trade-off of ease
of use and speed of the test execution, which can be significant factor in case of very
large arrays of data to process on the test stage.
      </p>
      <p>
        A Fast Forward Error Correction Toolbox or AFF3CT [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is software library and
command-line application for investigation properties of the most common codes and
respective decoding methods. The project is open-source and available on GitHub. This
toolset provide exhaustive information on the results of the decoding. It greatly
simplifies investigation of the code and evaluation of its performance. However, AFF3CT
have no options for analysis of the intermediate results during decoding.
      </p>
      <p>
        Other software libraries for ECC investigation like [
        <xref ref-type="bibr" rid="ref7 ref8 ref9">7-9</xref>
        ] provide abundant set of
tools for modeling decoding process. Each of the libraries has specific strong points
and brings many advantages for the developer. However, decoding algorithm in this
libraries does not suppose to return intermediate decoding results. Another drawback is
complexity of bringing your own algorithm into work with the libraries.
      </p>
      <p>
        Companies specialized in ECC-development provide their own software and
hardware implementation [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. They also provide comprehensive analysis on the results
that can be achieved using proposed tools. However, this kind of support is limited
within defined range of tools flexibility. Customization and adoption to the specific and
changing demands falls short for these solutions. Therefore, software that provides
higher level of flexibility for investigation and searching for optimal solution is actual
from both scientific and industry point of view.
      </p>
      <p>
        The codes can be applied in various industrial application [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] for improvement of
communication part of the system and remote control of the device in case of custom
communication protocol usage.
      </p>
      <p>The vital point for decoding software is comprehensible visual presentation of data.
Heatmap is a special type of diagram that is very convenient for visual representation
of quantitative data in form of matrix. Because of that factor, we selected heatmap as
main component for data presentation.</p>
      <p>
        In the paper we investigate modelling of the decoding process for implementation in
software, provide software models for the further software realization. We also provide
detail on data presentation in software in the form of heatmap. The established software
models are intended to be used in the software development process for investigation
of TPC-decoding and other ECCs. We apply experience and results attained in the work
[
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12-14</xref>
        ] for the following investigation.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Main Part</title>
      <p>Typically, the following stages are an obligatory to model signal transmission over
network:
1. Encoding.
2. Transmission over the noise channel.
3. Decoding received message.</p>
      <p>Depending on the detalization level of a system, a few additional stages (scrambling,
interleaving, modulation, manipulation, etc.). However, those abovementioned three
stages are the basis for investigation.</p>
      <p>At the encoding stage, the input message is processed with encoding algorithm
(multiplication of each component on corresponding generation matrix in case of TPC).
Consequently, the message is altered with new information that assists in error
correction at the decoding stage. The message for transmission at this stage is considered as
a set of binary data.</p>
      <p>Data transmission stage is intended to model influence of noise to the signal. As a
result of this stage, errors appear in the transmitted signal. Moreover, due to
performance reasons, each bit in the data is presented as soft value with limited quantization
(for frugal memory consumption), e.g. it can be range [-3; 3] for case of 3-bit
representation.</p>
      <p>Decoding stage plays utmost important role in the system. It performs processing on
the message according to the decoding algorithm and outputs actual data for further
usage once again in the form of binary message without redundancy data. In the most
cases, decoding algorithm is applied several time to the message. Number of iteration
is restricted. The results of each iteration are featured by the message state and decoding
algorithm’s parameters. Additionally, knowledge of the initial message implies that we
can gain an advantage of directly comparing input and output of the system.</p>
      <p>After the performed analysis, we can identify main entities for the software decoding
system:
 message;
 decoding results;
 decoding algorithm;
 decoding system.</p>
      <p>First, we propose the following workflow for researcher who works with software. The
workflow is illustrated in Fig. 1 in form of Unified Modelling Language (UML) activity
diagram.
The user sets decoding parameters and launches decoding process. When the results of
the decoding are available, analysis stage begins. That actually means work with user
interface and finish of the decoding process itself. However, single run of the main
cycle gives results only for one code. Comparison of several algorithms is more
effective procedure for investigation and selection of better approach. One of peculiarities
of TPC is that single decoding iteration is divided on two half-iterations. First, the
message is processed in one dimension (e.g. rows) and then takes place processing in other
dimension. Row decoding affects column decoding and column decoding affects row
decoding. Thus, it is necessary to grant user option to store results of both half-iterations
(one of them matches final iteration results).</p>
      <p>Let us further introduce class infrastructure for the software that is illustrated in Fig.
2. The class with corresponding name represents decoding algorithm. It is an abstract
class that serves as a parent class for other classes that actually provide algorithm
implementation. Hence, presence of multiple algorithm is supposed by the system design.
It follows instruction for the Strategy design pattern which means that user can easily
switch from one decoding algorithm to another. Regarding benefits of class
parametrization, decoding algorithm classes may also be parameterized. In this case, only single
decode method should have type parameter. However, due to the extension reasons,
new method or even whole class may become parameterized.
Another important peculiarity of the TPC-decoding is that hardware implementation is
performed for the algorithms that make use of limited precision in number
representation. Typically, operations with integer operands are more preferable. Thus, it is
important to observe results yielded by algorithm with different precision in number
representation. For that purpose, decoding classes may be parameterized with type for
number representation.</p>
      <p>From this point of view, we can deduce that several instances of the same class can
be present with different type parameter. Creation of the corresponding class instances
is a task instance of class that implements Factory design pattern. As the user selects
new decoding algorithm to explore, the appropriate call is directed to factory objected.
However, it will not be efficient usage of resources if the requested instances has been
created previously. Therefore, the factory object should also manage internal algorithm
pool object where they are stored. If the requested object is available in the pool, it is
passed back to the caller. Otherwise, factory creates it and stores it into the pool
immediately. This part of the software model follows instructions of the Object pool design
pattern. The corresponding class diagram is demonstrated in Fig. 3.
Several options are available to retrieve data for testing:
1. Actual channel data stored in the file. This is the simplest variant, as it only requires
reading data from the file. It is also a convenient way to check performance two
different decoders on the same data and compare their performance with each other.
2. Simulate transmission process over the noisy channel. This option is much closer to
the real world functioning of the system. It begins with reading data to encode from
file or generating random data for this purpose. The data are altered “on the fly”
according to noisy channel’s parameters. More computational operations are
required for the simulation then simple reading from file.</p>
      <p>
        Thus, we can identify more artifacts for the application. The first one is data loader that
executes load of data from the specified source. The loader is aware that there are two
cases for reading data (raw not encoded data, transmitted data). The second artifact is a
channel simulator. Main responsibility of the simulator is to apply noise or other
channel impact to the encoded data. The relations between mentioned classes are depicted
in Fig. 4.
One of the most significant features of decoding software is possibility to analyze
decoding results and compare outputs of different algorithms. To collect information on
the decoding results we propose usage of an Observer pattern. Classes connected with
decoding should be able to issue notification about the end of each half-iteration and
expose necessary information to the interested observing instances. As notification is
sent, observer retrieves information and stores it into the list. Each data chunk can be
wrapped into instance of class for storing data to distinguish this information from the
original message. Additionally, it provides comprehensible way to control change
history of the message under processing. This option is very helpful for user interface
implementation because demonstration of changes requires simple traversing over the
list with stored instances. The classes for implementation of result storage and review
functions are shown in Fig. 5.
All the models proposed in this paper have been developed using Bouml modeling
software [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>Visual data representation of the decoding results is an actual feature for the
decoding software. In opposite to well-known metrics for ECC system efficiency, it gives
more details on how decoding algorithm deals with message information. Such
lowlevel information also provides an opportunity to optimize algorithm by tuning
parameters or specific decoding operations. As encoded message for TPC is a matrix of
numbers, it is handful to represent it in form of heatmap. Each cell in the heatmap
corresponds to the actual value in the message. Because heatmap applies color to the values,
it is easier for the user to identify error patterns in the message, overview general
message state, etc. Heatmap is also an effective tool to observe changes happened on the
different iterations. As has been stated before, heatmap assigns specific color to each
value. Straightforward usage of the numeric values to form color map gives no
additional information and is hard to analyze. This implies that additional metric is
necessary to form heatmap. Providing that initial message is known, we can infer message
state at the very start of transmission. We assume that this is the desired state for output
message. The numerical value si, j corresponding to each bit takes either maximum
value max s or minimum value mins in the interval [ max s , mins ] in the start
message. Value di, j in the decoded message takes value from the very same interval [
max s , mins ] but it does not necessarily need to be equal to max s or mins . Being
aware of two values the for bit representation, we can devise metric that expresses
difference between desired and actual values
mi, j | si, j  di, j | .
(1)
The metric can have only non-negative values. The lower metric, the better value di, j
matches to the desired value. In fact, when mi, j  0 it means that decoding converged
i, j bit to the correct value. The maximum value that can be assigned to the metric is
if mmax is even and
if mmax is odd.</p>
      <p>hi, j  11sign(di, j )
bi, j 
mmax</p>
      <p>2
bi, j 
mmax  1</p>
      <p>2</p>
      <p>It clearly states that the sign in the decoded value di, j has been changed due to large
bias value bi, j . Sign transition in the heatmap should be marked by color for ease of
visual interpretation.</p>
      <p>Besides metric for each bit in the message, it is also convenient to have an aggregate
metric that represents state of row or column of the message. Let us use Tri to denote
aggregate metric for i row and Tcj to denote metric for j column. Their values are
calculated as</p>
      <p>Tri  bi, j ,</p>
      <p>j
mmax | max s |  | mins | .</p>
      <p>If some bit position gets mmax metric value, that identifies decoding for bit finished
with absolutely wrong value. Let us assume that final binary decoded value is identified
according to the sign of the associated numerical value, e.g.
where sign – function that returns -1 or +1 depending on sign of input parameter. Small
bias from the target value does not end up with wrong decision about binary value in
this case. Thus, on a heatmap we should clearly distinguish erroneous positions from
correct ones. In most cases, we can identify error if the following condition is satisfied
(2)
(3)
(4)
(5)
(6)
Obviously, minimum value for the metrics is zero. The maximum value reaches mmax
multiplied by the number of elements in the corresponding dimension. Therefore, range
of possible values for the metrics is much larger than for individual bit. The color scale
for aggregate metrics presentation should not contradict with general style of heatmap.</p>
      <p>Regarding colors selection for heatmap, we may conclude with next statement. Two
colors have to be selected to denote absence of bias and maximum level of bias (e.g.
green and red are an essential choice). Errors in the decoded message should be easily
recognizable. That means that transition from acceptable bias value (no error) to
erroneous one in context of color presentation should not be smooth but rather stiff.</p>
      <p>
        In the Fig. 6 illustration of the proposed approach to visual organization of heatmap
is shown for TPC constructed of (7, 4) Hamming codes with di, j takes value within
range [
        <xref ref-type="bibr" rid="ref1">-2, 1</xref>
        ].
      </p>
      <p>1
0
0
0
2
3
3
0
0
1
1
1
1
1
0
0
0
1
2
3
3
0
0
0
1
0
1
1
2
0
0
0
1
1
1
0
0
1
0
0
1
1
0
0
1
1
1
1
1
Each cell contains its metric mi, j in the center. The higher value of metric, the darker
background color. We can easily identify erroneous bits by the background. This
example uses short codes. In case of long codes, it is feasible to make optional metrics
display inside the cell.</p>
      <p>
        The system has been implemented using JavaScript programming language and
React library [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. The developed application can run on desktop computers in browser as
well as on mobile device. The application uses heatmap component compatible with
React library. We selected sample message for the code with 16 rows and 16 columns
and with quantization in range [
        <xref ref-type="bibr" rid="ref7">-7, 7</xref>
        ] In the Fig. 7, results of decoding for first and last
iterations are presented.
The presented samples demonstrates that after the first iteration message contained
errors (positions with metric values equal to 9). However, the result contains only zeros
in all positions which means that all errors have been corrected. The heatmap
component displays color information as shades of blue color. Hence, the more intense color,
the bigger distance to the correct value.
      </p>
      <p>The authors are looking forward to cooperation with other researchers and
developers who are interested in the topic. We encourage everyone to contact us so the access
to the code repository can be provided freely. Moreover, after investigation of the
applicable software licenses for open-source projects and finalization of the application
code, the decision about moving to the public domain is going to be made to
disseminate findings of the presented paper and to facilitate further developments.
4</p>
    </sec>
    <sec id="sec-3">
      <title>Conclusions</title>
      <p>In the current paper, we present developed software models for ECC software design,
specifically for software that deals with TPC. The software models leverage best
practices of object-oriented programming to provide flexible solution for TPC investigation.
The main advantage of the proposed model is that they take into consideration
peculiarities of TPC-decoding process and support different option for accessing data on
every stage of the decoding, comparing different algorithms, and different numerical
data representation. The models represent workflow of the user actions, main classes
that forms the whole decoding system, and supportive classes that are responsible for
data loading, presentation, communication between classes, etc. The models can be
used as a fundamental part for decoding software and have capability for further
extension.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Tomlinson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tjhai</surname>
            ,
            <given-names>C.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ambroze</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ahmed</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jibril</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>: rror-Correction Coding</article-title>
          and Decoding: Bounds, Codes, Decoders,
          <source>Analysis and Applications</source>
          . Springer, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Gallager</surname>
          </string-name>
          , R.:
          <source>Low Density Parity Check Codes</source>
          . Cambridge, Mass (
          <year>1963</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Berrou</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Glavieux</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thitimajshima</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Near Shannon limit error-correcting coding and decoding: Turbo-codes. 1</article-title>
          . In Proceedings of ICC '
          <fpage>93</fpage>
          - IEEE International Conference on Communications, pp.
          <fpage>1064</fpage>
          -
          <lpage>1070</lpage>
          , vol.
          <volume>2</volume>
          , IEEE, Geneva, Switzerland (
          <year>1993</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Pyndiah</surname>
          </string-name>
          , R.:
          <article-title>Near-optimum decoding of product codes: block turbo codes</article-title>
          .
          <source>IEEE Transactions on Communications</source>
          ,
          <volume>46</volume>
          (
          <issue>8</issue>
          ), pp.
          <fpage>1003</fpage>
          -
          <lpage>1010</lpage>
          (
          <year>1998</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Matlab - MathWorks - Matlab</surname>
          </string-name>
          &amp; Simulink, https://www.mathworks.com/products/matlab.html,
          <source>last accessed</source>
          <year>2019</year>
          /02/02.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>AFF3CT - A Fast Forward Error Correction Toolbox</surname>
          </string-name>
          , https://aff3ct.github.io/,
          <source>last accessed</source>
          <year>2019</year>
          /02/04.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Forward</given-names>
            <surname>Error</surname>
          </string-name>
          <article-title>Correction (fec</article-title>
          ), http://liquidsdr.org/doc/fec/,
          <source>last accessed</source>
          <year>2019</year>
          /02/05.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. Github, https://github.com/simonyipeter/Arduino-FEC,
          <source>last accessed</source>
          <year>2019</year>
          /02/03.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Forward</given-names>
            <surname>Error Correcting Codes</surname>
          </string-name>
          , http://www.ka9q.net/code/fec/,
          <source>last accessed</source>
          <year>2019</year>
          /02/06.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. AHA Products Group, http://www.aha.com/,
          <source>last accessed</source>
          <year>2019</year>
          /02/06.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kondratenko</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gerasin</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Topalov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A simulation model for robot's slip displacement sensors</article-title>
          .
          <source>International Journal of Computing</source>
          , Vol.
          <volume>15</volume>
          , Issue 4, pp.
          <fpage>224</fpage>
          -
          <lpage>236</lpage>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Krainyk</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Musiyenko</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davydenko</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Hardware-oriented turbo-product codes decoder architecture</article-title>
          .
          <source>In Proceedings of 2017 9th IEEE International Conference on Intelligent Data Acquisition and Advanced Computing Systems: Technology and Applications (IDAACS)</source>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>154</lpage>
          , vol.
          <volume>1</volume>
          , Bucharest, Romania (
          <year>2017</year>
          ). DOI:
          <volume>10</volume>
          .1109/IDAACS.
          <year>2017</year>
          .8095067
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Krainyk</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Musiyenko</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Low-complexity high-speed soft-hard decoding for turbo-product codes</article-title>
          .
          <source>In Proceedings of 2017 IEEE 37th International Conference on Electronics and Nanotechnology (ELNANO)</source>
          , pp.
          <fpage>471</fpage>
          -
          <lpage>474</lpage>
          , Kyiv, Ukraine (
          <year>2017</year>
          ). DOI:
          <volume>10</volume>
          .1109/ELNANO.
          <year>2017</year>
          .7939798
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Musiyenko</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krainyk</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Denysov</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Reconfigurable decoder for irregular random low density parity check matrix based on FPGA</article-title>
          .
          <source>In Proceedings of 2015 IEEE 35th International Conference on Electronics and Nanotechnology (ELNANO)</source>
          , pp.
          <fpage>498</fpage>
          -
          <lpage>503</lpage>
          , Kyiv, Ukraine (
          <year>2015</year>
          ). DOI:
          <volume>10</volume>
          .1109/ELNANO.
          <year>2015</year>
          .7146937
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <article-title>BOUML - a free UML tool box</article-title>
          , https://www.bouml.fr/,
          <source>last accessed</source>
          <year>2019</year>
          /02/09.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <article-title>React - A JavaScript library for building user interfaces</article-title>
          , https://reactjs.org/,
          <source>last accessed</source>
          <year>2019</year>
          /02/07.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>