Single ADC is sampling at 16000 Hz the I and Q outputs of quadrature detector. So each I and Q signal is sampled at 8000 Hz, with phase offset 90 degrees between them. Bandwidth of interest is 3400 Hz. To synchronize both signals in time, I interpolate them with the factor of 2. New sampling rate of I and Q signals becomes 16000 Hz with no phase offset. For that I zero-stuff original I and Q signals, then apply half-band LPF.

Q1: Which Matlab calculation is right - this one, using the original sampling rate 8000 Hz:

Fs = 8000;
Fpass = 3400;
Fstop = 4600;% =8000-3400
b = firls(6,[0 Fpass/Fs, Fstop/Fs, 1],[1 1 0 0]);
disp(b);
-0.0897    0.0000    0.3126    0.5000    0.3126    0.0000   -0.0897


or this one, using after zero-stuffing sampling rate 16000 Hz:

Fs = 16000;
Fpass = 3400;
Fstop = 12600;% =16000-3400
b = firls(6,[0 Fpass/Fs, Fstop/Fs, 1],[1 1 0 0]);
disp(b);
-0.0416   -0.0000    0.2899    0.5000    0.2899   -0.0000   -0.0416


Both results look like half-band LPF.

Q2: Quadrature detector has its own analog LPF, before ADC. What minimal bandwidth should it let go through to ADC: 3400 Hz, 4000 Hz, 8000 Hz, 16000 Hz or something else?

Q3: What's the interpolation formula ? I expected the fourth coefficient 1.0, not 0.5

Q1: Which Matlab calculation is right

The interpolation filter is done after the zero stuffing as that process of inserting zeros creates images in the resulting spectrum, so this filter would be at the higher rate of the up-sampled signal. The 2nd approach given by the OP with Fs=16000 would be correct with the following caveats if not already obvious:

To synchronize the I and Q the zero stuffing is done alternatively between I and Q:

$$I_0, 0, I_1, 0, I_2, 0, I_3, \ldots$$

$$0, Q_0, 0, Q_1, 0, Q_2, 0, \ldots$$

A length of 7 may be insufficient depending on the performance desired (passband ripple and rejection of the upsampled image), and the stop band should be at the start of the image frequency which is 4600 Hz. As given there is only -10 dB rejection for the start of the image which would be at 4600 Hz (assuming 8KHz sampling with a passband out to 3400 Hz). The frequency response for the given filter is shown below where I marked the passband edge and start of image in red: Q2: Quadrature detector has its own analog LPF, before ADC. What minimal bandwidth should it let go through to ADC?

Assuming the ADC is toggling between I and Q output at it's input (it must to do what the OP is intending here), then the sampling rate is indeed only 8 KHz with a 3.4 KHz passband. For this purpose the required image rejection filter is to pass DC to 3.4 KHz with minimum distortion and block as much as possible the first alias frequency location which is over the range of 8KHz +/- 3.4KHz = 4.6 KHz to 11.4 KHz (and then repeats at every multiple of the sampling rate, so a low pass filter stopband from 4.6 KHz and above would be appropriate). So minimum bandwidth of 3.4 KHz would be the right choice, but also very important to confirm that the filter provided has sufficient rejection at 4.6 KHz. Additional filtering may be required in front of the ADC.

Q3: What's the interpolation formula ? I expected the fourth coefficient 1.0, not 0.5

0.5 is correct. It's the sum of the coefficients that should be 1 for a DC response of 0 dB. (If you pass in a DC level, then you will get that level multiplied by the sum of all the coefficients).

• Fs=16000, I got that. What about Fstop, it should be 4600 not 12600 ? to be symmetric around Fs/4=4000 and match your red marks on the chart Jul 8 at 18:16
• @K-man yes correct, I updated to add that detail- and then increase N if you don’t get enough attenuation at 4600 Jul 8 at 18:50
• Note too that if what you want is an 8 KHz output then you can use the resulting filter at 8 KHz by selecting every other coefficient (and opposite coefficients for I and Q)- that is basically a polyphase decimation. With the halfband every other coefficient except the center one will be zero so one leg will be simply a delay and the other will be a filter that provides that delay plus a half sample offset. Jul 8 at 18:54