referring now to the drawings , in which like numerals refer to like components or steps , there are disclosed broad aspects of various exemplary embodiments . fig1 is an illustration of an exemplary turbo decoder . the turbo decoder 100 consists of a plurality of operationally - connected components , including a soft - input , soft - output ( siso ) decoder 104 and an interleaves 102 consisting of an interleaved address generation unit 106 , an address generation unit 108 , and a plurality of memory units 110 a - b . speaking generally , the siso decoder 104 decodes a data frame and corrects a few errors . the frame is interleaved and decoded again . this way , more errors are corrected each time . these iterations can be repeated for a predefined number of times or until no more errors are corrected . interleaving algorithms may be specified in the communication standards and may be designed to shuffle data in a pseudo - random manner . more specifically , during regular operation , the turbo decoder 100 may decode incoming data sequences in a series of iterations . the data sequences may be comprised of a pair of component codes . during a single iteration , the siso decoder 104 may decode either linearly - ordered symbols or interleaved symbols . during the subsequent iteration , the turbo decoder may reverse direction and decode symbols in the other order . for example , during an even iteration , the siso decoder 104 may read from to memory unit 110 a and output into the memory unit 110 b in a linear order . during an odd iteration , the siso decoder 104 may read from the memory unit 110 b and output into memory unit 110 a in an interleaved order . the siso decoder 104 may decode , for example , the first component code using both channel data and a priori information , both of which may have been stored in the memory unit 110 a during a previous iteration as inputs . after decoding , the siso decoder 102 may then store the extrinsic information into memory unit 110 a . this extrinsic information may be used in subsequent iterations as a priori information when , for example , the second component code is processed . the siso decoder 104 may then store the decoded data into the memory unit 110 b , which may be used as channel data in a subsequent iteration . when a predefined number of iterations is reached or when convergence is detected , the iterations within the turbo decoder 100 are stopped and the output bits from the initial data sequence are obtained . the soft - in soft - out ( siso ) decoder 104 may decode a data sequence , which may consequently correct errors during a single iteration . the siso decoder 104 may receive a data sequence and may allow “ soft ” values to be received from the data sequence . soft values may be defined as bits other than a logical “ 1 ” or “ 0 ”. the siso decoder 104 may allow values other than a logical “ 1 ” or “ 0 ” in order to capture more specific values . the siso decoder 104 may also output a “ soft ” output value that indicates a reliability level for each bit in the decoded output . the output of the siso decoder 104 may be in the form of a decoded data sequence . the siso decoder may also output extrinsic information , which may be a soft output and may later be used as the soft input for the siso decoder 104 during a subsequent iteration . during regular operation , the decoded data sequence outputted from siso decoder 104 may be rearranged by the interleaver 102 and decoded again by siso decoder 104 . while the interleaving protects against bulk errors , the iterative decoding by the siso decoder 104 may correct more errors in the data sequence . successive iterations of the interleaver 102 and the siso decoder 104 may be repeated for a predefined number of iterations , or may be repeated until the siso decoder 104 corrects no more errors . in some embodiments , the iterative decoding by the siso decoder 104 may only work when the bits of the received data sequence are interleaved . the interleaving algorithm used by the turbo interleaver 102 may be specified in the communications standard . the interleaving algorithm may shuffle data in a pseudo - random manner , as certain interleaving algorithms may still exhibit non - random properties , such as periodicity . the interleaver 102 rearranges bits from a received data sequence in a non - contiguous manner , which may increase performance . the interleaver 102 may boost performance by protecting a data sequence against burst errors . a burst error may overwrite a long , contiguous series of data . other error correction schemes may not be able to prevent or recover data from burst errors due to properties that require , for example , regularity to errors or a relative dearth of errors in a specific sub - sequence . by rearranging the data sequence , a burst error may overwrite data in a more uniform manner , as when arranged in the proper order , the burst error may be spread more evenly throughout the entire sequence , thus making recovery easier . the interleaver 102 may permute a data sequence of w bits as a one - to - one function . the data may then be stored in memory units 110 a - b . during an iteration , the siso decoder 104 may read from one memory unit 110 a , b and store the decoded data into the opposite memory unit 110 b , a . depending on the iteration , the data may be stored either in linear or interleaved order during the siso decoder 104 access to the opposite memory unit 1100 . the interleaver 102 contains the interleaved address generation unit 106 , address generation unit 108 , and memory units 110 a - b . the address generation unit 108 may generate a sequence of consecutive addresses for each bit in the sequence of w symbols . for a given data block , a data sequence may have sequential addresses up to the last bit in the sequence , whose associated address is the maximum address . for example , with a data block of size 762 , the last bit in the sequence may have an assigned address equal to addr ( max )= 1011111010 . the interleaved address generation unit 106 may use a pre - defined interleaving algorithm to map new addresses for the sequence of w bits . the interleaved address generation unit 106 may start by first separating a least - significant bit ( lsb ) portion and most - significant bit ( msb ) portion of the address of length w . the interleaved address generation unit 106 may conduct a bit reversal on the least significant bit portion . after a series of other permutations , the portions may be combined again to create a new address . for example , the five least - significant bits of the address 1011111010 , 11010 may first be bit - reversed to 01011 , which may then act as the five most - significant bits of the subsequent interleaved address . memory units 110 a - b may store various data . such data may include decoded data sequences by the siso decoder 104 . the siso decoder 104 may store data in memory unit 110 a , b using either addresses generated by the address generator 108 or interleaved addresses generated by the interleaved address generator 106 . during an single iteration ( e . g ., an even iteration ), the siso decoder 104 may data from one memory unit 110 a stored in an interleaved order , while storing a decoded data sequence into the opposite memory unit in a linear order . consequently , the address generation unit 108 and interleaved address generation unit 106 may generate read and write addresses for data in the memory units 110 a , b . referring now to fig2 , a turbo decoder containing parallel siso decoders is illustrated . in the illustrated embodiment , the turbo decoder 200 is a parallel turbo decoder , which includes multiple convolutional processors in the form of parallel siso decoders 203 a - d that work on individual data sequences simultaneously . the interleaver 102 ( partially shown ) of the turbo decoder 200 now shows an address generation unit 201 , which is similar in function to the address generation unit 108 , a first series of data memory units 202 a - d , and an opposite , second series of data memory units 204 a - d , both of which are similar in function to the memory units 110 a - b . the siso decoders 203 a - d may transfer data with the series of data memory units 202 a - d , 204 a - d through a plurality of multiplexers 210 a - b . though the parallel turbo decoder 200 has a similar function to the single turbo decoder 100 , there are differences that may cause problems when scaling the turbo decoders for multiple siso decoders 203 a - d . while during the even turbo iterations , the siso decoders 108 process codes linearly and can be scaled with the addition of multiple siso decoders 203 a - d , the interleaved address generator 106 used during the odd turbo iterations does not scale linearly . in order to save space on the ic chip , this may result in a design decision to only add siso decoders 203 a - d , as these additions may reap the most benefit . because the multiple siso decoders 203 a - d decode individual frames simultaneously , the siso decoders 203 a - d may therefore need to access to the extrinsic information at the same time . this may result in , for example siso decoders 203 a - d accessing data memory units 202 a - d simultaneously . however , the single address generation unit 201 must therefore supply addresses for the multiple siso decoders 203 a - d to access simultaneously . as an example , when parallel turbo decoder 200 includes a quantity of n siso decoders 203 a - d , the connected address generation unit 201 in the interleaves may therefore need to generate n addresses during each clock cycle . each sequence that comprises a total block of data may include a plurality of addresses that may be defined as sub - sequences . each sub - sequence may have w elements and therefore have a sub - sequence length of w . the relationship between the total block size and the number of processors may be summarized by the equation : where k is the total block size , n is the number of processors ( i . e ., siso decoders 203 a - d ), and w is the sub - sequence length . if the entire interleaver sequence is π ( 0 ) π ( 1 ) π ( 2 ) π ( 3 ) π ( 4 ) . . . π ( k − 2 ) π ( k − 1 ), the parallel interleaver has to generate , in parallel , the following sub - sequences : thus , for a total block size that may remain constant as defined by a communications standard , an increase in the number of parallel siso decoders 203 a - d may shorten the sub - sequence length , which may shorten the processing time for each siso decoder 203 a - d . the shorter decoding time may therefore raise the throughput of the turbo decoder . in order to organize the decoded sequences produced by parallel siso decoders 203 a - d and the addresses generated by the address generation unit 201 , the turbo decoder 200 may organize the memory units 110 a - b into a plurality of memory banks 202 a - d , 204 a - d . the siso decoders 203 a - d in parallel turbo decoder 200 may therefore access memory in parallel . referring now to fig3 , a table for generating memory banks in the parallel turbo decoder 200 is illustrated . the table 300 shows the applicable communications standard 301 , the total block size 303 , the maximum address value ( addr ( max )) 305 , the address field x 307 , the deciding address field y 308 , the sub - address field z 309 , and the number of memory banks 310 . for a given standard 301 , a pre - defined block size 303 may be assigned . for a given block size 303 , the maximum address 305 may correspond to the address of the last bit . for example , the mediaflo standard has a block size of 994 . as a result , the last bit may be assigned the maximum address , which is 1111100010 . when expressed in binary form , the addresses comprising address field x , deciding address field y , and sub - address field z that generated by the address generation unit 201 may possess a periodicity . in the illustrated embodiment of fig4 , the address may comprise c + 5 bits , where cε { 5 , 6 , 9 }, which may be dependent upon the block size . for example , a block size of 994 may have c = 5 , with an address 10 bits long , while a block size of 12282 may have a c = 9 , with an address 14 bits long . consequently , the separation of a total data block into a series of memory banks in the form of the data memory units 202 a - d , 204 a - d may be based on the observation that the most - significant bits ( msb ) of any address generated by address generation unit 201 may have a periodicity equal to 32 . in fig4 , the method 400 illustrates the interleaved address generation implemented by interleaved address generation unit 106 . as shown at steps 401 , 403 , and 404 , the input address has a periodicity of 32 . the period of 32 may be derived from the five most - significant bits of the input address , whose maximum value ( 10111 ) being at least 32 . the size of the memory banks may therefore follow directly from the total block sizes . referring now to fig5 , a memory unit 500 containing multiple memory banks 501 - 507 is illustrated . when a parallel turbo decoder 200 uses multiple siso decoders 203 a - d , the largest block sizes may belong to the fastest modes . for example , under the etsi - sdr standard , the block size in the turbo decoder 200 may be 12282 . as indicated by the three significant bits ( 101 ) of the maximum address of 10111111111010 , the memory may therefore be most efficiently divided into six banks . when splitting the memory space into six memory banks 501 - 507 of 2048 bits , 12288 sub - blocks may be formed in the memory . as a result , only five words in the final memory bank 507 may be left unused . turbo decoder 200 may therefore use six parallel siso decoders 203 simultaneously with little chance of conflict , as there may be a one - to - one relationship between memory banks 404 a - f and parallel siso decoders 203 so that no two parallel siso decoders 203 a - b attempt to write to the same memory bank 404 a simultaneously . in some embodiments , multiple siso decoders 203 a - b may attempt to write to the same memory bank 404 a simultaneously . in this instance , a control unit may then use a stall signal to stall one of the writes one clock cycle so that the other may be saved in the memory bank 404 a during that clock cycle , in this example , the entire address of a given data sequence may be split into an address field x and a sub - address field z . for the etsi - sdr standard , the maximum address value may be 10111111111010 . interleaver 200 may therefore use the three most significant bits to form the address field , x = addr ( 13 - 11 ), which may assign an address and the associated data to a target memory bank associated with the value of the address field . consequently , the sub - address field may be assigned the rest of the address bits , y = addr ( 10 - 0 ), which may be used to assign the address and the associated data a place in the target memory bank . for example , an address of 010111000111100 may be split into address field x = 010 and sub - address field z = 111000111100 . the address field value “ 010 ” may therefore assign the associated data into third memory bank 404 e , while the sub - address field value may allocate a specific space within the third memory bank 404 c to store the data associated with the address . while using the most significant digits may be efficient for a number of block sizes , simply using the three most - significant bits may not be as efficient for all data block sizes . for example , in the case of the dvb - sh standard , an 1146 block size may be used . the three most - significant bits , 100 may indicate that the memory should be divided into five memory banks . however , the maximum value for the address for the 1146 data block is 10001111010 . as the fourth most - significant bit is a “ 0 ”, this may indicate that not all the memory banks will be efficiently filled . in contrast with the etsi - sdr standard that almost entirely uses the sixth memory bank , a fifth memory bank with a 1146 block size may only be filled partially , with less than half of the fifth memory bank being filled . the interleaver 200 , faced with the inefficient splitting of memory , may therefore be better off splitting the memory into only four memory banks . in some embodiments , the memory unit 400 may still be split into six memory banks : however , only four memory banks may store data : the other memory banks may not receive data and extraneous siso decoders 203 may be gated closed in order to reduce power consumption . when using four memory banks , the interleaves 200 may split an address into three partitions , address field x = addr ( 10 - 8 ), deciding address field y = addr ( 6 - 5 ), and sub - address field z = addr ( 4 - 0 ). generally , the address may be evenly split among the four memory banks using both the x and y values : memory bank 0 : if x == 000 or x == 100 & amp ;& amp ; y == 00 ; memory bank 1 : if x == 001 or x == 100 & amp ;& amp ; y == 01 ; memory bank 2 : if x == 010 or x == 100 & amp ;& amp ; y == 10 ; memory bank 3 : if x == 011 or x == 100 & amp ;& amp ; y == 11 . in the case that x = 100 , the address within the target memory bank may be converted so that the address is the sum of = 100000000 + z ; otherwise , the address used with the assigned memory bank is addr ( 7 - 0 ). when splitting the memory into four memory banks for the 1146 data block size , the control unit 402 may divide the memory into four memory banks of 288 words , thus making a total of 1152 spaces in which to store data . interleaver 200 may therefore fill all the spaces in each of the four memory banks , save for the fourth memory bank , which may be occupied completely except for five spaces . in another example , the etsi - sdr standard for the signaling channel may be used , which uses a block size of 762 . while the maximum address value is 1011111010 , the expected address field x may be 101 , with a sub - address field z of 1111010 . however , for this standard , parallelism is not expected , as the 762 block size is mainly used for signaling and does not require significant upgrades in throughput . the memory unit for the etsi - sdr may still be divided , for example , into five memory banks , even if the added area associated with the multiple siso decoders 203 a - d and memory banks 404 a - d may do not result in an appreciable increase in throughput . when operating with 762 block size from only one memory bank , the remaining banks can be switched off to save power . the mediaflow standard may use a block size of 994 . in this case , the maximum address may be 11111100001 . therefore , the interleaver 200 may divide the memory into four memory banks . in this instance , the address may divided into two parts : address field x = addr ( 10 - 9 ) and sub - address field z = addr ( 8 - 0 ), as the maximum value for the address 11111100010 signifies that the interleaver 200 may assign a value 00 , 01 , 10 , and 11 to the four respective memory banks 404 a - d . the interleaver 200 may use the address field value of an address to select a corresponding memory bank 404 a - d , while using the sub - address field z value to assign the data to an address within the memory bank 404 a - d . each of the four memory banks 404 a - d may therefore be composed of 256 places each , with the entire memory storing 1024 spaces . the memory may therefore be entirely used , save for 30 spaces in the fourth memory bank 404 d . referring now to fig6 , an exemplary memory unit with multiple memory banks is illustrated . a parallel turbo decoder like the turbo decoder 200 in fig2 may include a memory unit 600 containing multiple banks . the memory unit 600 may contain a control unit 602 and multiple memory banks 604 a - f . as will be discussed below , the control unit 602 may generate a stall signal during conflicts . from outside the memory unit 600 , the memory unit 600 may be visible as a memory with parallelism , while the stall signals denoting that the value cannot be read or written . though the efficient splitting of memory into approximately - equal memory banks 604 a - f may greatly reduce the occurrence of conflicts in the interleaves 200 when writing to the memory unit 600 , some conflicts between requests to write into the memory unit 600 may still occur . when a memory conflict occurs , the corresponding siso decoder 202 a - e in the parallel turbo decoder 200 may be stalled . in another embodiment , the control unit 602 may stall both siso decoders 202 a , b that created the conflict , or all the siso decoders 202 a - e in the turbo decoder 200 . a control signal may therefore be provided from the control unit 603 when two or more memory bank values are equal , which may signify simultaneous requests to write to the same memory bank 604 a - d . the unit may resume operation during the next clock cycle , which may be when the conflict is resolved . the architecture described herein is an ip block meant for use in the physical layer processing for broadcast reception , when conventional architecture is not sufficient for supporting the throughput . up to a sixfold speedup can be achieved with negligible area cost and with low clock speed . power savings can be enabled through the possibility of switching off part of the memory when operating at lower clock speeds . although the various exemplary embodiments have been described in detail with particular reference to certain exemplary aspects thereof , it should be understood that the invention is capable of other embodiments and its details are capable of modifications in various obvious respects . as is readily apparent to those skilled in the art , variations and modifications may be implemented while remaining within the spirit and scope of the invention . accordingly , the foregoing disclosure , description , and figures are for illustrative purposes only and do not in any way limit the invention , which is defined only by the claims .