Hello Alberto, Your richt, there are (much?) more ways to build the SDR. Your approach and software is perfect and the change of sample rate to avoid under / overruns is very nice!
For me it more the exercise than building software that every one will use. In my approach I take the FTT also for the display so I had a frequence domain signal with a high sample rate and try to take a small reverse FTT to down sample (fix 2^n), the program generated strange audio. I was thinking that my approach was not correct and checked it with some test programs. It seems that the phase of the signal is not the same anymore. I can not explain it mathematical that a FTT with high sample rate can be down sampled by a smaller reverse FTT (shifting the negative frequence down in the fft array), maybe someone can tell me if it is mathematical possible (or I made a error in my software ;-). 73, Fred, PE0FKO ----- Original Message ----- From: i2phd To: [email protected] Sent: Wednesday, September 27, 2006 12:31 AM Subject: [soft_radio] Re: Change sample rate FFT --- In [email protected], "Fred Krom" <[EMAIL PROTECTED]> wrote: > > I got a question that maybe can be answered in this group. > Most of the SDR radio's I know are using the following steps: > 1e Mix the time domain Q & I signal with a NCO to make a near to > zero signal > 2e Take the FFT to convert it to frequence domain > 3e Filter the signal by setting most of the bins to zero (multiply > by filter) > 4e Take the reverse FTT to convert to time domain > 5e Down sample the signal to something like 8Khz sample rate. > 6e Somekind of demod. > Fred, IMHO that is not the optimal sequence of operations. The passband filter is more effective if performed at a lower sampling speed, i.e. after the decimation. What I do in Winrad is the following : 1) Same as your point 1e 2) Downsampling of the signal to either 8 or 11.025 kHz, using a windowed-sync fractional resampler (see below for the rationale) 3) Take the FFT to convert it to frequence domain. 4) Manipulate the spectrum obtained with the FFT to obtain either the USB or the LSB without resorting to the Hilbert transformer 5) Filter with the fast convolution method, using the overlap-and-save approach, with a time-domain kernel of 1536 taps. 6) Take the inverse FFT and send the signal to the output. Why do I need (and you will need as well...) to use a fractional resampler? If this world were perfect, and the sampling rate of audio cards were as nominally specified, there would be no need for it. Then you could sample at 48 kHz, decimate with a fixed factor of 6, obtaining 8 kHz, and send these 8 kHz to the output card. Unfortunately that is not the reality... the sampling speed of sound cards often have errors even greater than 1%... the net result of this is that you will have either buffer overrun or buffer starvation (read : clicks) when producing and sending the 8 kHz buffers to the output card... the remedy I have found to this (and if somebody has a better idea, I am more than willing to hear it) is to use a FIFO in front of the output card, where the buffers pass. I continuosly monitor the degree of filling of this FIFO, and when I see that it is not optimal I slightly change the decimation factor to keep it constant. 73 Alberto I2PHD [Non-text portions of this message have been removed] Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/soft_radio/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/soft_radio/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
