LMS7002 Digital Filtering for HF

I’m hearing through sources that there is digital filtering in the LMS7002 that currently is optimized for higher bands, but may not be optimized for HF. The source mentioned:

“…I visited LimeSDR developers team and had a long discussion about their SDR products, especially LimeSDR. I found that low RF bands limit is not only RF front end limitation, it also defined by LMS7002 digital filtering, etc…”

Now before anyone replies about the confusion on the matching networks and this digital filtering let me make it clear that they are completely separate issues - that the matching networks have known performance curves that are more suitable for VHF to SHF, but are usable in HF but not optimal. That can be overcome by designing and building other input circuitry to supplant the current design if needed - and I would think that for those that want to use their LimeSDRs in the HF range someone is going to work that issue and come up with a mod for that. I’m certainly thinking hard on that.

But it’s the digital filtering in the LMS7002 that can’t easily be overcome right now. It’s, from what I’ve been advised, intrinsic to the design of the LimeSDR as it is now, but it would be great if we knew how to resolve that issue to provide the LMS7002 better performance in the HF range (2.0 - 30 MHz, but it would be great if it could be extended to 56 MHz).

Who can shed light on this subject? Since the LimeSDR is open source, how can we obtain better performance from the digital filtering for HF?

Advise at your soonest - thanks, Marty (KN0CK)

Hi Marty,

I’m not sure where you heard this from, but please be assured that there is no such digital filtering.

Regards,

Andrew

Hello Marty, there is optional digital filtering on the LMS7002M in the TSP and RSP sections of the GUI. Normally they are turned off. GUI has ‘bypass’ switches for these, GFIR1, GFIR2 and GFIR3.

For a HF receiver. You would need to set the LO to 30MHz. This will ‘up convert’ your signal to around 30MHz. You would need to set the analogue LPF settings to around 40MHz. Then you can use the NCO and CMIX in RSP to downconvert your signal. Or down convert in your sofware receiver.

2 Likes

Hi Andrew, All
As said by Danny, GFIR 1 to 3 are bypassed (by default) in the RxTSP section (or sheet).
Moreover I have an issue about the FIR content display when I press the “Coefficient” button (see image below).
Is there any correction about this issue ?

Anybody could help about de GFIR format file (.fir) ?

The use of a decimation factor (clock factor) and LPF FIR (Digital Down Converter) should improve the receiving chain.
I have tested the NCO function. Works fine.
Regards.

1 Like

@papatoux, @danny,

I’m going to try this tonight to see what the result will be for HF performance - not that it’s lacking very much, but it would be interesting to see if the receive chain improves as a part of the changes to the digital filtering on the LMS7002. I’ll let you know my findings - stay tuned…

@andrewback: Andrew, with all due respect, when you answer that there’s ‘…no such digital filtering…’ and two LimeSDR users find digital filtering (GFIR and FIR) within the LMS7002 it’s leaning hard on the issue of credibility of the answers. Hey, no kidding, can you please confirm things with the Hardware Team at Lime Microsystems before you answer on issues that we’re all very anxious to know? I mean, we’re all trying to make the Lime an even bigger success here… - Thanks.

73 de Marty, KN0CK

More information here :
https://wiki.myriadrf.org/LimeMicro:LMS7002M_Datasheet#Functional_block_diagram
https://wiki.myriadrf.org/images/thumb/5/5d/Lms7002m-tsp-rx.png/550px-Lms7002m-tsp-rx.png
And here http://www.limemicro.com/wp-content/uploads/2015/10/LMS7002M-Programming-and-Calibration-Guide-v2.25.0.pdf
See chapter A2.14 RxTSP(A/B) Control Diagram

Regards & 73 JJ F1EHN

1 Like

Thanks for that link to the programming guide. If I ever get my LimeSDR I am going to have to reduce my sleeping time in half in order to do all of the things I am planning in my head.

Hello Marty,

You will be relieved to hear that at the time I did indeed check with the engineering team that there is no digital filtering in the signal chain by default and was told that is the case. I don’t believe this has changed, but if it has I am sure that @Zack will be able to confirm.

Regards,

Andrew

@andrewback,

In Zack We Trust… :slight_smile:

73 de Marty, KN0CK

1 Like

@andrewback, @martywittrock
As I said in my previous post, all the digital filtering chain is documented.
I have tested the NCO (runs well), IQ correction (runs well) but the GFIRs are set to “zero” and of course are bypassed to allow to ouput the data Stream.
There is a display issue in the LimeSuite app. https://discourse.myriadrf.org/uploads/default/original/1X/96bea6efdab5bd061964eb2b829a1bbf9a6193f0.png
It is impossible to see and edit the GFIR coeff. I saved the file and I saw all coeff are set to “0”. The memory addressing exists. So should be OK with a set of good coeff.
Andrew, is it possible to get an example of a GFIR format. The GFIR are also documented in the "LMS7002M – Multi-Band, Multi-Standard MIMO RF Transceiver IC

  • Programming and Calibration Guide -" but an example could help.
    Thank you.
    Regards.
    JJ F1EHN

Thanks and noted for the next 1st of April :smiling_imp:

Regarding digital filtering:

  1. All the digital filters are enabled by default, i.e. after LMS7002M reset.
  2. If we do not need digital filters, we just bypass them in ini file. Hence GFIRs are bypassed in ini file, used by SDR Console, for instance. GFIRs are bypassed in ini file used for simple test examples too.

I commented on this some time ago in other thread. Again - low RF bands are not limited by digital filtering. How this would be possible at all?

Hello @papatoux,

What OS are you using? We tried on Win10 and Win7 - everything looks OK.
What version of LimeSuiteGUI?

Hello @papatoux,

You should check LMS7002M Datasheet as well. There is a chapter “General Purpose FIR Filters” which gives more explanation.

Filter coefficients have to be in range of +/-1 (normalized) or in range of -32768 to 32767 (in this case it will be normalized automatically by software).

One important thing to understand is Internal Filter Length L, which is calculated as L = roundup(N/5) for GFIR1 and GFIR2 and L = roundup(N/15) for GFIR3, where N is FIR filter length.
All the filter coefficients virtually are divided to 5 groups of 8 coefficients for GFIR1/2 and to 15 groups of 8 for GFIR3. So, the parameter L specify, how many first positions of each octet should be occupied by filter coefficients.
Let us consider Inverse SINC filter from the datasheet, coefficients are given in Figure 19. It is 5 tap FIR filter. Hence the fir file will be as follows:

/* ******************************************************************
FILE: invsinc.fir
DESCRIPTION: Inverse sinc, positive.
Number of taps = 5, GFIR L should be set to L=5/5=1
****************************************************************** */
0.0101318,
0,
0,
0,
0,
0,
0,
0,
-0.0616455,
0,
0,
0,
0,
0,
0,
0,
0.855469,
0,
0,
0,
0,
0,
0,
0,
-0.0616455,
0,
0,
0,
0,
0,
0,
0,
0.0101318,
0,
0,
0,
0,
0,
0,
0

So, we supply all 40 coefficients for GFIR1/2. Parameter L in this case is L = roundup(5/5) = 1. It means that first position of each octet must be occupied while other should be zeroes, as you can see in the example.

Let me know if you will have any further questions.

Hello @Zack
My OS is W10 Pro. The LimeSuite Gui version is 17.02.1 - PothosSDR-20170312-vc1.
The GFIR display is like this :
https://discourse.myriadrf.org/uploads/default/original/1X/96bea6efdab5bd061964eb2b829a1bbf9a6193f0.png
Regards.
JJ

Hello @Zack
Thank you for your help.
It is clearer, now !
I am glad to see all digital filtering chain is implemented into the LMS7002. II will test ASAP…
Regards.
JJ

Hello @papatoux,

Try the latest software (it is LimeSuiteGUI_20170410.exe at the time of writing) from this link. Let me know if everything is OK.

Whats new on this software release?

So far what i can see is the windows now can be change which is i like and needed to my laptop now i can see the bottom parts.

Hello @Zack
Thank you Zack, this new version corrects the GFIR coefficients display.
Sorry, I profit of your expertise about LimeSuite to ask you about the ‘LMS_LoadConfig’ command. The topic is here Loading configuration files using MATLAB
The ini configuration loading works well except for the LPF configuration.
May be you can help on this topic ?
Best regards.
JJ F1EHN

Zack,

Downloaded the latest LimeSuiteGUI. It’s showing me a mismatch error when I connect to my board.

So I run the Programming module, but it fails…

Ideas?

Tnx,
Mike