WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2017-Sep-14 13:19:39

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Automatic Gain Control - AGC - how does it change with respect to RSSI

Hi,

I am using the WARPlab 7.7.0 reference design. I am designing integer-forcing linear receivers.

For this receiver, I need to identify a measure that calculates an estimate of SNR. For the 2x2 MIMO wireless network I work with, I identify SNR as the total received power over an estimate of the noise power. I estimate the noise through dedicated OFDM training symbol pilots.
( For example, I look at SNR at antenna 1 as:
transmit power: mean magnitude of (h11 x1 + h21 x2), where we use estimates of h11 and h21 obtained from the preamble and the symbols x1 and x2 come from OFDM training symbols.
over
noise power: where the noise power is estimated as the mean power of the noise estimate : n1 = y1 - (h11 x1 + h21 x2), over the OFDM training symbols, which means x1 and x2 are known.)

However, I noticed that with AGC on, the signal gets hurt somehow. For example, my strategy performs much worse than ZF which is the baseline we use. I understand that the AGC tries to maximize the EVM, but it is not clear to me when I take it down to the baseband signal level: as in for the 2x2 MIMO wireless network, EVM is related to SINR, while in my work I am trying to use both: the signal of interest and the interfering signal and estimate the total received power, which I feel EVM does not capture.

Therefore, I am interested in finding out exactly how does the AGC work. I have looked through the C code a bit and identified the alpha and beta coefficients set for the LNA, but I am still not clear how is the signal scaled. It seems that everything is based on the RSSI value, but I am not clear how is this done. I had a hard time with this because it seems that RSSI also changes once the AGC is on, so there is no way to identify what the original RSSI was.

Therefore I am interested in a few general and specific things:
- how does the AGC work (I am interested in more than what it was written here: https://warpproject.org/trac/wiki/WARPLab/AGC)
- in the above WARPlab link on AGC, how is the attenuation calculated (based on the TX RF and BB gains?) ? (For these setups it seems to be the unifying metric for what I assume to be multiple setups by having different TX RF and BB gains).
- if I choose the option to turn the AGC off, that is set USE_AGC to 'false', which means going through:
wl_interfaceCmd(nodes,RFA+RFB,'rx_gain_mode','manual');, what exactly happens? I thought the LNA is no longer updated, but I am still not sure if the signal is not scaled at all.
- in the WARPlab wiki description of the AGC, the first step says: "When triggered, the AGC first selects an LNA gain based upon the RSSI signal provided by the transceiver. It does this by first converting the digital RSSI measurement into an receive power estimate in dBm". I tried to look for this conversion into the C code, but I could not find it. Would it be possible to point me to this? I am interested in trying to reverse engineer this in a way to identify what the signal received power might have been when received.


Any suggestions on what to look at and how to better identify the scaling or adjustments of the power of the entire received signal.

I am willing to give you more details about what I need for my work, if you think that is necessary.

Thank you for all your time and patience,
Corina

Last edited by corinai (2017-Sep-14 13:25:30)

Offline

 

#2 2017-Sep-14 14:15:12

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

First a few important clarifications:

-The AGC only changes the gains in the radio's LNA (RF gain) and VGA (baseband gain). Both amplifiers apply a voltage gain to the received signal (LNA applies gain before the mixer; VGA applies gain after the mixer). The AGC is designed to quickly reduce the gain settings early in a reception so the analog signal presented to the ADCs is within the dynamic range of the ADC. If the AGC chooses gains that are too high, the signals will clip at the ADC. If it chooses gains that are too low, the digital I/Q signals will be heavily quantized.

-The radio's Rx gain settings do not affect Rx power. For any given Rx power there exists an optimal gain setting. The AGC attempts to achieve this optimal setting. The amplifiers are set to (hopefully) optimize the amplitude of the RF/analog signals through the Rx path and at the Rx ADCs.

-The MAX2829 provides an analog RSSI signal that is proportational to Rx power. The WARP v3 hardawre samples this analog signal with a 10MSps 10-bit ADC. This 10-bit value is the RSSI value captured in WARPLab. The mapping of Rx power to digital RSSI depends on the current RF Gain (LNA) setting. Refer to the "RX RSSI OUTPUT vs. INPUT POWER" plot on pg 16 of the MAX2829 datasheet for details. The WARP v3 RSSI ADC circuit maps ~0.6v to digital 0 and ~2.6v to digital 1023.

The algorithm implemented in the w3_agc core was designed empirically, specifically for the MAX2829. Its basic flow is:
  -Wait for trigger
  -Estimate Rx power from averaged RSSI
  -Set RF gain (in [1,2,3]) based on averaged RSSI
  -Wait for RF gain to settle
  -Estimate Rx power from averaged abs(I)+abs(Q)
  -Set BB gain (in [0:31]) based on averaged I/Q
  -Wait for BB gain to settle
  -Estimate I and Q DC offset by averaging over 3 16-sample intervals
  -Subtract DCO from I/Q
  -Enable IIR HPF with very low cutoff (removes residual DCO without affecting subcarriers +1/-1)
  -Wait for reset from WARPLab buffers core, then start over

- in the WARPlab wiki description of the AGC, the first step says: "When triggered, the AGC first selects an LNA gain based upon the RSSI signal provided by the transceiver. It does this by first converting the digital RSSI measurement into an receive power estimate in dBm". I tried to look for this conversion into the C code, but I could not find it. Would it be possible to point me to this? I am interested in trying to reverse engineer this in a way to identify what the signal received power might have been when received.

Because this state machine must run deterministically, all this processing is implemented in the w3_agc core. The various timing and threshold parameters are set from C code in wl_baseband.c : warplab_agc_init().

- in the above WARPlab link on AGC, how is the attenuation calculated (based on the TX RF and BB gains?) ? (For these setups it seems to be the unifying metric for what I assume to be multiple setups by having different TX RF and BB gains).

We use a variable attenuator for these kinds of characterization experiments. This way the attenuator value is the only variable that changes during the experiment.

- if I choose the option to turn the AGC off, that is set USE_AGC to 'false', which means going through:
wl_interfaceCmd(nodes,RFA+RFB,'rx_gain_mode','manual');, what exactly happens? I thought the LNA is no longer updated, but I am still not sure if the signal is not scaled at all.

When AGC is disabled you must explicitly set the Rx RF and Baseband gains via the 'rx_gains' command. You must select Rx gains that result in a good signal level at the ADC input. There is no sense in "sweeping" Rx gains - for any Rx power there is one optimal gain setting.

Offline

 

#3 2017-Sep-15 14:26:31

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

First of all, thank you so much for your fast reply.

In your response you mention this:

- The radio's Rx gain settings do not affect Rx power. For any given Rx power there exists an optimal gain setting. The AGC attempts to achieve this optimal setting. The amplifiers are set to (hopefully) optimize the amplitude of the RF/analog signals through the Rx path and at the Rx ADCs.

However, there is still something not clear to me. My understanding is that the RSSI I read by using the command "agc_state", is the RSSI that corresponds to the signal right after the AGC has adjusted the two RX gains. Or, am I misunderstanding. It would be nice to know what the original RSSI was before AGC was applied. (For my setup, knowing the original RSSI, means a way of grouping the frames with similar received power.)


In my experiments, we wanted to extend the range of RX SNR. Therefore, what I did was to increase the TX RF and BB gains and we kept the AGC on.
For the following setup: AGC ON, a fixed TX BB gain of 3, while varying the TX RF gain, between 0 and 60 (everything else is kept the same, no movement of the boards/antennas). I noticed that towards the higher values of RF gains, the noise estimate we got from the OFDM training pilots increased. What I would have assumed is that as TX power increases, we should have seen a "better" channel, which means a smaller "noise variance". I know this is not the "TRUE" noise power, but it would be what the receiver works with after all the analog signal processing happened.

Based on your explanation, would it be fair to say that with the AGC on, some of the noise is amplified. And it also might be the case that as the power increases, one of the two extreme cases happen: clipping or over quantization which hurts the digital representation of the signal. (Is there a way I could test for quantization ? ).

For example, these are a few plots to show what I noticed:
(note that each point is a frame that was received and analyzed):

Transmit And Received RF and BB gains:
https://photos.app.goo.gl/Fl5ow7uI9w6qbQtE2
evolution of noise power estimate over the same 6100 frames:
https://photos.app.goo.gl/U5qlUa0NRxHB9ADD2
an extra plot of the estimated post-processing SNR (where SNR is the total received power (both signal of interest and interference h11x1+h21x2) over noise power)
https://photos.app.goo.gl/VRrkKaU6zx9JRT3U2.
correct link: https://photos.app.goo.gl/quTrCYN3WC0tc2iV2

Thank you for any suggestions or comments you might have.

Corina

Last edited by corinai (2017-Sep-18 10:54:00)

Offline

 

#4 2017-Sep-15 21:50:17

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

However, there is still something not clear to me. My understanding is that the RSSI I read by using the command "agc_state", is the RSSI that corresponds to the signal right after the AGC has adjusted the two RX gains. Or, am I misunderstanding. It would be nice to know what the original RSSI was before AGC was applied. (For my setup, knowing the original RSSI, means a way of grouping the frames with similar received power.)

You can retrieve the entire sequence of RSSI samples with the 'read_rssi' command in WARPLab. There will be 1/4 as many RSSI samples as Rx IQ samples (IQ @ 40MSps, RSSI @ 10MSps).

Based on your explanation, would it be fair to say that with the AGC on, some of the noise is amplified.

No. The AGC does not amplify anything. The AGC core sets the gains of the radio's Rx amplifiers. These amplifiers apply whatever gain they are configured for, whether that configuration happens via AGC or manually (i.e. with the 'rx_gains' command in WARPLab). The typical model for noise in a receiver is that a constant noise power is added by the LNA (whose gain is called "RF gain" in the ref designs), and that signal and noise are both amplified by the VGA (a.k.a. "baseband gain"). In other words, it is typically assumed that SNR depends only on the Rx power at the antenna port. The radio's amplifiers should be set so that the received signal (with its fixed SNR) fills the dynamic range of the Rx circuits (i.e. avoids degradation due to clipping or quantization).

I noticed that towards the higher values of RF gains, the noise estimate we got from the OFDM training pilots increased.

This is the expected result. OFDM has high peak-to-average-power. If you set the Tx gain near the maximum, the frequent peaks in the OFDM waveform will clip and will degrade the transmitted signal. It is necessary to reduce the Tx gain to balance average Tx power (higher is better) and clipping (lower is better). You can see a similar effect in our Tx power characterization for the 802.11 Ref Design. If possible, I would suggest using a fixed Tx gain and a variable attenuator or channel emulator to control path loss in your experiment. This will remove any secondary effects from relying on radio parameters as your independent variable.

Offline

 

#5 2017-Sep-18 10:52:17

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

If you can, could you please recommend a variable attenuator I could buy for my setup? I didn't think of attenuators as a viable solution for my setup as I am using a 2x2 MIMO network. But I assume as long as both signals are received at each antenna, and if we have the same type of attenuation things should be ok on average.

Offline

 

#6 2017-Sep-18 11:21:41

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

When you mentioned in the post that

You can retrieve the entire sequence of RSSI samples with the 'read_rssi' command in WARPLab

.
What are you trying to say?

In the WARPlab AGC explanation page (link: https://warpproject.org/trac/wiki/WARPLab/AGC) it is said in step 2 that:

The act of changing the LNA gain affects the RSSI measurement. After RSSI has a chance to settle from the previous LNA gain adjustment, the value is re-read and is used to make an initial, coarse, update to the baseband gain stage.

By your comment, are you implying that the RSSI obtained through the 'read_rssi' command is different from the one read through the command "agc_state" ? (Based on what I read, I would assume they should be the "same", or in the same range, in the sense that once the LNA gain has been set, a "new" RSSI will be read.)


For my setup, because I am not looking only at the signal of interest, but also at the interference from the other channel, the AGC on actually hurts the signal I am interested in. From what I have seen in the datasheet, the way the MAX2829 chip sets the LNA gain is to maximize EVM which means to maximize the power of the signal of interest while degrading the interference plus noise power. That is why I wanted to learn how does the AGC actually work, since for the 2x2 MIMO setup, the AGC on facilitates ZF, while all other strategies (that look at both signal of interest and interference as useful signals: maximum-likelihood, integer-forcing, exact integer-forcing) are hurt.

Last edited by corinai (2017-Sep-18 11:23:06)

Offline

 

#7 2017-Sep-18 12:52:49

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

If you can, could you please recommend a variable attenuator I could buy for my setup? I didn't think of attenuators as a viable solution for my setup as I am using a 2x2 MIMO network. But I assume as long as both signals are received at each antenna, and if we have the same type of attenuation things should be ok on average.

We use the Weinschel Aeroflex 4205-95.5 in our characterization experiments.

I had overlooked that you're building a MIMO system. I agree attenuators are less useful for building representative MIMO channels. I guess you could use four attenuators to construct arbitrary gains along the four propagation paths. But even then all four channels would be frequency flat, which might not represent the kinds of channels your scheme is optimized for.

By your comment, are you implying that the RSSI obtained through the 'read_rssi' command is different from the one read through the command "agc_state" ? (Based on what I read, I would assume they should be the "same", or in the same range, in the sense that once the LNA gain has been set, a "new" RSSI will be read.)

The 'agc_state' command returns the instantiation RSSI value at the time the AGC set the radio's gains. This value is one sample from the stream of RSSI samples captured by the RSSI ADC circuit. You can use the 'read_rssi' command to retrieve the entire sequence of RSSI samples that correspond to the IQ samples retrieved with 'read_iq'.

For my setup, because I am not looking only at the signal of interest, but also at the interference from the other channel, the AGC on actually hurts the signal I am interested in. From what I have seen in the datasheet, the way the MAX2829 chip sets the LNA gain is to maximize EVM which means to maximize the power of the signal of interest while degrading the interference plus noise power. That is why I wanted to learn how does the AGC actually work, since for the 2x2 MIMO setup, the AGC on facilitates ZF, while all other strategies (that look at both signal of interest and interference as useful signals: maximum-likelihood, integer-forcing, exact integer-forcing) are hurt.

This is not an accurate description of how the radio and AGC work.

First, I assume you mean "minimize EVM" - lower EVM is better.

The Rx circuits cannot affect the signal of interest independent of interference and noise. The Rx LNA applies a voltage gain to the signal received by the Rx antenna. The Rx VGA applies a voltage gain to the output of the mixer. These amplifiers have no way to treat "good" and "bad" signal components differently. In other words, the gain settings do not affect SINR. The SIR is a function of per-antenna Tx powers and per-path channel gains. The SNR is a function of Rx power (i.e. Tx powers and channel gains) and the constant additive noise power in the Rx LNA. The amplifiers must be set to fill the dynamic range of the Rx circuits and ADC. This is true whether the Rx signal is mostly the signal of interest, mostly interference, or no signal at all (i.e. just noise). The correct Rx amplifier setting depends *only* on the Rx power at the antenna port, whatever the SIR. The radio and AGC do not favor one equalization scheme over another.

WARPLab provides the 'agc_state' command so your script knows what gains were applied by each radio. A MIMO Rx implementation can use these gains to compute the actual channel matrix. If you only use the IQ signals to compute H_est, it's possible the channel estimates across Rx antennas will be scaled incorrectly. Imagine a 1x2 SIMO system where Tx->Rx_A has 10dB higher attenuation than Tx->Rx_B. The AGC will (hopefully) set the Rx_A gain 10dB higher than the Rx_B gain. The resulting IQ waveforms for Rx_A and Rx_B will be approximately the same amplitude. If you estimate the A and B channels using just the IQ waveforms, the magnitudes of H_estA and H_estB will be the same. But in reality the loss along HA was 10dB higher. The solution is to incorporate the knowledge of the Rx gains into the channel estimates before using those estimates in the Rx baseband processing.

Offline

 

#8 2017-Sep-19 12:11:14

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

thank you for your fast response. Everything we have discussed so far is helping me better understand the system and I thank you very much for your time spent on answering my questions.

Yes, that was a good catch, I meant to say minimize EVM.

Just to make sure I understand things correctly. The AGC code for the WARPlab reference design chooses the LNA gains in order to minimize EVM.
This is something mentioned in the first step on the wiki page: https://warpproject.org/trac/wiki/WARPLab/AGC#no1

With this value, the AGC chooses one of the three possible LNA gain settings that minimizes EVM.

And by that I thought that the choice is made based on this plot from the datasheet of the MAX2829 chip: https://photos.app.goo.gl/bPvMb7uKICPohtpo2 OR https://photos.app.goo.gl/ncZ3MRj7wkVgVcgD3 (for the .a standard). Where we observe the RSSI behavior versus input power, for the three different LNA gains. I thought, that the C code, would choose the LNA gain based on these curves, whichever LNA gain provides the minimum EVM for the specific input power, that is the one that it chooses. Please correct me if I am wrong. Where of course the input power, it is measured from the RSSI and transformed into dBm through I assume this plot: https://photos.app.goo.gl/aRPSo1Dk9bhxMGfI3 you also referred to earlier in your post.

It makes total sense what you said about the fact that there is no differentiation between the signal of interest and interference when RX power is measured. Totally agree with that one. However, the point that I am trying to make (and it does not mean that the AGC is behaving wrong in the current code) is that for a 2x2 MIMO channel if the choice of LNA gain is done based on this plot I mentioned earlier, for this specific plot I assume the EVM is measured as if ZF was applied at the receiver, which means a function that depends on identifying only the signal of interest, and having interference being treated as noise. That is all I am saying, which confirms my findings in my results (I can share them if interested), and it implies that if one wants to also use interference something else needs to be done with how the LNA gains are being set or just turn it off.


The last two paragraphs that you mentioned are super valuable to me. Is there a specific way we can scale the H based on the RX gains ? This might fix my issues in my codes since I have observed exactly what you mentioned, a difference in magnitude of H at both received antennas when AGC is off. That means same gains are applied to both received signals the same way, so now the received power is reflected in the estimate of H.
(More details about my setup: I am using a MIMO 2x2 network, two boards with 2 antennas each. I am using the 802.11 reference design model for the frame you guys build in the  wl_example_mimo_ofdm_txrx.m. That means I use the I and Q samples, the LTS symbols from the preamble to estimate H.) Any comments or suggestions on how to do the scaling of H are highly appreciated.

I am asking this, because I would like to have the AGC on, since it scales the signals in a way that I can further use them.

Last edited by corinai (2017-Sep-19 12:11:49)

Offline

 

#9 2017-Sep-19 13:42:47

chunter
Administrator
From: Mango Communications
Registered: 2006-Aug-24
Posts: 1212

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

corinai wrote:

Just to make sure I understand things correctly. The AGC code for the WARPlab reference design chooses the LNA gains in order to minimize EVM.
This is something mentioned in the first step on the wiki page: https://warpproject.org/trac/wiki/WARPLab/AGC#no1

With this value, the AGC chooses one of the three possible LNA gain settings that minimizes EVM.

And by that I thought that the choice is made based on this plot from the datasheet of the MAX2829 chip: https://photos.app.goo.gl/bPvMb7uKICPohtpo2 OR https://photos.app.goo.gl/ncZ3MRj7wkVgVcgD3 (for the .a standard). Where we observe the RSSI behavior versus input power, for the three different LNA gains. I thought, that the C code, would choose the LNA gain based on these curves, whichever LNA gain provides the minimum EVM for the specific input power, that is the one that it chooses. Please correct me if I am wrong.

That's generally accurate. One small correction: the AGC algorithm is implemented directly in the FPGA fabric as a System Generator peripheral core. The C code only controls the Rx gain settings when in manual gain control. When AGC mode is enabled, the hardware controls gain choices directly. Otherwise, yes, the AGC chooses an LNA gain stage based upon RSSI as one of its first operations. It's important to note that the AGC core never calculates any kind of EVM estimate. It can't -- the AGC has no idea what the signaling strategy of the incoming waveform is. It simply looks up an LNA gain stage based upon receive power according to those graphs in the MAX2829 datasheet. Once the LNA has been selected and enough time has passed so that any transients have settled down, it then updates the VGA to fill the dynamic range of the ADC.


corinai wrote:

It makes total sense what you said about the fact that there is no differentiation between the signal of interest and interference when RX power is measured. Totally agree with that one. However, the point that I am trying to make (and it does not mean that the AGC is behaving wrong in the current code) is that for a 2x2 MIMO channel if the choice of LNA gain is done based on this plot I mentioned earlier, for this specific plot I assume the EVM is measured as if ZF was applied at the receiver, which means a function that depends on identifying only the signal of interest, and having interference being treated as noise. That is all I am saying, which confirms my findings in my results (I can share them if interested), and it implies that if one wants to also use interference something else needs to be done with how the LNA gains are being set or just turn it off.

Regardless of the makeup of the signal, for a given input power there is an ideal LNA setting such that the incoming signal is least noisy. This is true regardless of whether the incoming signal is purely the signal of interest or if it is a combination of the signal of interest with an interference term. In both cases, there is a single LNA gain setting that will minimize EVM for the signal of interest. So, I don't believe that the AGC or the plots in the datasheet are fundamentally tied ZF or any other decoding strategy.

Another way to think of it is that the graphs in the datasheet of RX EVM vs. P_IN for various LNA selections are only talking about the additional EVM degradation caused by the radio itself. An ideal radio would do nothing to corrupt the incoming waveform. In that case the "RX EVM" would be 0, but you'd still be left with whatever the fundamental EVM is at the antenna that is caused by SIR. You want the radio to induce as little extra EVM to the signal as possible even if the signal it is using for that power calculation is itself a combination of good energy and bad energy.

corinai wrote:

The last two paragraphs that you mentioned are super valuable to me. Is there a specific way we can scale the H based on the RX gains ? This might fix my issues in my codes since I have observed exactly what you mentioned, a difference in magnitude of H at both received antennas when AGC is off. That means same gains are applied to both received signals the same way, so now the received power is reflected in the estimate of H.
(More details about my setup: I am using a MIMO 2x2 network, two boards with 2 antennas each. I am using the 802.11 reference design model for the frame you guys build in the  wl_example_mimo_ofdm_txrx.m. That means I use the I and Q samples, the LTS symbols from the preamble to estimate H.) Any comments or suggestions on how to do the scaling of H are highly appreciated.

I am asking this, because I would like to have the AGC on, since it scales the signals in a way that I can further use them.

I'm not totally sure how you would do the scaling, but the amount of gain being applied by each radio is knowable based upon the gain selections. The mapping is stated here. As an example, suppose you have a reception where RFA's AGC chooses (RF, BB) gains of (2, 12) and RFB's AGC chooses (3, 2). In that case, RFA applies 15dB+12dB = 27dB of gain. On the other hand, RFB applies 30dB+2dB = 32dB of gain. So in reality the signal from RFA in your baseband processing is actually 32dB-27dB = 5dB stronger than the signal from RFB. So I think if you artificially scale up both the channel estimates as well as the I/Q waveform from RFA by 5dB then your processing down the chain would take into account the relative strengths. Note: scaling up might not be the best approach for an actual implementation where you have to worry about fixed point representations of values in the receiver. Instead you might be able to account for the 5dB later down the processing chain when doing the combination operations to tease out the interfering signals.

Offline

 

#10 2017-Sep-20 10:55:57

corinai
Member
From: Rice Univ./Boston Univ.
Registered: 2015-Nov-23
Posts: 15

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

I am aware of the mapping you are talking about for the TX and RF gains, it is just not clear how to use that. And, I feel, I am not the only one that has had to deal with this scaling, but based on my search on the posts on this forum I haven't seen any clear way of how to adjust the signals based on knowing what the gains are. (I have seen one approach in a friends project: he switched the gains to dB, added some adjusting gain and then switch back, but  I am not sure if this is the right way to go.)

Based on what chunter said in the last paragraph, I am now even more confused. So, based on what you said in the last paragraph is it fair to assume now that the H in https://warpproject.org/trac/wiki/WARPL … MIMO_OFDM, and the corresponding I and Q samples are not the "true" ones with respect to power, at antenna 1 and antenna 2 when the AGC is on? 

Considering what murphopo also said:

murphpo wrote:

If you estimate the A and B channels using just the IQ waveforms, the magnitudes of H_estA and H_estB will be the same. But in reality the loss along HA was 10dB higher. The solution is to incorporate the knowledge of the Rx gains into the channel estimates before using those estimates in the Rx baseband processing.

there must be a solution but I am just not clear how can I adjust the two incoming signals, both I and Q values to obtain the "true" estimate of the channel such that the (integer-forcing) IF linear receiver can do the right signal processing.

Is there anyone or any other work that you know about or that is out there that has tried anything remotely to this and has had some decent results that I can build upon?


The current solution that I have now that works decently (but I am sure it is not the best one), is to have the AGC off, to manually set the same RX BB and RF gains to be the same for both receiving antennas. That means if there is a difference in received power or in the attenuation of the signal at both receiving antennas, it will now show in the magnitude of the I and Q samples and hence in the channel estimates.


Thank you so much for all your time and help. Any suggestions you might have are really appreciated.

Last edited by corinai (2017-Sep-20 10:57:01)

Offline

 

#11 2017-Sep-20 15:24:56

chunter
Administrator
From: Mango Communications
Registered: 2006-Aug-24
Posts: 1212

Re: Automatic Gain Control - AGC - how does it change with respect to RSSI

corinai wrote:

Based on what chunter said in the last paragraph, I am now even more confused. So, based on what you said in the last paragraph is it fair to assume now that the H in https://warpproject.org/trac/wiki/WARPL … MIMO_OFDM, and the corresponding I and Q samples are not the “true” ones with respect to power, at antenna 1 and antenna 2 when the AGC is on?

It depends on what you are trying to do. The unitless digital I/Q values that you process in baseband are representations of analog fluctuations of voltage at the antenna port. For some schemes, these arbitrarily normalized digital values are totally sufficient. It's my understanding that for simple schemes like zero-forcing, you don’t need any correction factor to account for the analog gains being applied in the radios. The gains are already accounted for in the channel estimates and cancel out during the zero-forcing operation (e.g. for x_est = y / H_est, both y and H_est are jointly affected by the gain selection in the radio). The arbitrary normalization caused by different gains on each antenna is irrelevant. However, for schemes where the relative strengths of each radio are crucial to decoding (like maximal ratio combining), then it’s no longer appropriate to have both radio streams normalized to the same range of I/Q values. Instead, you’d need to undo the normalization caused by different radio gains such that you are comparing the effective powers as seen at the antenna ports.

corinai wrote:

there must be a solution but I am just not clear how can I adjust the two incoming signals, both I and Q values to obtain the “true” estimate of the channel such that the (integer-forcing) IF linear receiver can do the right signal processing.

I'm not totally sure since I've never built a more sophisticated receiver than zero-forcing. There may be more to it than this, but my intuition is that of my previous response: if one radio is in reality 10dB stronger than the other then you should make the digital I/Q values 10dB different so they are representative of this different in power and then extract channel estimates from that. Sorry I can't be of more assistance than that.

corinai wrote:

Is there anyone or any other work that you know about or that is out there that has tried anything remotely to this and has had some decent results that I can build upon?

I’m not aware of anything specific.

corinai wrote:

The current solution that I have now that works decently (but I am sure it is not the best one), is to have the AGC off, to manually set the same RX BB and RF gains to be the same for both receiving antennas. That means if there is a difference in received power or in the attenuation of the signal at both receiving antennas, it will now show in the magnitude of the I and Q samples and hence in the channel estimates.

That gets rid of the normalization challenge. And for scenarios where the actual receive power on each antenna are close to one another, probably works well. Where this solution will suffer is when one receive antenna receives a substantially stronger signal than the other. In that case, if both gains are set such that the strong signal fills the range of the ADC then the weak signal will only be using a fraction of the bit width of the AGC. This will introduce quantization noise that will degrade the performance of your system.

Offline

 

Board footer