A method for refining channel tap values, ĥ, of an estimated channel impulse response at a receiver of a data communication system, comprising: - at a transmitter: encoding information bits using multilevel codes via a plurality, 1... Q of parallel encoding paths, each encoding path implementing one level of the multilevel code and comprising an encoder for encoding a set of information bits into a set of encoded bits, wherein the set of encoded bits forms a logic string, wherein a logic string is characterized in that a XOR conjunction of the elements of the logic string gives a zero, mapping one bit of each of the Q encoding paths to one symbol of an 2 Q -order modulation, and transmitting the symbol, and - at the receiver: receiving a transmitted symbol, s, equalizing the received symbol, demapping the equalized symbol thus producing encoded bits of the encoding paths, decoding the encoded bits using a plurality of Q parallel decoding paths, initially estimating a channel impulse response using turbo-equalization to estimate channel tap values, ĥ, of the channel impulse response based on exploiting statistics of logic strings, and refining channel tap values, ĥ, of the estimated channel impulse response, wherein a-posteriori output of decoding and channel tap values of a previous iteration, ĥ, are used in turbo-equalization for cancelling a residual error. - at a transmitter: encoding information bits using multilevel codes via a plurality, 1... Q of parallel encoding paths, each encoding path implementing one level of the multilevel code and comprising an encoder for encoding a set of information bits into a set of encoded bits, wherein the set of encoded bits forms a logic string, wherein a logic string is characterized in that a XOR conjunction of the elements of the logic string gives a zero, mapping one bit of each of the Q encoding paths to one symbol of an 2 Q -order modulation, and transmitting the symbol, and encoding information bits using multilevel codes via a plurality, 1... Q of parallel encoding paths, each encoding path implementing one level of the multilevel code and comprising an encoder for encoding a set of information bits into a set of encoded bits, wherein the set of encoded bits forms a logic string, wherein a logic string is characterized in that a XOR conjunction of the elements of the logic string gives a zero, mapping one bit of each of the Q encoding paths to one symbol of an 2 Q -order modulation, and transmitting the symbol, and - at the receiver: receiving a transmitted symbol, s, equalizing the received symbol, demapping the equalized symbol thus producing encoded bits of the encoding paths, decoding the encoded bits using a plurality of Q parallel decoding paths, initially estimating a channel impulse response using turbo-equalization to estimate channel tap values, ĥ, of the channel impulse response based on exploiting statistics of logic strings, and refining channel tap values, ĥ, of the estimated channel impulse response, wherein a-posteriori output of decoding and channel tap values of a previous iteration, ĥ, are used in turbo-equalization for cancelling a residual error. receiving a transmitted symbol, s, equalizing the received symbol, demapping the equalized symbol thus producing encoded bits of the encoding paths, decoding the encoded bits using a plurality of Q parallel decoding paths, initially estimating a channel impulse response using turbo-equalization to estimate channel tap values, ĥ, of the channel impulse response based on exploiting statistics of logic strings, and refining channel tap values, ĥ, of the estimated channel impulse response, wherein a-posteriori output of decoding and channel tap values of a previous iteration, ĥ, are used in turbo-equalization for cancelling a residual error.