SEDSAT-2 Communications Design Notes 20080227
From SEDSWiki
Contents |
Channel Modeling
Channel modeling involves making a mathematical model of a communication channel, then putting data through this model -- to simulate transmitting data through the real communication channel -- and looking at the resulting output data from the model. From the output, it is possible to work out the impact the channel has on the radio transmission, usually by calculating how many bits of data were received in error, and producing a Bit Error Rate for the channel.
In channel modeling, we usually assume that we have an ideal transmitter, which will perfectly produce the transmitted signal with no distortion, and that we have a perfect receiver, which has unlimited sensitivity and no receiver noise. This means that any errors we detect are due to the channel and the modulation scheme, and nothing else. Of course, the receiver noise performance, for example, is important in a practical system, but making sure that your receiver has sufficiently low noise is usually calculated during a System Modeling.
In System Modeling we model the entire system: transmitter, channel and receiver. A complex channel model may be included in the system model, but usually in system modeling a very simple channel model is assumed. We have already done some system modeling for the SEDSAT-2 Communication subsystem! The link budget was a system model, and to model the channel we assumed a path loss/atmospheric absorption characteristic with a few extra dB of loss to be safe. From this, we can calculate the basic parameters of the system: required transmit power, required antenna gain and required receiver sensitivity.
However, the link budget system model doesn't tell us how our communication channel will actually perform in real life, because it assumes that the channel will never introduce errors into the signal. So if we want to see how our communication system will actually perform, we have two options:
- Launch a prototype satellite into LEO and measure the channel characteristics
- Create a model of the channel based on the physical effects we know take place, and then run simulations, using this model, to work out how we think our channel will perform.
Naturally, the most accurate way to do see how the system would perform would be option 1, but launching a satellite just to calculate the channel characteristics is an expensive and time consuming solution to the problem! And how do you design the communication system for the prototype satellite which is intended to measure your communication system? You could just guess, but maybe you'll launch your satellite and find you can't communicate with it to turn on the transmitter because the channel introduces too many errors!
So if you want to be sure that your channel will work, you need to do some channel modelling at some point. If you don't, the system might work, it might not... you won't know until you launch the satellite and try it out!
What software do we use to model the channel?
Modeling a channel involves lots of numerical simulation, so the most common approach is to use the Matlab numerical computing software. If you're doing a engineering course at university, you may have already come across Matlab, but if not, it is a programming language/system which is designed for implementing mathematical-based programs.
Although Matlab is an expensive piece of software, most Universities have it installed somewhere. Also, there is a freely available implementation of Matlab called Octave which is almost entirely compatible - 99% of the time you can just take your Matlab code and it will run on Octave with no problems. Octave is available for various platforms - Windows, MacOSX, Linux, Solaris and others. A windows installer is available from the octave-forge website, and if you want other versions (Mac OSX, Linux etc...) then have a look on the main octave website.
How do we model a channel?
This diagram shows the basic structure of a channel modelling system.
We need to implement each of the blocks. We may implement different versions of some of the blocks, so we can compare the performance of different Modulation systems, eg. FSK vs PSK. Here's a brief description of each block:
Symbol Mapping
INPUT: digital data
OUTPUT: symbols for modulating
Here we take binary digital data with only two values, and map it to a "symbol". For example, in FSK we have two possible outputs: low-frequency-tone (eg. 1200Hz) or high-frequency-tone (eg. 1800Hz). In this case, it is a simple one-to-one mapping - a digital zero represents the low frequency tone and a digital one represents the high-frequency tone.
But other systems are possibly, such as 4-FSK, where we have four different output tones. In this case, we need two bits to represent four tones, so we map two binary bits to a single symbol, eg. bits 00 are mapped to the symbol 0, bits 01 are mapped to the symbol 1, bits 10 are mapped to the symbol 2 and bits 11 are mapped to the symbol 3.
Modulation
INPUT: symbols
OUTPUT: symbols modulated onto a radio carrier, as they look like when they are transmitted from an antenna
Now we have our symbols, we need to modulate our symbols onto a carrier, so we need to write code to take our symbols and work out what our transmitted signal would actually look like. There's a matlab FSK modulator in the SVN repository, see comm/design/TNC/modelling/chan/modulate_fsk.m for an example. To run this code, use the file test_modulate_fsk.m in the same directory as the previous file, and then in the matlab command window, type "plot(s)". You should see a plot of modulated FSK!
We will need to implement similar code for any other modulation schemes we are interested in - probably PSK and maybe 4-PSK or 8-PSK.
Channel Model
INPUT: modulated carrier signal
OUTPUT: modulated carrier signal + effect of the radio channel on the signal
Here we need to work out the radio propagation/interference effects that our radio signals are likely to experience between the satellite and the ground station. Then we need to write some matlab code to add these effects to our modulated carrier signal. A very simple channel model just adds some random noise to the signal, this is called the Additive White Gaussian Noise (AWGN) channel, and can be implemented with something as simple as:
channel_output = randn(length(channel_input), 1) + channel_input;
However, we will need to use a more realistic channel model which takes into account other channel effects. For an overview of channel effects, have a look in you university library for any books on digital communications, then take a look at the "Contents" page and see if there is anything that you think is relevant! Some books I've used include:
- Digital Communications (John G Proakis)
- Mobile Communications Design Fundamentals (William C.Y. Lee)
- Wireless Communications (T.S. Rappaport)
But don't worry if these books aren't in your library, there is a good chance that there will be some other books with some useful material in your library, you just need to find them!
Demodulation
INPUT: modulated carrier with channel effects
OUTPUT: symbols
Now we need to take the signal we get from the channel, with its channel effects distorting it, and work out which symbol we think it represents. Naturally, for a FSK modulator we will need to implement a FSK demodulator here.
Symbol demapping
INPUT: symbols
OUTPUT: digital data
Finally the last stage, we take received symbols and work out the binary data that corresponds to them. This is just exact reverse of the "Symbol mapping" stage.
We can take the digital data that results from this and compare it to the digital data we put into the system. The number of differences between the two are our Bit Error Rate (BER).
Now, by comparing different modulation schemes, we have a way of assessing how we they will perform in our communication system. We might find that the BER is unacceptably high, which results in us getting poor overall datarates. In this case, perhaps we will want to extend our model by adding a Forward-Error-Coder to the front of the diagram above, and an error-corrector at the end of the diagram above. Then we can see how much improvement error correction gives us, and then we can decide whether it is worthwhile implementing it.
Where can I find out more?
First it may be helpful to try looking in the radio communications section of your university library. There will probably be a few chapters on channel effects - multipath, intersymbol interference, fading and others - in these books. These are some of the effects we will want to model.
Next, you can try looking for lecture notes from comms courses which cover radio propagation and channel modelling, eg. some Google searches for "channel modeling lecture". These are good sources of information for getting started with channel modelling! I've put one set of lecture notes in the SVN repository, in comm/docs/Lecture/.
I've also put a few published papers on channel modeling in the SVN database, in the directory comm/docs/Publications/. In particular, take a look at the paper "Estimation of LEO Satellite Channels", Sections 1 and 2. It is not very detailed, but it gives a bit of an overview of how they implemented their channel model.
If your university library has access to the IEEE electronic library, you can find many papers there on channel modeling. The IEEE search is not very good though, and I find that using Google Scholar - which searches the IEEE electronic library among other places - to be better for finding papers. If you find any good papers on channel modeling, put them in the SVN database! Published papers are in the comm/docs/Publications/ directory, and the convention I use to make it easy to find papers in the SVN database is to rename the filename to the title of the paper, with the authors of the paper, the year, and journal/conference of publication in brackets, eg:
Estimation of LEO Satellite Channels (Davis, Collings, Evans - ICICS-97).pdf


