"Revolving" QPSK Constellation I am trying to code a QPSK transmitter in VHDL but first I want to create one out of Simulink blocks and translate it into VHDL code. I am using an example project for the PlutoSDR as a guide.

This is the block diagram:

I ran into the following error for which i used Simulink's "fix" option and got this project to compile:


When i run this project this is the output i am seeing on Constellation Diagram 1 &amp; 2:

What's happening is the points on the diagrams are continuously moving in a "circular" way. I've uploaded two GIFs of the constellation diagrams 1&amp;2 from my Simulink project. 

Constellation Diagram 1:


Constellation Diagram 2:


The output of Constellation Diagram, however, does not move and looks like this:



This is the output of the example on the Mathworks website (guide) seen as "Constellation Diagram" in the block diagram above. 

My questions: Why did i have to put "Single Task Rate Transmission" boxes into my project as suggested by Simulink? Why do Constellation Diagram1 and Constellation Diagram2 "dance" around like this? What am i missing? 

Thank You!
You are seeing the "Digital IF” carrier assuming you are modelling what you want to implement digitally in VHDL. The sine and cosine blocks together with the multipliers and combiner perform a frequency translation from DC to the carrier mentioned.  Thus the constellation at this point is really not observable as it will be "spinning" at this carrier rate. (The constellation as observed in the upper figure is at DC and to note it appears to be sampled at 2 samples per symbol, which is typical, so it is really every other sample (the ones on the diagonals) that represents the QPSK constellation at the correct symbol sampling locations). 

To observe the constellation you would need to frequency shift the signal back to DC while being careful not to introduce phase and frequency offsets, or shifts in sample timing (a receiver does this with carrier and timing recovery loops so that it can run completely on an asynchronous clock from the transmitter).

(To note, an optional approach is "Zero-IF" where you implement the frequency translation in the analog domain using an IQ mixer (which is the same functional block with analog components)