Modifying gateware (and maintaining LimeUtils capability)

Hi All,

I’m just going over the gateware for the LimeSDR USB and am looking to implement some functionality in the FPGA. I would like to be able to maintain the functionality of “LimeSuite” in being able to use the API to control the board. However, I need to toss stuff off the FPGA. What I need to know is where the API commands are actually implemented. Is it in the FX3 code? Is it a combination?

I haven’t completely familiarized myself with the codebases yet, but I would like to retain the capability of controlling the LM7 chip from the Lime API and maintain the firmware flashing capability from the FX3. For example, is there any documentation for the “nios cpu” present in the gateware?

Thanks everyone for your help,
Cheers
Will

To clarify, I accept that some capabilities may be lost. For example, if I chop out the WFM part of the code, I understand that I lose that functionality in the limeutils. If it’s predictable things like that I have no concerns. I’m trying to narrow down being able to maintain the basics: antenna port, frequency, gain, etc while giving me more space to put some signal processing capability in the FPGA (for RX only).

Thanks all
Will

Hi @will_mysky,

Actually, all API commands are implemented in PC software. Then it communicates with NIOS CPU running in FPGA (via FX3).
Yes, removing WFM player will save some FPGA resources, but removing some, lets us say, TX gain control, will not. This is while you in any case have to have NIOS CPU for controlling LMS7002M and other stuff.
Actually, you may remove NIOS CPU if LMS7002M control speed is not an issue for you. But in this case you will need to solder IC19 (I2C to SPI bridge) and control LMS7002M from FX3.

Hi Zack,

Thank you for your response. I understand that they were run within the PC and then connected out to the device over USB. What I was wondering was where those were actually executed. Control speed will not be an issue for me, provided the received signal buffers aren’t effected. I have no concerns about jumping that link, thanks very much for mentioning it as I will now look over the schematics and see about that. I am assuming that the control of the LMS7002 from the FX3 will require firmware modification in the FX3?

Cheers
Will

Hi @will_mysky,

FX3 firmware is ready - all the required functionality is there. What you have to do is send/receive control data to/from different endpoints in the software. Another modification needs to be done in FPGA - route external SPI bus to the LMS7002M SPI bus instead of NIOS.

Hi @Zack,

Once I install the IC at IC19, and make the FPGA routing changes to route the SPI bus properly that is the hardware requirements met. You say

“send/receive control data to/from different endpoints in the software”

does that mean that I will need to modify the LimeUtils software and the API? I am not very clear on your meaning here.

Thank you for your help, I’m looking at the hardware modifications now.
Cheers
Will

Hi @will_mysky,

You will need to modify API by changing control data endpoint. Currently for control data 0x0F and 0x8F endpoints are used. You will need to use another endpoint after hardware and gateware modifications. Ping me when your hardware will be ready for more details.

Will do! Thank you very much for your assistance, I’ll finish the FPGA gateware modifications and respond then.