Help: SDR, DSP, FPGAs and Gnuradio


I’m trying to reprogram the FPGA of an SDR board in order to also include DSP blocks and not only mixers (for up/down conversion) and pre-amplifiers. My goal is for the FPGA to run similar stuff to what gnuradio does (so, DSP blocks), but without requiring an external host CPU.

For that, I was planning to start with myHDL to convert python into VHDL. However I have some questions:

  1. Are the gnuradio functions compatible with myHDL conversion? As anyone ever played with it? Or does anyone know about open source projects or tutorials related to DSP in python that I can convert with myHDL? A starting point of some kind? I could program everything alone, but I would like some inspiration from optimized code.

  2. A little bit off, but does anyone have the pros and cons of myHDL vs HDL Coder? I was looking for it and I couldn’t find it.


You should have no problem inserting MyHDL generated code into the gnuradio logic path. (I have done this once for an Ettus board)

The price, for one? Matlab & SimuLink are $$$$, MyHDL comes free.

Thank you so much for your quick reply.

I’m not if I understood correctly, but I don’t want to insert myHDL code into the gnuradio logic path. In fact I don’t want to use the host CPU whatsoever. I want to implement DSP blocks inside the FPGA, I just thought about gnuradio due to the possibility of converting part of it throught myHDL.

Can you share some of your work? I understand if you can’t.


MyHDL is a high level HDL language.
If the MyHDL code you write describes DSPs, then you’ll get DSPs implemented in your FPGA.
DSP is a generic term form which can mean many things.
I guess that, in the context of Gnuradio, a DSP is a very complex computational block.
The first question is : Are the FPGA resources large enough to implement the DSP blocks ?


@DrPi My FPGAs have 40K LEs (Altera Cyclone IV E). I believe they are big enough
to implement some FFTs and some other blocks while still controlling some
stuff on the board where they are into. Am I mistaken?

Thanks for your reply,