4 ms·
Please forgive me the stupid question: How do people use this? What role does it play in your projects?
by lixtra 5y ago
Please forgive me the stupid question: How do people use this? What role does it play in your projects?
- mrcode007 5y agoSoft cores are often used as a convenient abstraction layer in FPGAs for example. Rather than hand coding control plane in VHDL or Verilog, you can compile regular C and manage your device that way. But C compilers require a target architecture to compile to, so you need to pick one. A side note. There are many options for soft cores and often you will see overengineered solutions because something is popular or ready off the shelf. You end up with powerful gadgets. Kind of like a toaster toothbrush: Both are useful on their own, but it’s a weird combination.
- fischert 5y agoThis is not at all what a softcore is to me. This simply means that it is not a cpu which takes physical space on the FPGA whether you use it or not, it would only takes some celle of the logical array if inferred. But it is rather redundant to say vhdl and softcore, plus there are no riscv hardcore yet on FPGA.
- MayeulC 5y ago> But it is rather redundant to say vhdl and softcore I disagree. Firstly, there are many other hardware description languages (Verilog, migen, SpinalHDL for instance), and while they can more or less interoperate, one could prefer a given language depending on the context. Secondly, vhdl can be synthesized, placed and routed as an ASIC "hard core" or more precisely "soft macro". Yeah, you are right, I don't know of any FPGA (yet) shipping with hard RISC-V cores.
- mhh__ 5y agoLattice have some FPGA's with RISC-V cores in them IIRC
- _quarks_ 5y agoI thought so, too. I have read about the Lattice MACH-NX having a secure enclave based on a RISC-V CPU, but it seems like this is just a soft-core CPU as well.
- mhh__ 5y agohttps://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-fpga https://www.microsemi.com/product-directory/soc-fpgas/5498-p... Microsemi not lattice, my apologies
- diarmuidc 5y agoMicrosemi have the PolarFireSOC which has 4x RISC-V hard cores in the FPGA. I have an eval board on my desk
- brucehoult 5y agoFive. Four full-featured 64 bit cores with MMU, FPU, LInux capable-etc. Plus one 64 bit no MMU no FPU core for ... real time / microcontroller / whatever dedicated tasks.
- MayeulC 5y agoFPGAs are "Field Programmable Gate Arrays". AKA, reprogrammable logic circuits. Some stuff is just better done using a processor than an FPGA. Basically, when using an FPGA, you have a finite number of gates you can use: it's like saying "code anything you want, it must be less than 1k lines". Sequential logic, that's very convoluted with lots of condition, and not performance-critical will be a very good fit for CPUs, while the FPGA remains useful for high-troughoutput, parallel work, and specialized computing elements. So you can just have a processor plus an FPGA on the same board. But if you need a small fraction of an FPGA, you might as well use the rest to implement a CPU. And instead of designing your own instruction set, compiler, debugger, etc, you might want to pick an existing one, preferably the best match to your requirements. You can also modify the instruction set of the CPU to make use of more specific functionality you integrate on the FPGA. And implementing it this way makes it easier to share resources (registers, memory, peripherals). Of course, there is a performance penalty (frequency and energy) compared to using a "real" transistor-based CPU, and that's one of the reasons manufacturers sometimes integrate ARM cores in their designs.
- MayeulC 5y agoNow to more specifically answer your question: we investigate the performance impact of new logic-in-memory instructions, so a softcore is appealing: add custom instructions to the CPU, wire them using the FPGA. Run and compare. But one could run this in production to do something like handle TCP/IP on the CPU, but put a specific custom DSP on the FPGA side.
- tverbeure 5y agoI used small CPU cores if pretty much all my FPGA projects. For example, if I need an I2C controller for a one-time configuration of some external device, instead of adding a a hardware controller, I just bit-bang an I2C protocol on the IO pins. Once, that configuration is done, the CPU is then used for some other small task. The use of small embedded CPUs in FPGAs (or in ASICs too) is very common. The capacity of FPGAs is always increasing, and iterating a bug fix in hardware can take hours or even days. With a soft core CPU, updating the embedded firmware can take minutes. For ASICs, you'd need a silicon spin, of course.