The performance of MIMO systems depends on the accuracy of channel state information (CSI). In a fast varying channel, the channel estimate must be updated more frequently. Generally, a training sequence is used for channel estimation [22–24]; however under fast varying conditions, the interval between successive training sequences becomes small, and thus the efficiency is reduced. Our aim in this section is to develop an algorithm to update the channel estimate using the received signal in order to increase the interval between successive training intervals.

Several channel tracking algorithms are available for single and multiple antenna systems. In [25], a maximum likelihood channel tracking algorithm has been proposed. Kalman filters have been considered in several papers. In [26], the authors combined a Kalman filter with a decision feedback equaliser (DFE). The DFE is used to estimate the transmitted signal, and its output is fed to the Kalman filter for channel tracking. In [27], an autoregressive moving average (ARMA) filter was used to model the channel response based on Jakes' channel power spectral density; this was then used to design a Kalman filter for tracking. The main limitation of these algorithms is complexity. The decoding algorithms for MIMO systems are usually very complicated and, therefore, it is desirable to minimise the channel estimation and tracking complexity. In this section, we develop a simple single tap Kalman filter to update the channel and thus reduce the BER while keeping the increase in hardware complexity to minimum.

For a *p* × *q* VBLAST system with *p* transmit and *q* receive antennas, *q* ≥ *p*, in a flat fading channel, the received signal vector of length *q* () at time index can be written as

where is the *q* × *p* channel matrix, is the column vector of *p* transmitted symbols, and is the column vector of *q* white noise samples at time . Unless otherwise specified, bold upper-case characters represent matrices and bold lower-case characters represent vectors while normal lower-case characters represent elements within the matrix/vector of the same character. Our analysis assumes that the antenna separation is large enough for the received signals to be uncorrelated.

Let the estimated channel matrix be . The simplest BLAST receiver (zero-forcing receiver) calculates an estimate of the transmitted symbols () using the pseudoinverse of the channel matrix () as [28]

Define as

Substituting (9) in (11) and assuming correct decoding, we find

Note that the term is calculated in the cancellation step of the VBLAST decoding algorithm. can be used with a first-order Kalman [13] filter to improve the channel estimation as

where **K** is a *q* × *p* matrix of update parameters and the dot in (13) represents the element-by-element multiplication.

We now need to find the optimum value of **K**, however, since we assume that the receive antennas are not correlated; we need to optimise for only one antenna. Equation (12) can be rewritten for the elements of the matrix as

The subscripts identify the row (*i*) and column (*j* or *l*) which represent receive and transmit antennas, respectively, while the superscript (*n*) denotes the time index. is the element at column *j* of the row vector (). Equation (14) can be expanded using (9) as

and assuming correct decoding as

Here, , and is the product of the and terms. The elements of the updated channel can be written as

With the assumption of independent identically distributed (i.i.d) white data and equal average signal to noise ratio (SNR) for the receive antennas, the last two terms in (18) can be approximated by white noise with average power [13]:

where is the original noise to signal power ratio for receive antenna *i*, is the average error covariance reduction value, and is a constant that specifies the fraction of noise associated with stream *j*. The optimum value of is the one that minimises the expression . For , is the symbol duration, the channel autocorrelation function () can be approximated by (20) [29, 30]. The optimum value of is then found using (21) to (24),

We define as the total SNR if all transmitting antennas transmit the same symbol. We set and equal to 1/*p* in (22) since we assume equal average transmit (receive) power for each transmit (receive) antenna. The parameters are calculated recursively. First, we assume no interference from the other symbols and set = 0. This is best suited for the last decoded symbol in VBLAST since all the other symbols would be cancelled out by then. We then calculate and for this stream. Next, we substitute the new value of for the next to last decoded symbol and calculate the then update . After all the initial parameters are calculated, the process is repeated again with from the calculated . This process converges very quickly, and the final values of are not very different from the initial ones. The parameters then can be used to update the channel estimate. The algorithm requires the calculation of parameters, one for each transmit antenna (21) and (24). These can be calculated once at the beginning of the packet and held constant for the duration of the packet. requires the pseudoinverse of the (*p* × 1) vector **s**, which can be precalculated and stored, and then multiplying it by the term , (11), which is calculated in the VBLAST algorithm. This multiplication consists of *p* × *q* complex multiplication. The update algorithm, (13), requires *p* × *q* real-by-complex multiplication and *p* × *q* complex addition.

A simple analysis shows that the algorithm requires 6*p* × *q* real multiplications and 4*p* × *q* real additions per update. Assuming a 2 × 4 system, the algorithm then requires 48 multiplications and 32 additions. If channel update is conducted for every symbol, then a chosen 500 MHz DSP processor, which executes a multiplication in 1 cycle, can compute the update in 160 nanoseconds.

We ran a number of simulations using Matlab for a 2 × 4 VBLAST system with a symbol rate of 1 MSymbol/s and the elliptical channel model. The frequency was 5.9 GHz. In our simulations, initially the algorithm would have perfect channel knowledge rather than estimating from a training sequence. This is necessary to isolate any errors that might arise from the use of training sequence estimation. The initial values of were used to reduce complexity, and the channel estimate was updated for every symbol.

Figure 5 shows the mean square error in the estimated channel for the cases of 256, 512, and 1024 symbols per antenna using QPSK modulation with channel update, using (12) and from (21) to (24), compared to 256 without update. As can be seen from Figure 5, the update algorithm reduces the MSE by 50% at 12 dB . The MSE in Figure 5 without update does not depend on the SNR because the receiver is assumed to have perfect noise-free estimate of the channel at the beginning of the packet, and this is held constant for the duration of the packet. Figure 6 shows the MSE versus the symbol number for 26 dB . Initially, the receiver will have perfect channel knowledge (MSE 0) but with time this estimate becomes invalid due to the high Doppler shift. If a training sequence was used, the initial MSE will be greater than 0, thus shifting the curves upwards. The difference between the curves, however, will not change and, therefore, the MSE comparison will still hold.

Figure 7 shows the BER performance of QPSK for various relative vehicle speeds. As can be seen, the performance improves considerably when the algorithm is used and is 2 dB from that of perfect channel knowledge for 60 km/h. Figure 8 shows the performance of the same system using QPSK with various packet lengths for a speed of 60 km/h. From Figure 8, we observe that the performance degrades as the packet length increases; this is due to two reasons. The first reason is estimation error, as the estimation process proceeds, the error in the estimation accumulates, and for long packets this will lead to erroneous results near the end of the packet. The second reason is detection errors since the probability of symbol errors increases as the packet length increases. The estimation algorithm assumes correct decoding; therefore, such errors will affect the performance of the algorithm.