WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#1 2009-Jan-07 16:05:52

domenique
Member
Registered: 2009-Jan-07
Posts: 47

Noise Calculation / Estimation

Is it possible to calculate or estimate the noise during a packet reception? The only function I found is the WarpRadio_RSSIData function to get the RSSI. Can it be used somehow to estimate the noise?

Thanks

Offline

 

#2 2009-Jan-09 09:00:23

domenique
Member
Registered: 2009-Jan-07
Posts: 47

Re: Noise Calculation / Estimation

I found a function OFDM_AGC_MIMO_ReadReg_GBB_init(BaseAddress) in ofdm_agc_mimo.h that would return the noise value I think. Unfortunately this function is commented since version 10 of the OFDM Reference Design. I tried to use it nevertheless but several addresses used, are not defined any more ( OFDM_AGC_MIMO_GBB_init_OFFSET, XPAR_OFDM_AGC_MIMO_OPBW_0_BASEADDR ). Using the addresses of version 9 doesn't work. The addresses may have changed and not been updated or don't exist any more.
Can someone please help me?

Thanks,

Offline

 

#3 2009-Jan-09 09:19:20

kaleem
Member
Registered: 2009-Jan-09
Posts: 1

Re: Noise Calculation / Estimation

[deleted content]

Last edited by kaleem (2009-Jan-09 10:09:45)

Offline

 

#4 2009-Jan-09 09:48:49

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

Re: Noise Calculation / Estimation

The best way to estimate the per-packet SNR is to use the AGC gain values (higher gain -> lower SNR). You can read the gains with code like:

Code:

unsigned int agcGains, antA_BB, antA_RF, antB_BB, antB_RF;
agcGains = ofdm_AGC_GetGains();

//agcGains has four values concatendated
// [1:0] = antA RF gain
// [6:2] = antA baseband gain
// [9:8] = antB RF gain
// [14:10] = antB baseband gain
antA_RF = agcGains&0x3;
antA_BB = (agcGains>>2)&0x1F;
antB_RF = (agcGains>>8)&0x3;
antB_BB = (agcGains>>10)&0x1F;

The value in the gains register is only valid during a packet interrupt handler (good header, good packet or bad header).

Offline

 

#5 2009-Jan-09 10:24:32

domenique
Member
Registered: 2009-Jan-07
Posts: 47

Re: Noise Calculation / Estimation

Thanks for your answer. But I don't know how the gains are related to the SNR.
But I'm not searching for SNR. I would like to get the noise value. The warpphy init function uses a agcnoiseEst set to -95. The PHY uses this value and updates it, I think. Isn't it possible to read this value out somehow?
My questions may sound stupid, but I'm not familiar with this stuff yet. But I'm learning.

Thanks,

Offline

 

#6 2009-Jan-09 10:41:05

arijit
Member
Registered: 2008-Jan-23
Posts: 22

Re: Noise Calculation / Estimation

Hi,

I am interested in studying noise too, and after trying a few things, now I am using WARPLAB to capture the samples directly from the radio board.
Has anyone tried this approach? Even here I have run into some problems but since WARPLAB is a lot simpler to work with I am wondering if anyone has any comments about this technique to study noise.

Arijit.

Offline

 

#7 2009-Jan-10 04:03:45

domenique
Member
Registered: 2009-Jan-07
Posts: 47

Re: Noise Calculation / Estimation

In a previous post it was proposed not to use the warpRadio_v1_rssiData function to estimate the RSSI but to use the RX-Gains as follows:

chrishunter wrote:

Reading RSSI isn't a good metric, since it's an instantaneous measurement of received energy. If you're reading it before transmitting or after a PHY interrupt (likely, since the PowerPC doesn't know when the medium is busy), it's also a measurement of energy during an idle period. As you found, these readings won't correlate with network throughput.

The PHY (as of reference design v04) provides a register that reports the AGC gain values per-packet for exactly this sort of application. This is our best proxy for average SNR on packet timescales. Use this function to read the gain register in the good packet interrupt handler:

ofdm_TxRx_mimo_ReadReg_Rx_Gains(OFDM_BASEADDR)

This will return a 15-bit number, composed of:

bits[14:0] = [ AntB_RFG[1:0] AntB_BBG[4:0] 0 AntA_RFG[1:0] AntA_BBG[4:0] ]

For SISO systems, you only care about the AntA numbers. You combine the two gain values according to this formula:

TotalGain = 15*(RFG-1) + 2*BBG

The result is roughly inversely proportional (in dB) to a received packet's SNR.

How you use this is an open research question and depends entirely on what questions you're trying to answer. One possible use is a protocol like one we have developed at Rice known as Opportunistic Auto Rate (OAR). In any case, please keep us updated on what you find.

Chris Hunter says that reading the RSSIData is an instantaneous measurement because it also measures the received energy during idle periods.
Following this explanation, is it possible to read the RSSI value just before the packet reception and to use this value as a kind of noise-value? Or maybe this RSSI value could be combined with the TotalGain formula proposed above.
I greatly appreciate any comment.

Thanks,

Offline

 

#8 2009-Jan-10 13:11:25

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

Re: Noise Calculation / Estimation

The AGC core averages the RSSI signal and uses it to choose good gain values. Reading the AGC gains really is the best proxy for estimating SNR.

Offline

 

#9 2009-Jan-11 09:32:00

domenique
Member
Registered: 2009-Jan-07
Posts: 47

Re: Noise Calculation / Estimation

That means that if I would average the values of warpRadio_v1_rssiData during the packet reception it would be the same value as TotalGain = 15*(RFG-1) + 2*BBG, or would there be a difference?  Does TotalGain have the same range as RSSI (0-1023) ?
If it is possible to read the RSSI/TotalGain as a kind of SNR, why isn't it possible to just read the noise value during the packet reception?

Thanks,

Offline

 

Board footer