LimeSDR FPGA secrets

Now that I have received my forum ‘Member’ badge - oh what joy! - I’d like to challenge any member (badged or non badged) to explain to me what the FPGA does on the LimeSDR (in less than 400 characters)?

I’ve read the manual for the home grown lime chip and it kind of makes sense to me. Is there a datasheet/resource that tells me what the FPGA does? I’ve not used one of these gadgets before so am intrigued!

  1. Glue logic between LMS7002M and FX3 USB MCU;
  2. Signal waveform player (WFM) implementation;
  3. Tx and Rx data stream synchronization if necessary;
  4. NIOS MCU to control LMS7002M and on board devices like thermometer, Si5351C clock synthesizer etc.
3 Likes

Thanks Zack!
I’m guessing that using the FPGA is a great deal quicker than programming a microprocessor to do the same thing?
Does the FPGA also switch in/out components such as capacitors/resistors/inductors/aerial sockets?

Good question. I also wonder how much room is leftover/available to do more stuff with the FPGA?

Just came across this:

The FPGA is presently used to take care of things such as interfacing, digital down-conversion and tuning, and sample time-stamping.

http://fossi-foundation.org/gsoc17-ideas.html#limesdr-integrate-risc-v-core

FYI see the announcement here:

Yes and no. If you took the same processor design and synthesized it for an FPGA and had a custom ASIC made, the latter should run a lot faster — at least an order of magnitude. So why use FPGAs? You can easily build a system-on-chip that integrates a processor and lots of other custom stuff, like glue logic to hook up other devices, along with DSP blocks and clock circuitry. You can do that in quantity 1 if you like (a 1 off ASIC would cost a lot more…) and you can also modify and update the design just by replacing a configuration file in flash.

Cost and ability to reconfigure/update aside, FPGAs allow you to implement application-specific stuff in hardware, such as signal processing, and that can run a lot faster than when implemented in software, given FPGAs are inherently parallel. Maybe a couple of orders of magnitude? A great deal faster anyway.

RF switching is handled by the LMS7002M, with I think the exception the loopback function. The GPIO is connected to the FPGA and custom logic could be implemented there to control/interface with this.

1 Like

Thanks for your help Andrew. I’m determined to unravel the secrets of this SDR gadget. I’ll read the LMS7002M datasheet again and try and glean some info from the Limesuite GUI. There is so much RF terminology and abbreviations that a glossary of terms would be really useful if there is such a thing?

You might want to take a look at the HPSDR projects and Anand’s code for direction on that, they have spent the last decade optimizing their kit and offloading as much as they can into the FPGA, and the HPSDR FPGA’s are smaller so I would think we’'d have more room to play in.

The signal processing code and algo’s should be freely transportable, only the HPSDR hardware specific and PowerSDR code relocation segments need to be stripped out and replaced with code specific to our needs. I myslef am not sure of how much that is. I code but haven’t gotten into DSP coding, just let Phil and the others deal with that and enjoyed their work. They are very good at it.
I do believe there are a few of the HPSDR design and programming team here waiting for or already working on their boards.

1 Like

Cyclone IV - NIOS II (soft core or a.k.a. embedded core) = what’s left to play with

At least that is my rudimentary understanding with Andrew’s help.

It would be interesting to see what from HPSDR could be reused. Also, one of the GSoC project ideas is to re-factor the LimeSDR FPGA platform to use FuseSoC for packaging, integration and build. This would make it easier to have numerous FPGA configurations each with different features.

1 Like

…meant to comment on this…

I hope LimeSDR-FPGA/FuseSoC project moves forward. Has the deadline come yet for the summer of code projects?

I am certain that if the tools and IP were more open that FPGAs would see much wider use/adoption/contribution/etc. Why don’t hardware vendors still not understand that without software most hardware is a lump.

With Altera now owned by Intel I don’t think the situation improves.

I ran some side by side tests with my HPSDR last night and I am extremely impressed with the receive perf of the Lime kit.
Bare front ends sharing the same antenna produced nearly identical results on both bits of kit with PowerSDR tipping the balance for me on weak signals, the noise filters on PowerSDR are nothing short of amazing.

Would love to see those moved across and made available in SDR Console and GQRX.

1 Like

@andrewback I’ve just seen your FPGA project on DesignSpark - very nice! https://www.rs-online.com/designspark/build-an-open-source-mcu-and-program-it-with-arduino?cm_mmc=GB-EM--DSN_20170626--DM65355-_-HB_URL&cid=DM65355&bid=340261836 How far away are we from getting an arduino inside the LimeSDR? Would certainly benefit my repeater project. :control_knobs:

There’s a NIOS II MCU soft-core in the FPGA already and this provides SPI interfacing to the LMS7002M. Presumably it could be programmed to run some other program that configures the transceiver to do your bidding.

If you mean actual Arduino compatible and programmed via the IDE, I have no idea. Fun project for someone to port that Freedom E310 SoC :smiley:

Of course, @cairo.caplan is replacing the NIOS II with a RISC-V core and I’m not sure which one it will be, but I guess it could be made Arduino compatible (this may just be a case of then porting the Arduino libs and packaging a toolchain and e.g. OpenOCD for the IDE).

Hello @andrewback and @TegwynTwmfatt, my goal is to have the Pulpino working (http://www.pulp-platform.org/ ).

I have integrated the Orca and PicoRV32 but not tested yet. I know the Pulpino project has the Arduino base and some libraries ported to it:

2 Likes

I really need this glossary of all the mnemonics used. The definitions are dispersed throughout many documents but used all in one place. I have very little time but if I am going to master this device I will have to learn this. I have been trying to make configurations in LimeSuiteGUI but they never seem to act the way I want.

As with most engineering specialities, language is the key to success IMO. The plumbing world has a particularly interesting dialect, many of which are rather ‘fruity’ eg. nipples and flanges although my favourite is the ‘munsen ring’. Of course, electricians have the ‘grommet’, which is hard to beat!

ps. IMO = in my opinion.

I once wrote a post on a forum almost entirely in mnemonics and it made sense.
Electricians like their grommets hard to beat.

PS. I got some more info on repeaters from a professional who private messaged me. Seems that they don’t upconvert / downconvert as it adds too much noise to the signal. Instead they use vertical and polar antenna separation on the same frequency, which is actually a lot simpler. If you still want to set up a repeater on your mountain side I think it could be done reasonably easily.

That makes sense to me. Thanks for the info. I made a high gain antenna and set it up high and it brought in a very clear signal. Weak but clear. Just using it as a passive repeater with an omnidirectional at the other end of the coax brings the signal up one bar, near the omni.

1 Like

@Axeman … Would you like to test one of my repeater PCBs? It should be full duplex soon. I need some interesting examples for my ‘portfolio’. PM me if you are interested!