I.6 LDPC coder/decoder FPGA IP Core - IPrium
I.6 LDPC coder/decoder FPGA IP Core - IPrium
I.6 LDPC coder/decoder FPGA IP Core - IPrium
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
Short Description
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
Release<br />
Information<br />
Name<br />
Version 1.0<br />
I6-<strong>LDPC</strong>-CODEC<br />
Build date 2013.04<br />
Ordering code<br />
ip-i6-ldpc-codec<br />
Features<br />
The <strong>IP</strong> core implements the <strong>LDPC</strong> (32640, 30592) forward error<br />
correction algorithm for optical lines and is fully compatible with<br />
the recommendation:<br />
1. ITU-T G.975.1 (super-FEC for 2.5G, 10G and 40G optical<br />
networks).<br />
Deliverables<br />
<strong>IP</strong> <strong>Core</strong> Structure<br />
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> includes:<br />
• VQM/NGC/EDIF netlists for Altera Quartus II, Xilinx ISE, Lattice<br />
Diamond or Microsemi (Actel) Libero SoC;<br />
• <strong>IP</strong> <strong>Core</strong> testbench scripts;<br />
• Design examples for Altera, Xilinx, Lattice, and Microsemi<br />
(Actel) evaluation boards.<br />
Figure 1 shows <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> block diagram.<br />
Pre-slope<br />
En<strong>coder</strong><br />
Slope En<strong>coder</strong><br />
Bit Mapping<br />
Figure 1. <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> block diagram<br />
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> consists of a Pre-slope En<strong>coder</strong> module (Pre-slope<br />
En<strong>coder</strong>), Slope En<strong>coder</strong> module (Slope En<strong>coder</strong>) and Bit Mapping<br />
module (Bit Mapping).<br />
Figure 2 shows a block diagram of one <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
decoding iteration.<br />
Bit Demapping <strong>LDPC</strong> De<strong>coder</strong> Bit Mapping<br />
Figure 2. Block diagram of one <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> iteration<br />
2
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
The <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> architecture makes it possible to specify a<br />
random number of decoding iterations. A decoding iteration consists<br />
of a Bit Demapping module (Bit Demapping), <strong>LDPC</strong> De<strong>coder</strong> module<br />
(<strong>LDPC</strong> De<strong>coder</strong>) and Bit Mapping module (Bit Mapping).<br />
Port Map<br />
Figure 3 shows a graphic symbol and Table 1 describes the ports of<br />
the <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> <strong>IP</strong> <strong>Core</strong>.<br />
I6<strong>LDPC</strong>ENC<br />
iclk<br />
idat<br />
irst<br />
odat<br />
osop<br />
oval<br />
isop<br />
ival<br />
Figure 3. <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> port map<br />
Table 1. <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> port map description<br />
Port Direction Description<br />
iclk input system clock<br />
idat input input (information) data<br />
irst input synchronous reset<br />
isop input start of information packet marker<br />
ival input input data valid<br />
odat output output (encoded) data<br />
osop output start of encoded packet marker<br />
oval output output data valid<br />
Figure 4 shows a graphic symbol and Table 2 gives a description of<br />
<strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> ports.<br />
3
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
I6<strong>LDPC</strong>DEC<br />
iclk<br />
idat<br />
imode<br />
irst<br />
isop<br />
ival<br />
odat<br />
onumerr0<br />
onumerr_val0<br />
onumerr1<br />
onumerr_val1<br />
osop<br />
osync<br />
oval<br />
Figure 4. <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> port map<br />
Table 2. <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> port map description<br />
Port Direction Description<br />
iclk input system clock<br />
idat input input (encoded) data<br />
imode input decoded data output mode:<br />
0 - without correction (bypass)<br />
1 - with error correction<br />
irst input synchronous reset<br />
isop input start of coded packet marker<br />
ival input input data valid<br />
odat output output (decoded) data<br />
onumerr0 output number of input blocks with errors<br />
onumerr_val0 output onumerr0 valid<br />
onumerr1 output number of output blocks with errors<br />
onumerr_val1 output onumerr1 valid<br />
osop output start of decoded packet marker<br />
osync output correct isop with FAS input<br />
oval output output data valid<br />
4
<strong>IP</strong> <strong>Core</strong> Description<br />
<strong>IP</strong> <strong>Core</strong> Operation<br />
Description<br />
The <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> is in full accordance with<br />
Recommendation ITU-T G.975.1 (02/2004) "Appendix I. Super FEC<br />
schemes. <strong>I.6</strong> <strong>LDPC</strong> super FEC code". The <strong>IP</strong> <strong>Core</strong> is designed for<br />
operation with the OTN OTU2 linear stream at 10.7 Gbps in fiber<br />
optic communication systems. The <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong><br />
<strong>Core</strong> can be used in both continuous and burst modes.<br />
Key features of the <strong>IP</strong> <strong>Core</strong>:<br />
1. exact accordance with Recommendation ITU-T G.975.1 <strong>I.6</strong>;<br />
2. synchronous, high-speed decoding algorithm;<br />
3. output ports of error statistics (input and output errors);<br />
4. encoding delay is 1,020 cycles (6.08 us);<br />
5. decoding delay of 12 iterations (12 slope decoding) is 2,009<br />
cycles (12.028 us).<br />
5
<strong>IP</strong> <strong>Core</strong> Parameters<br />
<strong>IP</strong> <strong>Core</strong><br />
Parameters<br />
Table 3 describes <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> parameters,<br />
which must be set before synthesis.<br />
Table 3. <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> parameters description<br />
Parameter<br />
ITER<br />
Description<br />
number of decoding iterations<br />
s1, ..., s7 slope coefficients<br />
Example:<br />
• ITER = 5 means five iterative decoding iterations:<br />
idat - dec1 - dec2 - dec3 - dec4 - dec5 - odat;<br />
Performance and<br />
Resource<br />
Utilization<br />
Table 4 summarizes the <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> measurement<br />
results.<br />
Table 4. <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> performance<br />
En<strong>coder</strong><br />
parameters<br />
<strong>FPGA</strong> type<br />
Resource<br />
Speed grade, maximal system frequency<br />
10G mode<br />
Altera Cyclone IV EP4CE115<br />
-- LEs<br />
-- M9K<br />
-9L, Fmax -8, Fmax -7, Fmax<br />
-- -- --<br />
10G mode<br />
Xilinx Virtex-6 XC6VLX240T<br />
-- Slices<br />
-- 18K RAM blocks<br />
-1, Fmax -2, Fmax -3, Fmax<br />
-- -- --<br />
Table 5 summarizes the <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong> measurement<br />
results.<br />
6
<strong>IP</strong> <strong>Core</strong> Parameters<br />
Table 5. <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong> performance<br />
De<strong>coder</strong><br />
parameters<br />
<strong>FPGA</strong> type<br />
Resource<br />
Speed grade, maximal system frequency<br />
12 iterations Altera Cyclone IV EP4CE115<br />
39,995 LEs<br />
36 M9K<br />
-9L, Fmax -8, Fmax -7, Fmax<br />
82.65 MHz<br />
5.3 Gbps<br />
109.9 MHz<br />
7.0 Gbps<br />
125.71<br />
MHz<br />
8.0 Gbps<br />
10G mode<br />
12 iterations<br />
Xilinx Virtex-6 XC6VLX240T<br />
7,192 Slices<br />
36 18K RAM blocks<br />
-1, Fmax -2, Fmax -3, Fmax<br />
159.2 MHz<br />
10.2 Gbps<br />
186.0 MHz<br />
11.9 Gbps<br />
190.2 MHz<br />
12.2 Gbps<br />
<strong>IP</strong> <strong>Core</strong> Interface<br />
Description<br />
The en<strong>coder</strong> recognizes the first information symbol by the isop<br />
"start of information block" marker of that symbol (FAS OH =<br />
0xF6F6F6282828). The bit width of input data idat and output data<br />
odat is 64 bits. The codec throughput of 10.7 Gbps requires timing<br />
frequency of at least 170 MHz. The resulting encoded block at the<br />
en<strong>coder</strong> output can be recognized by the osop "start of encoded<br />
block" marker.<br />
iclk<br />
idat DAT0 DAT1 DAT2 DAT3 DAT4<br />
isop<br />
osop<br />
odat DAT0 DAT1 DAT2 DAT3 DAT4 COD0 COD1 COD2<br />
Figure 5. Timing diagrams of <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong> operation<br />
7
<strong>IP</strong> <strong>Core</strong> Parameters<br />
1e-2<br />
1e-3<br />
1e-4<br />
1e-5<br />
1e-6<br />
1e-7<br />
G.709 RS(255, 239)<br />
<strong>I.6</strong> <strong>LDPC</strong> Measured<br />
<strong>I.6</strong> <strong>LDPC</strong> Simulated<br />
G.975.1 <strong>I.6</strong> <strong>LDPC</strong> super FEC<br />
Output BER<br />
1e-8<br />
1e-9<br />
1e-10<br />
1e-11<br />
1e-12<br />
1e-13<br />
1e-14<br />
1e-15<br />
1e-16<br />
1e-4<br />
2e-4<br />
3e-4<br />
4e-4 5e-4<br />
1e-3<br />
Input BER<br />
2e-3<br />
3e-3<br />
4e-3 5e-3<br />
1e-2<br />
Figure 6. Error-correcting capability of <strong>I.6</strong> <strong>LDPC</strong> De<strong>coder</strong><br />
8
Contacts<br />
Upgrade and<br />
Technical Support<br />
For up-to-date information on <strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> <strong>IP</strong> <strong>Core</strong><br />
visit website http://www.iprium.com/ipcores/id/i6-ldpc-codec/.<br />
Registered customers can download vqm/ngc/edif netlists of the <strong>IP</strong><br />
<strong>Core</strong> from the personal account/area at <strong>IP</strong>rium's website page<br />
http://www.iprium.com/.<br />
For technical support, registered customers can use a ticket system<br />
in the personal account at http://www.iprium.com/. Technical<br />
support requests take no more than 2 working days to process.<br />
<strong>IP</strong> <strong>Core</strong> order<br />
information<br />
Feedback<br />
<strong>I.6</strong> <strong>LDPC</strong> En<strong>coder</strong>/De<strong>coder</strong> ordering code is ip-i6-ldpc-codec.<br />
<strong>IP</strong>rium Ltd.<br />
634029, Russia, Tomsk, Frunze ave, 20, office 427<br />
Tel.: +7(3822)226454<br />
E-mail: info@iprium.com<br />
website: http://www.iprium.com/contacts/<br />
Revision history Version Date Changes<br />
1.0 2013.04.23 Initial release<br />
9