Wednesday, March 28, 2012

Communications system engineer essential simulation tools


Design of any communications system usually starts with a pen and paper. After some initial thoughts and theoretical studies, it will be time to perform some studies and prove that the concept works at least in simulation. There are many tools that can be used for simulation and are useful to communications system engineers. Here is a list of some of the most common software:
  • MATLAB/Simulink : this simulation software appears to be one of the most widely used tools, not only among communications system engineers, but among other engineering communities as well as other areas of science and even in finance. MATLAB stands for MAtrix LABoratory and is used to perform matrix based numerical computation has powerful toolboxes with a large number of built in functions each to perform a specif type of calculations. Also data visualization in MATLAB is very easy and powerful. Simulink on the other hand is a graphical simulation software that runs in MATLAB environment. It can closely represent the actual implementation of a system in hardware and has the clock concept. Simulink also has many toolbox for example communications system tool box.
  • Octave: it is a free equivalent of MATLAB. Octave primarily use is for numerical computations. Similar to MATLAB it also provides simple graphical capabilities for data visualization. The Octave language is very similar to MATLAB and codes written in Octave can be easily ported into MATLAB and vice verse.
  • R : this is another simulation tool and software which is mainly used for statistical computation and has good graphical capabilities.
  • Mathematica it is another software tool for mathematical computations.
  • Maple : this is a well know software for symbolic computation. So it is useful in the first stages of the design mainly in the theoretical study stage.
  • SPW: Signal Processing Worksystem is a system level design tool that was originally designed to develop DSP algorithms. Later capability of simulating communication systems also were added to SPW. 
  • SystemVu: this tool is developed by Agilent. It enables system architects and algorithm developers to develop physical layer (PHY) for wireless and aerospace/defense communications systems. It is also useful for RF, DSP, and FPGA/ASIC implementers. 
  • Scilab: is a free open source software for numerical computation. It has hundreds of pre-designed functions and has 2-D and 3-D graphical capabilities.
  • Sage: is a free open source mathematics software. Its mission is to create free open source alternative for tools like Mathematica and MATLAB.

And also many communications system engineers use some programming languages to create their own simulation platforms. Some of the more widely used programming languages for writing simulation tools are:
  • C/C++
  • Fortran
  • Java
  • Python
Some of the advantages of writing our own simulation software are:
  • The simulator, if written effectively, can run faster compared to pre-designed simulation tools and simulators.
  • There are free compilers, so the simulator can be free.
  • There are free codes, and libraries that can speed up the development of simulation software.

Some of the disadvantages of writing your own simulation software are:
  • It could take much longer to write and develop a simulation system.
  • Import and export and data visualization is not as easy and user friendly as in some tools like MATLAB; usually data is stored in a file and exported to a file to be visualized in MATLAB, or other tools with powerful visualization capabilities.
  • If there are not good comments in the software understanding of the code might not be very easy for other users

Overall if the cost and price is not an issue, my first choice among simulation tools and software is MATLAB and Simulink. Prototyping and setting up a simulation using MATLAB and Simulink is quick, easy and accurate. Also Simulink can be used as a live documentation of the system, and can easily be transferred to ASIC engineers and is easy to understand. If the cost is an issue the next best software for simulation in my opinion is C/C++. C/C++ compilers are free and there are a large number of pre-written functions that can be used to develop a simulator.


I would love to hear from you some of your favorite tools for simulation, and your thoughts.

Sunday, March 18, 2012

Essential websites to learn digital communications: perspective of an engineer

Not too long ago, to do a research or to find what a technical term means a student or an engineer had to go to libraries, mainly university libraries, or to order a book and wait for some time for the book to arrive. But these days things are different. If you want to find what a technical term means the fastest and first thing is to go to Wikipedia and search for it. This is one of my favorite websites and is the first place I visit to get at least some initial information about a topic. If the information in there is not enough, then I do a Google searchAlso there are some good free online places that can be used to learn different topics of Digital Communications. In this post I share some that I have used and found very useful.


As an electrical engineer my favorite place is the website of Stanford Electrical Engineering department. First of all the research and teaching at Stanford is cutting edge, and secondly there are many lectures and course notes available for free. It seems that putting course notes online and making them available to everybody is part of Stanford Electrical Engineering department culture. I have not looked at their other departments maybe it is part of Stanford University culture in general.You can click on any of the following links to go to appropriate website relevant to a communications system engineer:


General links of Stanford Electrical Engineering

- Stanford Electrical Engineering department
- Stanford Electrical Engineering department courses

Here are some of my favorite websites of some of Stanford professors:

- John M. Cioffi’s Group: Professor Cioffi’s expertise is in the general area of digital communications. He is best known as father of DSL. You can download book chapters which are materials that he uses to teach digital communications.Also there are links to four courses that are very useful, and one of the best resources in teaching digital communications I have seen. These are:

- Andrea Goldsmith Group: Professor Goldsmith’s expertise is in the area of Wireless Communications. She also has written a very good book on wireless communications, which I have mentioned in an earlier post. There are lecture notes of a number of Professor Goldsmit's courses:

- Robert M. Gray: his website has a number of free and useful books:

- Stephen P. Boyd: Professor Boyd’s expertise is in the area of linear dynamic systems and convex optimization. Here are links to some of his courses where you can find lecture slides as well as some software:

I am sure there are many other useful resources at Stanford Electrical engineering department, but above are some that I have used and found extremely helpful. 


Here are some other websites that I found extremely relevant and useful:

- David Tse: Professor Tse is an expert in Wireless Communications and teaches at the University of California Berkeley. Professor Tse also has written an excellent book on wireless communications that I mentioned in an earlier post. You can see a list of his courses and some lecture notes in his website.
- Martin Vetterli: Professor Vetterli is an expert in signal processing and teaches in EPFL. You can find useful course material and software in his website.

Finally there are a number of free open courses available on MIT’s website some of them are very useful for Communications System engineer.

This list is not an exhaustive list, but is a good start for those who want to learn using the free stuff available on the web. In past "free" was associated with low quality, but the above resources are all state of the art and produced by leading experts in their fields.

I would like to hear from you and see if you know other excellent free resources for communications system engineers.

Sunday, March 11, 2012

Some good "Digital Communications" books

Over the years I have read a number of excellent books related to "Digital Communications". Usually each book excels in one or a few areas but not all of the areas. Digital communication world is very big and has advanced so much that it is very difficult for one author or a few co-authors to be the best in all areas related to digital communications. Even sub-areas of digital communications have been grown so rapidly that it is difficult to be an expert in all of them. As an example in the area of channel coding there are so many coding methods that one can hardly be expert in all. Some are experts on LDPC codes, others experts on traditional block codes, and some are experts in the information theoretic aspects of codes.

So with the understanding that it is highly unlikely that one book has it all, here are some suggestions for books that are very good overall:
One of the best books that explains the theory of digital communications is "Digital Communications" by John G. Proakis and Masoud Salehi. I have seen this book being thought in many high ranking schools and have personally used the book. This is not a book for people that have been just exposed to digital communications theory, but as a book for graduate students is excellent. For undergraduate level "Digital Communications: Fundamentals and Applications" by Bernard Sklar is a good book. There many other good books in this area, however my all time favorite is "Digital Communication" by John  R. Barry, Edward A. Lee, and David G. Messerschmitt. The reason that I love this book is that it is covered by a lot, and I mean a lot of practical concepts. This is also a graduate level book, but its main advantage is its practicality. So for working professionals if you want just to use one digital communications book this is the one.

Here is a list of my suggestions for different categories and use cases:

Overall graduate level:
Digital Communication: by John Barry, Edward Lee, and David Messerschmitt
Digital Communications : by John Proakis and Masoud Salehi
Overall undergraduate level:
Digital Communications: Fundamentals and Applications by Bernard Sklar
Communication Systems: by Simon Haykin and Michael Moher
Wireless communications:
Fundamentals of Wireless Communication: by David Tse and Parmod Viswanath
Wireless Communications: by Andreas Molsch
Error control coding:
- Error Control Coding: by: Shu Lin and Daniel Costello
- Error Control Systems for Digital Communication and Storage: by Stephen Wicker
Information theory:
- Elements of Information Theory: by Thomas Cover and Joy Thomas
Information Theory, Inference and Learning Algorithms: by David MacKay
Here is a great website with fantastic lists of technical and none technical books: http://a2zbooks.weebly.com/
That would be interesting to hear from you and see your suggestions.

Friday, March 9, 2012

A Communications System Engineer Blog is born!

3, 2, 1 and we are live!
This is the first blog post on this web-log. I am a Communications System Engineer and am passionate about this field. My goal of writing this blog is to provide useful information to all the Communications System Engineers. For blog contents I either use my technical knowledge in this area, or will get help from great communications system engineers, scientists, and university professors. Here is a partial list of what I have in mind to put in the blog posts:
  • Useful Tips: good to know tips and techniques for design and development of communication systems
  • News: interesting news related to the field of communication systems
  • Software/Hardware: discuss some useful software/hardware for communications system engineers
  • Useful links: useful links and websites for communications system engineers
  • History: a little bit of history related to communications system engineering
  • Others: other relevant and interesting information, anything from math and physics to science, and art. 
I hope that you find the blogs useful and interesting to read. Of course, your comments are not only appreciated, but also will help me to refine posts and possibly use your suggestions and feed-backs in later blog posts.