Turbo codes use two parallel convolutional encoders and iterative belief propagation. Watch extrinsic information flow between the two decoders, each refining its beliefs over multiple iterations.
Each arrow represents extrinsic LLR information flowing from one decoder to the other, updating bit probability estimates.