This model shows how to use the Rayleigh and Rician multipath fading channel blocks from the Communications System Toolbox™. Rayleigh and Rician fading channels are useful models of real-world phenomena in wireless communications. These phenomena include multipath scattering effects, time dispersion, and Doppler shifts that arise from relative motion between the transmitter and receiver. The model also shows how these blocks operate with the channel visualization tool.
Model and Parameters
The example model simulates QPSK transmission over a multipath Rayleigh fading channel and over a multipath Rician fading channel. You can control transmission and channel parameters via workspace variables.
modelname = 'commmultipathfading'; open_system(modelname);
The following variables control the "Bit Source" block. By default, the bit rate is 500 kb/s (250 ksym/s) and each transmitted frame is 200 bits long (100 symbols).
bitRate % Transmission rate (b/s) bitsPerFrame % Number of bits per transmitted frame
bitRate = 500000 bitsPerFrame = 200
The following variables control both the Rayleigh and Rician fading blocks. By default, the channel is modeled as four fading paths, each representing a cluster of multipath components received at around the same delay.
maxDopplerShift % Maximum Doppler shift of diffuse components (Hz) delayVector % Discrete delays of four-path channel (s) gainVector % Average path gains (dB)
maxDopplerShift = 200 delayVector = 1.0e-04 * 0 0.0400 0.0800 0.1200 gainVector = 0 -3 -6 -9
The maximum Doppler shift is computed as v*f/c, where v is the mobile speed, f is the carrier frequency, and c is the speed of light. For example, a maximum Doppler shift of 200 Hz (as above) corresponds to a mobile speed of 65 mph (30 m/s) and a carrier frequency of 2 GHz.
By convention, the delay of the first path is typically set to zero. For subsequent paths, a 1 microsecond delay corresponds to a 300 m difference in path length. In some outdoor multipath environments, reflected paths can be up to several kilometers longer than the shortest path. With the path delays specified above, the last path is 3.6 km longer than the shortest path, and thus arrives 12 microseconds later.
Together, the path delays and path gains specify the channel's average delay profile. Typically, the average path gains decay exponentially with delay (i.e., the dB values decay linearly), but the specific delay profile depends on the propagation environment. In the delay profile specified above, we assume a 3 dB decrease in average power for every 4 microseconds of path delay. We have also selected an option in each channel block's mask dialog to normalize the average path gains so that their collective gain is 0 dB.
The following variables control the Rician fading block. The Doppler shift of the line-of-sight component is typically smaller than the maximum Doppler shift (above) and depends on the mobile's direction of travel relative to the direction of the line-of-sight path. The K-factor specifies the ratio of average received power from the line-of-sight path relative to that of the associated diffuse components.
LOSDopplerShift % Doppler shift of line-of-sight component (Hz) KFactor % Ratio of specular power to diffuse power
LOSDopplerShift = 100 KFactor = 10
Consider 20 kb/s QPSK transmission over the outdoor multipath channel described above.
bitRate = 20000; % 20 kb/s transmission
You can enable channel visualization for a fading channel block via a check box in its mask dialog or by double-clicking the block while the model executes. (Note that channel simulation typically runs hundreds of times faster without the channel visualization enabled.) For this example, we'll use the command line interface shown below. We will focus initially on the Rayleigh fading block.
rayleigh_block = [modelname '/Multipath Rayleigh Fading Channel']; rician_block = [modelname '/Multipath Rician Fading Channel']; set_param(rayleigh_block, 'openVisAtStart', 'on'); set_param(rician_block, 'openVisAtStart', 'off');
When we execute the model, the default channel visualization is the bandlimited impulse response (green curve). The visualization also shows the delays and magnitides of the underlying fading path gains (red/magenta/blue bars) clustered around the peak of the impulse response. (Note: For path gains, red corresponds to the smallest path delay while blue corresponds to the largest. Components with intermediate delay values are shades between red and blue, becoming more blue for larger delays.) Because the channel's delay span (12 microseconds) is much smaller than our QPSK symbol period (100 microseconds), these components cause minimal time dispersion. The resultant bandlimited impulse response closely approximates a sinc pulse and thus has very small intersymbol interference (ISI) components (green circles).
Tsim = 0.12; sim(modelname, Tsim);
You can select the visualization from the "Visualization" menu (you can do this while or after the model runs). For this example, we'll use a command line utility (commmultipathfading_vis) to select the channel frequency response (the second visualization from the menu). We first use the command line utility commmultipathfading_vis_fighandle to obtain the handle to the channel visualization tool. Note that the frequency response is approximately flat because of the minimal time dispersion caused by the multipath channel.
figHandle = commmultipathfading_vis_fighandle; commmultipathfading_vis(figHandle, 'visualization', 2);
This kind of low-dispersion multipath fading is often referred to as narrowband fading, or frequency-flat fading. Effectively, all delayed components combine at a single delay (in this case, at zero). The bandwidth is too small for the signal to resolve the individual components. Using the "Multipath gain" visualization, you can validate this narrowband fading behavior. When the signal's fading envelope (blue dashed curve) closely approximates the "Narrowband" curve (magenta dots), you can regard the channel as exhibiting narrowband fading.
commmultipathfading_vis(figHandle, 'visualization', 6);
To simplify and speed up simulation, narrowband fading channels are typically modeled as a single-path fading channel. (That is, a multiple-path fading model overspecifies a narrowband fading channel.) The following settings correspond to a narrowband fading channel. Notice that the shape of the bandlimited impulse response is similar to that shown above (the frequency response is also flat).
delayVector = 0; % Single fading path with zero delay gainVector = 0; % Average path gain of 1 (0 dB) Tsim = 0; % Single-frame simulation sim(modelname, Tsim);
The single-path fading channel is modeled as a complex gain, which captures both the attenuation and phase shift of the channel. The "Phasor trajectory" visualization shows how this complex gain changes over a transmitted frame. The blue line is the phasor of the path, and the green line is the trajectory of its end point. The signal experiences a deep fade when this trajectory passes through or near zero.
commmultipathfading_vis(figHandle, 'visualization', 4); commmultipathfading_vis(figHandle, 'animation', 2); sim(modelname, Tsim);
In the above example, we also set the animation mode ("Animation" menu). In the default mode ("Interframe only"), the channel visualization tool shows only one channel snapshot for each transmitted frame. Setting the animation to "Slow" makes the tool show channel snapshots in succession. (Again, we used the command line utility to select a menu option.)
The "Multipath fading components" visualization shows the magnitude of the fading channel. The magnitude fluctuates over a 30-40 dB range in the Rayleigh fading channel. We've increased the frame length so we can see many fades over a frame period.
bitsPerFrame = 1000; commmultipathfading_vis(figHandle, 'visualization', 5); commmultipathfading_vis(figHandle, 'animation', 4); Tsim = 0.1; sim(modelname, Tsim);
The Doppler spectrum is a statistical characterization of the fading process. The channel visualization tool makes periodic measurements of the Doppler spectrum (blue dots). Over time, the average of this measurement better approximates the theoretical Doppler spectrum (red dashed curve). A close approximation indicates good statistical coverage by the Rayleigh fading process.
commmultipathfading_vis(figHandle, 'visualization', 7); Tsim = 2; sim(modelname, Tsim);
The Rician fading block models line-of-sight propagation in addition to diffuse multipath scattering. This results in a smaller variation in the magnitude of the channel gain. To see this effect, we'll run a new simulation with the Rican fading channel visualization enabled. Note that the magnitude fluctuates over approximately a 10 dB range (compared with 30-40 dB for the Rayleigh fading channel). This variation would be further reduced by increasing the K-factor (currently set to 10).
commmultipathfading_vis(figHandle, 'close'); set_param(rayleigh_block, 'openVisAtStart', 'off') set_param(rician_block, 'openVisAtStart', 'on') Tsim = 0.1; sim(modelname, Tsim); figHandle = commmultipathfading_vis_fighandle; commmultipathfading_vis(figHandle, 'visualization', 5);
You can also see the impact of this reduced magnitude variation on the phasor trajectory. Unlike Rayleigh fading, the trajectory is unlikely to pass through or near zero.
commmultipathfading_vis(figHandle, 'visualization', 4); commmultipathfading_vis(figHandle, 'animation', 4);
You can use the "Sample index" slider to pause animation and select the channel snapshot to be displayed. With the phasor trajectory, for example, setting the index to 200 displays the trajectory corresponding to the 200th sample within the 1000-sample frame.
commmultipathfading_vis(figHandle, 'animation', 1); commmultipathfading_vis(figHandle, 'sampleindex', 200);
We now return to our original four-path Rayleigh fading channel. We saw in the first section how narrowband fading causes signal attenuation and phase rotation. By opening the scope "After Rayleigh Fading," you can see the impact of narrowband fading on the signal constellation. (To slow down the channel dynamics for visualization purposes, we've greatly reduced the maximum Doppler shift.) In addition to attenuation and rotation, you can see a some signal distortion because of the small amount of ISI in the received signal.
bitsPerFrame = 200; delayVector = [0:3]*(4e-6); gainVector = [0:3]*(-3); maxDopplerShift = 5; % Close visualization tool and enable signal constellation scope. set_param(rician_block, 'openVisAtStart', 'off'); rayleigh_scope = [modelname '/After Rayleigh Fading']; set_param(rayleigh_scope, 'openScopeAtSimStart', 'on') Tsim = 0.01; sim(modelname, Tsim); commmultipathfading_vis(figHandle, 'close');
When we increase the signal bandwidth to 500 kb/s (250 ksym/s), we see much greater distortion in the signal constellation. This distortion is ISI that comes from time dispersion of the wideband signal. The channel's delay span (12 microseconds) is now larger than the QPSK symbol period (4 microseconds), so the resultant bandlimited impulse response is no longer well-approximated by a sinc pulse.
bitRate = 500000; % 500 kb/s transmission. set_param(rayleigh_block, 'openVisAtStart', 'on'); sim(modelname, Tsim); set_param(rayleigh_scope, 'openScopeAtSimStart', 'off');
By selecting the "IR Waterfall" visualization, you can see the evolution of the impulse response over a frame. We've increased the frame length and restored the maximum Doppler shift to 200 Hz in this example.
bitsPerFrame = 1000; maxDopplerShift = 200; Tsim = 0.02; sim(modelname, Tsim); figHandle = commmultipathfading_vis_fighandle; commmultipathfading_vis(figHandle, 'visualization', 3); commmultipathfading_vis(figHandle, 'animation', 1); close(findall(0, 'name', rayleigh_scope)); % Close scope
Over the wider signal bandwidth, the channel frequency response is no longer flat. The impact of the multipath channel on wideband signals is often referred to as frequency-selective fading.
commmultipathfading_vis(figHandle, 'visualization', 2); commmultipathfading_vis(figHandle, 'animation', 4);
You can also use the channel visualization tool to display composite visualizations. In the example below, we show two visualizations: (1) the magnitude of the multipath fading components plotted over a frame period, and (2) a snapshot of the bandlimited impulse response.
commmultipathfading_vis(figHandle, 'visualization', 10); commmultipathfading_vis(figHandle, 'animation', 1);
% Cleanup clear Tsim rayleigh_block rayleigh_scope rician_block; close_system(modelname, 0);