Post Go back to editing

Questions about AD9957 configuration for QPSK generation

Hello, I am an RF and MW engineer trying to figure out how to configure AD9957 to obtain a 1 MHz bandwidth QPSK signal at fc = 70 MHz. My conclusions up to now are that I should use the following values:

Fsysclk = 176 MHz

R = 44

FTW = 1,708,225,629 (not exactly 70 MHz of output frequency, but near enough)

Is that correct?

I also have some doubts on how to generate a QPSK. I mean in that kind of modulation I transmit 2 bits per symbol, but I should provide 18 bits per path (I or Q) to AD9957 parallel data input. How do I translate my 2 bits to all those bits I should put at data input?

Probably all those questions are quite simple to someone who is used to work with baseband, but it is a bit out of my scope, so I would appreciate any clarification. It also would help any advice or reminder of important facts that I should keep in mind to generate my signals.

Thanks for your support!

Parents
  • Yes, you are correct in that any baseband pulse shaping must be done external to the AD9957 using an FPGA, DSP, uP, etc.

    The sole purpose of the baseband filters inside the AD9957 is Nyquist image rejection. Recall the vector rate at the input (the rate of I/Q pairs) is less than the device's DAC sample rate (the system clock). The process of translating the spectral content of the input (sampled at the vector rate) to the output (sampled at the system clock rate) requires special filtering to remove images produced by the sample rate conversion. An article (link to article) about the AD9857 (the predecessor to the AD9957), may help with the concept of sample rate conversion.

    Just to be clear, the 18 inputs to the AD9957 are not "symbols". The 18 pins constitute an 18b data bus. For example, if the 18b are encoded as twos complement, then you can think of the 18 bits as representing a numeric range of -131,072 to +131,071. For example, suppose you want to send a quadrature sinusoid as the baseband signal instead of QAM symbols. This means the I and Q inputs are represented by:

    I(n) = 131071*cos(2*pi*f*n*t)     <== round I(n) to an integer

    Q(n) = 131071*sin(2*pi*f*n*t)     <== round Q(n) to an integer

    Where n is the sample number (0, 1, 2, 3, ...), I(n) and Q(n) are the n-th I and Q samples, t is the period of the "vector rate" and f is the frequency of the sinusoid. That is, for a vector rate of 1MHz, t=1us. So, f=250,000 will produce a 250kHz sinusoid (sampled at 1MHz). Hence, I and Q are a "time series" of 18b words, each representing an instantaneous magnitude in the time domain. In fact, the I & Q inputs ALWAYS constitute a time series of 18b words representing an instantaneous magnitude in the time domain.

    "Symbols" are represented as rectangular pulses in the time domain. For QPSK, the pulses have two levels (0 and 1). For 16-QAM and up, the pulses have more than two levels (as shown in the appendix of AN-922).

    Now, let's focus on your application:  QPSK with a 1MHz symbol rate. However, let's forget about pulse shaping for the moment. For QPSK a symbol can be a 0 or a 1. You can think of a "0" symbol as a minimum input magnitude to the AD9957, or -131,071. Likewise, a "1" symbol is a maximum input magnitude, or +131,071. So, your symbol transmission (I or Q), would consist of two possible values (-131,071 or +131,071). These symbols would be applied to the AD9957 at the vector rate (actually, twice the vector rate, because we need to get BOTH an I and a Q word into the device in one vector period).

    Now to pulse shaping...

    Pulse shaping requires oversampling of the rectangular pulse associated with a particular symbol. Let's arbitrarily choose an oversampling factor of 4. That is, we'll break each symbol pulse into 4 equal sub-intervals. This gives us 4 samples all having the same magnitude (i.e., the magnitude of the symbol pulse in question). The pulse shaping filter (which operates at the vector rate) takes these 4 samples and transforms them into 4 smoothed out samples corresponding to the desired pulse shaping response (raised cosine, root raised cosine, etc.). The pulse shaping filter does this continuously. That is, as the symbol pulse samples stream into the input, the filter continuously streams out smoothed output samples.

    IMPORTANT:

    These smoothed samples are "magnitudes", and it is these values that get scaled to the 18b range of the AD9957 input (i.e., the samples are scaled to the range -131,071 to +131,071).

    That is, for the example above, each symbol at the input to the AD9957 consists of a time sequence of four 18b I-samples and four 18b Q-samples as delivered by the external pulse shaping filter.

    I hope this is helpful.

Reply
  • Yes, you are correct in that any baseband pulse shaping must be done external to the AD9957 using an FPGA, DSP, uP, etc.

    The sole purpose of the baseband filters inside the AD9957 is Nyquist image rejection. Recall the vector rate at the input (the rate of I/Q pairs) is less than the device's DAC sample rate (the system clock). The process of translating the spectral content of the input (sampled at the vector rate) to the output (sampled at the system clock rate) requires special filtering to remove images produced by the sample rate conversion. An article (link to article) about the AD9857 (the predecessor to the AD9957), may help with the concept of sample rate conversion.

    Just to be clear, the 18 inputs to the AD9957 are not "symbols". The 18 pins constitute an 18b data bus. For example, if the 18b are encoded as twos complement, then you can think of the 18 bits as representing a numeric range of -131,072 to +131,071. For example, suppose you want to send a quadrature sinusoid as the baseband signal instead of QAM symbols. This means the I and Q inputs are represented by:

    I(n) = 131071*cos(2*pi*f*n*t)     <== round I(n) to an integer

    Q(n) = 131071*sin(2*pi*f*n*t)     <== round Q(n) to an integer

    Where n is the sample number (0, 1, 2, 3, ...), I(n) and Q(n) are the n-th I and Q samples, t is the period of the "vector rate" and f is the frequency of the sinusoid. That is, for a vector rate of 1MHz, t=1us. So, f=250,000 will produce a 250kHz sinusoid (sampled at 1MHz). Hence, I and Q are a "time series" of 18b words, each representing an instantaneous magnitude in the time domain. In fact, the I & Q inputs ALWAYS constitute a time series of 18b words representing an instantaneous magnitude in the time domain.

    "Symbols" are represented as rectangular pulses in the time domain. For QPSK, the pulses have two levels (0 and 1). For 16-QAM and up, the pulses have more than two levels (as shown in the appendix of AN-922).

    Now, let's focus on your application:  QPSK with a 1MHz symbol rate. However, let's forget about pulse shaping for the moment. For QPSK a symbol can be a 0 or a 1. You can think of a "0" symbol as a minimum input magnitude to the AD9957, or -131,071. Likewise, a "1" symbol is a maximum input magnitude, or +131,071. So, your symbol transmission (I or Q), would consist of two possible values (-131,071 or +131,071). These symbols would be applied to the AD9957 at the vector rate (actually, twice the vector rate, because we need to get BOTH an I and a Q word into the device in one vector period).

    Now to pulse shaping...

    Pulse shaping requires oversampling of the rectangular pulse associated with a particular symbol. Let's arbitrarily choose an oversampling factor of 4. That is, we'll break each symbol pulse into 4 equal sub-intervals. This gives us 4 samples all having the same magnitude (i.e., the magnitude of the symbol pulse in question). The pulse shaping filter (which operates at the vector rate) takes these 4 samples and transforms them into 4 smoothed out samples corresponding to the desired pulse shaping response (raised cosine, root raised cosine, etc.). The pulse shaping filter does this continuously. That is, as the symbol pulse samples stream into the input, the filter continuously streams out smoothed output samples.

    IMPORTANT:

    These smoothed samples are "magnitudes", and it is these values that get scaled to the 18b range of the AD9957 input (i.e., the samples are scaled to the range -131,071 to +131,071).

    That is, for the example above, each symbol at the input to the AD9957 consists of a time sequence of four 18b I-samples and four 18b Q-samples as delivered by the external pulse shaping filter.

    I hope this is helpful.

Children
No Data