iterative detection and decoding