Hi Matt,

Kindly, see my comments below:

> Matt Ettus <[EMAIL PROTECTED]> wrote:
>
> Firas, 
>
> Thanks for doing these tests.  See my comments inline. 

 > Hi Matt, Don 
> 
> I did the tests. We definitely have improvement in USRP SFDR by more  
> than 3 dB. I did the tests as follows : 
> 
> 1) Test Setup: 
> 
> a) Using USRP Rev 4.5 with Basic-RX  board. 
> b)  Using high accuracy function generator. 
> c) Using decimation rate =8, and gain =0. 
> d) Using single tone (The SFDR is usually tested using single tone). 
> e) Using two frequencies 250KHz and 5250KHz. This is because I  
> noticed  a large difference in USRP SFDR between DDC frequency =0 and  
> DDC frequency  = 5MHz (for example). 
Your are welcome. USRP is really great and we thank you for inventing it.

> The tones that you see on the 250 kHz measurements are harmonics.  They  
> could be generated in the USRP, but they could also be there on your  
> signal generator.  Can you take a look at your sig gen on a spectrum  
> analyzer to check if you still see the harmonics? 

I don't see any harmonics from signal generator using spectrum analyzer.


> f) Using tone power levels of (+4dBm) which gives about 1Volt P-P into  
> ADC (according to AD9862 data sheets, this analog input signal gives  
> best THD performance) and (+8 dBm) slightly below the saturating level  
> which produces about 2Volt P-P into the ADC (according to AD9862 data  
> sheets, this analog input signal gives best Noise performance). 
> g) Using Intel Core2D PC with Ubuntu 7.10. 
> h) Using gnuradio 3.1.1. 
> i) Using usrp_fft.py. 
> 
> 
> 2) Prepared USRP FPGA Work : 
> 
> a) The first  FPGA rbf file (usrp_std_0.rbf) was generated by  
> modifying only the cordic.v file. 
> 
> b) The second FPGA rbf file (usrp_std_1.rbf) was generated by  
> modifying the cordic.v and the cic_dec_shifter.v files. 
> 
> c) The third FPGA rbf file (usrp_std_2.rbf) was generated by modifying  
> the adc_interface.v and the cic_dec_shifter.v files. 
> 
> See the files at: 
> http://rapidshare.com/files/79109257/Files_Differences.tar.gz
> http://rapidshare.com/files/79109346/all_fpga_rbf.tar.gz
> http://rapidshare.com/files/79109391/Worked_files.tar.gz
> When you make the following change: 
> -   rx_dcoffset #(`FR_ADC_OFFSET_0)  
rx_dcoffset0(.clock(clock),.enable(dco_en[0]),.reset(reset),.adc_in({adc0[11],adc0,3'b0}),.adc_out(adc0_corr),
 
> +   rx_dcoffset #(`FR_ADC_OFFSET_0)  
rx_dcoffset0(.clock(clock),.enable(dco_en[0]),.reset(reset),.adc_in({adc0[11],adc0,4'b0}),.adc_out(adc0_corr),
 
>
> You need to take into account that the input to rx_dcoffset is only 16  
> bits.  So in the second line, you are really sending in {adc0,4'b0}  
> since the top repeated sign bit will be cut off.  This block takes an  
> average of the DC offset and subtracts it form the signal.  This can  
> cause an overflow if the signal is close to clipping and the DC offset  
> is nonzero. The best thing to do here would be to make the rx_dcoffset  
> block clip instead of wrap around.  That would save a digit here. 

Actually, I'm weak when it concern working with FPGA and verlog. All what I did 
was implementing Don W. suggestions.
If you tell me where and what to change, I can do it and test it again. I think 
as you can see from the graphs (and Don expected this also) the changes in the 
adc_interface.v was better than the work done in the cordic.v but because of 
the level problem (at 8dBm), I ignored it.


> Also be careful with the values in cic_dec_shifter, since each one is  
> used at only one decimation rate.  You need to test all the ones that  
> change. 

I tested from decimation 8 to decimation 256. All worked fine.


> 3) Test results: 
> 
> Note 1: 
> I used in my tests the original rbf file std_2rxhb_2tx.rbf ,  
> usrp_std_1.rbf and usrp_std_2.rbf  FPGA files (usrp_std_0.rbf was not  
> used). 
> 
> Note 2: 
> Let us assume that I have eye reading error by about (1dB - 2dB)!!!!. 
> 
> Note 3: 
> See test results at : 
> http://rapidshare.com/files/79109205/Tests.tar.gz
> 
> a) The generated rbf file by modifying the cordic.v and the  
> cic_dec_shifter.v files (usrp_std_1.rbf) gave us more SFDR than the  
> original FPGA file by about 7 dB in case of input signal 5250KHz and  
> level=+8dBm as shown in graphs. I tested this rbf file for all input  
> signal levels (from -90dBm to +13 dBm) and for all decimations (8 to  
> 256). It is working fine and great and should  be used all the time  
> instead of the original rbf file. 
> 
> b) The generated rbf file by modifying the adc_interface.v and the  
> cic_dec_shifter.v files (usrp_std_2.rbf) was not good as expected. 
> 
>        Although it gave us more SFDR than the original FPGA file by  
> about 5 dB in case of input signal 5250KHz and level 4dBm as shown in  
> the graphs, but the FPGA got crazy when the input signal level was  
> 8dBm as shown n the graphs (I think the cordic was overflowed). 
>       When the FPGA  went crazy, I reduced the input signal gradually  
> by 1dB steps until I reached  input signal =+4dBm then it worked back  
> normal. Thus, the file is working good only and only if the input  
> signal is equal or below 4dBm. 
> 
> 
> I think we should send this work as a patch to gnuradio to enhance our  
> fantastic USRP device. 
> I agree that the results do look better.  My concern is overflow when  
> both I and Q are used.  If you can try all of these with max-strength  
> signals on both I and Q at the same time, I would be more than happy to  
> include the final results in the standard build of the FPGA. 

Actually we are using I & Q (The DDC out is complex as you know) and the FFT 
used in usrp_fft.py is complex FFT.
However, If you prefer, I can repeat all the tests using DBSRX board, or please 
suggest what tests you would like me to do.


> Thanks for doing all this investigation, 
> Matt

Best Regards,

Firas A. 
  

_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to