6.8  Applications

Application 6.1. Find power and bitloading using waterfilling. (version A: without PAMs) Assume a DMT system with a FFT size N = 8 and design the power and bitloading such that the total transmit power is equal to 20.4 dBm. Use the rate-adaptive version of waterfilling to maximize rate under the power constraint. The gap must be ΓdB = 6 dB and the noise at the receiver is AWGN with N0 = −140 dBm/Hz. Do not use the two PAM tones. The estimated channel is h(n) = 10−7(2δ(n) + δ(n − 1) + 3δ(n − 3)) (the small channel gains were used to allow results close to the real world). The symbol rate is Rdmt = 4 kHz. Provide: a) a plot of the channel frequency response, b) the signal-to-noise ratio SNRn per tone, c) the number bn of bits per tone assuming this number can be non-integer, d) the margin in dB associated with item c), e) the number bn of bits per tone assuming the largest integer not greater than bn in item c), f) the margin in dB associated with item e), g) by how many dB can the SNR3 (tone n = 3 with the first one being n = 0) decrease before the error probability becomes lower than the specified by the gap Γ? h) what is the rate in bps assuming the bit loading of item e)?2   

Application 6.2. G.fast: the new DSL standard. This application discusses G.fast, the new ITU-T standard for transmission over copper pairs. It uses TDD instead of FDD as most of its precursors, and the G.fast development has been organized into defining two profiles, with bandwidths of 100 and 200 MHz. The 100 MHz profile will be concluded in the end of 2013.

Table 6.1: Parameters for DSL standards. The values of Lcp and Rdmt are detailed in Table 6.2. TBD stands for “to be defined”.





ADSL VDSL G.fast G.fast
(Profile17a) (100 MHz) (200 MHz)





FFT size N 512 8192 4096 8192





Cyclic prefix length Lcp 40 640 128 to 1056 TBD





Cyclic suffix length β - - 64 or 128 TBD





Number of tones (K = N∕2) 256 4096 2048 4096





Fs (MHz) 2.208 35.328 211.968 423.936





Bandwidth (MHz) 1.104 17.664 105.984 211.968





DMT symbol rate Rdmt (kHz) 4.0 4.0 41.142 to 50.181 TBD





Tone spacing Δf (kHz) 4.3125 4.3125 12 ×4.3125 = 51.75 51.75





Max. Tx power (US and DS) - - 4 dBm (2.512 mW) TBD





Table 6.2: Allowed range for m in G.fast (Fs = 211.968 MHz) and corresponding parameters assuming BW = 100 MHz.





m Lcp CP (μs) Rdmt (kHz) ν (%)





4 128 0.6 50.182 3.03





8 256 1.2 48.706 5.88





10 320 1.5 48.000 7.24





12 384 1.8 47.314 8.57





14 448 2.1 46.648 9.86





16 512 2.4 46.000 11.11





20 640 3.0 44.757 13.51





24 768 3.6 43.579 15.79





30 960 4.5 41.924 18.99





33 1056 4.98 41.143 20.50





Table 6.1 provides the currently agreed values for G.fast (these values will not change) and, for comparison, a list of standardized parameters for DMT transmission over DSL. Previous DSL standards adopt Rdmt = 4000 Hz. Using Eq. (6.13), one can calculate that Fs = (512 + 40)4000 = 2.208 MHz for ADSL and Fs = (8192 + 640)4000 = 35.328 MHz for VDSL. For ADSL and VDSL the ratio Lcp∕N is the same, and using Eq. (6.15) one gets Δf = 4.3125 kHz for both. In contrast, G.fast specifies

Lcp = m N 128,

where m is an integer. The specific settings of m and β are exchanged during initialization. The code below lists the valid range for m. The results are summarized in Table 6.2.

1N=4096; %FFT size 
2Fs=211.968e6; %sampling frequency (Hz) 
3m=[4, 8, 10, 12, 14, 16, 20, 24, 30, 33] 
4L=m*N/128 %cyclic prefix length 
5Rdmt = Fs./(N+L) %DMT symbol rate 
6100*(1-(N./(N+L))) %overhead, considering only CP

A maximum of bk = 12 bits can be loaded and sub-carriers below 2.2 MHz cannot be used in G.fast. Because 2.2e6∕Δf ≈ 42.5, the first 44 tones (from k = 0 to 43) cannot be used and only 2004 tones can carry data and the maximum number of bits per DMT symbol in G.fast is 2004 × 12 = 24,048. Adopting the shortest CP Lcp = 128 in Table 6.2 (Rdmt = 50.182 kHz) leads to a maximum gross rate of

R = bRdmt = 24,048 × 50182 = 1.206776736 × 109,

or approximately 1.2 Gbps.   

Application 6.3. Writing SNR in terms of power or energy. As discussed in Section 2.7.8, when using unitary-energy basis functions, the average constellation energy 𝜀k coincides with the signal power. Hence, some texts specify SNR with respect to energy. For example, at [ url5cln], 𝔼y(|Y [k]|2) is the average energy 𝜀, not power. This alternative nomenclature corresponds to assuming the reconstruction uses a filter with h(t) of unitary energy.

Assume the DAC converts the discrete-time signal into a continuous-time signal using a sample-and-hold. In this case, one can assume Px = 𝜀x (power is equivalent to the average energy constellation). Assuming the tone bandwidth is Δf, the transmit PSD at tone n is tk = PkΔf, where Pk = 𝜀k is the average energy of the constellation used in tone n. The correspondent received PSD is sk = tk|Hk|2 = 𝜀k|Hk|2Δf, where Hk is the frequency response at tone n. The signal-to-noise ratio is SNRk = PkNk, where Nk is the total filtered noise power at tone n. The DFT demodulator works as a matched filter and each of its output has noise of σ2 per dimension. Therefore, if N0∕2 is the bilateral noise PSD, σ2 = N0∕2 and:

SNRk = Pk Nk = skΔf N0 = 𝜀k|Hk|2 2σ2 = 𝜀k|Hk|2 N0

for a QAM channel (N = 2 dimensions) and

SNRk = 𝜀k|Hk|2 σ2 = 𝜀k|Hk|2 N0∕2

for a PAM channel (N = 1 dimension).   

Application 6.4. SVD channel partitioning. The CP can be interpreted as providing a guard interval to combat the channel dispersion, which otherwise would create intersymbol (or, in this case, interblock) interference. In fact, zero-valued samples can be also used to compose a guard interval. But using a CP allows to mimic the effect of a circular convolution while using the actual channel, which naturally implements a linear convolution. This section concerns yet another view, and shows that a DFT partitions a channel represented by a circulant matrix. First, singular value decomposition (SVD) is used and Application 6.5 discusses DFT partitioning.

Channel partitioning is the technique for dividing a channel such that it can be interpreted as a set of individual and independent parallel channels. Given a channel, a possible solution for channel partitioning is to find matrices that allow to convert the vector to be transmitted in such a way that the transformed symbols do not interfere with each other and the original symbols can be recovered at the channel output. A DFT obtains channels using distinct frequencies but SVD works differently.

Note that the SVD of a matrix A of dimension P × N provides a diagonal matrix S and two unitary matrices F and M such that

A = FSMH,
(6.18)

where F is P × P, M is N × N and S has the same dimension of A. Note that FHF = I and MHM = I because the two matrices are unitary.

The number of symbols (PAM or QAM symbols) to be transmitted over the channel is N. Hence, a vector X of dimension N with symbols must be transmitted through a LTI channel with impulse response h[n] and SVD will be used to partition the channel convolution matrix H (e. g., obtained with convmtx). The result of the SVD decomposition of H is used to design “modulation” M and “demodulation” F matrices, which multiply the transmit X symbols and received samples y, respectively. The role played by M and F is similar to the ones of the IDFT and DFT transforms in DMT, and the notation of lower and upper case letters for the “time” and “frequency-domain” vectors is also adopted here. In summary, the overall process is

X modulator M →x channel Hy demodulator FHY.

The discussion assumes column (not row) vectors. For example, y = Hx. The number N of columns of H can be chosen, while the number P of rows is given by the length of h[n].

To check that this scheme partitions the channel, from a given channel, use Eq. (6.18) to obtain the SVD decomposition H = FSMH. Then, using the previous block diagram note that

Y = FHy = FHHx = FHHMX = FH(FSMH)MX = (FHF)S(MHM)X = ISIX = SX.

Hence, each transmit symbol from X is multiplied by the corresponding element of the diagonal matrix S, proving that the channel was properly partitioned in independent channels. Listing 6.7 implements an example of SVD-based transmission.

Listing 6.7: MatlabOctaveBookExamples/ex_svd_partitioning.m
1%% Illustrates channel partitioning via SVD 
2%h=[1 0.9]; %Impulse response of a simple channel H(z) = 1 + .9 z^-1 
3h=[1+3j 0.9+4j 0.5+0.j 0.3]; %Example of a complex channel 
4h=transpose(h); %force all vectors to be column vectors 
5N=5; %chosen number of independent channels. Number of columns of H 
6%X=transpose([1:N]);  %An example of real transmit symbols 
7X=transpose((1:N)+i*(N:-1:1));  %example of complex transmit symbols 
8H=convmtx(h,N); %matrix to implement convolution 
9[F,S,Mhermitian] = svd(H); %SVD decomposition 
10M=Mhermitian'; %obs: ' obtains the Hermitian (conjugate transpose) 
11x=M'*X %"modulate": x is the transmit signal 
12y=conv(h,x); %pass x through channel 
13Y=F' * y; %"demodulate" the channel output 
14lambdas = diag(S); %lambdas are the singular values of H 
15Y=Y(1:length(lambdas)); %ignore singular values that are zero 
16Xp = Y ./ lambdas; %equivalent to "equalization" (FEQ) in DMT 
17disp('Compare the received Xp with the transmitted symbols X'); X, Xp

The singular values are always real and correspond to channel gains of their respective transmission channel. Listing 6.8 illustrates how they can be used to estimate the SNR at the receiver for each individual channel assuming the transmit power is the same for all symbols of X.

Listing 6.8: MatlabOctaveBookExamples/ex_snr_in_svd_partitioning.m
1h=[1 0.9]; %Impulse response of channel H(z) = 1 + .9 z^-1 
2N=3; %number of subchannels 
3H=convmtx(h,N); %matrix to implement convolution 
4[F,S,Mhermitian] = svd(H); %SVD decomposition 
5lambdas = diag(S); %lambdas are the singular values 
6N0d2 = 0.181; %channel noise: bilateral PSD value N0 / 2 
7gn = lambdas.^2 / N0d2 %get the SNR of each subchannel

This schemes requires a SVD decomposition whenever the channel changes. Also, besides the singular values, the demodulation matrix must be informed to the receiver. This is avoided in DMT schemes based on the DFT as discussed in Application 6.5.    

Application 6.5. DFT channel partitioning. Instead of SVD, here the eigenvalues decomposition is adopted. The first point to note is that while SVD supports a rectangular channel matrix P × N, the eigenvalue decomposition requires a square N × N matrix. Hence, the original channel matrix is arranged via circular extension to become not only N × N but also a circulant matrix. This fact will be used later on.

In general, the eigenvalue decomposition of a square matrix A provides a diagonal matrix D with the eigenvalues and a full matrix V with the corresponding eigenvectors, such that

AV = VD.
(6.19)

The channel partition with a DFT is based on the fact that the basis functions of the DFT are eigenvectors of any circulant matrix. Hence, when the channel is a circulant matrix H and Eq. (6.19) is applied, the eigenvectors of V are basis functions of the DFT and the eigenvalues in D are the DFT of the impulse response. Listing 6.9 provides an example.

Listing 6.9: MatlabOctaveBookExamples/ex_dft_eigendecomposition.m
1N=3; %number of FFT points 
2h=[0.9 -0.3 0]; %impulse response of length N 
3H=circulant(h); %create a circulant matrix 
4A=ak_fftmtx(N,1); %orthonormal inverse DFT matrix (basis are columns) 
5[V,D]=eig(H); %eigenvalue decomposition 
6A2=[V(:,1) -V(:,3) -V(:,2)]; %rearrange the eigenvectors to match DFT 
7max(max(abs(A-A2))) %check whether matrices A and A2 are the same 
8fft(h)-transpose(diag(D)) %check if eigenvalues are DFT values

It should be noted in Listing 6.9 that the function eig does not order the eigenvector as in the DFT and, also, a factor of − 1 was used for two eigenvectors.

Hence, if the channel matrix can be made circulant, the following scheme allows to partition it

XA (IDFT) →x channel HyAH (DFT) →Y

and should be compared with the SVD-based one. Listing 6.10 illustrates the DFT partitioning.

Listing 6.10: MatlabOctaveBookExamples/ex_dft_partitioning.m
1N=4; %number of FFT points 
2X = transpose([-1 -1-j -1 -1+j]); %transmit vector (QAM symbols) 
3[Ah, A]=ak_fftmtx(N,1); %orthonormal DFT matrices, A is the inverse 
4h = transpose([0.6 0.5 0.3 0]); %impulse response (of N samples) 
5H = circulant(h); %N x N circulant channel matrix 
6D=Ah*H*A; %check that DFT can partition H 
7maxOutOfDiagonal=max(max(abs(D-diag(diag(D))))) %only small values 
8eigenvalues=fft(h); %or, alternatively, eigenvalues=diag(D) 
9x = A*X; y = H*x; Y = Ah*y; Xp = Y ./ eigenvalues; %processing 
10disp('Compare the received Xp with the transmitted symbols X'); X, Xp

The code indicates via D=Ah*H*A that the DFT matrices obtain a diagonal matrix. Besides, the elements in the diagonal of D coincide with the DFT of the impulse response.

In practice, obtaining a circulant matrix for representing the channel is implemented via a “trick”: adopting a cyclic prefix. Mathematically, the result of using x without cyclic prefix and a circulant matrix is the same as using x with cyclic prefix and a linear convolution matrix (non-circulant).