Icons and
Credit the Noun Project.
Item |
Description |
Link |
Type |
1 |
Introduction to the Capsim® MIMO OFDM Block Diagram Modeling and Simulation |
Introduction |
|
| 2 | Computing the Singular Value Decomposition (SVD) with Fixed Point CORDIC Operations Application to MIMO-OFDM |
Paper and Latex File | |
3 |
Capsim® Block Diagram MIMO OFDM With Channel Model, Noise and Demodulation of Streams. |
Screen Shots |
|
| 4 | Results of Block Diagram Simulations Floating Point (LAPACK) versus Fixed Point CORDIC 2x2 SVD Beam Forming MIMO-OFDM | Analysis | |
5 |
List of Topologies Included in Repository. See this link for Block Diagrams for Various Topologies |
Table |
|
6 |
List of OFDM, MIMO and Channel Model C Blocks Included in Repository |
Table |
|
7 |
List of MIMO and Channel Model C Subroutines Included in Repository |
Table |
|
8 |
Building Capsim® for MIMO OFDM Modeling and Simulation |
Instructions |
|
9 |
Capsim® Text Mode Kernel (TMK) Installation |
GitHub Repository |
|
10 |
GitHub Repository Capsim® MIMO OFDM Block Diagram Modeling and Simulation |
GitHub Repository |
|
11 |
GitHub Repository Capsim® OFDM Block Diagram Modeling and Simulation |
GitHub Repository |
|
12 |
OFDM Video Tutorials by Silicon DSP Corporation |
Video Tutorial |
|
| 13 |
MIMO OFDM Video Tutorials by Silicon DSP Corporation |
Video Tutorial |
|
| 14 |
Video Capsim Block Diagram Modeling MIMO-OFDM Open Loop 2x2 and 2x3 (must view for insights and better understanding of this Repository) |
Video Tutorial |
|
Note many blocks and subroutiunes used are described in the ofdm repository.
Copyright (c) 1993-2007 Silicon DSP Corporation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Silicon DSP Corporation has developed all the C code for a full implementation of a multiple MIMO OFDM Block Diagram Modeling and Simulation Systems for both Open Loop and Closed Loop MIMO OFDM systems. The modular architecture uses individual blocks (written in C) for the implementation of the various stages in modulation and demodulation. Subroutines ( C code) are also supplied with Include files shared between blocks and subroutines. See the Block Diagram of a full system here.
The majority of blocks were written in 2006-2007 with major enhancements throughout the years.
In addition, the Capsim® MIMO OFDM Block Diagram system was extensively used in developing the tutorials on MIMO OFDM.
Click here for the MIMO OFDM Tutorial Videos on .
For the development of the fixed point CORDIC Beam Forming MIMO-OFDM the methodology used by Nariankadu D. Hemkumar was used. See the reference below.
Nariankadu D. Hemkumar, Efficient VLSI Architectures for Matrix Factorization, Ph.D. Dissertation, Rice University, April 1994.
The primary author of the Open-Loop and Closed Loop floating point and fixed point MIMO work was Dr. Sasan Ardalan at Silicon DSP Corporation. See the OFDM repository at for credits on the OFDM blocks and subroutines.
We highly recommend the following paper for the analysis of the performance of MIMO-OFDM systems:
Jie Gao, O. C. Ozdural, S. H. Ardalan and Huaping Liu, "Performance modeling of MIMO OFDM systems via channel analysis," in IEEE Transactions on Wireless Communications, vol. 5, no. 9, pp. 2358-2362, September 2006
Also see the results of block diagram simulations floating point (LAPACK) versus fixed point CORDIC 2x2 SVD Beam Forming MIMO-OFDM here in this page.
Note that blocks are also provided where instead of fixed point CORDIC, the trigonomic functions are computed in floating point. The blocks help validate the fixed point algorithms.
Note: this repository supports the Text Mode Kernel version of Capsim®. The graphical block diagram is from the soon to be released Capsim® Version 7 which uses Qt® for interactive graphical interface. However, the topology in this Repository are the same. You can use the block names in the screen shot and then use the Capsim® command "to blockname" to go the the block, change parameters and run the simulation. There is a lot of benefit to the non graphical mode in portability and flexibility. The graphical version also supports the text mode operation.
An updated link to Capsim® Version 7 using Qt® will be provided in the Repostory on GitHub. Stay tuned.
Configuration |
Tx |
Rx |
CSI |
FFTs |
SVD |
QR |
Rate |
Application |
1x1 SISO |
1 |
1 |
No |
1 |
No |
No |
1x |
Lowest Data Rate, Lowest Power |
1x2 MRC |
1 |
2 |
No |
2 |
No |
No |
1x |
Reliable Low Rate. Longer range more power. |
2x2 Open Loop |
2 |
2 |
No |
2 |
2x2 |
No |
2x |
Medium Data Rate |
2x2 Beam Forming |
2 |
2 |
Yes |
2 |
2x2 |
No |
2x |
Medium Date Rate more reliable then Open Loop |
2x3 Open Loop |
2 |
3 |
No |
3 |
2x2 |
Yes |
2x |
Reliable Medium Data Rate |
4x2 Beam Forming |
4 |
2 |
Yes |
2 |
2x2 |
No |
2x |
High Down link Data Rate, Reliable Up-link, Low Power Video |
3x4 Open Loop |
3 |
4 |
No |
4 |
3x3 |
Yes |
3x |
High Data Rate |
4x4 Beam Forming |
4 |
4 |
Yes |
4 |
4x4 |
No |
4x |
Very High Data Rate |
1x4 Beam Forming |
1 |
4 |
Yes |
4 |
4x4 |
No |
1x |
Very Long Range |
Comparison of Received Streams 4x2 SVD MIMO OFDM versus 2x2 SVD MIMO OFDM (Channel 50ns Delay Spread)
Results of Block Diagram Simulations Floating Point (LAPACK) versus Fixed Point CORDIC 2x2 SVD Beam Forming MIMO-OFDM
LAPACK Floating Point Library, 2x2 Beam Forming MIMO OFDM 64 QAM Constellations for Each Stream High SNR
CORDIC Fixed Point 2x2 SVD 2x2 Beam Forming MIMO OFDM 64 QAM Constellations for Each Stream , High SNR
A key comparison is the case where channel noise is added. In this case, we expect that the finite precision fixed point CORDIC SVD will enhance noise and degrade performance compared to the floating point LAPACK implementation. This is shown in the fFigures below where noise variance of 1e-5 was added to each receive chain.
2x2 Beam Forming MIMO OFDM 64 QAM Constellations for Each Stream LAPACK Floating Point Library, Medium SNR
2x2 Beam Forming MIMO OFDM 64 QAM Constellations for Each Stream CORDIC Fixed Point 2x2 SVD , Medium SNR
To show that the fixed point CORDIC 2x2 SVD tracks the floating point SVD in a 2x2 MIMO OFDM system we show the plot of the ratio of Singular Values for various carriers (52 for IEEE 802.11a streams) in the Figure below with additive noise(variance 1e-5). Note that the ratios track very well over the 52 carriers. The deviation is at the high Singular Value Ratio which corresponds to an ill conditioned channel at that carrier frequency. The enhancement of roundoff noise is caused at this point and other ill conditioned channel conditions.
| Item | Topology Name | Description | Author | Date |
|---|---|---|---|---|
| 1 | mimo_2x2_eq.t | MIMO OFDM Open Loop 2 Tx and 2 Rx Antennas | Ardalan | 2007 |
| 2 | mimo_2x3_eq_equal.t | MIMO OFDM Open Loop 2 Tx and 3 Rx Antennas | Ardalan | 2007 |
| 3 | 2x3_mimo_eq_strong_weak.t | MIMO OFDM Open Loop 2 Tx and 3 Rx Antennas one strong stream and one weak stream due to channel. | Ardalan | 2007 |
| 4 | svdmimo_2x2.t | SVD Closed Loop MIMO OFDM 2 Tx and 2 Rx Antennas | Ardalan | 2007 |
| 5 | svdmimo_4x2.t | SVD Closed Loop MIMO OFDM 4 Tx and 2 Rx Antennas | Ardalan | 2007 |
| 6 | intlvrMapperiFFT.t | Hierarchical Block (HBlock) Interleaver 64 QAM Mapper Pilot Insertion Inverse FFT Block Diagram Link | Ardalan | 2002 |
| 7 | svdmimo_4x2_float_wk.t | SVD Closed Loop MIMO OFDM 4 Tx and 2 Rx Antennas CORDIC Floating Point | Ardalan | 2007 |
| 8 | svdmimo_4x2_fxp_wk.t | SVD Closed Loop MIMO OFDM 4 Tx and 2 Rx Antennas CORDIC Fixed Point (32/16 bit) | Ardalan | 2007 |
| 9 | svd_fxp_2x2_mimo.t | SVD Closed Loop MIMO OFDM 2 Tx and 2 Rx Antennas CORDIC Fixed Point (32/16 bit) | Ardalan | 2007 |
| 10 | svd_fp_2x2_mimo.t | SVD Closed Loop MIMO OFDM 4 Tx and 2 Rx Antennas CORDIC Floating Point | Ardalan | 2007 |
| 11 | siso_eq.t | Single Input Single Output (SISO) OFDM | Ardalan | 2007 |
| 12 | mimo_mrc.t | Maximum Ratio Combining (MRC) 2 Tx and 1 Rx Antennas | Ardalan | 2007 |
| 13 | Encoder.t | Data Field/Scramble/Convolutional Encoder/Puncture HBlock Block Diagram Link | Ardalan | 2002 |
| 14 | ||||
| 18 |
| Item | Block Name | Description | Author | Date |
|---|---|---|---|---|
| 1 | cxmimoeqzf.s | Open Loop MIMO Equalizer Automatically adjust number of channels of Tx and Rx antennas (Streams) | Ardalan | 2007 |
| 2 | cxmimosvd.s | Closed Loop SVD MIMO with LAPACK | Ardalan | 2007 |
| 3 | cxmimo_2x2_svd.s | Closed Loop SVD MIMO CORDIC Fixed Point | Ardalan | 2007 |
| 4 | cxmimo_2x2_svd_fp.c | Closed Loop SVD MIMO CORDIC Floating Point | Ardalan | 2007 |
| 5 | ifftofdm54.s | inverse FFT 54 Mbps | Ardalan | 2002 |
| 6 | ifftofdmsvd.s | inverse FFT 54 Mbps SVD with CSI Support | Ardalan | 2002/2007 |
| 7 | prcxmat.s | Print the complex matrix samples. | Ardalan | 2007 |
| 8 | cxequalizezf..s | OFDM Frequency Equalizer | Ardalan | 2007 |
| 9 | cxmimoch.s | MIMO Channel Auto Fan-In and Fan-Out Automatically adjust number of channels per connections for Tx Antennas and Rx antennas. | Ardalan | 2007 |
| 10 | rmcpfx.s | Remove Cyclic Prefix | Ardalan | 2002 |
| 11 | evm.s | Calculate EVM with specifie ideal QAM Map (qam64.dat) | Ardalan | 2006 |
| 12 | stmat2x4.c | Convert two streams to 4 streams using orthogonal steering matrix | Ardalan | 2007 |
| 13 | stmat4x2.c | Convert Four streams to two streams based on transpose of 2x4 using orthogonal steering matrix | Ardalan | 2007 |
| 14 | fwfft.s | Forward FFT | ||
| 15 |
| Item | Block Name | Description | Author | Date |
|---|---|---|---|---|
| 1 | Krn_Compute2x2SVDCxMatrix.c | Compute SVD 2x2 Complex Matrix CORDIC Fixed Point | Adalan | 2007 |
| 2 | Krn_Compute2x2SVDCxMatrixFP.c | Compute SVD 2x2 Complex Matrix CORDIC Floating Point | Adalang | 2007 |
| 3 | CordicRotate.c | Fixed Point CORDIC Rotate | R.Maslennikov, A.Khoryaev | 2003 |
| 4 | CordicArctan.c | Fixed Point CORDIC Arc Tangent. | R.Maslennikov, A.Khoryaev | 2003 |
| 5 | krn_dsp.c | Complex Matrix Operations and Printing | Ardalan | 2007 |
| 6 | krn_lapack.c | API for Lapack (via CLAPACK) for Eigenvaluue/SVD/Inverse, Complex and Real. | Ardalan | 2007 |
| 7 | MatrixUtils.c | Matrix Operations Utilities Fixed Point | Ardalan | 2007 |
| 8 |
1- Obtain the Capsim® Text Mode Kernel (CapsimTMK) for Linux from:
GitHub Capsim Text Mode Repository
CapsimTMK is distributed with hundreds of blocks. To simulate OFDM systems the blocks in this repository have to be incorporated into Capsim® including subroutines.
This Repository contains the Topologies for MIMO OFDM block diagram modeling inlcuding required blocks and subroutines.
Note: Follow the Getting Started Guidelines in the CapsimTMK Repository.
2- Once CapsimTMK is installed just run 'make' in this repository's Build directory.
3- Then change to the directory 'Topologies' and run:
../Build/capsim mimo_2x3_eq_equal.t
The block diagram for the mimo_2x3_eq_equal.t topology is shown here.
Two files will be created:
Welcome to Capsim Text Mode Kernel (CapsimTMK) (c)1989-2017 Silicon DSP Corporation This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. http://www.silicondsp.com Version 6.2 Running topology mimo_2x3_eq_equal.t model name: mimo_2x3_eq_equal ... scatter created file: Scatter0.sct scatter created file: Scatter2.sct
The two scatter plots showing the 64 QAM constellations can be plotted using the command:
source xscatter
The xscatter file is:
java -jar /home/research/SDSP_Github/capsim-tmk/TOOLS/IIPPlot.jar -scatter Scatter0.sct -scatter Scatter1.sct
The Java program IIPPlot.jar is provided with the CapsimTMK repository. Note the nice capability to plot multiple files..
For IIPlot Information and Download click here.
With Linux you can send the plot application to run in the background to put plots side by side when you want to display multiple plots. Then bring them to the forgound and use Control C to exit.
Linux Tux By Larry Ewing, Simon Budig, Garrett LeSage - https://isc.tamu.edu/~lewing/linux/, http://www.home.unix-ag.org/simon/penguin/, garrett/Tux on GitHub, CC0, Link
Capsim® uses LAPACK via CLAPACK.
Anderson, E. and Bai, Z. and Bischof, C. and Blackford, S. and Demmel, J. and Dongarra, J. and Du Croz, J. and Greenbaum, A. and Hammarling, S. and McKenney, A. and Sorensen, D., LAPACK Users' Guide,Third Edition,Society for Industrial and Applied Mathematics, Philadelphia, PA, ISBN = 0-89871-447-8, 1999
Silicon DSP Corporation
2002-2025