Trellis and Turbo Coding: Iterative and Graph-Based Error Control Coding