Mapper for high data rate signalling

A pulse amplitude modulated (PAM) mapper includes a constellation matrix memory which stores indications of a plurality of different constellations. The constellations are stored as masks of one hundred twenty-eight bits where a bit set to one indicates that the constellation includes the PCM code represented by the corresponding .mu.-law code.

BACKGROUND OF THE INVENTION 
1. Field of the Invention 
The present invention relates to data communications equipment. More 
particularly, the present invention relates to mapping systems and methods 
having advantageous applications in high speed modems which are coupled to 
an analog local loop. 
2. State of the Art 
With the ever-increasing importance of telecommunications for the transfer 
of data as well as voice, there has been a strong effort to increase data 
transfer rates over the telephone wires. Recently, the ITU-T adopted the 
V.34 Recommendation (International Telecommunication Union, 
Telecommunication Standardization Sector Recommendation V.34, Geneva, 
Switzerland 1994) which is hereby incorporated by reference herein in its 
entirety. The V.34 standard and subsequent amendments define modem 
operating speeds of 28.8 kbps up to 33.6 kbps, and the vast majority of 
modems being sold today adhere to the V.34 Recommendation. However, with 
the explosion in the use of the Internet, even at the V.34 transfer rates, 
downloading of large files available on the Internet can take long periods 
of time. Thus, recently, there has been a thrust to provide additional 
standards recommendations which will increase data transfer rates even 
further (note the TIA TR-30.1 PAM Modem ad hoc group and the ITU-T Study 
Group 16). 
Recognizing that further increases in data rates is theoretically limited 
where the telecommunication network is an analog system (see C. E. 
Shannon, "A Mathematical Theory of Communication," Bell System Technical 
Journal, 27:379-423, 623-656 (1948)), there have been various proposals to 
take advantage of the fact that much of the telecommunication network is 
now digital. For example, U.S. Pat. No. 5,394,437 to Ayanoglu et al., U.S. 
Pat. No. 5,406,583 to Dagdeviren, and U.S. Pat. No. 5,528,625 to Ayanoglu 
et al. (all assigned to AT&T/Lucent and all of which are hereby 
incorporated by reference herein in their entireties) all discuss 
techniques which utilize the recognition that the network is mostly 
digital in order to increase data transmission rates to 56 kbps and 
higher. Similarly, Kalet et al., "The Capacity of PAM Voiceband Channels," 
IEEE International Conference on Communications '93, pages 507-511 Geneva, 
Switzerland (1993) discusses such a system where the transmitting end 
selects precise analog levels and timing such that the analog to digital 
conversion which occurs in the central office may be achieved with no 
quantization error. PCT application number PCT/US95/15924 (Publication WO 
96/18261) to Townshend which is hereby incorporated by reference herein in 
its entirety) discusses similar techniques. All of the disclosures assume 
the use of PAM (pulse amplitude modulation) digital encoding technology 
rather than the QAM (quadrature amplitude modulation) currently used in 
the V.34 Recommendation. The primary difference between the AT&T 
technology and the Townshend reference is that the AT&T technology 
suggests exploiting the digital aspect of the telephone network in both 
"upstream" and "downstream" directions, while Townshend appears to be 
concerned with the downstream direction only. Thus, systems such as the 
"x2" technology of US Robotics which are ostensibly based on Townshend 
envision the use of the V.34 Recommendation technology for upstream 
communications. 
As will be appreciated by those skilled in the art, the technologies 
underlying the V.34 Recommendation, and the proposed 56 kbps modem are 
complex and typically require the use of high-end digital signal 
processors (DSPs). One of the complex tasks of the modem is the mapping of 
digital data into a sequence of digital signals chosen from a 
constellation which are converted into an analog signal by a D/A 
converter. Mapping typically includes utilizing a constellation. In the 
V.34 Recommendation, the preferred constellation is a four-dimensional 
constellation, whereas in the envisioned 56 kbps modems, the constellation 
is envisioned as a one dimensional PAM constellation which complies with 
.mu.-law (A-law in Europe) requirements. According to .mu.-law 
requirements which are set forth in ITU-T Recommendation G.711 which is 
hereby incorporated by reference herein in its entirety, the total 
constellation consists of 255 signal levels; 127 positive, 127 negative, 
and zero. Both the positive portion of the constellation and the negative 
portion of the constellation include eight sectors with sixteen points 
each (the constellation being shown in Appendix 1 hereto), with zero being 
a common point for both portions. As is well known in the art, the minimum 
distance between points in sector 1 of the constellation is a distance 
"2". In sector 2, the minimum distance is "4", while in sector 3, the 
minimum distance is "8". In the eighth sector, the minimum distance is 
"256". 
Using the full PAM .mu.-law constellation, theoretically, a bit rate of 
almost 64 kbps can be transmitted over the analog local loop to the 
digital network. However, the average power of such a constellation would 
be about -4 dBm, and the minimum distance between points would be a 
distance of "2". Such a large average power is undesirable when compared 
to the present restrictions of an average power of -12 dBm on the network; 
and such a minimum distance is also undesirable, with minimum distances of 
at least "4" and preferably "8" being considerably more desirable in 
reducing errors due to noise. 
In light of the power restrictions, and minimum distance considerations, 
the prior art primarily discusses sending data at 56 kbps (i.e., seven 
bits per symbol at an 8 kHz rate). In order to increase the bit rate to 60 
kbps, (e.g., 7.5 bits per symbol), a sequence of symbols could be sent, 
with every other symbol carrying seven bits and eight bits respectively. 
However, for reasons set forth above (average power, and minimum 
distance), the carrying of eight bits per symbol is not feasible. 
SUMMARY OF THE INVENTION 
It is therefore an object of the invention to provide a PAM mapper for a 
high speed modem with data rates of up to 60 kbps. 
It is another object of the invention to provide a PAM mapper which enables 
data rates of 40 kbps to 60 kbps with fine data rate steps. 
It is a further object of the invention to provide a PAM mapper and methods 
utilizing a PAM mapper which optimize signal sets based on desired average 
power requirements and desired minimum distances between points in the PAM 
constellations. 
It is an additional object of the invention to provide a PAM mapper which 
is simple to implement and which does not require large computing and 
memory resources. 
In accord with the invention, a mapper for a PAM encoder is provided and 
includes means for generating desired .mu.-law or A-law code levels, and a 
constellation matrix memory which stores indications of a plurality of 
different N-dimensional constellations (N being a positive integer), 
wherein at least one of the different stored constellations is of 
different dimension than another of the stored constellations. As will 
become apparent hereinafter, the plurality of different constellations are 
used individually or together to support a plurality of different modem 
data (bit) rates. 
In addition to the means for generating desired code levels and 
constellation matrix memory, the mapper preferably includes a logic block 
which receives incoming bits of information, groups the bits as a function 
of the desired or agreed upon data rate, and provides a plurality of each 
group of bits (i.e., a subgroup) to the means for generating desired code 
levels. The means for generating desired code levels uses those bits to 
choose at least one point from one of the constellations, and uses each 
chosen constellation point for generating the desired code levels. In one 
embodiment, the means for generating desired code levels comprises an 
address computation block and a PAM code memory, where the address 
computation block chooses a constellation point and that the constellation 
point is used as a pointer to a location in the PAM code memory which 
preferably stores a plurality of seven-bit PAM code words. The seven-bit 
PAM code word chosen from the PAM code memory is then provided as an 
output with an eighth bit (which is used as the sign bit) which is drawn 
from one or more of the bits (another subgroup) of the group of bits 
formed by the logic block. Alternatively, where the desired output code is 
a PCM code, the means for generating desired code levels is simply the 
address computation block which chooses a constellation point indication 
and generates a seven-bit PCM code output from the chosen constellation 
point indication. 
According to one embodiment of the invention, in order to provide for data 
rates in excess of 56 kbps, both one- and two-dimensional constellations 
are utilized. In using a two-dimensional (2D) constellation, the logic 
block, which groups incoming bits of information, can group fifteen bits 
of information together. When fifteen bits are grouped together, two bits 
are used as the sign bits for two eight-bit output bytes while the 
thirteen other bits are provided to the address computation block which 
divides the thirteen bit number by 91 modulo 91 to generate an integer 
part of a quotient and the remainder. The integer part of the quotient is 
used to select one of 91 points (representing both positive and negative 
values) of a predetermined two-dimensional PAM constellation, while the 
remainder is used to select another of the 91 points of the PAM 
constellation (it being appreciated that the possible 8281 (91.times.91) 
combinations of points is sufficient to cover the 8192 (2.sup.13) 
combinations of thirteen bits). The two selected constellation points are 
used to generate (e.g., by pointing to two locations in the PAM code 
memory, or alternatively in the case of PCM, by direct generation) two 
seven-bit numbers to which the sign bits are added to provide the two 
eight-bit outputs. 
If all bits received by the logic block are grouped into groups of fifteen 
bits, a data rate of 60 kbps can be achieved. According to the preferred 
embodiment of the invention, however, the bit rate may be chosen at 0.5 
kbps increments from 40 kbps (or below, if desired) up to 60 kbps. To 
achieve all of these rates, indications for four different constellations 
are stored in the constellation matrix memory. Preferably, each 
constellation is chosen to obtain the largest separation at a power of 
about -12 dam to the extent possible. Thus, for example, a thirty-two 
point constellation (sixteen positive and sixteen negative points) is 
provided with a minimum distance of 96, and a power of -12.1 dBm and can 
be used for the coding of a five-bit input group (one of the five bits 
being used as a sign bit). Similarly, a sixty-four point constellation is 
provided with a minimum distance of 36 and a power of -12.2 dBm and can be 
used for a six-bit input group. A one hundred twenty-eight point 
constellation is provided with a minimum distance of 16 and a power of 
-12.1 dBm for use with a seven-bit input group, while the one hundred 
eighty-two point constellation is provided with a minimum distance of 8 
and a power of -8.7 dBm for use with a fifteen point group. In order to 
obtain different data rates, data frames may be set up which utilize 
different constellations in the frame, such that the incoming data bits 
are grouped in groups of different numbers of bits according to the frame. 
For example, to obtain a data rate of 59.5 kbps, seven groups of fifteen 
bits would be grouped together for every two groups of seven bits. 
Where a data rate of 56 kbps or less is chosen, as suggested above, the 
bits are grouped into five, six, or seven bit groups, with groups of 
different numbers of bits alternating in a frame to obtain specifically 
desired rates. In each case, one bit of the group is used as the sign bit 
for an output byte, and the remaining bits are used by the address 
computation block of the code generation means to access an indication of 
a constellation point. The constellation point is then used to generate a 
seven-bit word (e.g., by selecting a PAM code memory location), and the 
seven-bit word is output with the sign bit to generate the PAM coded 
eight-bit byte. 
As suggested above, by grouping incoming bits into groups of five, six, 
seven, and fifteen bits, and by storing indications of a plurality of 
constellations and using the bits to select a constellation point which is 
used in generating a code level output, a simple mapper for a high speed 
modem is provided which enables bit rates of up to 60 kbps with 0.5 kbps 
steps or less. 
According to another aspect of the invention, higher dimensional 
constellations (e.g., 3D, 4D, 5D, 6D , . . . ) may be utilized to obtain 
high bit rates with desired minimum distances and desired power. For 
example, in a preferred embodiment, 4D and 8D constellations are utilized 
in conjunction with constellations of other dimensions (2D and 1D) to 
obtain desired data rates. One of the 4D constellations (which helps 
permit bit rates in excess of 56 kbps) includes 154 points (77 indications 
being stored in the 8.times.16 array), which permits a group of 
twenty-nine bits to be mapped into four outgoing symbols. With twenty-nine 
bits, a subgroup of four bits are used as the sign bits, and another 
subgroup of the remaining twenty-five bits are used to select four of the 
77 indications, as 2.sup.25 is less than 77.sup.4. Similarly, one of the 
8D constellations includes 140 points (seventy indications), which permits 
a group of fifty-seven bits to be mapped into eight outgoing symbols. With 
fifty-seven bits, a subgroup of eight bits are used as the sign bits, and 
a subgroup of the remaining forty-nine nine bits are used to select eight 
indications of the seventy indications (140 point) constellation. 
A preferred manner of selecting constellation points of an N-dimensional 
constellation comprises, taking a group of x bits (where 2.sup.x-N 
.ltoreq.L.sup.N with L=the number of positive points or indications in the 
constellation), using the N most significant of the x bits as the sign 
bits for the N output symbols, and dividing the value represented by the 
x-N remaining bits by L.sup.N-m (where m is a variable which takes values 
from 1 to N-1 sequentially) to obtain quotients and remainders. The first 
quotient is used to select a first constellation point value which is used 
for generating a first code level output. If N-m equals one, the first 
remainder is used to select another constellation point. However, if N-m 
is greater than one, m is increased by one, and the remainder is divided 
by L.sup.N-m to obtain a second quotient and a second remainder, with the 
second quotient being used to select a second constellation point value. 
If the N-m is equal to one, the second remainder is used to select a third 
constellation point value; otherwise, m is again increased and the 
remainder divided by L.sup.N-m. The process is continued until N-m equals 
one, and the last remainder is used to select the N'th constellation point 
value. 
Additional objects and advantages of the invention will become apparent to 
those skilled in the art upon reference to the detailed description taken 
in conjunction with the provided figures.

Appendix 1 is a prior art chart of the .mu.-law code. 
Appendix 2 is a listing of four preferred constellations utilized in the 
mapper of the embodiment of FIG. 2 of the invention. 
Appendix 3 is a listing of eighteen preferred constellations utilized in 
the mapper of the embodiment of FIG. 4 of the invention. 
Table 1 is a listing of mapping parameters implemented by the mapper of the 
embodiment of FIG. 2 the invention, including the numbers of fifteen-bit 
pairs, seven-bit symbols, six-bit symbols, and five bit symbols. 
Table 2 is a listing representing the mapping of thirteen bit binary 
combinations into pairs of eight bit outputs. 
Table 3 is a listing of mapping parameters implemented by the mapper of the 
embodiment of FIG. 4 of the invention. 
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
Turning to FIG. 1, a high level block diagram of a PAM modem 10 is seen. 
The modem 10 broadly includes a transmitter 20 and a receiver 30. The 
transmitter includes an interface 32 to a source of digital data (such as 
a computer), an encoder 34 which includes a mapper 36 and may optionally 
include a Trellis or convolutional encoder (not shown), and an interface 
38. Details of the receiver side of the modem are well known and are not 
shown in FIG. 1. 
According to a first embodiment of the invention, and as seen in FIG. 2, 
the mapper 36 for the PAM encoder 34 preferably includes a constellation 
matrix memory 40, a logic block 60 for arranging data, a constellation 
controller 65 coupled to the constellation matrix memory 40 for selecting 
a constellation from the constellation matrix memory, means for generating 
output code levels 68 which is coupled to the logic block 60 and to the 
constellation matrix memory 40, and an output register 75. In one 
embodiment of the invention, the means for generating output code levels 
68 includes an address computation block 70 and a PAM code memory 50. In 
another embodiment of the invention, and as will be described in more 
detail hereinafter, the means for generating output code levels 68 
includes only the address computation block 70. It should be appreciated 
that the constellation controller 65, logic block 60, and address 
computation block 70 can be implemented in a single hardware element, or 
separate hardware elements, or as software, or as a combination of 
software and hardware, while the constellation matrix memory 40 (and PAM 
code memory 50, if utilized) can be implemented in one or more memory 
elements. The output register 75 may be incorporated in the memory element 
with the constellation matrix memory and/or PAM code memory, or may be a 
separate register as desired. 
The constellation matrix memory 40 stores indications of a plurality of 
different PAM constellations for a plurality of different bit rates; 
indications for four different constellations being shown in FIG. 2, with 
one of the constellations (constellation #1) being a two-dimensional 
constellation. Preferably, the constellation matrix memory is configured 
as a plurality (e.g., four) of eight by sixteen-bit blocks such as seen in 
Appendix 2. Thus, as discussed in more detail below, each block, if 
desired, can point to all one hundred twenty-eight possible positive or 
negative .mu.-law levels (seen in Appendix 1) stored in the PAM code 
memory 50, with each row of the block pointing to a different .mu.-law 
sector, and each bit in the row representing a different level in the 
sector. 
For purposes herein, and as will be explained in more detail hereinafter 
with reference to Appendices 2 and 3, the terms "two-dimensional 
constellation" or "multi-dimensional constellation" refer to 
constellations having other than 2.sup.c points (where c is a positive 
integer) which are utilized, where a single subgroup of bits is used to 
select more than one point from the constellation. 
As seen in Appendix 2, different preferred constellations for the first 
embodiment of the invention are represented in the constellation matrix 
memory 40 by setting different values in the matrix. Preferably, and in 
accord with the invention, the points of the constellation are chosen to 
maintain a maximum "minimum distance", as well as to provide a power of 
nearly -12 dBm. For a thirty-two point constellation, sixteen bits of the 
eight by sixteen-bit block are set to value 1; it being appreciated that 
the positive and negative values of the sixteen set values will provide 
thirty-two desired points. As seen in Appendix 2, in order to maintain a 
large distance with a power of -12.1 dBm, the constellation points chosen 
include a single point in sector 2, a single point in sector 3, three 
points in sector 4, five points in sector 5, and six points in sector 6. 
By choosing no points in sectors 7 and 8, the power is kept down, and by 
choosing no points in sector 1, and only a single point in sectors 2 and 
3, the minimum distance is made large. Similarly, for the sixty-four point 
constellation, as seen in Appendix 2, thirty-two bits of another eight by 
sixteen-bit block are set. Optimally, by choosing one point in sector 1, 
two points in sector 2, three points in sector 3, five points in sector 4, 
eight points in sector 5, thirteen points in sector 6, and no points in 
sectors 7 and 8, the power is kept down, while the minimum distance is a 
distance of thirty-six. In the one hundred twenty-eight point 
constellation, sixty-four bits of the block are set as seen in Appendix 2 
to obtain a minimum distance of sixteen and a power of -12.1 dBm. Finally, 
in the one hundred eighty-two point 2D constellation, ninety-one bits (of 
the possible one hundred twenty-eight bits) are set, and a minimum 
distance of eight is maintained, while the power is set to -8.7 dBm (which 
is unavoidably higher than presently desired). 
As will be discussed in more detail below, according to the invention, the 
choice of constellations being used from the constellation matrix memory 
40 at any given time is dependent on the chosen data transmission bit 
rate. Thus, when a bit rate is determined (by any appropriate means or 
method), the constellation controller 65 chooses appropriate 
constellations in a sequential fashion. More particularly, as set forth in 
Table 1, for a bit rate of forty kbps, five-bit symbols (corresponding to 
a thirty-two bit constellation) can be utilized exclusively, while for a 
bit rate of forty-eight kbps, six-bit symbols (corresponding to a 
sixty-four bit constellation) can be utilized exclusively. However, for 
bit rates between 40 kbps, and 48 kbps, a combination of five-bit and 
six-bit symbols are required. Thus, for a bit rate of 42.5 kbps, for every 
five six-bit symbols, eleven five-bit symbols are required. Thus, the 
constellation controller 65 could interleave the choice of constellations 
accordingly in a frame; e.g., 
M4-M4-M3-M4-M4-M3-M4-M4-M3-M4-M4-M3-M4-M4-M3-M4 and repeat the same 
sequence (frame) to maintain the desired bit rate. Similarly, for other 
bit rates between forty and forty-eight kbps, other combinations of 
five-bit and six-bit symbols are required as set forth in Table 1. 
When the choice of constellation is made by the constellation controller 
65, the constellation controller concurrently sends an indication to the 
logic block 60, so that the logic block can group the incoming bits 
accordingly. Thus, for example, when the constellation controller chooses 
the M4 constellation (thirty-two point), a signal is provided to cause the 
logic block 60 to group five incoming bits together and provides a first 
of those five bits as a sign bit to a first bit location of the output 
register 75. The remaining four bits are provided to the address 
computation block 70 of the code generation means 68 which uses the four 
bits to choose an indicated constellation point of the M4 constellation 
(sixteen bits of the sixteen by eight-bit matrix having been set to a 
value one as seen in Appendix 2). For example, if the four bits used to 
choose the constellation point have a value of "1011", the eleventh (1011 
base 2=11 base 10) set location in the M4 constellation (e.g., using M4 of 
Appendix 2, the second level of segment six) would be chosen. The 
indicated constellation point (having both a sector and level indicator 
due to its location in the matrix) is then used by the address computation 
block 70 either to directly generate an output PCM .mu.-law code (e.g., by 
subtracting the location of the chosen constellation point indication in 
the 8.times.16 bit array from 128 and providing a seven-bit digital output 
of the difference value), or to generate an output PAM code by using the 
constellation point indication as a pointer to the PAM code memory 50 
(e.g., to sector 6, level 81 of Appendix 1). The seven bit word (e.g., 
0101110; the seven least significant bits of the Code of Appendix 1) 
stored at the PAM code memory location indicated by the constellation 
point is then provided to the second through eighth bit positions of the 
output register 75. The seven lsbs, together with the sign bit provided 
from the logic block 60 provide an eight-bit byte for output to the 
digital/analog converter. This is seen in functional block diagram 3a, 
where five data bits are grouped together, and a first of the five bits is 
used as a sign bit of an output byte, while the other four of the data 
bits are used to generate the seven additional bits of the output byte. 
In a similar manner, when the M3 constellation is chosen by the 
constellation controller 65, the logic block 60 is provided with a signal 
which causes it to group together six incoming bits. A first of those six 
bits is used as a sign bit and provided to the first bit location of the 
output register 75. The remaining five bits are provided to the address 
computation block 70 which uses the five bits to choose an indicated 
constellation point of the M3 constellation (thirty-two bits of the 
sixteen by eight matrix having been set to a value one for the M3 
constellation as seen in Appendix 2). The indicated constellation point is 
then used by the address computation block 70 either as a pointer to the 
PAM code memory 50, or in a direct manner as discussed above, to generate 
a seven bit word which is provided to the appropriate bit locations in the 
output register 75. The seven lsbs, together with the sign bit provided 
from the logic block 60 provide an eight-bit byte for output to the 
digital/analog converter. This is seen in functional block diagram FIG. 
3b, where six data bits are grouped together, and a first of the six bits 
is used as a sign bit of an output byte, while the other five of the data 
bits are used to generate the seven additional bits of the output byte. 
As suggested by Table 1, in order to generate data rates of between 
forty-eight and fifty-six kbps, groups of six bits and seven bits are 
utilized in conjunction with the M3 and M2 constellations. As suggested by 
FIG. 3c, when seven bits are grouped together, one bit is used as the sign 
bit, and the remaining six bits are used to generate the seven remaining 
bits of the output byte. The six bits generate the seven remaining bits by 
choosing one of the sixty-four set bits of the matrix storing 
constellation M2, which in turn either points to a PAM code memory 
location which stores a seven-bit word, or which is used to generate the 
seven-bit word. 
Turning back to Table 1 in conjunction with FIGS. 2, 3c, and 3d, the 
mechanism for generating bit rates of between fifty-six and sixty kbps is 
slightly different than the previously described mechanisms. In 
particular, according to the first embodiment of the invention, instead of 
using a combination of seven- and eight-bit symbols, a combination of 
seven-bit symbols and fifteen-bit symbol pairs are utilized. For example, 
to generate a data rate of fifty-eight kbps, four fifteen-bit symbols 
pairs from the 2D constellation M1 are utilized on conjunction with eight 
seven-bit symbols from constellation M2 in a repeating four symbol 
pattern; e.g., M2-M1-M1-M2. The seven-bit symbols are used as set forth 
above with reference to FIG. 3c. However, according to the invention, the 
fifteen-bit symbol pairs are generated differently. Thus, when a 
fifteen-bit pair is indicated by the constellation controller, the 
two-dimensional M1 constellation is chosen from the matrix memory, and 
fifteen bits are grouped together by the logic block 60. As indicated by 
FIGS. 2 and 3d, of the fifteen bits, a subgroup of two bits are used as 
sign bits for two output bytes which are generated at the output register 
75. Thus, one sign bit is sent to a first bit location, and the other sign 
bit is sent to the ninth bit location of the sixteen-bit output register 
75. A subgroup of the remaining thirteen bits are used to select two 
constellation points from the ninety-one set bits of the M1 constellation 
matrix (it being noted that M1 is therefore defined as a 2D 
constellation). According to the preferred embodiment of the invention, in 
order to select two constellation points or indications, the value of the 
thirteen bits is divided by ninety-one to obtain a quotient and a 
remainder. The quotient is used to select a first one of the ninety-one 
set bits (i.e., indications), and the remainder is used to select another 
of the ninety-one set bits as suggested by Table 2 (it being noted that 
where the quotient and remainder are the same, the selected indication 
from the constellation will be the same). As described above, the selected 
indications are used either to directly generate seven-bit words or to 
point to locations in the PAM code memory 50 which store seven-bit words. 
Regardless, the seven bit words generated are provided to bit locations 
two through eight and ten through sixteen of the output register 75, and 
together with the sign bits, generate two eight-bit bytes for output. 
Turning now to FIG. 4 in conjunction with Appendix 3 and Table 3, a second 
embodiment of the invention is seen. The mapper 136 of FIG. 4 is 
substantially identical to the mapper 36 of FIG. 2 (with similar elements 
indicated with similar designation numerals increased by 100), and 
includes a constellation matrix memory 140, a PAM code memory 150 (as part 
of a code generation means 168), a logic block 160 for arranging data, a 
constellation controller 165 coupled to the constellation matrix memory 
140 for selecting a constellation from the constellation matrix memory, an 
address computation block 170 (as part of the code generation means 168) 
which is coupled to the logic block 160 and to the constellation matrix 
memory 140 and the PAM code memory 150, and an output register 175. 
According to the second embodiment of the invention, the constellation 
matrix memory 140 stores indications of n constellations, including 
constellations of different dimensions. In the preferred embodiment of 
FIG. 4, n=18; i.e., indications of eighteen constellations are stored in 
eighteen 8.times.16 bit memory blocks, and the eighteen constellations (as 
shown in Appendix 3) represent 1D, 2D, 3D 4D, 6D and 8D constellations. 
With indications of 8D constellations stored in the constellation matrix 
memory 140, it will be appreciated that the output register 175 must be 
able to accommodate eight eight-bit output symbols; i.e., the output 
register 175 contains at least sixty-four bits. It will be also be 
appreciated that when using an 8D constellation, eight bits from a large 
group are first used as sign bits before the remainder of the bits are 
used to choose eight constellation points as discussed in more detail 
below. 
As seen in Table 3, according to the second embodiment of the invention, 
different bit rates (with different steps) may be obtained using different 
constellations, or constellation combinations which provide certain 
minimum distances, certain probabilities F.sub.min of points having the 
minimum distances, and different powers. The minimum size frame shown is 
dependent on the dimension of the constellation, the number of 
constellations used to obtain the desired bit rate, and ratio of frequency 
of the different constellations utilized. Thus, for example, in accord 
with the second embodiment of the invention, in order to obtain a bit rate 
of 57.5 kbps with a minimum distance of 8, as one preferred option, a 
sixteen symbol frame utilizing the two-dimensional 182-point constellation 
of Appendix 3 three times, and the one-dimensional 128-point constellation 
of Appendix 3 ten times (thereby obtaining a F.sub.min of 0.10 and a power 
of -10.9 dBm) can be provided. As a second preferred option, three 
utilizations of a four-dimensional 154-point constellation (to obtain 
twelve symbols) can be interspersed with four utilizations of the 
one-dimensional 128-point constellation of Appendix 3 (thereby obtaining a 
F.sub.min of 0.13, but a power of -12.0 dBm). Whenever a 1D constellation 
is utilized, the grouped bits can be used to directly choose a point in 
the constellation. However, where the 2D constellation is utilized (in 
this example), as discussed above with respect to the first embodiment of 
the invention, thirteen bits are used to choose two points of the 
182-point 2D constellation by dividing 2.sup.13 by the ninety-one, and 
using the quotient to select a first point and a remainder to select a 
second point. Where the 4D constellation is utilized, in this example, 
twenty-nine bits are grouped together, with a subgroup of four bits used 
as signed bits and another subgroup of twenty-five bits used to select 
four points of the 154-point 4D constellation. According to the invention, 
the value of the twenty-five bits is divided by 77.sup.3 to provide a 
quotient which is used to select a first indication (positive point). The 
remainder of the division is then divided by 77.sup.2 to provide a second 
quotient which is used to select a second indication. The resulting 
remainder is then divided by 77 to provide a third quotient which is used 
to select a third indication, and a remainder which is used to select a 
fourth indication. As suggested above, all four constellation indications 
are then used either to select locations in the PAM code memory, with the 
values in the selected locations of the PAM code memory are used provide 
seven-bit outputs, or to directly generate four seven-bit outputs, which 
are sent to the output register. 
Given the above discussion, it will be appreciated that the method for 
choosing constellation points in a multidimensional constellation may be 
broadly stated as follows. First, for an N-dimensional constellation, x 
bits are grouped together (where 2.sup.x-N .ltoreq.L.sup.N with L=the 
number of positive points in the constellation). A subgroup of N bits of 
the x bits are used as the sign bits for the N output symbols. The digital 
value represented by a subgroup of the x-N remaining bits is then divided 
by L.sup.N-m (where m is a variable which takes values from 1 to N-1 
sequentially) to obtain quotients and remainders. The first quotient is 
used to select a first constellation point value (indication) which is 
used to generate a code value output. If N-m equals one, the first 
remainder is used to select another constellation point indication. 
However, if N-m is greater than one, m is increased by one, and the 
remainder is divided by L.sup.N-m to obtain a second quotient and a second 
remainder, with the second quotient being used to select a second 
constellation point value. If N-m is equal to one, the second remainder is 
used to select a third constellation point value; otherwise, m is again 
increased and the remainder divided by L.sup.N-m. The process is continued 
until N-m equals one, and the last remainder is used to select the N'th 
constellation point value. 
Through the use of 2D, 3D, 4D, 6D, and 8D constellations alone, or in 
conjunction with each other and in conjunction with 1D constellations, as 
seen in Table 3, many different bit rates can be obtained while 
maintaining desirable minimum distances and power. It should be noted that 
Table 3 sets forth the use of all eighteen of the constellations seen in 
Appendix 3, including the 182-point 2D constellation, the 162-point 3D 
constellation, the 154-point 4D constellation, the 144-point 6D 
constellation, the 140-point 8D constellation, the 128-point 1D 
constellation, the 114-point 6D constellation, 108-point 4D constellation, 
the 100-point 8D constellation, the 92-point 2D constellation, the 
82-point 3D constellation, the 78-point 4D constellation, the 72-point 6D 
constellation, the 64-point 1D constellation, the 54-point 4D 
constellation, the 46-point 2D constellation, the 38-point 4D 
constellation, and the 32-point 1D constellation. It will also be 
appreciated, that by utilizing constellations of even higher dimension, 
additional gain may be obtained, albeit at the expense of more complex 
calculations. 
Those skilled in the art will appreciate that demappers according to the 
invention use techniques corresponding substantially to the opposite of 
the mapping techniques. 
There have been described and illustrated herein apparatus and methods for 
the mapping of data in a high data rate modem. While particular 
embodiments of the invention have been described, it is not intended that 
the invention be limited exactly thereto, as it is intended that the 
invention be as broad in scope as the art will permit. Thus, while the 
invention has been described with respect to certain hardware, it will be 
appreciated that various functions can be carried in different hardware 
and/or software. Indeed, the invention has application to both analog and 
digital transport types of modems. In addition, while particular 
constellations and particular numbers of constellations being stored in 
constellation matrix memory were described as being preferred, it will be 
appreciated that other, and different numbers of constellations could be 
utilized. Similarly, different code, such as A-law, can be stored in the 
PAM code memory. Further, while the apparatus and methods of the invention 
are described as effectively using up to a sixteen symbol frame to provide 
the ability to choose bit rates with a step of 0.5 kbps, it will be 
appreciated that with different size frames, different steps could be 
generated. For example, finer steps (e.g., 0.25 kbps) can be generated 
with larger frames (e.g., thirty-two symbols), larger steps with smaller 
frames, and other different steps (e.g., 2/3 kbps) with different size 
frames (e.g., twelve symbols). Further, while the invention was described 
as enabling bit rates of up to 60 kbps using the fifteen-bit symbol pairs 
(i.e., 2D constellations), it will be appreciated that by using 
constellations of higher dimension, even higher rates can be obtained. 
Therefore, it will be apparent to those skilled in the art that other 
changes and modifications may be made to the invention as described in the 
specification without departing from the spirit and scope of the invention 
as so claimed.