Author Topic: Recommend FPGA SoC & Dev Board to get started  (Read 3554 times)

0 Members and 1 Guest are viewing this topic.

Offline Berni

  • Super Contributor
  • ***
  • Posts: 5389
  • Country: si
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #25 on: October 05, 2026, 06:03:28 am »
Lol, Zynq has several thousands of lines connecting FPGA side to CPU, no discrete solution can come anywhere near that, not to mention all the unique possibilities such tight integration gives - like cache-coherent memory access, ability to DMA into and out of main memory, etc, etc. Speaking of memory - which of "your favourive MCU family" can drive 1GiB of DDR3 memory, and do SMP or AMP processing all with the single chip, and expose a high-bandwidth and optionally cache-coherent channels from said memory to external devices? Even full MPU SoCs with PCIE will lose here because access latency of PCIE is orders of magnitude worse than what you get in Zynq.
Your statement clearly shows you have no idea what you're talking about. Zynqs (and similar SoCs from competitors) offer unique possitilities which are simply impossible to achieve otherwise no matter the cost - so your "freedom" in practice would end up being worse result with higher complexity. When used properly these things can do wonders, but they are still complex devices which I would recommend for beginners to avoid until they find their footing in "pure" FPGA devices.

We are talking about getting started with FPGAs here.

Not being able to drive 1GB of DDR3 memory is a good thing here. There is no need to worry about length matched trace going to BGA chips. No initialization of complicated memory controllers, no setting of timing, no timing training..etc

The FPGA+SoC chips indeed offer very impressive performance with the sort of bandwidth and latency that can only be found in chips like this. If you have an application that needs that sort of performance then you know it needs such a chip and have a justification to figure it out. I messed around with an Altera one before but it was overkill for what i actually needed in that particular case.

However these chips are very complicated. Just booting them up is a whole process, they usually involve embedded linux (that is another can of worms to learn), the chips are big BGAs with a gazilion power rails and lots of external components. They are also all big FPGAs and so more expensive to get into and bigger hit if you blow one up.

Hence for someone just getting into FPGAs it is a safer bet to buy some small cheap FPGA that you can buy cheap dev boards for and comes in a simple package that you can solder onto your own PCBs, give it power and it simply runs. Even these small chips are rather capable these days, so you are not really going to be all that limited in what you can do. If you want a taste of what a FPGA+CPU combo looks like it is mostly just a shared memory space, so hooking up a MCUs memory bus into a FPGA gets you that. Sure it is not as fast, but it is not slow either (can even do live video across such a link), this can even be done via QSPI if pins are at a premium (if the MCU supports mapped QSPI SRAM and a bit less speed is okay). These setups are even viable for real world products where you got a MCU that needs just a bit of extra help from a FPGA to interface to some weird bus or something.

Getting into FPGAs is already overwhelming as it is, so stick to simple small chips to start with. Then armed with the experience one can always step up to something like a Zynq later on when there is an application that actually needs the high performance.
 
The following users thanked this post: zapta

Offline Doctorandus_P

  • Super Contributor
  • ***
  • Posts: 5360
  • Country: nl
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #26 on: October 05, 2026, 12:46:00 pm »
I agree with Bernie. Start with some simple stuff. For example:

Project 1: Blink a led.
Project 2: Make a counter on a 7 segment display.
Project 3: Multiplex a bunch of 7 segment LED's.
Project 4: Add something like SPI to set the display value from an uC.

Such simple projects are mostly intended to get some experience with the syntax and how the tools work. Once you have become familiar with that, it's time to expand in steps. Another relatively simple project is to use DDS and an R2R DAC to create a function generator. You can also find plenty of examples from this on the web, and it's a nice example of how a simple project can do something useful.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #27 on: October 05, 2026, 01:59:26 pm »
However these chips are very complicated. Just booting them up is a whole process, they usually involve embedded linux (that is another can of worms to learn), the chips are big BGAs with a gazilion power rails and lots of external components. They are also all big FPGAs and so more expensive to get into and bigger hit if you blow one up.
Which is why I also recommend beginners to stay away from these. But saying that these are useless and random MCU+FPGA is better is just nonsense.

Hence for someone just getting into FPGAs it is a safer bet to buy some small cheap FPGA that you can buy cheap dev boards for and comes in a simple package that you can solder onto your own PCBs, give it power and it simply runs. Even these small chips are rather capable these days, so you are not really going to be all that limited in what you can do. If you want a taste of what a FPGA+CPU combo looks like it is mostly just a shared memory space, so hooking up a MCUs memory bus into a FPGA gets you that. Sure it is not as fast, but it is not slow either (can even do live video across such a link), this can even be done via QSPI if pins are at a premium (if the MCU supports mapped QSPI SRAM and a bit less speed is okay). These setups are even viable for real world products where you got a MCU that needs just a bit of extra help from a FPGA to interface to some weird bus or something.
There are no MCU in existence to the best of my knowledge which expose their memory bus to external devices directly, QSPI is royal pain in the ass to get working due to bugs (I'm looking at you, STM32!), and in most MCUs memory-mapped mode only supports read-only access, and as such it's usually cached, sometimes in a way which is impossible to turn off (hey silicon bugs!), they also perform speculative accesses and cache refill bursts - all of which makes implementing anything that is not a read-only memory array very problematic.
Some MCUs also expose external memory controller, but it has it's own issues in that it forces you to implement memory protocol in FPGA, and these tend to be quite slow too - for example even "high-performance" STM32H7 can only run external memory at like 90 MHz :palm:
And none of those peripherals allow bus mastering (like when your FPGA design reads/writes to/from system memory directly on it's own initiative without request or permission or even knowledge of the CPU), and they all are typically high-latency and relatively low bandwidth.

So realistically the closest you can get to Zynq is by using an MPU SoC with PCIE RC + FPGA with PCIE EP, but such MPUs usually loaded to the gills with all kinds of crap that you probably don't need, and come in packages with gazillion of balls.

Offline dobsonr741

  • Frequent Contributor
  • **
  • Posts: 975
  • Country: us
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #28 on: October 05, 2026, 02:13:28 pm »
Quote
Oh and do not use ARM+FPGA SoC chips. They are always overly complicated for what they do. You can get by perfectly fine by taking your favorite MCU family (STM,LPC,ESP..etc) and connect a memory bus onto any FPGA. This gives you most of the way to what a ARM+FPGA chip is, but with much more freedom in chip and architecture selection.

Exactly the opposite. Only makes sense to learn FPGA in the context of downstream processing.

And to bring it up, no more Linux kernel acrobatics needed: use Pynq, an SD card image that loads on ARM, gives you Python and Jupyter notebooks from your browser to load the gateware.

Do all of this on the $20 EBAZ4205 board.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30228
  • Country: nl
    • NCT Developments
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #29 on: October 05, 2026, 02:41:11 pm »
There are no MCU in existence to the best of my knowledge which expose their memory bus to external devices directly,
How about NXP's LCP177x? That has an external memory interface which looks pretty complete.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #30 on: October 05, 2026, 05:06:44 pm »
How about NXP's LCP177x? That has an external memory interface which looks pretty complete.
I didn't try that particular one because at 120 MHz it's not anywhere close to Zynq's dual-core 667+ MHz CPU so I don't know if there are any issues with it, but at the frequency it runs I don't think it has bandwidth anywhere close to DDR3x32@533MHz, which is around 4GBytes/s.
I did try using STM32H7 via QSPI and FMC, and they both were buggy and unreliable, with the latter being the only realistic path forward because QSPI is so unbelievably buggy. Here is a blog post discussing using FMC to talk to FPGA: https://serd.es/2024/07/24/Memory-mapping-an-FPGA-from-a-STM32.html He says he got about 284 Mbps out of this bridge, which of course it basically nothing as even one AXI HP port of Zynq running at mellow 100 MHz can transfer about 20x that, and Zynq has two of such ports in addition to cache-coherent ACP port. There is also a post saying that ST's newer OCTOSPI interface is just as buggy as QSPI: https://serd.es/2025/07/16/STM32H735-OCTOSPI-quirks.html To be honest the entire blog is very interesting to read as author is very methodical in trying to get an MCU-FPGA pair to work together via different means.

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30228
  • Country: nl
    • NCT Developments
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #31 on: October 05, 2026, 05:24:02 pm »
How about NXP's LCP177x? That has an external memory interface which looks pretty complete.
I didn't try that particular one because at 120 MHz it's not anywhere close to Zynq's dual-core 667+ MHz CPU so I don't know if there are any issues with it, but at the frequency it runs I don't think it has bandwidth anywhere close to DDR3x32@533MHz, which is around 4GBytes/s.
That is not really the point here. It is about having an external MCU with a reasonable amount of bandwidth hooked up to an FPGA without getting into a lot of complexity of having a CPU somewhere inside an FPGA. There are plenty of FPGAs with an ARM Cortex Mx inside running at tens to low hundreds of MHz. I think getting to 100MB/s to 200MB/s should be doable with the LPC177x using a 32 bit wide bus; I didn't check these numbers with the manual but that is my feeling based on experience with other MCUs from NXP.
« Last Edit: October 05, 2026, 05:43:28 pm by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #32 on: October 05, 2026, 07:16:07 pm »
That is not really the point here. It is about having an external MCU with a reasonable amount of bandwidth hooked up to an FPGA without getting into a lot of complexity of having a CPU somewhere inside an FPGA. There are plenty of FPGAs with an ARM Cortex Mx inside running at tens to low hundreds of MHz. I think getting to 100MB/s to 200MB/s should be doable with the LPC177x using a 32 bit wide bus; I didn't check these numbers with the manual but that is my feeling based on experience with other MCUs from NXP.
Where you are going to send that kind of stream? Into 64kb of RAM? :-DD
From my 1 minute research it does seem that EMC was specifically designed for memory-mapped peripherals:
Quote
In addition, it can be used as an interface with off-chip memory-mapped devices and peripherals
Would be interesting to see higher performance devices with that kind of peripheral, also find out if anyone actually tried implementing such a bridge. ST also claims a lot of stuff in their datasheets, but when the rubber hits the road it turns out that a fair chunk of those claimed features are either broken, or don't work like documentation says they should which makes them unusable for the intended purpose.

Offline gbyleveldt

  • Contributor
  • Posts: 25
  • Country: za
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #33 on: October 05, 2026, 07:59:07 pm »
FWIW, I wet my feet with a cheap CPLD to get to grips with how different programmable logic is from a typical MCU. Once I got to grips with it (almost instant logic switching vs sequential execution), I jumped straight to a Zynq using Vivado. I already have bare metal arm working (typical MCU work in PS) and using AXI with custom RTL modules in the PL. I have no illusions that it gets muuuuuch more complex but geesh, it’s not hard to make leds flash. As the above poster said, it can be as simple or as hard as you want to make it.
Resistance is not futile; it is voltage divided by current (R=V/I)
 
The following users thanked this post: Someone

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30228
  • Country: nl
    • NCT Developments
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #34 on: October 05, 2026, 08:08:38 pm »
That is not really the point here. It is about having an external MCU with a reasonable amount of bandwidth hooked up to an FPGA without getting into a lot of complexity of having a CPU somewhere inside an FPGA. There are plenty of FPGAs with an ARM Cortex Mx inside running at tens to low hundreds of MHz. I think getting to 100MB/s to 200MB/s should be doable with the LPC177x using a 32 bit wide bus; I didn't check these numbers with the manual but that is my feeling based on experience with other MCUs from NXP.
Where you are going to send that kind of stream? Into 64kb of RAM? :-DD
64kB of memory space is enough to do double buffered mailboxes which get transferred using DMA (probably straight into some other peripheral). Perfectly useable so I don't see the issue here. Companion MCUs in SOCs have similar sized mailboxes between them.

Quote
From my 1 minute research it does seem that EMC was specifically designed for memory-mapped peripherals:
Quote
In addition, it can be used as an interface with off-chip memory-mapped devices and peripherals
Would be interesting to see higher performance devices with that kind of peripheral, also find out if anyone actually tried implementing such a bridge. ST also claims a lot of stuff in their datasheets, but when the rubber hits the road it turns out that a fair chunk of those claimed features are either broken, or don't work like documentation says they should which makes them unusable for the intended purpose.
With NXP MCUs it is extremely rare peripherals don't work as advertised. I have been using these for decades and can't think of an example where I ran into problems. Only problem I ever had was having to little noise on the ADC input for oversampling when I needed an extra bit of resolution. OTOH, using an MCU from ST is very low on my list exactly because of the problems you mention.
« Last Edit: October 05, 2026, 08:14:26 pm by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #35 on: October 05, 2026, 09:00:06 pm »
64kB of memory space is enough to do double buffered mailboxes which get transferred using DMA (probably straight into some other peripheral). Perfectly useable so I don't see the issue here. .
What peripheral in that MCU can consume 200 MBytes/s on a sustained basis?

Companion MCUs in SOCs have similar sized mailboxes between them
I don't know which SoCs are you talking about here, but Zynqs that were discussed here have one or two Cortex-A9 cores running at 667+ MHz, which is a full blown application processors similar in class to NXP's i.MX6, and as such they have DDR2/3 memory controller so there is no question where such stream can go. Interestingly though it can go from one fabric peripheral to memory and then back to another fabric peripheral, all without CPU involvement thanks to support for bus mastering.

With NXP MCUs it is extremely rare peripherals don't work as advertised. I have been using these for decades and can't think of an example where I ran into problems. Only problem I ever had was having to little noise on the ADC input for oversampling when I needed an extra bit of resolution. OTOH, using an MCU from ST is very low on my list exactly because of the problems you mention.
I have my doubts. There's gotta be a reason STM32 are so popular, and NXP ones are not. I do see them every once in a while in random devices, but nowhere as frequent as STM32s. I also would like to see the actual implementation of this bridge in hardware, as opposed to just documentation saying it's possible. As I understand this EMC still does not support bus mastering, but it seems that nothing short of PCIE RC actually supports that, and there are ways around it, even if not pretty and with their own problems and limitations.

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30228
  • Country: nl
    • NCT Developments
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #36 on: October 06, 2026, 04:55:57 am »
The reason STM32s are popular is lower price for the hardware. But the software development costs are way higher which many overlook. I have evaluated a whole bunch of MCUs and landed on the NXP LPC series.
« Last Edit: October 06, 2026, 05:02:28 am by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline Berni

  • Super Contributor
  • ***
  • Posts: 5389
  • Country: si
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #37 on: October 06, 2026, 06:33:05 am »
I never said Zynq chips are useless, just that you need an application that actually requires the high performance they provide in order to justify their complexity and cost. An FPGA+MCU is not a replacement for a SoC chip like that.

As for MCU support, external memory interfaces on MCUs are pretty common. But yes how well they are implemented can vary a lot.

But having a reverse memory interface back into the MCU, yes you don't get that. But why would you need one? Said MCU likely only has like 64KB of RAM or something. It takes like a milisecond to transfer the entire contents, and if you want to be doing other stuff during that time just DMA it. But yes some STM32 chips do have badly implemented interfaces, so check the ref manual and errata before picking the exact chip family (their peripherals are buggy in general). For example ESP32 chips have excellent QSPI support.

Implementing a memory bus interface on the FPGA side is not hard. Any competent HDL designer should be able to whip one up in an afternoon. The parallel memory bus basically presents all you need right on the pins as raw bits, only thing needed is clock crossing into the FPGA domain, for SPI or QSPI it is just some extra shift registers in front to serve as serializers/deserializers into the same parallel bus. Heck it is even a very nice tutorial task for people learning HDL as it exposes you to a lot of common HDL concepts without wrapping them in complex overhead. And it is really fun to see your peripherals inside the FPGA simply show up on the MCU as if they are its own, also being able to simply poke them with the debugger.

I did a memory mapped bus into a FPGA on STM32 chips before (both in parallel and QSPI form) and it worked fine. Speeds were somewhere in the 20 to 50 MB/s range from what i remember. Sure not world shattering performance, but what more do you need on a MCU running a ~100MHz ARM Cortex M3 core, it is not capable of doing useful processing on data much faster than that anyway. Did also work with big FPGAs that stream SDR data over PCIe at spicy speeds, but that's a completely different class of applications, not gonna cut it with MCUs there.

It is just a matter of the right tool for the job.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #38 on: October 06, 2026, 01:11:58 pm »
The reason STM32s are popular is lower price for the hardware. But the software development costs are way higher which many overlook.
I disagree. Because STM32 are so popular, you can easily find a solution for just about any problem you ever encounter with it. With less popular parts it's usually harder to find solutions.

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #39 on: October 06, 2026, 01:27:33 pm »
But having a reverse memory interface back into the MCU, yes you don't get that. But why would you need one? Said MCU likely only has like 64KB of RAM or something. It takes like a milisecond to transfer the entire contents, and if you want to be doing other stuff during that time just DMA it. But yes some STM32 chips do have badly implemented interfaces, so check the ref manual and errata before picking the exact chip family (their peripherals are buggy in general). For example ESP32 chips have excellent QSPI support.
This is often used when peripheral can be pointed at resources which are in main memory, and that peripheral will pull those resources from main memory as needed. One obvious example is video card - you load models/textures/sprites/etc into RAM, point video card at them, an it does the rest on it's own.
There are more uses for bus mastering, I only provided a single example to get a taste of what's possible.

Implementing a memory bus interface on the FPGA side is not hard. Any competent HDL designer should be able to whip one up in an afternoon. The parallel memory bus basically presents all you need right on the pins as raw bits, only thing needed is clock crossing into the FPGA domain, for SPI or QSPI it is just some extra shift registers in front to serve as serializers/deserializers into the same parallel bus. Heck it is even a very nice tutorial task for people learning HDL as it exposes you to a lot of common HDL concepts without wrapping them in complex overhead. And it is really fun to see your peripherals inside the FPGA simply show up on the MCU as if they are its own, also being able to simply poke them with the debugger.
Yes it's not hard when protocol is well-documented and hardware does actually work like documentation says it does. The problem is routing wide busses in not an easy task, which is why pretty much all modern high-speed interfaces are serial and not parallel. These also eat FPGA's IO pins like there is no tomorrow, which might force you to choose larger package than the one you would've chosen otherwise.

I did a memory mapped bus into a FPGA on STM32 chips before (both in parallel and QSPI form) and it worked fine. Speeds were somewhere in the 20 to 50 MB/s range from what i remember. Sure not world shattering performance, but what more do you need on a MCU running a ~100MHz ARM Cortex M3 core, it is not capable of doing useful processing on data much faster than that anyway. Did also work with big FPGAs that stream SDR data over PCIe at spicy speeds, but that's a completely different class of applications, not gonna cut it with MCUs there.
What's the point of connecting a 100 MHz MCU to FPGA if you can simply implement said MCU inside of FPGA via softcore which would run at similar frequency and have a simple and straightforward single chip solution instead of dealing with interconnects? I know in Vivado you get pretty much all peripherals you would find in an MCU available for free, and - even  better - you can add exactly the peripherals you need and nothing more. Or you can add a lot of some peripherals than what you'd find in MCU if that's what you need. And such softcore would still have this glue-less interface to your custom peripherals, which can access main memory as well as other MMIO resources if configured to do so. And with Vivado you don't need to write a single line of HDL to build such a system from zero to a bitstream ready for programming (or firmware integration whatever the case may be).
« Last Edit: October 06, 2026, 05:20:30 pm by asmi »
 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6595
  • Country: 00
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #40 on: October 06, 2026, 04:45:48 pm »
Zynqs that were discussed here have one or two Cortex-A9 cores running at 667+ MHz, which is a full blown application processors similar in class to NXP's i.MX6, and as such they have DDR2/3 memory...

Is this sufficient for a beginners' blinky or should I look for a more capable board?
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #41 on: October 06, 2026, 05:19:57 pm »
Is this sufficient for a beginners' blinky or should I look for a more capable board?
Nope, at the very minimum you need this: https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/vek385.html  :-DD
 
The following users thanked this post: zapta

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 30228
  • Country: nl
    • NCT Developments
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #42 on: October 06, 2026, 06:02:04 pm »
The reason STM32s are popular is lower price for the hardware. But the software development costs are way higher which many overlook.
I disagree. Because STM32 are so popular, you can easily find a solution for just about any problem you ever encounter with it. With less popular parts it's usually harder to find solutions.
And that is where you are wrong. Popular in this case means an internet filled with half-assed hobbyist solutions and no real answer. Having several incompatible HAL versions from the manufacturer means that the examples you find won't work and nobody knows why because the documenation for the chip itself is poor. Been there, done that.

NXP OTOH has their own forum where you can get real help from NXP's own FAEs. So no BS, the right answer comes straight from the horse's mouth.

Choosing something which seems to be popular on internet is a bad idea. Better do your own research and talk to engineers with a proven track record.
« Last Edit: October 06, 2026, 06:38:17 pm by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #43 on: October 06, 2026, 06:28:31 pm »
And that is where you are wrong. Popular in this case means an internet filled with half-assed hobbyist solutions and no real answer. Having several incompatible HAL versions from the manufacturer means that the examples you find won't work and nobody knows why because the documenation for the chip itself is poor.
In years of using STM32 chips I never had any issues with HAL incompatibility. If anything it actually helped me to port solution between MCUs.

Been there, done that.
I'm starting to doubt it.

NXP OTOH has their own forum where you can get real help from NXP's own FAEs. So no BS, the right answer comes straight from the horse's mouth.
Big surprise - ST has the same! And I did ask a few questions, and always got good answers from ST which actually worked.

Offline Berni

  • Super Contributor
  • ***
  • Posts: 5389
  • Country: si
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #44 on: Yesterday at 06:41:57 am »
This is often used when peripheral can be pointed at resources which are in main memory, and that peripheral will pull those resources from main memory as needed. One obvious example is video card - you load models/textures/sprites/etc into RAM, point video card at them, an it does the rest on it's own.
There are more uses for bus mastering, I only provided a single example to get a taste of what's possible.

Yes bidirectional shared memory is certainly useful. Graphics cards make a lot of use for it for paging system ram into VRAM, loading data directly from SSD, talking between multiple GPUs..etc. Very useful when you have gigabytes of RAM and can't afford to be constantly copying gigabytes of data across the bridge.

But again a typical MCU is only going to have 10s or 100s of KB of RAM, so easier to keep any hot data being worked on inside FPGAs RAM and access it over the bus when needed. Or if you need it in the MCU RAM then just DMA it across in because the small amount of data that can fit in the MCU RAM will transfer in sub milisecond times.

Yes it's not hard when protocol is well-documented and hardware does actually work like documentation says it does. The problem is routing wide busses in not an easy task, which is why pretty much all modern high-speed interfaces are serial and not parallel. These also eat FPGA's IO pins like there is no tomorrow, which might force you to choose larger package than the one you would've chosen otherwise.

Yeah hence the use of SPI,QSPI,OSPI. Since there is SRAM chips for these buses means that some MCUs have native memory mapped support for these.

What's the point of connecting a 100 MHz MCU to FPGA if you can simply implement said MCU inside of FPGA via softcore which would run at similar frequency and have a simple and straightforward single chip solution instead of dealing with interconnects? I know in Vivado you get pretty much all peripherals you would find in an MCU available for free, and - even  better - you can add exactly the peripherals you need and nothing more. Or you can add a lot of some peripherals than what you'd find in MCU if that's what you need. And such softcore would still have this glue-less interface to your custom peripherals, which can access main memory as well as other MMIO resources if configured to do so. And with Vivado you don't need to write a single line of HDL to build such a system from zero to a bitstream ready for programming (or firmware integration whatever the case may be).

For when you need to keep BOM cost down.

FPGAs are expensive chips as it is. So in order to justify one you already need a application that can't be solved using a reasonable amount of off the shelf single purpose chips or a MCU peripheral. So then once you know you need a FPGA you find that the FPGAs in the low 10s of dollar range are not very big. So stuffing your whole design including a CPU into the FPGA might not be viable. So the easiest step to reduce the logic inside is to buy an off the shelf MCU chip (since those are incredibly common) so you don't need a CPU inside the FPGA anymore. Then since a MCU also has peripherals you use those for as many tasks as they can do. This leaves you with only the funky non standard peripherals inside the FPGA so the whole FPGA can be dedicated to that.

Then since some of your machinery is inside the FPGA you need to talk to it somehow, hence you need a bus between the FPGA and MCU. Sometimes the traffic requirements are low (ie FPGA catapulting 1GB of streaming data and outputting a 1KB measurement result and some control commands back) so all you need is some pedestrian serial bus. In a FPGA implementing I2C or UART is a bit annoying so the choose is often SPI as it is just a simple shift register. But if you need more speed the easy step up is QSPI, then since some MCUs support memory mapped QSPI (due to existence of QSPI SRAM) it can easily be upgraded into a memory mapped bus to simplify drivers on the MCU side and reduce overhead while on the FPGA side there is not much extra complexity as you still get read/write commands with an address and data.

Hence by the end of that design process we invented a FPGA+MCU memory mapped bus solution.

This is the solution i used for when i needed to talk to high speed ADCs or do video compositing on MIPI DSI and LVDS video etc.. where i need to work with high speed data streams but i don't actually need any compute heavy processing done on it, yet i still need a CPU in there to set things up and orchestrate it all.
 

Online Someone

  • Super Contributor
  • ***
  • Posts: 6070
  • Country: au
    • send complaints here
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #45 on: Yesterday at 07:02:11 am »
FPGAs are expensive chips as it is. So in order to justify one you already need an application that can't be solved using a reasonable amount of off the shelf single purpose chips or a MCU peripheral. So then once you know you need a FPGA you find that the FPGAs in the low 10s of dollar range are not very big. So stuffing your whole design including a CPU into the FPGA might not be viable.
Some of the price changes in steps between FPGA sizes can be hard to swallow, but even with 50% utilisation a typical "small" softcore is on the order of a dollar or less. A soft DDR controller is often the resource hog (where needed). For processors under 300MHz softcores are usually fairly competitive just on price even with DDR.

... add rant about how highly functional products worked just fine without needing linux etc to bloat out the embedded processing resources, even while including networking and file IO to general purpose storage.
 

Offline Berni

  • Super Contributor
  • ***
  • Posts: 5389
  • Country: si
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #46 on: Yesterday at 07:44:07 am »
Yeah over the whole wide spectrum of FPGA applications there is certainly an area where softcores do make a lot of sense.

For me more the resource downside of a softcore is memory. The small cheap FPGAs often don't have a lot it, so the RAM blocks you do have are pretty valuable when the processing you are doing needs them too. While introducing external memory adds complexity because it is no longer '0 latency' so it grows the pipeline length. Also any peripherals you add onto the softcore also cost resources and pins.

If you already need external memory for other reasons then this downside basically disappears. Also helps a lot if the vendors particular IDE has built in support for softcores so that they "just work" as part of the development process rather than manually stuffing in some open source softcore, hence FPGA chip selection is a factor.
 
The following users thanked this post: Someone

Offline asmi

  • Super Contributor
  • ***
  • Posts: 3344
  • Country: ca
Re: Recommend FPGA SoC & Dev Board to get started
« Reply #47 on: Yesterday at 01:51:12 pm »
To be honest I can't remember last time my design was so small that adding softcore would even be noticeable in terms of resources compared to what the rest of design takes. So it was essentially free. But adding additional chip is never free, and it's not even so much about the cost of device itself, but more of increase in PCB size, and subsequently case size.
That said, there is an interesting combination I'm thinking about trying out - combining PIC64GX1000 MPU with FPGA. PIC64GX1000 is a super-rare example of an MPU SoC which contains only minimal peripherals, but it does contain PCIE RC, which how I plan to connect it to FPGA. MPU contains 4+1 RISC-V 64 bit cores running at 600 MHz which is what makes it interesting for me. Right now it's only available in 325 ball package which only has a single lane of PCIE 2, but next year they should have 484 ball package which would have 4 lanes PCIE interface, and also 32 bit DDR4 interface as opposed to 16 bit for smaller package. That combination would make sense to me because you can't implement such CPU inside FPGA, and I can't use Zynq because I want to play specifically with RV architecture.
« Last Edit: Yesterday at 02:00:00 pm by asmi »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->