Why Simulink for Wireless System Design
Model and implement wireless transceivers with Simulink®. Discover Simulink's inherent ability to model and track time, simulate multirate systems, and naturally model feedback systems. Grasp how Simulink can model digital baseband, RF, antenna, and phased array systems in one block diagram.
See the rich set of computational capabilities, in the form of blocks, offered by Simulink.
They include basic mathematics, filter design, spectral analysis, OFDM modulation, fading channel models, MIMO systems, mixers, nonlinear amplifiers with or without memory, parabolic dishes, patch antennas, uniform rectangular antenna arrays, and many variants of beamformers.
Become familiar with the ways in which MATLAB®, with its algorithmic expressiveness, can interoperate with Simulink, and how MATLAB can be used to control Simulink models. Get introduced to Simulink's ability to generate C, C++, and HDL code from a behavioral model, and then to deploy that code on hardware. Learn how Simulink can model hardware behaviors like buffering, fixed-point, and control logic to accelerate hardware design.
Walk through a Simulink model that illustrates many of the above concepts. See how Simulink models an RF system and can propagate RF signals both forward and backward, as a real-world RF signal does in a typical N-port system. Note how Simulink visualizations provide important insights into system behavior.
Investigate additional training options to become familiar with Simulink, including the Simulink Onramp, product documentation, and in-person courses.
Published: 5 Jan 2022
Hello, my name is Mike McLernon. I'm a product manager at MathWorks. And I've been working with Simulink for 20 years. Let's talk about the top reasons why you would use Simulink for your wireless designs.
The first reason is that the Simulink Simulation Engine inherently keeps track of time. If you were in MATLAB, you'd have to manage time yourself, and that is not trivial. Simulink does it for you.
While Simulink takes care of all that housekeeping behind the scenes, you have lots of control over how you want to run that simulation-- forward, backward one step at a time, or with a variety of acceleration techniques. A side benefit of Simulink is that you can see the system architecture at a glance because of the block diagram environment. This is much harder to see in code. This environment also enables you to create a hierarchy of functionality where many small operations can be aggregated into one Simulink block.
Simulink enables you to work with signals of different rates in the same model. It also enables you to easily and graphically inspect many attributes of your system, like those different rates or signal dimensions or data types. Once again, this is much harder to do in code.
In the model pictured here, the different colors represent different rates in the system. The red blocks run at the fastest rate. So if you want to improve model execution speed, you would look there first.
Reason number 2, Simulink enables you to model multiple simulation domains together. Designing a wireless system often involves multiple domains. You may well be working both in digital baseband and in RF or analog. You may even need to include state machines or some other discrete event system in your wireless design.
When you simulate these systems, the simulations could be on different product platforms, which may or may not work well together. This could be a recipe for disaster. How much cleaner is it to do this in one integrated environment? Simulink offers a platform where all of these can be simulated at once.
You can choose from hundreds of blocks in different domains, which you can mix and match. The library is indeed rich. First with math, with simple primitives like the unit conversions and transcendental functions, signal processing with beefier algorithms, like spectral analysis and digital filter design, communication systems with PSK and QAM modulators, and coders, channel models for VER simulations, and synchronization algorithms, RF with amplifiers, mixers, up-and-down converters, and filters defined by S-parameters, phased array with linear, circular, rectangular, and custom arrays, and many types of beam formers, even state machines that can graphically show transitions from one state to the next.
Here's the third reason-- MATLAB and Simulink work together. You can run MATLAB code inside of Simulink. So you can start coding your algorithms in MATLAB and move to Simulink to integrate RF, baseband, and antenna designs together on the road to hardware.
And if you've already written dozens or hundreds of your own MATLAB-based functions, you can easily integrate them into Simulink models. No need to throw anything away. And if you've done the same with C or C++, you can use another API to integrate that code into your Simulink models as well. And what if you're running dozens or hundreds of tests and you need to run multiple models unattended? You can control which models run when with just a bit of MATLAB scripting code.
Lastly, you can start to move from design to implementation to be hardware ready all in one platform. Use buffers, delays, and control logic to emulate hardware behavior in your simulation. Convert your designs to fixed point. And lastly, with a push of a button, generate HDL or C and C++ code for hardware, software co-design.
You can also determine which block in a model corresponds to a given line of generated code, and vice versa. This makes traceability a straightforward exercise. In a very real sense, with Simulink, the simulation is the system. The behavioral model tracks directly to the code deployed on hardware. And that behavioral model can be thoroughly tested before you ever have to commit to hardware.
OK, enough slideware for now. Let's look at Simulink in action by opening up, investigating, and running the example, the model that you have been viewing through this video.
OK, so here's the Simulink model that we've been looking at thus far. It's an OQPSK transceiver design, fairly straightforward. So the first thing that I want to draw your attention to is the very first block in the model, a Bernoulli binary bit generator. If we open up the dialog for this block, we see various parameterizations.
But one thing I would draw your attention to is the sample time and these samples per frame. You'll note that these are variables. So something that's very convenient to do is to define a variable in the MATLAB Base Workspace.
And then the Simulink model will simply pick it up and use it. So it's a very, very useful feature. At any rate, this block establishes the sample time for the model, and then it simply propagates all throughout the rest of the model-- very, very convenient.
So we spoke also earlier about the viewing of certain signal and block attributes. So we can do that right now by looking at the information overlays. So we'll take a look at signal dimensions. And we will also take a look at sample time colors. So the model is performing the calculations to assess and portray all of these signal attributes.
And so now we can see that the fastest blocks in the model are running in red. And there are other rates in the model as well-- green, blue. The yellow signifies a multi-rate block. So if you want to enhance performance in the model, you would look for those fastest running blocks, the red ones, and go there.
And you also see that you can see the signal dimensions going into and out of each block. So that's very, very convenient as well. Oftentimes, errors can occur with incorrect signal dimensions. And it's very easy to see where those errors might happen through this visualization.
So also, I'd want to draw your attention to the different domains that are represented in this model. First of all, this baseband transmitter, that's just digital baseband. It's feed-forward, very straightforward.
But if we look at the lower right, this direct conversion receiver, this is an RF block where we have an S-parameter-based filter, an amplifier, a modulator, a couple of more amplifiers. So this all happens in the analog domain. And there is both signal forward propagation and backwards propagation to model exactly what goes on in a real RF circuit.
Also, something to draw your attention to is this MATLAB function block. If I double-click on that, we actually see MATLAB code. So what happens is that I wrote some MATLAB code. And it just integrated it right into the Simulink model. And it was very, very straightforward.
Now let's also take a look at the spectrum analyzer-- very, very handy. We can actually run the model from the plot itself. So just click on the Start button. And so now we do see the spectrum. We see noise on the right and left edges of the plot, and then the characteristics, sine x over x hump, of the OQPSK signal and noise. And then we also note on the left-hand side that the chip error rate is being calculated along the way. So very, very powerful modeling environment.
If this video is motivational and you want to learn more, you can step through the Simulink on-ramp. In two hours, you'll be up and running.
If you want to do a bit of browsing first, investigate some of the product documentation, it is detailed, comprehensive, and offers thousands of examples to speed your work. If you want to dive more deeply into a topic of your choice, watch a video or two. They cover a range of topics-- from how to accomplish a specific Simulink task to modeling the entire physical layer of a 5G NR system. And if you want to be coached in an application area or two, review some in-person training options, you will sit with an expert for a day or two to broadly explore subjects like signal processing, communications, and hardware implementation.
Thank you for your time. I hope you start soon on your Simulink journey.