2
$\begingroup$

I have an application where I have a pulse shaped QAM signal, at 2 samples per symbol. I need to take the I/Q samples and perform quadrature upconversion so that they can be output on a DAC that's operating at a (real) sample rate of 8 times the baseband IQ rate. The IF frequency is at 1/4 of the DAC's sample rate.

The usual method I would use to do this in an FPGA would basically be the below structure: Quadrature Digital Upconverter

where in this case I would have the resamplers just be 8x interpolating FIRs, and the NCO would be replaced with a sequence of [+1,0,-1,0,..] due to the IF being at Fs/4 simplification.

In total this takes the resources required to implement the two FIR filters and a few adders (For doing the negation of the -1 term and the final subtraction operation). Other than using more efficient methods for the FIR filters (like polyphase or CICs) - is there an additional simplification to be made here or is this about it?

I am interested because someone recently proposed to me a method which used 4x upsampling FIRs, followed by [+1,-1,+1,-1] sequence (Fs/2 mixer), followed by a serializer (that basically took the final I/Q samples and simply serialized them before sending them to the D/A - which I guess acted to provide the final 2x).

This approach didn't make sense to me how it would work, specifically the serialization step (I would've thought you'd need to replace the serializer with a 2x upsampling and a subtractor). Although from a frequency domain perspective it does look like its doing the same downconversion as the other method, it seemed to impart some significant distortion onto the constellation when I ran actual qam data through it.

$\endgroup$
2
  • $\begingroup$ My guess is that the proposed scheme simply use the fact that every other value in the NCO sequence is zero. So avoid computing those factors and select from the correct path instead (since x + 0*y = x). $\endgroup$
    – Oscar
    Nov 1, 2021 at 15:53
  • $\begingroup$ @Oscar I can sort of see that idea but it seems like you would need to still have an additional 2x upsampling before you perform that operation (in the scheme I noted it was only 4x). $\endgroup$
    – user67081
    Nov 1, 2021 at 16:47

1 Answer 1

1
$\begingroup$

This approach didn't make sense to me how it would work, specifically the serialization step (I would've thought you'd need to replace the serializer with a 2x upsampling and a subtractor). Although from a frequency domain perspective it does look like its doing the same downconversion as the other method, it seemed to impart some significant distortion onto the constellation when I ran actual qam data through it.

I believe the reason for the distortion in the modulated waveform is that the approach is valid in creating a quadrature upconversion at the implied digital IF carrier frequency, but only at that frequency. The implementation to be distortion free requires the I and Q components of the baseband waveform to be in quadrature across the entire bandwidth when converted to the digital IF frequency. This is typically accomplished with synchronous multiplication of the waveform with a Sine and Cosine. However in this case, if I read the details of the question properly, there is a delay offset between the I and Q samples (since they are offset by one sample) that creates a linear phase distortion across the bandwidth (given that a delay is a linear phase with frequency). The I and Q components right at the center frequency of the signal will be in quadrature as desired, but the phase between the I and Q components will deviate across the signal bandwidth in the combined signal at digital IF, thus distorting the modulated signal. This will be more significant as the modulated signal occupies a greater percentage of the Nyquist bandwidth.

That said, it is feasible to pre-compensate for the time delay between the I and Q samples with all-pass filters or other quadrature correction techniques.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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