Communication MIMO Wireless

Published:

This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.

CHAPTER 1

Introduction

The spread of telecommunication has led to a rapid change in the upcoming technologies relating communication. This spreading of technologies has led to a need of “MIMO (multiple input multiple output) wireless communication” which uses multiple transmit and receive antennas for communication.

In wireless communication systems we use different type of antenna technologies to transmit and receive message or data. MIMO is one of the smart antenna technologies used to transmit and receive message or data which uses multiple input and multiple output antennas to transmit and receive our message or data.

1.1 Theory

MIMO (multiple input multiple output) is a smart antenna technology used by many wireless systems now a days. In MIMO technology the system uses multiple antennas at the transmitter as well as at the receiver. This technology is used to reduce the errors and to optimize the data speed.MIMO (multiple input multiple output) technology created a breakthrough in the design of wireless communications systems, and is already used as a standard by several wireless systems.

In this project of MIMO we will discuss different encoders, decoders, modulation and demodulation schemes, channel effects, different types of channels .At encoders we will discuss different encoding schemes like space time block codes and trellis coding schemes .In encoders we will discuss Alamouti and Viterbi encoders. As we will be working on Alamouti encoders, so we will discuss Alamouti encoder in detail in the upcoming chapter of Alamouti Encoders.

We will take the data in the form of a signal or if we have data in the form of a bit stream. At the encoder the data is further encoded, this encoded data is then modulated here we will use QPSK modulation scheme. After modulation we will receive the modulated data affected by the channel effects. This data is then demodulated by the same scheme used at the modulation end which is QPSK. This demodulated data is then decoded by Alamouti or Viterbi decoder.

1.1.1 MIMO's History

1.1.1.1 Past Technologies

The earliest ideas in this field go back to work by A.R. Kaye and D.A. George (1970) and W. van Etten (1975, 1976). Jack Winters and Jack Salz at Bell Laboratories published several papers on beamforming related applications in 1984 and 1986”.[1]

1.1.1.2 Main Technologies

“Arogyaswami Paulraj and Thomas Kailath proposed the concept of Spatial Multiplexing using MIMO in 1993. Their US Patent No. 5,345,599 issued 1994 on Spatial Multiplexing emphasized applications to wireless broadcast.[1] In 1996, Greg Raleigh and Gerard J. Foschini refine new approaches to MIMO technology, which considers a configuration where multiple transmit antennas are co-located at one transmitter to improve the link throughput effectively. [1] Bell Labs was the first to demonstrate a laboratory prototype of spatial multiplexing (SM) in 1998, where spatial multiplexing is a principal technology to improve the performance of MIMO communication systems”.[1]

1.2 Types of wireless communication

In wireless communication systems we use different techniques to transmit and

receive message or data. Following are the techniques used for wireless communication systems.

1.2.1 SISO

SISO is often refers to as “Single Input Single Output”, where SISO is the simplest antenna technology. In SISO wireless communications system it has a single transmitting antenna at the transmitter and a single receiving antenna at the receiver. For a clearer picture of SISO wireless communication you can refer to figure 1.1.

Smart antenna technology is used in order to minimize or eliminate problems caused by multipath wave propagation. The smart antenna technology is divided into three technologies known as SIMO “Single Input Multiple Output”, MISO Multiple Input Single Output”, and MIMO Multiple Input Multiple Output”.

1.2.2 SIMO

SIMO is often refers to as “Single Input Multiple Output”, where SIMO “Single Input Multiple Output” wireless communication system is a smart antenna technology in which multiple antennas at the receiver and a single antenna at the transmitter are used.

SIMO “Single Input Multiple Output” uses a single antenna at the transmitter and a multiple antennas at the receiver on a wireless device to improve the transmission distance.

“Earlier SIMO “Single Input Multiple Output” known as diversity reception, has been used by military, commercial, amateur, and shortwave radio operators at frequencies below 30 MHz since the First World War. In SIMO the antennas are combined to minimize errors and optimize data speed. In digital communications systems such as wireless Internet, it can cause a reduction in data speed and an increase in the number of errors. The use of two or more antennas at the destination can reduce the trouble caused by multipath wave propagation”.

SIMO technology has widespread applications in digital television, wireless local area networks (WLANs), metropolitan area networks (MANs) and mobile communications. For a clearer picture of SIMO wireless communication you can refer to figure 1.1.

  • MISO

MISO is often referring to as "Multiple Input Single Output", where MISO "Multiple Input Single Output" is a smart antenna technology. It consists of multiple antennas at the transmitter and a single antenna at a receiver.

MISO wireless communication system uses multiple transmit antennas and a single receive antenna to improve the transmission distance. MISO technology also has widespread applications in Digital Television, Wireless Local Area Networks (WLANs), Metropolitan Area Networks (MANs), and mobile communications. The antennas are combined to minimize errors and optimize data speed.

In digital communications systems such as wireless Internet, reduction in data speed and an increase in the number of errors is caused. MISO uses two or more antennas along with the transmission of multiple signals (one for each antenna) at the source, can reduce the trouble caused by multipath wave propagation. Figure 1.1 can be seen for a clearer picture of MISO wireless communication you can refer to.

  • MIMO

MIMO meaning “Multiple Input Multiple Output” is a smart antenna technology for wireless communications in which multiple antennas are used at both the source (transmitter) and the destination (receiver).

The antennas are combined at each end of the communications circuit to minimize errors and optimize data speed. MIMO is one of the latest of the smart antenna technology which is used by many wireless systems. The two or more antennas used along with the transmission of multiple signals (one from each antenna) at the transmitter and the receiver, eliminates the trouble caused by multipath wave propagation, and can even take advantage of this effect.

MIMO technology has collected the interest due to its possible applications in digital television (DTV), wireless local area networks (WLANs), metropolitan area networks (MANs), and mobile communications

1.2.4.1 MIMO Functions

MIMO can be subdivided into three main categories namely precoding, spatial multiplexing and diversity coding.

Precoding is multilayer beam forming in a narrow sense or all spatial processing at the transmitter in a wide-sense. To reduce the multipath fading effect and to increase the signal gain from constructive combining are the benefits of beamforming. The transmit beamforming cannot simultaneously maximize the signal level at all of the receive antenna and precoding is used when the receiver has multiple antennas. The knowledge of channel state information (CSI) at the transmitter should be required by precoding.

Spatial multiplexing requires MIMO antenna configuration. In spatial multiplexing, a high rate signal is split into multiple lower rate streams and each stream is transmitted from a different transmit antenna in the same frequency channel. If the signals arrive at the receiver antenna array with sufficiently different spatial signatures, the receiver can separate these streams. Spatial multiplexing is a very powerful technique for increasing channel capacity at higher Signal to Noise Ratio (SNR). Spatial multiplexing can be used with or without transmit channel knowledge.

Diversity coding techniques are used when there is no channel knowledge at the transmitter. In diversity methods a single stream is transmitted while the signal is coded using space-time coding. The signal is emitted from each of the transmit antennas using certain principles of full or near orthogonal coding.As there is no channel knowledge, there is no beamforming or array gain from diversity coding.

Spatial multiplexing can be combined with precoding when the channel is known at the transmitter. It can also be combined with diversity coding when decoding reliability is in tradeoff.

  • Encoders

Digital encoder is an encoder that converts motion into a sequence of digital pulses. By decoding a set of bits or by counting a single bit the pulses can be converted to absolute or relative position measurements.

Incremental encoders are sometime called relative encoders. They are simpler in design than the absolute encoder. They consist of two tracks and two sensors whose outputs are called channels.

  • Alamouti Encoder

Alamouti encoder is a coding apparatus for a transmitter with four transmitting antennas. At transmitter the encoder generates a code symbol vector by encoding an input symbol sequence in a pre determined coding method. The Alamouti encoder encodes the grouped symbol vector in an Alamouti scheme and transmits Alamouti coded symbols through the four transmitting antennas at the transmitter

1.4 Decoders

The following decoder is used for our project some detail of Viterbi decoder is explained as follows

  • Viterbi Decoder

The Viterbi algorithm is a method performed for maximum likelihood sequence detection and can be used for decoding received data generated by convolutional code. [2] The Viterbi algorithm provides a very efficient method for finding "most likely" path. The Viterbi algorithm operates in a step wise manner by processing a set of state metrics forward in time, stage by stage over the trellis. The state metrics can also be called path metrics.

1.5 Organization of study

Chapter 2 describes the existing literature on coding techniques in detail. Chapter 3 describes the communication systems and block codes. In chapter 4 the detail of Alamouti encoder will be discussed. Chapter 5 will describe the design and implementation of our project work and the results of tests. Chapter 6 contains references.

CHAPTER 2

Digital Modulation

The world is changing rapidly. Everyday technology advances vehemently. There was a time when a mobile phone was supposed to be a luxury but now it has become a necessity. There was a time when MMS was an entirely new idea in the world of cellular users but, now, we even have mobile TV, recently launched in Pakistan. All these advancements are the direct result of the rapid growth in digital industry. Every second this world is changing and going digital. Digital signals are much easier to work with. We can easily modify them according to our requirements and their analysis and generation is much cheaper then that of analog signals. This world is going digital and we are facilitating it to become one.

2.1 Digital Communication System

Of course, in the real world we don't have digital signal propagating around us. The real world is in analog domain so the basic step to achieve digital dream is to convert an analog signal into a digital signal. A digital communication system has many parts that will be discussed and described in the later portions of this chapter. The basic and perhaps most important part of a digital system is an Analog to Digital Converter or ADC. To digitize the data we usually use a PCM synthesizer that approximates an analog signal into a discreet time signal. Before discussing PCM let's review some of the basic concepts of digital communications.

2.1.1 Information Theory and Channel Capacity

Information theory tells us how to utilize the available bandwidth effectively to transmit the information through a channel. This is a highly theoretical concept but is very useful in determining some initial values such as channel capacity, bit rate and transmission time.

Channel capacity is basically a count that tells us about the number of symbols that can be transmitted through the channel with bandwidth B. The most basic digital symbol used to represent information is binary digit or bit. [1] So it is convenient if we determine the bit rate to represent the channel or information capacity of our system. Bit rate is simply number of bits sent in a second (bps).

R. Hartley was an employee of Bell Telephone Laboratories and, in 1928, he developed a very important relationship between bandwidth, transmission time and information capacity. This relationship is called Hartley's Law.

Hartley's Law simply states that information capacity of a system increases with the bandwidth and it is also directly proportional with transmission time.

I µ B × t(2.1)

In 1948, C. E. Shannon published his paper in the Bell System Technical Journal and gave a very important relationship between information capacity, Bandwidth and Signal to Noise Ratio (SNR). According to Shannon, the overall performance of the system can be improved if SNR is kept as low as possible. The Shannon limit of information capacity is given as

I = B log 2(1 + SNR)(2.2)

Where I is in bps, B is in Hertz and SNR is a unitless quantity.

SNR = S / N(2.3)

I = 3.32 B log 10 (1 + SNR)(2.4)

For a normal telephone circuit with SNR 30 dB and a bandwidth of 2.7 KHz, the Shannon information capacity is

I = (3.32) (2700) log 10 (1+1000) = 26.9 kbps [1]

In a binary system, to achieve data rate of 26.9 kbps through 2.7 KHz channel, each symbol transmitted must have more then one bit. [1]

2.1.2 Pulse Code Modulation (PCM)

Alex H. Reeves invented PCM in 1937. PCM became famous in mid-60s when solid state electronics became popular. According to Wayne Tomasi, in United States, today, PCM is the preferred method of communicating within a PSTN network because with PCM, it is very easy to combine digitized voice and digital data into a single, high-speed digital signal. [1]

The term pulse code modulation is somewhat confusing. PCM is not a digital modulation scheme. It is just an encoding scheme to digitally encode analog signals. This scheme allows us to have the pulses of fixed length and amplitude. This representation represents two binary symbols (0 and 1) that depend upon appearance and disappearance of the pulse. This means that if we have pulse of 2 volts and we have allocated binary 1 to 2 volts and 0 to 0 volts then 1101 will be two pulses of 2 volts for time t0 and t1, then no pulse for time t2, then a pulse of 2 volts for time t3. An input of analog signal is fed to band-pass filter that allows a certain band of frequencies to pass through it. After BPF, the signal is fed to Sample and Hold circuit with sample pulse. This circuit multiplies the values of the signal with the pulse at certain time slots. Sample and Hold circuit generates a PAM signal that is fed to an Analog to Digital Converter that converts the analog PAM signal to a digital signal. The Parallel to Serial Converter converts parallel data to serial data and then serial PCM code output is used where desired.

The decoding of PCM is more or less same as its encoding. The PCM serial code is fed to a Serial to Parallel Converter that converts the serial data into parallel. The data is, then, fed to a Hold circuit that generates the PAM signal. After the generation of PAM signal, the block of Low Pass Filter comes. LPF filters out additional high frequencies from the PAM signal and generates an analog output signal.

2.2 M-ary Communications

M-ary is from word binary. Bi means two in Latin. M can be any number that is multiple of two. M simply means number of levels or combinations possible for a given number of binary variables. It is often advantageous to encode at a level higher then binary where there are more than two conditions possible. [1] Take the example of M=4. It corresponds to four possible combinations of the basic binary numbers. M=8 corresponds to eight possible combinations of basic binary numbers.

To find the number of bits required to fulfill the requirement of possible combinations is represented by letter ‘n' and is given by

n = log 2 M(2.5)

M corresponds to the number of combinations or conditions required or given.À

Equation (2.5) can be written as

2 n = M(2.6)

n is the number of bits and M is the number of combinations or conditionsÀ required or laid down. For example for M=4, we need

2 n = 4

log 2 n = log 4

n log 2 = log 4

n = log4/ log 2

n = 2

So we require 2 bits to have four binary combinations.

2.2.1 Baud and Nyquist Bandwidth Theorem

The rate of change of signal on the channel after encoding and modulation is called Baud. Baud is a basic unit of transmission rate. Baud can also be defined as the number of symbols per unit time. Mathematically, Baud is reciprocal of transmission time of one symbol.

Baud = 1/ t s(2.7)

Baud is, sometimes, confused with the bit rate (bps). This is wrong as bit rate refers to the rate of change of digital information signal that is usually binary. [1]

Nyquist stated that binary digital signals can be propagated through an ideal medium (read: channel) at the minimum rate that is double of the bandwidth of the channel. This is called Nyquist Bandwidth Theorem.

Mathematically

f b ³ 2 B(2.8)

Where f b is the bit rate in bps and B is the bandwidth necessary to transmit the signal. This bandwidth is often referred as Nyquist Bandwidth or minimum Nyquist frequency. From (2.8) it is obvious that minimum Nyquist frequency will be 2 B. The actual propagation of the signal is dependent on many factors including the type of encoding, modulation, filters, noise and desired SNR levels. Nyquist Bandwidth idealizes channel and, thus, practically actual bandwidth is pretty higher then Nyquist Bandwidth. Nyquist Bandwidth is limited to the comparison purposes only.

Later, a relationship was developed between bandwidth and bit rate. Minimum bit rate requirement for data transmission is 2B.§ If more than two levels are used for signaling then more than one bit will be transmitted at a time. In other words, our symbol will be made up of more then one bit. It is possible to transmit at bit rate greater than 2B. In the case of multi-level signaling a formula has been developed and is called Nyquist Channel Capacity equation.

f b = 2 B log 2 M(2.9)

The minimum Nyquist Bandwidth can be calculated easily from the above equation

B = f b / log 2 M(2.10)

B = f b ´ n(2.11)

Where n is the number of bits calculated in (2.5).

As baud is encoded rate of change [1] so it can also be written as

Baud = f b / n(2.12)

Where f b is the bit rate and n is the number of bits.

2.3 Digital Modulation Schemes

Digital Modulation Schemes are techniques to impose digital data over a carrier. In all digital modulation schemes, data will be represented in the form of points, called signal Constellations. These signal constellations are basically points on the graph representing several levels. These constellations are orthogonal to each other and their Euclidean distance can be calculated. There are many digital modulation schemes available. However, in this report, we will only discuss only few of them. Digital Modulation schemes can be classified into two sub groups: linear and nonlinear. In linear schemes, the amplitude of the modulated signals varies linearly with the modulating

digital signal. [2] They are tested to have very good spectral efficiency and are very attractive to use in digital communication systems.

2.3.1 Amplitude Shift Keying (ASK)

Amplitude Shift keying or ASK is the simplest technique to modulate the digital information directly on a carrier signal. ASK is very much similar to the AM but in binary ASK (M=2) only two amplitudes are possible, representing either 0 or 1. When we vary amplitude we require more energy as energy is given by

E = ò x2 (t) dt(2.13)

ASK is also called Pulse Amplitude Modulation or PAM. The M-ary PAM waveforms are, basically, 1D signals represented by the points in the signal space.

Pm (t) = S m Y (t)(2.14)

Y (t) = g t (t) / Ö E g(2.15)

S m = Ö E g Am(2.16)

S m are signal coefficients and Am are amplitude levels. If the signal amplitudes are systematically spaced and symmetric about zero then we call this a Symmetric PAM. The symmetric amplitude levels are selected by

Am = (2m - 1 - M)(2.17)

m = {1, 2, 3,…, M}

The energy of the signals will be given by

E m = E g Am2(2.18)

For equally probable signals, the average energy will be the linear sum.

E av = E g å Am2 / M(2.19)

When the base-band PAM is impressed over a carrier, band-pass signal waveform forms and is written as

PAM = Am [Ö (E g/2)] g t (t) cos (2pfct) (2.20)

The energy of above signal is given by

E m = E g / 2 Am2(2.21)

So the difference between the base-band and the band-pass signal is just the scale factor of Ö2 and it is obvious that in band-pass case, bandwidth gets doubled. PAM signals are, basically, 1D with the Euclidean distance given by

d = Ö E g (Am - An)(2.22)

m = {1, 2, 3,…, M}

n = {1, 2, 3,…, N}

2.3.2 Binary Phase Shift Keying (BPSK)

In Binary Phase Shift Keying, we modulate our digital information in the phase of the carrier signal. As it is obvious from the name, binary PSK signal will be made up of two signals of distinct phases. Usually, the phase difference between two signals will be p radians. [2]

It is often convenient to generalize m1 and m2 as a binary data signal m(t) that takes values on one of two possible pulse shapes. [2] The BPSK signal can be represented as

z Bpsk (t) = m (t) Ö(2 E b / Tb) cos (2pfct + qc)(2.23)

Suppose that we have selected first phase as 0 then the next phase will be p radians. BPSK is equivalent to DSB-SC where cos (2pfct) is applied as carrier and data signal m(t) is applied as modulating waveform. [2] So BPSK can be generated from the generator of simple DSB-SC.

If sinusoid carrier has amplitude Am then the energy per bit will be

Eb = 0.5 Am Tb(2.24)

In BPSK, M=2 and we only need one bit to represent our two signal constellations given in the scatter plot. The possible binary values can be either 0 or 1. So there are only two combinations possible.

It is not hard and fast rule to keep phase difference p radians. It can be selected differently as well. Most of the time, it depends upon the requirements.

Figure-2.5: BPSK with phase difference of p/2 radians

2.3.3 Quadrature Phase Shift Keying (QPSK)

Quadrature Phase Shift Keying (QPSK) has twice the bandwidth efficiency of BPSK, since two bits are transmitted in a single modulation symbol. [2] In QAM, the information is modulated into phase and it takes on one of four equally spaced values. If the phase of first symbol is 0 radians then the phase of other three symbols will be p/2 radians, p and 3p/2. Each phase is actually representing a symbol that is made up of two bits.

Generally, QPSK with phase difference of p/2 is defined as

z Qpsk (t) = g (t) Ö(2 Es / Ts) cos (2pf ct + [(m- 1) p/2]) 0 £ t £ Ts (2.25)

m = 1,2,3,4

Where T s is the symbol duration and is actually twice of bit period. By using basic trigonometry, we can simplify (2.25) and can write it as

z Qpsk (t) = g (t) cos (2pf ct + [(m ´ p/2])

0 £ t £ Ts

m = 0,1,2,3

z Qpsk (t) = g (t) {cos (2pf ct) cos [m ´ 2p/M] - sin (2pf ct) sin [m ´ 2p/M]}

z Qpsk (t) = g (t) {Amc cos (2pf ct) - Ams sin (2pf ct)}(2.26)

0 £ t £ Ts

m = 0,1,2,3

Where

Amc = cos [m ´ 2p/M](2.27)

Ams = sin [m ´ 2p/M](2.28)

A phase modulated signal can be viewed as a signal that is modulated with four carriers, which are in phase quadrature with four amplitudes: Amc g (t) and Ams g (t). Figure-2.7 shows constellations of a QAM signal with phase difference of p/2.

Now the question arises that if we have to keep the phase difference p/2 always? Sometimes QPSK schemes with phase difference other than p/2 are given a unique name. For example OQPSK is similar to QPSK except for the time alignment of even and odd bit streams. [2] QPSK modulation scheme with phase difference of p/4 is called p/4 QPSK. 45°- QPSK modulation is a quadrature phase shift keying technique that offers a compromise between OQPSK and QPSK in terms of allowed maximum phase transitions. [2] The maximum phase in p/4 QPSK is ±135°. The four phases in p/4 QPSK case will be 45°, 135°, -45° and -135°. Figure-2.8 shows the scatter plot of a p/4 QPSK signal with phases 45°, 135°, -45° and -135°.

The Euclidean distance between adjacent symbols will be

d m n = Ö (2 E s (1 - cos (2p / M))(2.29)

2.3.4 Quadrature Amplitude Modulation (QAM)

We have seen how we can modulate our information in amplitude (ASK) and in phase of the carrier signal (PSK). What if we combine them both? If the amplitudes of the transmitted signal waveforms are different and their carriers are also in phase quadrature, then this scheme is called Quadrature Amplitude Modulation or simply QAM. In QAM we will not only impress our information in the amplitude (as in ASK) but we will also perform phase modulation (as in PSK). QAM is the combination of ASK and PSK. A typical QAM signal is given as

U (t) = Am g (t) cos (2p f c t + 2p n/M2)(2.30)

m = 0, 1, 2, …, M1

n = 0, 1, 2, …, M2

The energy of a QAM signal is given as

E m = ò U2 (t) dt = E g A2m / 2(2.31)

The energy of the signal will vary with its amplitude. Now suppose that M1 = 2k1 and M2= 2k2 then the combined phase and modulation results will be given by

k1 + k2 = log 2 (M1 M2)(2.32)

The bit rate will be given by

R b = 1/Tb(2.33)

The symbol rate is given by

Rs = R b / k1 + k2(2.34)

The criterion to select amplitudes will be the same as it was in ASK. The amplitudes will be given by

Am = (2m - 1- M1) d/2(2.35)

Most of the time, we assume d/2 = 1. Figure-2.9 shows the constellations of a QAM signal for M = 16. From the figure, we are able to see four different amplitudes and four different amplitudes. Equation (2.32) deals with such case. In the figure, M1 = M2 = 8.

Now

M = M1 + M2(2.36)

Figure-2.9: QAM Signal Constellations (M=16)

We can have various arrangements of signal constellations in QAM scatter plot because of phase and amplitudes.

2.3.5Other Digital Modulation Schemes

Other important digital Modulation schemes are Frequency Shift Keying (FSK) and Pulse Position Modulation (PPM).

2.3.5.1 Pulse Position Modulation (PPM)

When M orthogonal signal waveforms are non-overlapping in time, the digital information that is transmitted is conveyed by the time interval that signal pulse occupies. This type of digital modulation is commonly called Pulse Position Modulation or simply PPM.

A PPM signal is represented by

P m (t) = A g t (t - [(m-1) T / M])(2.37)

m = 1, 2,…, M

[(m-1) T / M] £ t £ [m T / M]

Where, g t (t) is a signal pulse of duration T / M and of arbitrary shape. If we have to transmit four pulses then the duration of first pulse will be

(m=1) P 1 (t) = A g t (t)0 £ t £ T /4

(m=2) P2 (t) = A g t (t - T / 4)T / 4 £ t £ T / 2

All signals may have the same energy but different energy signals are much more useful. In all PPM signals, the amplitude A will be constant. The energy of a PPM signal is given by

E s = ò A2 g t (t - [(m-1) T / M])(2.38)

m = 1, 2,…, M

[(m-1) T / M] £ t £ [m T / M]

Euclidean distance of PPM signals is given by

d m n = Ö (2 E s)(2.39)

M- ary PPM signals become orthogonal to each other in the time domain by the means of non-overlapping pulses. A PPM signal can also be modulated on a carrier. A carrier modulated PPM signal is given by

P c (t) = P m (t) cos (2p f c t)(2.40)

2.3.5.2Frequency Shift Keying (FSK)

As obvious from the name, Frequency Shift Keying or simply FSK is a modulation scheme in which digital information is transmitted through frequency changes of a carrier wave. The simplest form of FSK can be Binary FSK or BFSK. In BFSK, we have only two combinations so they can be transmitted with the help of two frequencies. The frequency that represents 0 is called a space frequency and the frequency that represents 1 is called mark frequency. The result is, actually, the sum of two amplitude modulated signals having distinct carrier frequency.

F (t) = g1 (t) cos (2p f c1 t) + g2 (t) cos (2p f c2 t) (2.41)

FSK is classified into two categories: wideband (WBFSK) and narrowband (NBFSK). In WBFSK, frequency separation between the two carrier frequencies is very large while in NBFSK, the separation between two carrier frequencies is less than the width of the spectrum than ASK of the same modulation.

CHAPTER 3

Communication Systems and Block Codes

In this chapter we will discuss signal constellations including scatter plot, and the constellation point in the communication system. After that some encoding schemes including NRZ, Manchester encoding etc. further more some block codes and its types and that scheme which we are using in our project.

3.1 Constellation Diagram and Constellation Points

Constellation diagram is that diagram which represents the modulated signal after some modulation (digital modulation) techniques/schemes such as QAM (quadrature amplitude modulation) or PSK (phase shift keying) etc. It is a two dimensional diagram which is known as scatter plot [1].

Constellation diagram is formed by plotting constellation points on a scatter plot.

Constellation points consist of symbols and by plotting these symbols according to the applied scheme on scatter plot produce the constellation diagram.

Here “M” denotes the number of signals and k is number of bits. In this case each symbol consists of 2-bits because

“M = (2)k = (2)2 = 4” [2]

In a communication system constellation points and constellation diagram is very important because the constellation points consists of symbols which are represented as a complex number.

3.2 Different Encoding Schemes

Different encoding schemes are used to encode data. Purpose of every encoding scheme is to encode data and then transmit it.

Some of the encoding schemes are Manchester encoding, NRZ encoding etc.

Manchester encoder maps data of information 1 into 10 and a 0 into 01”. [2]

The above definition can be more understandable if we consider as an example and then apply the above definition.

For example: 1 into 100 into 01

A

A

&

-A

-A

Figure-3.3: Manchester Encoding

Manchester encoder encodes bits as shown above. From the fig it can be seen that if the data or information is come to the Manchester encoder, it check that if the incoming bit is 1 of some positive amplitude then it consider it as 1 and the encoder encodes bit 1 into 10 similarly if negative then encoder consider as a 0 and encodes 0 into 01 as it as mentioned in the figure above.

3.3 Space Time Codes

3.3.1 Overview with respect to MIMO

In wireless communication, the communication is held due to the antennas. The data or message send from the transmitter end is received at the receiver end. Most channel are used for wireless communication such as SISO (single input single output) MIMO (multiple input multiple output) etc.

In traditional single antenna systems, multi-path propagation is detrimental to the performance of the system. In fact, often it is called multi-path interface. . The reason for this negative impact is because the multiple propagation paths can cause multiple "copies" of a signal to arrive at the receiver at slightly different times. These time delayed signals then become interference when trying to recover the signal of interest. However MIMO systems are designed to exploit the multi-path propagation to obtain a performance improvement which is more reliable.

MIMO systems aim to use the multiple communications channels that potentially exist between the multiple transmit and receive antennas,

it is obvious that the signal received by a particular antenna at the receiver is actually a "mixture" of the signals transmitted from both the transmit antennas. The actual proportion of each transmitted signal that is received depends on the transmission channel in between the particular transmit and receive antennas. A simplified equation for the signal received at the top receive antenna is:

Rx1 = (h1, 1 × Tx1) + (h2, 1 × Tx2)

So the "amount" of the signal from Tx1 that is received is governed by the channel h1, 1, similarly Tx2's signal is governed by h2, 1.

Obviously the big problem with this is that the receiver sees a combination of what was transmitted from both transmit antennas. MIMO systems attempt to overcome this problem, by using various coding schemes that define what signals should be transmitted, and at which times, to ensure the possibility of the recovery of original signals from the jumbled version of that is received. These coding schemes are known as "Space-Time-Codes” because they define a code across space (read: antennas) and time (read: symbols). Traditional codes typically only operate across time (read: symbols).

Space time block codes are used to encode data in MIMO wireless communication systems to improve its performance and also for a reliable communication.

3.4 Types of Space Time Codes

Space time codes are divided into two types.

  • Block codes
  • Trellis codes

3.4.1 Space Time Block Codes

Basically block code is a type of channel coding. It takes k-digit information word and transforms this k-digit information word to n-digit code words.

Firstly in 1998, the most famous space-time block code was proposed by Alamouti. It is proposed to study the code and to analyze those codes using metrics developed; and finally simulate it for different receiver antenna configurations.

Further more block codes are divided into two types.

  • Linear block codes.
  • Non-linear block codes.

Our point of discussion that is relevant to our project is linear block codes. Further more trellis codes.

3.4.1.1 Linear Block Codes

An (n, k) block code (we are discussing only for binary codes) is completely defines by “M = (2) k” binary sequences of length n called code words. i.e.

C = {c1, c2, c3 …cM}

Where “c1, c2, c3…cM” are the code words and capital ‘C' consists of these code words of length M.

Where each ci is the sequence of length n and it has components equal to 1 or 0.

“A block code is said to be linear only if the addition of any two code words is also give a code word.” [2]

If we consider that ci and cj are the code words (in case of binary) the component wise modulo-2 addition of these two codes will also give a code word. Where s shows the component wise modulo-2 addition.

So it can be seen that the linear block codes are k-dimensional subspace of n-dimensional space. And it is also being seen that the linearity of the block code is depend on the code. All zero sequence is also a linear block codes until it can be written according to the above definition.

Some other parameters that characterized a code are Hamming distance, Hamming weight.

“Hamming distance is a distance between two code words ci & cj is the number of components at which the two code words differ and is denoted by d (ci, cj)”.

Euclidean distance is also written in a same way but here we consider the hamming distance between the two code words. The minimum hamming distance between two different code words is denoted by dmin, where d is the hamming distance and min denotes the minimum distance between two different code words. In dmin, min is in subscript. i.e.

dmin = min d (ci, cj) only when, when (i ≠ j).

The other parameter is “hamming weight”,

“Hamming weight is defined as, it is the simply a weight of a code word ci is the number of nonzero components of the code word and is denoted by ω (ci)”.[2]

The minimum weight of a code word is denoted by ωmin where min is in subscript and is expressed as

ω min = min ω (ci) only if (ci≠0)

ωmin is defined as “the minimum of the weights of code words except all zero code word”. Or it can also be defined as

“The minimum weight of a block code is a weight of the non-zero code word with smallest weight.”[3]

It is also obvious that when there is a minimum hamming distance exists between two different codes then there should be a minimum hamming weight of the code words i.e. d min = ω min.[2]

3.4.1.2 Generator Matrix

“The generator matrix of a linear block code C of block length n and dimension k is any k×n matrix G whose rows form bases of C”. [2],[3]

So

C = XG

Here G is the generator matrix has rank k & X is the any information sequence of code.

i.e. X = (x1, x2, x3… xk).

The generator matrix can be defined as:

g1g11g12. . . . . .g1n

g2g21g22. . . . . .g2n

g3g31g32. . . . . .g3n

G = . = . .. . . . . . .

. . .. . . . . . .

. . .. . . . . . .

. . .. . . . . . .

gkgk1gk2. . . . . .gkn

So as it is mentioned above that

C = XG

so it can be seen that for any linear block code the generator matrix is a (k×n) matrix of rank k, because the dimension of the subspace is k so that's why it has kth rank.

The length of the generator matrix will be that as shown above. It means that the generator matrix have k rows.

The code word corresponding to each information sequence starts with a replica of the information sequence itself followed by some extra bits. Such a code is called systematic codes and the extra bits following the information sequence in a code word are called the parity check bits.

3.4.1.3 Parity Check Matrix

“A parity check matrix for a linear block code C is any r×n matrix denoted by H whose rows span the orthogonal complement of matrix C, i.e. C┴”.

Here (r ≥ n - k). [2],[3].

Extra bits following the information sequence are known as parity check bits.

So the parity check matrix can be defined as:

H = [-Pt | I]

Where I is the identity matrix of order k and P is k × (n-k). And Pt is the transpose of that matrix P.

For example:

I = 1 0G =10100

0 1; 01111

P = 100

111

Converting rows into columns we get

11

Pt = 01

01

So the parity check matrix of this will be according to the definition is:H = [-Pt | I]

Therefore:

11 100

H =01 010

01 001

Here it is shown that in binary case -Pt = P. [2]

3.4.2 Space Time Trellis Codes (STTC)

Trellis scheme is basically a mapping by set partitioning scheme that was firstly introduced by Ungerboeck in 1982. It is used to achieve a good overall performance. This concept can be used in conjunction with both block codes and convolution codes. In block codes Viterbi decoder is not used but in convolution codes it is used.

In space time trellis codes, a stream of data is encoded Nt encoder to obtain Nt stream i.e. x1, x2, x3….xnt. [4]

Tx1

CC

x1(n)

Tx2

S(n)x2(n)

CC

Figure-3.5: Trellis state diagram

00/00 01/01 10/02 11/03

00/10 01/11 10/12 11/13

00/20 01/21 10/22 11/23

00/30 01/31 10/32 11/33

Figure-3.6: Trellis State Diagram. [4]

Above figure shows the 4 state space time trellis code having 2 transmit antennas. And at CC

g1 = [(0 2),(2 0)] andg2 = [(1 0),(0 1)]

Here the encoder takes 2 bits as an input at each time. So the input sequence will be

c = (10, 01, 11, 00, 01….) and the output sequence will be x = (02, 21, 13, 30, 01….)

Hence antenna 1 has sequence x1 = (0, 2, 1, 3,0…) and antenna 2 has x2 = (2, 1, 3,0, 1…).

To understand that, we have to consider an example for Trellis code of QPSK will be

b

ca

d

01

b

c a

d

0 101

b c a

d

Code for d is:00;Code for c is:01

Code for b is:10;Code for a is:11

These are the Trellis codes for QPSK constellation, each constellation points represents in 2 bits. For QPSK we have 2 generator matrices.

G1 = 0 0 G2 = 1 0

0 11 1

Here we can see that both generator matrices are conjugate to each other so it is also satisfy there conjugate property of the generator matrix.

Similarly for 8-PSK we have 8 constellation points and each point consists of 3 bits because M = 2k.

3.5 Cyclic Codes

“A cyclic code is a linear block code such that the cyclic shift of every code word is also a code word”. [2], [3]

It is not obvious by the inspection that this property holds for the code generated by G.

To understand the cyclic shift we have to assume a code word i.e.

c = (c1, c2, c3 …cn)

And the cyclic shift of this code word is denoted by:

c(1) = (c2, c3 …cn, c1)

For example: The code {000, 110, 101, 011} is a cyclic code because it is easily verified to be linear and a cyclic shift of any code word is also a code word. Where as the code {000, 010, 101, 111} is not a cyclic code because the cyclic shift of 101 is not a code but although it is a linear code.

For example: G and H for (7, 4) cyclic hamming code. [2],[3]

So the H matrix corresponding to that of G matrix is

Cyclic codes include some other codes which are given below i.e.

  • BCH codes
  • Read-Solomon codes

3.5.1 Bose, Chaudhuri and Hocquenghem Codes (BCH Codes)

These codes are the subclass of the cyclic codes. These are designed for the correction of the t errors.

3.5.2 Read-Solomon Codes

These codes are the subset of BCH codes. These are non binary codes. The code word c = (c1, c2, c3 …cn) has the elements ci, 1≤ I ≤ n, these all are the members of q-ary, where q = 2k. It implies that k bits are mapped into a single element from the q-ary and Read-Solomon codes maps q-ary symbols into N q-ary symbols and then transmit it over a channel. [2]

CHAPTER 4

Alamouti Encoder

In optical communication systems considering direct detection at the receiver, intensity modulations such as ON-OFF keying (OOK) or pulse-position modulation (PPM) are commonly used to convey the information. Let us consider the possibility of applying space time coding in such a scenario using, for example, an Alamouti-type coding scheme [1]. In the Alamouti code there is a fact that the modulation that defines the signal set is meaningful to transmit and detect both the signal and its negative (conjugate). The modulation schemes such as phase-shift keying (PSK) and quadrature amplitude modulation (QAM) are likely to fall into this class while OOK and PPM are different because the signal polarity (phase) would not be detected at the receiver.

4.1 Alamouti Schemes

The Alamouti techniques for wireless communications play important role by improving the signal quality of receiver on one side of the link by simple processing across two antennas on the opposite side. The same technique could be enhanced to M-receive antennas to provide diversity of the order of 2M.

“The scheme requires no bandwidth expansion, as redundancy is applied in space across multiple antennas, not in time or frequency” [2].

This scheme could be very effective in different applications of wireless communication where the performance is limited by multipath fading. As we increase the number of antennas of the base station and apply a similar scheme on them a cost effective solution could be achieved.

The first example of a space time code was the Alamouti's transmit diversity scheme which requires only linear processing at receiver. The old space time coding schemes used Trellis based processing. They provided substantial gains in a wireless communications system. These trellis based coding schemes were much more complicated to implement than the scheme proposed by Alamouti.

This lower complexity makes Alamouti's scheme an ideal candidate for real world implementation. The simplest case of Alamouti's scheme utilizes two transmit antennas and one receive antenna. Alamouti included a generalization of his scheme to an arbitrary number of receive antennas, and others later extended his work to include an arbitrary number of transmit antennas” [3].

4.2 Alamouti Encoder

When an Alamouti encoder is included in a transmitter design it does not significantly increase its complexity. The hardware realization differs very little from the implementation of two standard wireless transmitters. The operation that is only performed by the Alamouti encoder on modulated symbols is the negation of either the real or imaginary part of a symbol. For most of the constellations, this process is analogous to mapping one symbol to another valid symbol. Two streams of modulated symbols is the output of the encoding process. Both of the two streams can be fed to identical transmit chains each driving a separate antenna.

4.3 Alamouti Code

There are a number of Space Time codes but we are interested in the Alamouti code named after S.M. Alamouti who proposed the code in 1998. The Alamouti code is known as Space-Time Block Code (STBC).

4.3.1 Space Time Block Codes

A Space-Time Block Code (STBC) shortly named block code is a code that operates on a "block" of data at a time and the output only depends on the current input bits. The main reason for using a block code is that typically it requires much less processing power to decode a block code than a convolutional code.

4.3.2 Convolutional Codes

The convolutional codes are the codes whose output is dependant on the current input as well as on the previous inputs. These codes may not possibly produce the same output for a given input due to its dependence on the previous input bits.

4.4 Alamouti Matrix

The Alamouti code is most successfully described by the following matrix, where X is the encoder output, and s1 and s2 are the input symbols, and a "*" denotes a complex conjugate. The Alamouti matrix can be written as:

Here the row represents the transmit antennas and s1 and s2 are the symbols of the corresponding antennas. The columns represents the time at which the specific (selected) symbol is transmitted.

However it is still not clear what this matrix means physically. There is a block diagram of the transmitter module in a MIMO system using the Alamouti code. The Modulator at the left hand side binary bits enters into it which converts binary bits into "symbols" which are usually represented by complex numbers. In SISO “Single Input Single Output” system these symbols would be transmitted directly. However in MIMO system these complex symbols are fed into the Alamouti Encoder, which maps the symbols onto the transmit antennas using the matrix mentioned above. So the meaning of the matrix becomes clearer now. The rows represent the transmit antennas and the columns represent time. Each element of the matrix tells us which symbol is to be transmitted from a particular antenna and when.

From the code matrix we can see the Alamouti code works with pairs of symbols at a time, and it also takes two time periods to transmit the two symbols. Therefore it has the same data rate as the uncoded data stream; the technical name for this is a "full rate" code.

4.5 Performance Improvements

As the Alamouti code is a full rate code so there is no immediate increase in the data rate of the system. However there is an improvement in the "error performance" of the system. At a given signal-to-noise ratio the Alamouti scheme will have fewer errors as compared to the equivalent SISO system.

The improvement in error rate is due to the redundant information transmitted by Alamouti encoder. From the code matrix mentioned above you can see that s1 and s2 are transmitted in both time intervals. So there is more chance that the receiver can reconstruct the original symbols, even if there is a low signal-to-noise ratio.

However this increased error performance can be used to increase the data rate by using so called "higher order constellations". This means that each symbol encodes more than one bit of information. For instance QPSK encodes 2 bits of information per symbol, and 16-QAM has 4 bits, and there are many others with even more bits per symbol.

However when using the Alamouti code we essentially get in improvement in error performance for "free", i.e. without actually changing the signal-to-noise ratio. So it is feasible to use these higher order constellations without increasing the transmit power of the system.

CHAPTER 5

Alamouti Encoder with Trellis Encoding

In Chapter 2 we gave the brief introduction of Digital Modulation Schemes.

Similarly in Chapter 3 and 4 we gave the basic overview of Block Codes and Alamouti Encoder respectively. In this chapter we will elaborate the implementation of Alamouti Encoder in a less conventional way. In chapter 4 we have described the basic concepts and conventional implementation of Alamouti Encoder Algorithm.

5.1 Alamouti Encoder

Alamouti Encoder was designed back in 1998 to enhance the spatial diversity of MIMO systems. The basic concept of this encoder was to transmit signals from n antennas, to increase the spatial diversity, that are orthogonal to each other in the space. A typical Alamouti Encoder's representation matrix is given as:

(5.1)

Where Time is on horizontal axis and Antennas are on vertical axis. The four members of Transmission Generator Matrix are, basically, four symbols that are sent on different time slots and on different antennas. The important point is that symbol S1‘s conjugate is sent on second antenna on the same time. This is actually another symbol (say S3). Same is the case with S2 and its conjugate. All these four symbols are orthogonal to each other. This information is the head-start to achieve our goal in our project. To implement Alamouti's Encoder with another scheme we kept in mind the points that are described in the topic below.

5.2 Trellis Codes and their Properties

In Chapter 3, we described basic block codes. Trellis codes are linear block codes that are orthogonal to each other. They are linear because they follow these properties:

  • The linear combination of two code words (read: symbols) is also a code word.
  • Hamming distance between the two symbols is the number of components at which two symbols differ.
  • The hamming weight of the symbol is the non-zero components of the symbol.
  • The minimum distance between two symbols is the minimum hamming distance between two different symbols.
  • The code word 1 that is of minimum weight is the code word that has the maximum number of zeros.
  • In Trellis Linear Codes, d min = w min

5.3 A Different Approach to Alamouti Encoder for 2´2 System

We saw earlier that in Alamouti's algorithm, symbols are sent on multiple antennas such that on two antennas symbols are conjugate of each other. This information gave us the head-start in the design of our algorithm. In this new approach we are using Trellis Encoding to encode the data that we generated after modulating digital data by using QPSK modulation scheme. To use QPSK is not a hard and the fast rule. Any other modulation scheme (such as QAM) can also be used. A block diagram of our Encoder is given below.

  • Input Buffer

In the design of this Encoder we have presumed an Input Buffer that buffers up the stream of incoming data after digitizing it. In our project we didn't care about the digitization of analog data but, in Chapter 2, we have discussed schemes, like PCM, to digitally encode the analog data. Input Buffer is a FIFO buffer that stores the data that has already been converted to digital by applying PCM code. However, details are irrelevant to this particular project.

  • QPSK Modulator

QPSK Modulator is a digital modulator that modulates the digital data by using QPSK modulation scheme discussed in Chapter 2 of this report.

These signal constellations are selected such that each adjacent signal constellation is differs from other through the phase of p/2 radians. After the generation of these signal constellations; data is fed to trellis encoder.

  • Trellis Encoder

Trellis Encoder generates trellis codes against these signal constellations. As described earlier, these codes are orthogonal to each other. Trellis codes also possess a very unique quality. All codes are related to each other through compliment or conjugate.

For example suppose that we have a codeword 00. To find it's compliment: change each bit i.e. change 1 to 0 and 0 to 1. So after changing it becomes 11. This is another codeword. Now invert 11 and change the right most bit and again invert the codeword. It will become 01 that is another codeword.

Trellis Encoder generates these code words or symbols. In a 2 x 2 system, there will be four code words each of 2 bits. To calculate the number of bits we use equation (2.6).

2 n = M

Where n is the number of bits for a single symbol. In QPSK, there are 4 constellations, each represented by 2 bits.

  • Generator Matrix Generator

Perhaps the most important part in this encoder system is Generator Matrix Generator. We already have Trellis codes with us that are orthogonal, linear and have a special property that they are either compliment or binary conjugate of each other.

Generator Matrix Generator performs these main tasks.

  • It selects the Trellis code of a constellation randomly.
  • It locates the code that is compliment of the first symbol.
  • It generates the Generator Matrix.
  • It creates Generator Matrix for other symbols by following the same process.
  • It checks if two generator matrices are binary conjugate of each other or not.

When the condition laid down in (v) is fulfilled it transmits the generator matrices through two antennas installed at the base station.

START

Select

Constellation

NO

Look for Compliment

Back to Trellis Encoder

Transmit

Symbols

Figure 5-1 Modified Alamouti Encoder's Block Diagram for 2 ´ 2 system52

YES

Figure 5-2: Scatter Plot of QPSK Signal Constellations53

Figure 5-3: Frequency Domain Plot of QPSK Modulated signal53

Generate

Matrix

Figure 5-4: Trellis codes generated in MatlabÒ54

Check

Conjugate

YES

NO

Figure-5.5: Flow Chart for the Generation of GENERATOR MATRICES

Figure-5.5 shows the flow chart for the generation of Generator Matrices. This procedure is valid for n x n systems. But in this project we have implemented a 2 x 2 MIMO system. In the figure-5.6, generated Generator Matrices are shown.

GENERATOR MATRICES

G1 =

0 0

0 1

G2 =

1 0

1 1

CHECKING IF G2=G1*

G2=G1*

Generator Matrices are Conjugate of each other

Figure-5.6: Generation of Generator Matrices implemented in MATLABÒ

5.4 Transmitter and Generator Matrices

The Generator Matrices are then transmitted on a MIMO (2 x 2) system. This generator matrices system has been tested for MISO (Multi Input Single Output) antenna systems as well. The transmission of these generator matrices follows Alamouti's pattern. This means that a certain time slot, a symbol and its conjugate are transmitted. This has enabled us to transmit multiple symbols at a single time slot and, thus, we have increased the spatial diversity of our communication systems. The transmission pattern and generator matrices have enabled us to provide some additional checks that are very useful in the decoder side of the system.

The matrices are transmitted in this pattern:

p>g1

g2

G1 =

(5.2)

g3

g4

G2 =

(5.3)

Now G1's conjugate is G2. That can be verified by following the procedure laid down in section 5.3.3. So now we have two generator matrices that are related to each other such that G1* = G2.

Alamouti Encoder's basic idea was that at a certain time slot a symbol and its conjugate are transmitted (equation (5.1)). We have followed the same procedure for the transmission of these symbols.

g1

g1' = g2

Tx1

Tx2

g1* = g3

g2* = g4

T0T1

(5.4)

Figure-5.7 shows an approximate graph for the transmission of symbols. This may not be the exact graph because it exaggerates the time. This is, however, shown to explain the transmission characteristics for this encoder 8.

5.5 Channel and it's Effects

In our project, we have used AWGN channel that adds White Gaussian Noise to the symbols and corrupts them. However, other channels can also be used. We have also checked the system's performance in the noisy environment that will be discussed later in Chapter 6.

After passing through the channel, generator matrices get corrupt and they are received at the receiver in the corrupt form. The channel adds unwanted changes to the generator matrices and attenuates the signal. The system's performance will be discussed later in Chapter 6

CHAPTER 6

Likelihood Decoder for Alamouti Encoder

In Chapter 5, w

Writing Services

Essay Writing
Service

Find out how the very best essay writing service can help you accomplish more and achieve higher marks today.

Assignment Writing Service

From complicated assignments to tricky tasks, our experts can tackle virtually any question thrown at them.

Dissertation Writing Service

A dissertation (also known as a thesis or research project) is probably the most important piece of work for any student! From full dissertations to individual chapters, we’re on hand to support you.

Coursework Writing Service

Our expert qualified writers can help you get your coursework right first time, every time.

Dissertation Proposal Service

The first step to completing a dissertation is to create a proposal that talks about what you wish to do. Our experts can design suitable methodologies - perfect to help you get started with a dissertation.

Report Writing
Service

Reports for any audience. Perfectly structured, professionally written, and tailored to suit your exact requirements.

Essay Skeleton Answer Service

If you’re just looking for some help to get started on an essay, our outline service provides you with a perfect essay plan.

Marking & Proofreading Service

Not sure if your work is hitting the mark? Struggling to get feedback from your lecturer? Our premium marking service was created just for you - get the feedback you deserve now.

Exam Revision
Service

Exams can be one of the most stressful experiences you’ll ever have! Revision is key, and we’re here to help. With custom created revision notes and exam answers, you’ll never feel underprepared again.