hen people suggest to do hilbert transform for converting real samples to complex inside DSP, do they forget something to tell?
I am experiencing some fundamental problem when I try to follow the available advise.
Attached is the figure what I want to do.
I am having a complex baseband signal which has been transmitted but in receiver I do not have an IQ demodulator and hence I receive real sample only. I am selecting the LO in receiver so that my interest band comes in receiver and then I am doing a Hilbert but as per my understanding which I am depicting in attached figure, I might not be getting exactly same spectrum which I am transmitting.
Does it not matter when I use a receiver which works well for IQ demodulated signal in which I get exactly same spectrum which I had transmitted.
If yes then what is the solution and why everyone miss it while suggesting Hilbert Transform for Real to Complex Conversion on received samples?
If no then shouldn't be spectrum shift of 1 kHz impact to think about in received signal.
Thanks for the great article.
I tried to mix my signal as per suggestion but here is what I got!
I am getting what I want but only half of the energy at required place and I have to pass it through a filter to achieve even that.
Where as here is what I need?
Can anyone suggest the block without FFT, Shifting and IFFT blocks.
Now I want to achieve the desired spectrum, the digital mixer way only but missing something out here.
If you low pass the signal in the right of your top figure you will get the desired output.
OK, I suggested that I knew filtering would solve it but then I mentioned that it would half the energy (SNR) and will require an extra step (filtering) after digital mixer which I dont want to perform considering processing limitation.
What I am trying to find is that if something can be done in mixer itself so that negative spectrum is inverted and shifted (+ve direction) and added with shifted positive spectrum (in -ve direction). This way full spectrum energy will be utilized and I will not need any filter.
You need to double the gain of your filter to get unity power.
As to invert spectrum then add ...etc. that can't be done.
It looks like you need the desired signal shifted to complex baseband, i.e., moved down 1kHz. Since the signal is already digitized, an easy way to do this is with a complex mixer with an LO at -1kHz, and then you don't need the Hilbert transformer at all.
I can't quite tell exactly what you're trying to get out of the Hilbert transformer in your block diagram, but it won't do that final 1kHz downconversion for you, it will only create a quadrature component of the existing signal (potentially with some distortion). Since it appears that you still have to do the 1kHz downconversion, anyway, I'd suggest just do that and delete the Hilbert transform.
If I’m not mistaken. I believe you would also need to apply a low pass filter to remove the mirrored image after the shift, if you shift after the ADC.
Is there any other way to do this instead of complex digital mixer with LO at -1kHz, cause my processor may not handle this operation at for the sample rate I am using?
I need some low computation method to convert real sample to complex and shift the spectrum exactly how I transmitted.
My modulation is complex so to recover symbol I need I and Q. I was using hilbert to generate I and Q from a real sampled signal. I have a redymade block of Hilbert which works on my processor.
BTW do you mean LO at -1kHz means Tone at -1k only and +1k have not component when seen in digital spectrum?
Also can you throw some light on the point that if I do not shift the spectrum to complex baseband will it make any difference to demodulation, or in other words can I modify demodulation in such a way that it may no longer require complex spectrum?
The mixing operation may be fewer computations than the Hilbert transformer, so you may want to look into it.
I'm not sure what you mean in 2), but the complex tone will be -1kHz only in order to shift the signal down 1kHz. There will be no image at +1kHz, and a pure frequency translation will occur if properly done. This is one of the advantage of doing the complex mix rather than a real-valued mix.
As others have mentioned, you will need to remove the 1kHz offset before demodulation for QAM.
OK, I assume you mean complex mixing in digital domain only because in current architecture it is not possible in analog domain.
Do you have any white paper link on AFC in DSP (not in FPGA) or the ways to remove 1kHz offset (Assuming that I have a preamble to estimate Frequency and Phase Offset)?
Another question is that do you see anything wrong in the whole scheme (shown in diagram) given that you can not have complex mixer in analog domain. How you would have done it in receiver side?
Your sampling rate is fine.
I feel that you are a bit confused with frequency and pahee offset. Phase offset you can perform after you performed frequency offset. Frequency offset will introduce you continuously growing phase offset. I understand that you TX and Rx are not synchronized initially (this is the case in most communication systems). However, you need to estimate at Rx what is frequency offset of it's carrier compared to carrier frequency of transmitter. There are many ways to perform frequency offset estimation. This mostly depends on you system design (design of physical layer frames). One simple approach would be that you create preamble at the beginning of every message that you transmit. This preamble will be your know sequence of samples ( your receiver knows apriori how it looks like). Then you can do cross correlation between known sequence and received sequence at receiver to estimate frequency offset.
There is nothing wrong with your receiver design. Even if you had Complex mixing in analogy domain you would need to estimate your frequency offset in digital domain. And then you would again need to compensate for it. Only case when you would not need to do the same would be when you have perfectly synchronized TX and Rx.
I need to ask you one questions before offering any answers:
- What is sampling rate of ADC that you are using?
Here are further comments:
- You can do Hilbert transformation (HT) to get your analytical complex signal. However, what is left over is frequency offset of your digital signal after HT. You need to take care of residual frequency offset.
- Related to (1-2). Only thing you need to do with your complex signal after HT is to multiply I and Q branch with sin(2*pi*1k*t) and cos(2*pi*1k*t). Convert t to your digital time related to sampling rate. This should not be computationally intensive. Complexity is corresponding to 2 multiplications. In order to generate sin and cos you can use single Lookup table for one period cosine and then shift phase for sine.
- Related to (3). So you use QAM modulation. If you do not compensate for frequency offset (frequency shift of your spectrum) your constellation points (representing QAM symbols) will keep rotating. Think intuitively, while demodulating you will see same symbol at different constellation positions. This means that your demodulation will be wrong.
-General comment. Before you perform demodulation you should perform frequency offset correction. For some non-coherent type of receivers you can avoid this. However, for your case (QAM) I advise you you to compansate for frequency offset.
My sampling rate are 8x complex symbol rate (1ksps) and can do more than that if required.
My receiver is non-coherent (Tx and Rx LO are not synchronized and may be few 10's of Hz offset).
I am planning to do a sample phase estimation using preamble and RRC filter scheme at transmitter and at receiver with the help of upsampled data. I have read somewhere that if I do this I may not need frequency offset correction.
Can you point towards some material to do frequency and phase estimation in DSP (not in FPGA) for a non-coherent modulator.
So essentially you have a QAM signal centred at 1MH at Tx then you receive it at 1KHz. First you don't need Hilbert. Second you just need mixing with -1KHz. Third in practical systems the centre frequency will shift due to oscillators variation so you need tracking module such as Costas loop. And the clock may also have to be recovered if you are targeting a full Rx front end.