1. A method of using an N-dimensional trellis code to communicate data over a multi-path channel, comprising the steps of: (a) encoding said data into a sequence of N-dimensional signal points, each signal point being a concatenation of N/M M-dimensional symbols with N/M being an integer greater than one, each symbol being selected from an M-dimensional constellation; (b) modulating and transmitting said N/M N-dimensional symbols of an N-dimensional signal point to said multi-path channel in at least two different signaling intervals; (c) receiving channel-impaired N/M M-dimensional symbols; and (d) removing interference on a current received M-dimensional symbol using a decision on a past received M-dimensional symbol.