I am working on a custom transceiver with a sampling rate of 3.84 MHz (256 OFDM subcarriers at 15 kHz, although 56 subcarriers are null). I would like to resample the signal to 5 MHz, in order to use a pair of USRPs N210 to communicate each other, among other things.
I can't resample this signal using an interpolation plus filtering approach, as it should be computed in real time (I would need to interpolate the signals up to 480 MHz...).
So I tried an FFT-based approach described by Jim Clay here. To sum up, I first compute the FFT of the signal with length 960 (decimation factor), then I pad the frequency content with zeros, and finally I compute the time domain 5 MHz signal by computing the IFFT with length 1250 (upsampling factor). In this way, I am able to resample the signals by 125/96. I don't know how to explain this, but it is like many samples are sampled at the proper time, whereas many of them not. I mean, there is a time synchronization problem.
I realized that I was using exactly the same number of subcarriers and subcarrier spacing as 3 MHz LTE channels, so I decided to test my resampling approach in a much more mature open source platform like OpenAirInterface (OpenAirInterface allows to deploy an LTE testbed, so I can connect a commercial LTE device like my phone to a base station deployed on an SDR radio).
As my mobile phone does not recognise <5 MHz LTE channels, I decided to resample one 5 MHz channel from 7.68 MHz to 10 MHz (instead of resampling from 3.84 MHz to 5 MHz). My mobile phone was able to decode the signal transmited by the base station (in fact, it got connected to the network and I achieved the same throughputs in the downlink channel I got with the default sampling rate). However, I think that I'm facing exactly the same problem I got with my transceiver. The signal received by the base station from my phone seems not to be syncronized, so the base station drops most of the data. In addition, the base station logs report that there is a time desynchronization, and that this desynchronization varies over the time. However, if I choose an output sampling rate multiple of the original one (for instance, 15.36 MHz and 30.72 MHz), then it works perfectly on both downlink and uplink communications.
I am just beginning to study signal processing, so I recon that maybe this is a dumb question, but I can't figure out why I am not able to resample the signals in this way.
Is there something wrong with my way of resampling the signal? Is there a better way to do this? Can't I resample the signals to a sampling rate which is not an integer multiple of the subcarrier spacing?
Thanks in advance.