i will try to explain the idea simply
the idea of turbo code is constructing encoder and decoder and some helping blocks how is that done in matlab that's what i will try to explain so please be patient.
a random frames is created each of length 256 (stream of ones and zeros this is the original message) the rate of the turbo code is 1/3 this means that for each one bit input there will be 3 bits(first is systematic second is parity1 and third is parity2 each one of the three is 256) output so after entering 256 input frame there will be 768 bits(plus 12 tail bits which i don't use but it helps in returning the encoder to zero state again to start encoding next frame) i will then modulate each 4 bits to prodce I and Q(16 QAM) after that noise is added and so a block to compute soft values probability of the corresponding I and Q which means that i will use a lookup table in this operation where for each 2 available combinations of I and Q(according to my floating point resolution) there will be a corresponding probability for each 4 bit (ofcourse these probabilities is computed using certain design equation) and those 4 bits will be the input to the decoder so in each clock there will be 4 probabilities as input to the decoder for example in the first clock
P4=-14.6 P3=26.45 P2=67.35 P1=-0.463 where the sign represent wether this bit is zero or one and the value represent the coonfidence of this bit
in vhdl these floating point nubers is represented in 32 bits.
to construct first frame which is systematic bit [P4clk1 P1clk1]
parity1=[P3clk1] parity2=[P2clk1] in the next clock systematicbit=[P4clk1 P1clk1 P2clk2] parity1=[P3clk1 P4clk2 P1clk2] parity2=[P2clk1 P3clk2] and so on. This is the operation of constructing the 3 frames it's done for 192 clocks where after 192 clocks by using same sequence each frame will be at the end of clk 192 of length 256.Notice that another 3 clocks should be wasted to ignore the 12 tail bits(the input is ignored in those clocks).
let's say that this was the first input frame using this frame i should do my computation. Surely the computation on the first frame is done while receiving second frame simultaneously and computation should be done before buffering the second frame in order to start operating on the second frame. Now let's go through the algorithm, i will try to explain it using ideas in matlab there will be 2 decoders which operate in iterative way now let's define some matrices for both decoders gamma,alpha,beta and llr. gamma,alpha and beta is (8*256) while llr is (1*256). Through some equations we can compute gamma for example the equation of gamma is
gamma_decoder1(i)=0.5(Lc*systematic(i)*u_k+x_k*parity1(i)+llr1(i)) where x_k and u_k is one or negative one according to state diagram known by both encoder and decoder so in the same moment (same i) we will have 8 states so at the last the gamma will be (8*256) using this gamma we compute alpha and beta where alpha and beta equations use gamma computed and the alpha in the past moment for example alpha(i=1,state=3)=maximum(alpha1(i=0,state=3)+gamma_input0(i=0,state=3),alpha1(i=0,state=3)+gamma_input1(i=0,state=3)) notice that the alpha is intialized by alpha(i=0,state0)=0,alpha(i=0,state1)=0,alpha(i=0,state2)=0,......................alpha(i=0,state8)=-infinity until llr of decoder 2 is computed which affect the computation og gamma of decoder 2 hence it's alpha, beta and llr of decoer one this is called a complete iteration now to go through the next iteration decoder one uses llr generated by decoder 2 and so on for a fixed time of
iterations.at last by observing the llr1 and llr2 we can dicide wether this bit is one or zero according to certain equations. Certainly those iterations should be carried out in less than 192 clocks the time of constructing the second frame pretty fun hah ;), hope u got the picture.