LTE Receive in Matlab : Scaling values captured

Hello

Im using the capture function in Matlab to receive an LTE OTA signal in pluto, do i need to scale the values like if  i'm transmitting an LTE (like this example https://wiki.analog.com/resources/tools-software/linux-software/libiio/clients/lte_example  or here  www.mathworks.com/.../lte-transmitter-using-analog-devices-ad9361-ad9364.html)

also which is better data format for capture int16 or double? i do understand that int16 is native for SDR does this mean that if i use int16 i might to format data to double for BB processing?

Thanks BR

  • 0
    •  Analog Employees 
    on Jul 19, 2021 5:11 PM

    Before data is sent to the radio it is always put into an int16 format. If you want to manage how this scaling occurs set the type to int16 and scale and cast the waveform appropriately before passing to the device.

    -Travis 

  • Thanks Travis, your response helpful but is relevant only if im transmitting, In the case if im just receiving, depending on the format i get different levels of power, such as this example where im capturing an LTE 10MHz with a sampling rate of 15.36MHz, i did use a LTE10 FIR filter but no gain (manual gain zero) as in the code attached, in the pictures there are level disparities, which one is correct for further BB processing (for example LTECellSearch recovery function)?

     


    clear;clc;
    sr = 15.36e6;
    fc=816e6;
    
    rxPluto = sdrrx('Pluto',...
               'RadioID','usb:0',...
               'CenterFrequency',fc,...
               'BasebandSampleRate',sr,...
               'GainSource','Manual',...
               'Gain',0,'OutputDataType','single'); 
           designCustomFilter(rxPluto)
    [rxwaveform, rxmetadata] = capture(rxPluto,1,'Seconds','Filename','ltecap.bb');
    specScope = dsp.SpectrumAnalyzer('ViewType','Spectrum and spectrogram', ...
           'AxesLayout','Vertical','SampleRate',sr);
    specScope.CursorMeasurements.Enable = true;
    specScope.TimeSpanSource = 'auto';
    specScope(rxwaveform);

    int16 capture 

    double capture

    single capture

    Thanks BR

  • +1
    •  Analog Employees 
    on Jul 20, 2021 6:45 PM in reply to YoussefTRA

    The scope you are using assumes data has the same relative scale to the same reference across all types. You need to correctly set the scope to the data type you are using.

    Double and single are basically the same or within the frame to frame error. They also have an assumed full scale of 1.

    For int16 data, its full scale is 2^15 for the type but with respect to the converter, it will be 2^11 since it's only 12-bits.

    The units are also not correct since Pluto returns codes and not volts. It would be accurate to use dBFS and not dBm.

    -Travis

  • Thanks i understand now. Also since the Matlab function im interested in (LTECellsearch seems to support only double format so i'll probably need to set the sdrrx formatdatatype to double