Forgot to hit reply all. On Wed, Feb 19, 2014 at 3:30 AM, Martin Braun <martin.br...@ettus.com>wrote:
> On 02/19/2014 12:23 AM, Jonathan Fox wrote: > > Thank you for the response, I apologize, I wasn't very clear at all in > > explaining my problem and I can see that I came across confusing. Let me > > quickly re-explain. > > > > I am creating a QPSK modulator. I have a variable duration/sample rate > > (stretching out the bit sequence, incase my terminology is incorrect). > > Is your sampling rate variable, or the symbol rate? Where in the > modulation process should it vary? > > > The minimum of it should be about two samples per input bit. I am also > > having a minimum two samples/symbol (just like the stock PSK > > modulator). I am taking the bit sequence of the input char and I am > > using unsigned char datatype like the one block example from the > > tutorial unpack_k_bits_bb. Now I am modulating the bit sequence into a > > waveform that has a set number of samples as a result of the duration > > that is specified. So in the end I have N number of samples generated > > for every byte that is received from the input buffer. > > OK, but how is N calculated? At runtime, or at initialization? > > > > My confusion is the output_buffer. I look at the squarer code from the > > tutorial and see general_work() and think of one input sample comes in, > > one output sample comes out for each execution of the routine. Lets just > > say after processing 1 byte from the input, I have 800 samples of I and > > Q data that make up the modulated waveform. Those 800 samples need get > > out to the flow graph before the next input comes in. > > Still don't know how you'd get 800 samples from 1 byte, but let's say > that is correct: In this case, you consume() 1 item (byte) and produce() > 800 items (samples). > > >> I don't understand what you're writing. In any block, you can output as > >> much items as is space in the output buffer (and should). > > > > So I can write to the output buffer as much as I need to do, does it > > involve set_output_multiple()? > > You can write to the output buffer equal to or less than noutput_items > items. > > > Do I make sure noutput_items is equal to number of samples I wish to > > output? I always though nouput_items equals 1 for non-vector data, and > > d_vlen for any vectors whose size is d_vlen. > > You only read from noutput_items, it's how the scheduler tells you much > space there is in the buffer. > > > Would that change the output from a single sample to a vector of samples? > > The i/o signature. > > > I am going to feed directly to the USRP sink, so a vector output is not > > what I want, just a continuous stream of samples. > > > > Also, where can I see the source code for the PSK modulator block? When > > I type "PSK" in Nautilus' search function, the only C++ code I see the > > receiver, snr estimator. I see python scripts for it qpsk and dpsk, that > > have calls for constellation. If that is it, I apologize for my > > ignorance, I thought it would be a normal C++ block. > > We don't need a PSK modulator as such. Open the grc-examples for PSK, > and you will see we connect a "chunks to symbols" block to the pulse > shaping filter. > > M > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > Both sampling rate and symbol rate is variable, at least I intend it to be. The figurative "N" is calculated at runtime inside general_work() because it is related to the sampling rate. N is representative of the number samples that the modulator produces. Any code I have written takes place inside the general_work() routine. The 800 samples that make up the waveform is just an arbitrary number I came up with as an example to explain how many samples I have to get out. In my modulator code, my basis functions will generate the same amount of samples as the samples of the bit stream. For prototyping purposes in MATLAB, I had a 100 samples per each bit of the input. So an input of 8 bits after processing was going to give out 800 samples. In my block code this will be controlled by a variable argument. I know the I/O signature would control that part. So noutput_items is set in the IO signature, the size of it increases when a vector output is set. So if I call set_output_multiple in my constructor and have it set the size of my modulated waveform sample size, will it handle my problem? Is there any block I should look at that has it?
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio