I have created a fairly simple Excel Spreadsheet to allow you to generate QAM waveforms. Start by downloading the spreadsheet, then follow the instructions below.

First off, in Excel under Data, go to the far right and select Data Analysis. If you don't see the option "Data Analysis" on the far right of the screen, follow these instructions on this site.

In Excel you will find Comments that explain what to change to generate and receive the QAM waveforms. On the left side of the Main worksheet is the data, a 4 bit binary code. Only put 1s or 0s in these places (A2-A5). The decimal value of these bits will register in cell A7. That is the value we are trying to send to the receive side on the right hand side of the worksheet. There is a two step process to get the data over to the receive side.

Transmit: You'll find a comment in cell J2 that tells you to do an Inverse Fourier Transform (IFFT) with the input on cells J3-J2050 and the output going to cells K-3 through K2050. Be sure to click the radio button for Inverse!

You now have a valid wave in the TD_Wave tab, so go there to see it. It should look something like this, depending on what value you put in the Data bits.

Receive: To receive the waveform you'll need to do an FFT, not an Inverse FFT this time, an FFT. Go to Data and choose data analysis on the far right, pick Fourier transform like you did before, but this time set the input range to N3-N2050 and the output range to O3-O2050. Also BE SURE TO UNCLICK THE Inverse BUTTON! You want a forward FFT this time.

If all is well, the value in R21 should match the value in A7 and should be in Green, meaning that the two values match.

On the far right you will find a truncated FFT display, so you can see how the sidebands behaved based on your inputs.

Explore the spreadsheet to see how it works. It's not too hard to understand. Notice that I did make it immune to noise, the receieve side uses fuzzy numbers to determine which codes were sent. If you want to add noise, just increase the value in M2, this represents the peak to peak max noise. The signal plus noise is displayed below the TD waveform on the TD_Wave tab.

I have since written an article on LinkedIn to help explain this Excel file.

Have fun!