FPGA ram is expensive compared to the SRAM or flash that comes on a small ARM,
like an LPC1754. Something serious, like an LPC3250, has stuff like hardware
vector floating point and runs 32-bit instructions at 260 MHz. Both the ARMs
have uarts, timers, ADCs, DACs, and Ethernet, for
4and7 respectively.
That is not a useful way to look at RAM unless you are talking about
buying a larger chip than you need otherwise just to get more RAM. That
is like saying the routing in an FPGA is "expensive" compared to the
PCB. It is there as part of the device, use it or it goes to waste.
If you need Ethernet, then Ethernet is useful. But adding Ethernet to
an FPGA is no big deal. Likewise for nearly any peripheral.
No point in discussing this very much. Every system has it's own
requirements. If external ARMs are what works for you, great!
We generally run bare-metal, a central state machine and some ISR stuff. I've
written three RTOSs in the past but haven't really needed one lately.
What do you do for the networking code. If you write your own, then you
are doing a lot of work for naught typically, unless you have special
requirements.
Yeah, we use the GCC compilers. Stuff like Ethernet and USB stacks are available
and work without much hassle. I don't know what the tool chains are like for the
soft cores.
So you are using networking code, but no OS?
The soft cores I work with don't bother with that sort of stuff. The
apps are much smaller and don't need that level of complexity. In fact,
that is what they are all about, getting rid of unneeded complexity.
We do a fair amount of "computing", stuff like signal filtering, calibrations
with flash cal tables, serial and Ethernet communications, sometimes driving
leds and lcds. There have been a minority of apps simple enough to use a
microblaze, and I didn't think that acquiring/learning/archiving another whole
tool chain was worth it for those few apps, what with an LPC1754 costing $4.
Ethernet comms can be a hunk of code, but the rest of what you describe
is pretty simple stuff. I'm not sure there is even a need for a
processor. Lots of designers are just so used to doing everything in
software they think it is simple.
Actually, I think everything you listed above is simple enough for a
uBlaze. What is the issue with that?
I find HDL to be the "simple" way to do stuff like I/O and serial comms,
even signal processing. In fact, my bread and butter is a product with
signal processing in an FPGA, not because of speed, it is just an audio
app. But the FPGA *had* to be there. An MCU would just be a waste of
board space which this has very little of.
Sometimes you can just do the computing "in hardware" in the FPGA and not even
need a procedural language. So the use case gets even smaller.
I am looking forward to having a serious ARM or two (or, say, 16) inside an
FPGA. With enough CPUs, you don't need an RTOS.
Xilinx has that now you know. What do they call it, Z-something? Zync
maybe?
How about 144 processors running at 100's of MIPS each? Enough
processing power that you can devote one to a serial port, one to an SPI
port, one to flash a couple of LEDs and still have 140 left over. Check
out the GreenArrays GA144. Around $14 the last time I asked. You won't
like the development system though. It is the processor equivalent of
an FPGA. I call it a FPPA, Field Programmable Processor Array. It can
be *very* low power too if you let the nodes idle when they aren't doing
anything.