the rs - based ldpc codes are derived from shortened rs codes with two information symbols . consider rs codes with symbols from the galois field gf ( p m ) where p is a prime number and m is a positive integer . let q = p m and α be a primitive element in gf ( q ). the generator polynomial of a primitive rs code of length q − 1 and minimum distance ρ − 1 , where 2 ≦ ρ & lt ; q , is given by : g ⁡ ( x ) = ⁢ ( x + α ) ⁢ ( x + α 2 ) ⁢ ⁢ ⋯ ⁢ ⁢ ( x + α ρ - 2 ) , = ⁢ g 0 + g 1 ⁢ x + g 2 ⁢ x 2 + ⋯ + g ρ - 3 ⁢ x ρ - 3 + x ρ - 2 , eq . ⁢ ( 1 ) where g i εgf ( q ). the code generated by g ( x ) is the ( q − 1 , q − ρ + 1 ) cyclic rs code c . the generator matrix g of c is a ( q − ρ + 1 )×( q − 1 ) matrix . then a ( ρ , 2 ) shortened rs code c s with two information symbols is obtained by a shortened generator matrix g s . g s is the first two rows of g , i . e ., g s = [ g 0 g 1 g 2 ⋯ 1 0 0 g 0 g 1 g 2 ⋯ 1 ] . g s generates a codeword c =( c 1 , c 2 , . . . , c p ) of c s . each component c j is one of the p m elements , 0 , α 0 , α 1 , . . . , α p m − 2 , of gf ( p m ) and can be represented by location vector z ( c j ), where z =( 0 , z 0 , . . . , z p m − 2 ) is a p m - tuple over gf ( 2 ) and z i corresponds to α i for i = 0 , 1 , . . . , p m − 2 . for example , let c 1 = α , then z ( c 1 )=( 0 0 1 0 ). by this way , c is expressed by a ρp m - tuple over gf ( 2 ), z ( c )=( z ( c 1 ), z ( c 2 ), . . . , z ( c ρ ), eq . ( 2 ) c s and slv play key roles to construct rs - based ldpc codes . c s can be partitioned into p m cosets based on the subcode c s 1 . { c s 1 , c s 2 , . . . , c s p m } denote p m cosets of c s . first , c s 1 is constructed such that where c is a codeword in c s with weight ρ . to find such a codeword c , the first row is subtracted from the second row in g s . then the others , i . e ., c s i for 2 ≦ i ≦ p m , are constructed such that any two codewords in any coset c s i should differ in every location . consider the following γp m × ρp m matrix over gf ( 2 ), where γ is a positive integer such that 1 ≦ γ ≦ p m : h ⁡ ( γ ) = [ a 1 ⋮ a γ ] , where a i is a p m × ρp m matrix over gf ( 2 ) whose rows are the p m slv &# 39 ; s of z ( c s i ), where z ( c s i ) is the set of slv &# 39 ; s of the p m codewords in the coset c s i . a i is a ( 1 , ρ )- regular matrix with column and row weights of 1 and ρ , respectively . note that h ( γ ) is the parity - check matrix of a ( γ , ρ )- regular ldpc code . therefore , the null space of this matrix gives a ( γ , ρ )- regular rs - based ldpc code whose minimum distance is at least γ + 1 . a rs - based ( 3 , 3 )- regular ldpc code of length 12 , rate - 1 / 3 and minimum distance 6 can be constructed from ( 3 , 2 ) cyclic rs code over gf ( 2 2 ). table 1 lists p 2m = 16 code words of ( 3 , 2 ) cyclic rs code and their slv &# 39 ; s . by choosing 3 cosets &# 39 ; s slv &# 39 ; s , the parity - check matrix h of the ( 3 , 3 )- regular rs - based ldpc code is obtained as shown in fig1 . the null space of the h leads to the rs - based ( 3 , 3 )- regular ldpc code . fig2 shows a parity - check matrix of a ( 6 , 32 )- regular rs - based ldpc code of length 2048 , dimension 1723 , rate - 0 . 841 , and minimum distance of at least 8 constructed from the ( 32 , 2 ) cyclic rs code over gf ( 2 6 ). note that the ( 2048 , 1723 ) rs - based ( 6 , 32 )- regular ldpc code is adopted for the channel coding scheme by the ieee 802 . 3an standard for the 10gbase - t . a method to design memory address generation block for rs - based ldpc code decoders ldpc code is a class of linear block code with a binary sparse m × n parity - check matrix h , and is typically described by a bipartite graph , usually called tanner graph , between n variable nodes on one side and m check nodes on the other side . ldpc codes can be effectively decoded by the sp decoding algorithm . the structure of the sp decoding algorithm directly matches the tanner graph . in the decoding process , messages are computed on each variable node and check node and iteratively exchanged along the graph edges between the neighboring nodes , where each edge corresponds to a non - zero entry in the parity - check matrix h . the non - zero entries are mapped into memories and the memories communicate with processing units , cnu &# 39 ; s ( check node processing units ) and vnu &# 39 ; s ( variable node processing units ), based on the edges of the graph . therefore , the pattern of the non - zero entries highly influences the complexity of the control method for mag . if an ldpc code is constructed randomly , it is very hard to generate memory address efficiently with simple control logic and small memory . the parity - check matrix of rs - based ldpc codes has a simple structure since it is composed of square matrices . however , as shown in fig1 and fig2 , for some ldpc codes , submatrices are not circulant and it is hard to design an efficient mag scheme for these codes . in fact , if p m is not equal to ρ , i . e ., the row weight of the parity - check matrix is not equal to the submatrix &# 39 ; s size , the submatrices are not circulant matrices in rs - based ldpc codes . nevertheless , an efficient mag method can be derived by exploring the following property of the parity - check matrix of the rs - based ldpc codes : code word of c s i = do i + code word of c s j for 1 ≦ i ≦ p m and i ≠ j , eq . ( 4 ) where j is a certain value of 1 ≦ j ≦ p m and do i ( distance offset ) values represent a difference between code words of c s j and the others . thus , we can generate code words of all cosets except c s j using only do &# 39 ; s and code words of c s j . for example , do &# 39 ; s to induce code words of c s 2 , c s 3 , and c s 4 from c s 1 in table 1 are shown in fig3 . now we know that there are specific constant offset values between a certain c s j and the others . this is the unique feature of the parity - check matrix of the rs - based ldpc codes , which leads to an efficient mag method . consider the mag block design for the tm decoder architecture of the rs - based ( 3 , 3 )- regular ldpc code of fig1 . each submatrix of the parity - check matrix h is denoted as shown in fig4 ( a ) and each submatrix must be mapped into a memory block to use the mag method as illustrated in fig4 ( b ). the other submatrices are mapped by the same way . then we can derive a time - multiplexed decoder architecture utilizing the mag method as shown in fig5 in which memory addresses for cnu processing are generated by the proposed mag block while a simple counter is used for vnu processing . in the mag block for cnu processing , the elements , 0 , 1 , α , and α 2 of gf ( 2 2 ) are represented by 00 , 01 , 10 , and 11 respectively , so that the memory addresses are generated by the ex - or (⊕) operation between code word of c s 1 and do &# 39 ; s . i i denotes the intrinsic channel reliability value . this architecture is obtained by folding a fully parallel implementation , i . e ., both f v ( folding factor of vnu ) and f c ( folding factor of cnu ) are 4 , so that 3 cnu &# 39 ; s and 3 vnu &# 39 ; s are used . the details of how the mag blocks work are illustrated in table 2 . in other iterations , same operations like the first iteration are processed until a stop criterion is reached . consequently , when parity - check matrices of rs - based ldpc codes are not composed of circulant matrices , the presented mag method derived from eq . ( 4 ) largely simplifies decoder hardware implementation complexity . in other words , a rom storing code word data of only one coset is enough to generate all memory addresses required for check node processing . a method to design high throughput time - multiplexed decoder architectures for rs - based ldpc codes : case for 10gbase - t system in the traditional tm ldpc code decoder architecture , the number of clock cycles required per iteration is proportional to the dimension of submatrices of the parity - check matrix . thus the submatrix has to be split into smaller ones and the number of cnu &# 39 ; s / vnu &# 39 ; s increases to reduce the clock cycles required . however splitting submatrix means fragmenting memory in implementation which can sometimes cause serious problems such as memory access conflicts even though multi - port memory is used . thus the sequential rs - based ldpc code decoder architecture as shown in fig5 can not be used as a solution for a system demanding high decoding throughput ldpc decoder such as a 10gbase - t system . the 10gbase - t system specified by ieee 802 . 3an standard has adopted regular ( 2048 , 1723 ) rs - based ldpc code for the fec code . the dimension of the parity - check matrix h 10g is 384 × 2048 , and column and row weights are 6 and 32 , respectively . the size of the submatrix is 64 × 64 . the throughput constraints require 2048 bits to be computed in about 320 ns . a peculiar fact of h 10g is that the row weights are more than five times that of column weights . thus the complexity of each cnu is much larger than that of a vnu since the number of inputs to cnu is 32 while that to a vnu is 6 . in the present invention , ssau ( sum and sign accumulation unit ), which computes and stores the sum and sign values of each row during vnu processing , plays a major role to reduce the number of inputs to the cnu and consequently the overall area . furthermore , since ssau enables the shortened cnu to compute a portion of each row , it allows an overlapped scheduling between cnu processing and vnu processing , which further reduces the number of clock cycles per iteration . it is inevitable that lots of messages have to be computed at the same time to meet high throughput . this fact means that low latency shuffle networks are necessary to establish proper connections between memories and processing units . to meet this goal , shuffle networks consisting of switch network composed of demux &# 39 ; s and pre - set routing block are used in the present invention . the pre - set routing block has all necessary interconnection paths and the demux &# 39 ; s steer messages toward proper destinations through one of the paths of the pre - set routing block . consider the design of rs - based ldpc code decoder architectures for the 10gbase - t system . in the present invention , mainly 3 different decoder architectures are developed and will be compared with one another . a first design employs ssau with f c = 1 and f v = 11 , and a second design is developed using traditional data path mode , i . e ., mutually exclusive mode between cnu and vnu processings , with f c = 6 and f v = 6 . a third one is developed by combining of the both . the common feature among the 3 kinds of designs is the use of low latency shuffle networks . as an example , assume that max iteration is 10 and t mr , t mw , t cnu , and t vnu are at most 2 ns . t mr , t mw , t cnu , and t vnu denote the computation times of a memory read , a memory write , a cnu processing , and a vnu processing , respectively . here we know that each iteration has to be completed in 32 ns . the first rs - based ldpc code decoder architecture is developed by employing ssau &# 39 ; s . fig6 illustrates the overall data path . in a traditional architecture as shown in fig1 ( a ), decoding process is divided into two mutually exclusive modes — cnu processing mode and vnu processing mode . in each mode , messages need to be first read from memory before processing and written back into memory after processing . while in the present invention , the messages pass from memory along through cnu , vnu , and then ssau and back to memory . cnu bank is connected to vnu bank via shuffle network bank ( sn 1 ) without passing through the memory . the computation time of the critical path is t critical = t mr + t cnu or t vnu + t mw . eq . ( 5 ) to reduce the critical path from 4 ns to 2 ns , i . e ., to increase clock frequency to 500 mhz , pipelining registers ( r 1 , r 2 , and r 3 ) are inserted . fig7 ( a ) illustrates how the ( 384 , 2048 ) parity - check matrix consisting of 192 64 × 64 submatrices is partitioned for desinging a tm decoder architecture with f c = 1 and f v = 11 . thus , 384 cnu &# 39 ; s compute 1152 (= 3 messages * 384 rows ) messages for matrices a to j and 768 (= 2 * 384 ) messages for matrix k , and 192 vnu &# 39 ; s compute 1152 (= 6 * 192 columns ) messages for matrices a to j and 768 (= 6 * 128 ) messages for matrix k . in fact , with f c = 1 , f v can be up to 14 , i . e ., however there are no benefits with f v = 14 , 13 , and 12 in that the purpose of folding is to reduce the number of hardware functional units by a factor of f c at the expense of increasing the computation time by a factor of f c ( see , k . k . parhi , vlsi digital signal processing systems design and implementation , john wiley & amp ; son , inc ., new york , 1999 ). thus , f v = 11 , and time required for each iteration is 2 ns ( 11 + 1 + 1 )= 26 ns . in 10 iterations , the margin ( 60 ns = 320 ns − 260 ns ) can be either used for the initialization step or for reducing clock frequency to less than 500 mhz . the cnu &# 39 ; s complexity can be minimized with these folding factors . with the aid of ssau &# 39 ; s , each cnu requires only 4 inputs , as opposed to 32 inputs required in a traditional architecture . 384 ssau &# 39 ; s compute and accumulate the sum and sign values of 384 rows of the matrices , a to k , while 192 vnu &# 39 ; s perform update operations . thus , after whole vnu processing is completed , each ssau stores the sum and sign values of each row of the whole parity - check matrix . this is the reason that each cnu can compute a portion of each row . in other words , the number of inputs to cnu can be only 4 . fig7 ( b ) illustrates the decoder schedule with f c = 1 and f v = 11 . as explained , ssau can start processing right after vnu processing , e . g ., each ssau computes the sum and sign values of each row of matrix a after vnu processing for the a is done . since f v is 11 , ssau has 3 inputs as shown in fig8 . cnu has 4 inputs where 3 inputs are extrinsic messages updated from previous vnu processing and the other one comes from the ssau as illustrated in fig9 . fig1 shows an example of a vnu design . in all types of functional units , a data format conversion block , either from two &# 39 ; s ( 2 &# 39 ; s ) complement number format to sign - magnitude ( sm ) number format and vice versa , exists . the look - up - table ( lut ) is used for reference of the function , log ( tan h (- x / 2 -)), which is part of the belief propagation decoding algorithm . fig1 shows the overall decoder architecture , where the size of the memory is 11 words × 1152 messages . each word stores the matrices , a to k . for example , let a i be ith row of the a , where 1 ≦ i ≦ 384 , then the word for the a in the memory stores ( a 1 a 2 · a 384 ), where each a i contains 3 messages , to establish a fixed connection between the memory and cnu bank without a shuffle network . however , since the memory configuration is oriented for only cnu processing , two shuffle network banks are required for other data flows . the first shuffle network bank ( sn 1 ) rearranges messages for the following vnu processing , which is located between cnu bank and r 2 . the second shuffle network bank ( sn 2 ) rearranges messages so that the rearranged messages are stored in the memory properly for the cnu processing of the next iteration . for sn 1 , since the h 10g is divided into 11 matrices and each cnu in cnu bank has 3 outputs , 1152 (= 3 * 384 ) 1 - to - 11 demux &# 39 ; s are needed . however , if the h 10g of fig2 is modified by column swapping to convert submatrices located in the top into identity matrices as illustrated in fig1 , fixed wirings can be used for those identity matrices with no aid of the shuffle network , so that 1152 demux &# 39 ; s can be reduced to 960 (= 3 *( 384 − 64 )). hence , the pre - set routing block has 10560 (= 11 * 960 ) input pins which are connected to 960 output pins . in other words , each pin of 960 output pins has 11 wires and only valid data is established in one wire at each clock cycle . similarly , sn 2 has 960 (= 5 * 192 ) 1 - to - 11 demux &# 39 ; s and pre - set routing block which has 10560 input pins and 960 output pins . fig1 ( a ) illustrates a typical data path of conventional ldpc decoder . there are 4 sets of pipelining registers so that the critical path is 2 ns . fig1 ( b ) illustrates that the h 10g is divided by f c = 6 and f v = 6 . these folding factors lead to the smallest number of both cnu &# 39 ; s and vnu &# 39 ; s , so that 64 cnu &# 39 ; s and 384 vnu &# 39 ; s are used . fig1 ( c ) illustrates the decoder schedule . cnu / vnu processing are mutually exclusive in scheduling , so that one iteration requires 16 clock cycles . cnu processing takes 6 clock cycles , and vnu processing also takes 6 clock cycles and other 4 cycle cycles are required for pipelining registers . fig1 shows the overall decoder architecture . memories for extrinsic messages are fragmented , so that there are 192 memories and each memory &# 39 ; s size is 1 word × 64 messages . note that there can be two versions of the decoder architecture . one is that the interconnection between messages and cnu &# 39 ; s is implemented by fixed wirings and shuffle networks are used for establishing the interconnection between messages and vnu &# 39 ; s as shown in fig1 ( a ). the other is implemented conversely as shown in fig1 . let us call these architectures as fca ( fixed connection between cnu &# 39 ; s and messages architecture ) and fva ( fixed connection between vnu &# 39 ; s and messages architecture ), respectively . in fca , the routing of the second dotted - circle part in fig1 is fixed and 6 shuffle networks are needed between memories and vnu banks . fig1 illustrates a detailed version of the first dotted - circle part in fig1 . for the switch network between memory and vnu bank 1 , since 6 different sets of messages are computed in vnu bank 1 , 320 1 - to - 6 demux &# 39 ; s are needed and the pre - set routing block has 1920 input pins and 320 output pins . each output pin has 6 wires and only one wire is active at each clock cycle . the shuffle network between vnu bank 1 and memory has same resource cost except different routing . note that 64 messages are connected to vnu bank 1 with fixed wirings due to the rearranged h 10g . fig1 illustrates an alternative design of fig1 such that the complexity of each shuffle network is reduced by about 50 %. in first 3 clock cycles , vnu bank 1 computes messages in the upper memories and , in other 3 clock cycles , vnu bank 1 computes messages of the lower memories . thus , in each switch network , 320 1 - to - 3 demux &# 39 ; s are used and the pre - set routing block has 960 input pins and 320 output pins , where each output pin has 3 wires . however , in this architecture , complexity of the shuffle network is reduced at the expense of cost increase of other routings and pipelining registers . in fva , all the routings between memories and vnu banks is fixed and 1 shuffle network is used between memories and cnu banks . fig1 illustrates a detailed version of the second dotted - circle part in fig1 . the shuffle network between memory and cnu has 1984 1 - to - 6 demux &# 39 ; s and the pre - set routing block has 11904 input pins and 1984 output pins . the shuffle network between cnu and memory has same complexity except different routing in the pre - set routing block . as the architecture of fig1 can be unfolded as shown in 17 , the architecture of fig1 can be similarly modified to reduce sn &# 39 ; s complexity by 50 % at the expense of other costs . the third design is a modified version of the architecture of fig6 such that f c is increased by 1 , i . e ., from 1 to 2 , as illustrated in fig1 ( a ). fig1 ( b ) shows the decoder schedule . note that , due to f c = 2 , 192 cnu &# 39 ; s compute 1152 messages and , hence the number of inputs to cnu is increased to 7 from 4 . fig2 shows the overall decoder architecture , where the size of the memory for extrinsic messages is 12 words × 1152 messages . to compute messages of each matrix marked by lower case in fig1 ( a ) by vnu bank , two clock cycles are needed . similarly , to store messages into memory properly , two clock cycles are needed for matrices marked by upper case in fig1 ( a ), i . e ., matrices a 1 and a 2 , and so on . this facts cause more registers than the first architecture of fig6 . fig2 illustrates overall register data flow and switch direction . note that each switch bar passes 576 messages among 1152 messages to sn . each sn is composed of 960 1 - to - 12 demux &# 39 ; s and pre - set routing block having 11529 input pins and 1152 output pins . in this section , we compare the complexity for three different rs - based ldpc code decoder architectures , which are developed for the 10gbase - t . the first one is time - multiplexed by f c = 1 and f v = 11 and employs ssau . the second one is developed based on the traditional data path . both f c and f v are 6 . the third one is derived from the first one by increasing f c from 1 to 2 . table 3 lists comparison results of the three decoder architectures in terms of hardware cost of processing units and complexity of shuffle networks . the first design requires 384 cnu &# 39 ; s , 192 vnu &# 39 ; s and 384 ssau &# 39 ; s . one cnu has 3 lut &# 39 ; s , 3 adders and 3 ex - or &# 39 ; s , and one vnu has 6 lut &# 39 ; s and 12 adders , and one ssau has 3 lut &# 39 ; s , 3 adders and 3 ex - or &# 39 ; s . a total of 3456 lut &# 39 ; s , 4608 adders and 2304 ex - or &# 39 ; s are used . for the second design , 64 cnu &# 39 ; s , 384 vnu &# 39 ; s and no ssau are needed , where one cnu is composed of 32 lut &# 39 ; s , 63 adders and 63 ex - or &# 39 ; s . vnu is same as that of the first design . entirely , 4352 lut &# 39 ; s , 8640 adders and 4032 ex - or &# 39 ; s are used . for the third design , 192 cnu &# 39 ; s , 192 vnu &# 39 ; s and 384 ssau &# 39 ; s are needed . same vnu is used and one cnu consists of 6 lut &# 39 ; s , 6 adders and 6 ex - or &# 39 ; s . same ssau is used . totally , 3456 lut &# 39 ; s , 4608 adders and 2304 ex - or &# 39 ; s are used , which are same as that of the first design . the comparison result shows that the decoding architecture ( the first and third ones ) with the aid of ssau has much less hardware overhead than traditional designs ( the second one ). with comparison between the first design and the second design , the number of lut is reduced by 20 . 59 % the number of adders is reduced by 46 . 67 %, the number of ex - or is reduced by 42 . 86 %, and the number of registers is reduced by 55 . 88 %. although derived from the first design , the third design consumes much more registers because those registers ( r 3 , r 4 , r 6 and r 7 ) are required for temporal message storage . in the first design , there are two shuffle networks . each shuffle network has 960 1 - to - 11 demux &# 39 ; s . a pre - set routing block has 10560 inputs , so that there are 10560 pre - set wires . in the second design , fca has 6 vnu banks and each bank has two shuffle networks . from vnu bank 1 to vnu bank 5 , each shuffle network requires 320 1 - to - 6 demux &# 39 ; s . a pre - set routing block has 1920 wires . for vnu bank 6 , each shuffle network is composed of 320 1 - to - 2 demux &# 39 ; s and 640 pre - set wires . in fva , each shuffle network requires 1984 1 - to - 6 demux &# 39 ; s and 11904 pre - set wires . in the third design , there are two shuffle networks . each shuffle network has 1152 1 - to - 12 demux &# 39 ; s and 13824 pre - set wires . the first design uses one 11 words × 1152 messages size memory and the third design needs one 12 words × 1152 messages size memory . however , the second design uses 192 1 words × 64 messages size memory . these memories are fragmented , so that the second design needs the highest cost in terms of memory . a method to design a mag block for tm rs - based ldpc code decoder architectures has been presented . for high throughput application , specifically 10gbase - t system , three tm rs - based ldpc coder decoder architectures have been presented . it has been shown that the first design is the most competitive . by introducing ssau , cnu &# 39 ; s complexity is reduced significantly and overlapped decoding is achieved . while various embodiments of the present invention have been described above , it should be understood that they have been presented by way of example only , and not limitation . it will be understood by those skilled in the art that various changes in form and details can be made therein without departing from the spirit and scope of the invention as defined in the appended claims . thus , the breadth and scope of the present invention should not be limited by any of the above - described exemplary embodiments , but should be defined only in accordance with the following claims and their equivalents .