Below is my gnuradio-companion graph.


As you can see the sample rate is 100k, I am modulating with QPSK, and am filtering the waveform (RRC) with the "Excess BW" parameter, at 0.35. The spectrum is shown below:


The bandwidth seems to be about 2*160kHz. I would expect it to be about the baud rate, but it is far from that. What am I doing wrong?


In gnuradio, the throttle block only determines the speed at which your computer is processing samples - it does not determine what the actual sample or baud rates are. As an example - consider that you generate random PSK symbols at 1 sample per symbol, and then upsample by 2 with a root raised cosine w/ 35% exccess BW so we're now at 2 samples per symbol (this is what the constellation modulator block does in your flowgraph). What is the absolute baudrate that you're running at? Answer: Whatever you want it to be. If I hook that I/Q stream up to an RF front end, I could theoretically transmit at any baud rate using those exact same samples. E.g. if the DAC is running at 1MSPS (assuming this is an I/Q DAC for simplicity like you might consider the ad9361) then my baud rate would be 1MSPS/(2 samples/symbol) = 500k symbols/sec. Assuming my PC could keep up (and I increased my throttle block so that my PC isn't slowing me down from producing samples), I could instead run the DAC at 10MSPS to transmit at 5M symbols/sec.

So - your question will probably be - how do I simulate a certain baud rate without a DAC/front-end? Well - it's whatever you choose it to be. In your flowgraph, you set the FFT sink to think that the sample rate is 500 kHz. The data you have hooked up to that sink is coming in at 2 samples/symbol, but factoring in the excess bw, the relative bandwidth will be about (1.35/2.0)*500e3 = 337.5 kHz which is exactly what the spectrum is showing you. If you did further upsampling and then looked at the FFT, the signal would appear narrower and vice versa.

  • 1
    $\begingroup$ yep, exactly. The "bandwidth" parameter in the GUI sink just defines the numbers written on the horizontal axis, and nothing else. $\endgroup$ – Marcus Müller Jan 17 at 11:42
  • $\begingroup$ If the throttle block is not limiting the throughput of the graph to 100k samples / second (bandwidth suggests it's higher), what is the point of the throttle block? $\endgroup$ – SafeCracker Jan 17 at 16:52
  • $\begingroup$ Also both to you and @MarcusMüller - my impression was that the sink BW was as Marcus describes. I just wanted to zoom out. I don't expect it to have an effect on bandwidth of the signal. $\endgroup$ – SafeCracker Jan 17 at 16:53
  • 2
    $\begingroup$ The throttle block is simply limiting the speed that your computer is producing samples, in this case to approximately 100k samp/sec - but again, without sending them out to a D/A, these samples can represent any arbitrary rate you want. Maybe someone can come up with a more intuitive answer, I think it's a concept a lot of people trip up on. $\endgroup$ – user67081 Jan 17 at 17:44
  • $\begingroup$ Oh and if you want to 'zoom out' on your fft you need to increase your samples per symbol - either by increasing that from the constellation modulator block or by adding a subsequent interpolation stage. $\endgroup$ – user67081 Jan 17 at 18:52

Your bitrate is 100 kbit/s

Your symbole rate is 50 ksymb/s (QPSK is 2 bits/symb)

Your sample rate is 100ksamp/s (at the input of the FTT or output of QPSK mapper, as you settle 2 samples per symbol in the constellation modulator)

I think you have an issue of scaling in your FFT plot because you set 500 KHz (-250 to 250 KHz in the x axis).

You should set 100k instead of 500kHz, and then your 0.35 is going to match on the plot


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.