Iterative decoding of turbo codes based on factor graphs