I’m starting into FPGA design and would like to include / integrate a soft core Arm or RiscV processor running linux in the design along with other IP peripherals. Where can I actually purchase such IP modules to use in my design, especially for use in a low volume product (say 10-100 units).
Hello eric.fort, welcome to the Forum!
This is a bit of a multi-layered question that will require more context to answer completely. When you say that you’re starting into an FPGA design, are you talking about designing an FPGA platform, or that you have an FPGA platform that is the base of your design and you’d like to add some peripherals onto that? This can determine whether you’re going to need more protection hardware as well as may lead to questions regarding what you’re interfacing these peripherals into (as many FPGA platforms have the means to integrate standalone peripherals already.)
As for the inclusion of the ARM or RiscV processor, we certainly have a lot of options available for purchase. Some of them can come on a board already in which you can integrate with methods of communication such as SPI or I2C, while others will need to be placed on the board directly.
We have many options for peripherals with multiple types of communication, however to give an accurate answer I must request that you elaborate what exactly you are looking for when asking for IP peripherals/modules. What did you have in mind?
I have not chosen an FPGA to target as of yet, but before I do, I’d like to get some idea of the costs and various choices of things for soft IP (intelectual property) cores available for use in my design, specifically processor cores that I can easily get Linux running on, and that are available at reasonable cost and quantity for minimal runs. When i have looked a bit before for this, no one wants to give me the time of day or so it seems unless I am going to build billions of units and thus buy billions of ip licences for their code blocks. Note, I am NOT seeking PHYSICAL hardware or Integrated circuits, but instead SYNTHESIZEABLE (likely verilog or VHDL) MODULES that can be linked into my HDL code to create a working custom AISC.
THIS IS TO BE ALL INCLUDED ON A SINGLE FPGA CHIP!
In this case being FPGA the HDL (hardware description language) code defines the hardware at a block level. Some of those blocks such as a soft processor can be licensed for use in ones own design. How and where does one obtain these licenses.
in in FPGA software (written in HDL) defines hardware.
Again, i’m NOT seeking PHYSICAL items, not an IC that has both a processor and FPGA die ties together on a single chip, but the soft IP (intellectual property) modules to synthesize such onto an FPGA that is only a blank slate array of gates (or well many if not most are using LUTs but effectively same thing)
Take a look at
No license required, but not sure if Linux runs on it.
This will be a most excellent adventure as you integrate so many pieces together.
Based on your notes, I will assume you are very familiar with digital concepts, have mastered the C programming language, and can move with ease across the Linux command line. At the same time, I will assume you are relatively new to the FPGA.
With that said, let me share a few thoughts with you:
- As a learning exercise, may I recommend you start with a tool such as the DE10-Lite MAX10 Eval board DK part number P0466-ND $144.00. Understand that this is not your final target, but it will let you explore FPGA concepts including the operation of soft-core processor called the NIOS-II which, as I recall, is bundled with the Quartus development software.
This starter platform will also allow you to explore other soft-core solutions such as the ones located at https://opencores.org/
Similar statements could be made for other FPGA based platforms such as the Xilinx Artix-7 family.
- As a production and time to market exercise, I would encourage you to explore a SOC or DSP solution. Unless your project is performance critical, you are like to find a a high performance uC solution that will take less time to develop, be easier to construct into final form, and use less power.
Your time is precious!
As a starting point, I would recommend one of the high-performance ARM 7 deices e.g., the STM32 Nucleo board. They are low cost and the learning curve isn’t excessive. Movement between families is relatively easy with HAL. Also, these devices have a reasonably good online support to get you up to speed.
- As a final SOC (FPGA plus uC) as stated in your original note, may I recommend something like the Digilent Zybo such as DK part number 1286-1174-ND. This particular chip has a hard-core ARM Cortex-A9. This may be a better solution when we consider your development time and the likely higher performance of the hard ARM as compared to a soft processor.
While I am intentionally steering you away from the FPGA, I’ve met a few experienced FPGA designers, and they are on another level. It’s truly impressive what they can do with signals in the RF realm.
Best wishes on your journey.
P.S. You are likely correct about the difficulty of obtaining IP for a high performance soft ARM. I’m not aware of any offerings. Perhaps other may be able to assist.
P.P.S Are you familiar with the DMA functionality as found on most high performance uC. This may be the performance edge you need to get your project up and running.
For something fully synthesizable, take a look at the Linux on LiteX project: GitHub - litex-hub/linux-on-litex-vexriscv: Linux on LiteX-VexRiscv it’s based on the VexRSICV core
What about arm cores for running Linux? The answer below might be a possible way to go, but what I asked initially was how to actually buy commercial ip core licenses for supported commercial cores. It seems the fpga vendors who sell both fpga and soft ip to support their fpga product directly send people to their distributors to license their IP but how do I purchase licences? Say I want an arm 7 ip block that runs Linux offered by Xilinx how do I buy a license for that block?
Hi @eric.fort most FPGA vendors that include an ARM core in their design only provide it as a fixed hardware block. It’s price is already included in the price of the final FPGA silicon. For soft-cores, every manufacture has had a “non”-arm architecture that they would offer for free or small price. Most of these are now moving to RISC-V architecture.
For ARM, your really only option is to deal with ARM directly: Arm Flexible Access – Arm® In their lowest tier, “DesignStart Tier” they include access to a Cortex-A5, so you could use that for a 32 Bit Linux support. Just note the 90 day window…
Thank you for the pointer to the arm flexable access program. between that and the RiscV architecture that pretty well covers integration of a controlling processor in the design, but what about other IP such as digital filter blocks, FFT/DFT blocks, DSP, etc for processing. can those blocks be bought somewhere as standard IP (I see them in the various FPGA maker IP catalogs) but how does one buy or license them. Again, the makers of FPGA like xilinx, lattice, altera, et al., point one to their distributors such as digikey… but Digikey seems to thus far not know how to offer me a license for such IP. It’s a problem when the manufacture points to a distributor and the distributor seems not to know how to make the manufactures product available. Does Digikey have a manufactures rep from say altera or xylinx or lattice, or really any of these companies that can address this.
@APDahlen yes you pretty much nailed it as to my experience and where I’m coming from. Though I’ve done hardware design its been mostly the old school way of using traditional 7400 logic, writing code for embedded processors, and using real copper to tie it together. FPGA and verilog is a new experience and verilog is my most recent language (I’m still learning it).
I’m a bit puzzled though at your suggestion of the STM nucleo boards as none of them appear to have what it takes to run linux (though their discovery series may offer that) and none of their boards seem to have any configurable logic in their silicon. Considering that my real focus and target here is a controller of some kind (probably linux based, but possibly uC based in which case I’ll just write C for the embedded control functions and use somethung like an atmega328 or pic both of which byw are available as soft cores) with a rather large and reconfigurable gate array to serve as one or more peripherals to be created by writing verilog rather than stringing copper between discrete logic ICs.
My target here is hardware design in verilog eventually focused toward completing a few projects in the domain of signal processing. i’ve tried to get the latency down to a tolerable level on a general purpose uC writing software and it seems that software and sequential processing just ain’t cutting it thus massively parallel processing in FPGA for those functions that need it and one of the reasond i’m trying to figure out how to buy or license IP blocks to do some of these functions. Yes, my time is precious. Time is money as they say. I’m not necessarily looking to reinvent the wheel either. Thus i’m looking to simply buy some of the needed functions as prebuilt IP blocks in the same way as I buy a 74161 counter IC instead i just buy the count_ block that does the same thing (probably too simple of an example as even I could write such a function in a matter of minutes as RTL, but it serves the example… a full processor likely serving as a better one)
The Digilent Zybo looks like a good target for eventual use but for focusing on the verilog and hardware design side I’m wondering if the lattice ICE40 may be a more cost effective target for now but that diverges feom the original question of where to find and how to license IP from vendors in a similar way to how I’m buying hard silicon now.
This depends on manufacture, for example,
Hello @eric.fort ,
RE: I’m a bit puzzled:
Correct, the STM boards do not have the capacity to run Linux. However, they are more powerful than one might suspect just by looking at the specifications. For example, depending on your project specifications, you may be able to run a time-based cooperative scheduler. You may also be able to run freeTROS if you want to walk up that learning curve. Finally, I would encourage you to take a close look at the DMA capabilities of the modern processer as this capability offers a considerable performance boost.
I wish you good luck with your project. Sorry I was unable to assist with your specific FPGA questions. As you said, there is real power in that FPGA the only problem is the very steep learning curve to unlock the potential.
Before purchasing or using any IP core, carefully review the licensing terms associated with a particular core to ensure that it meets the requirements of your project. That said, you can always buy proxies in time, but you can’t always get exactly right. Also, ask vendors for pricing information, especially for low volume production.