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.
>> The sort of stuff I typically do doesn't need a USB or Ethernet
>> interface, both great reasons to use an ARM... free, working software
>> that comes with an OS like Linux. (by free I mean you don't have to
>> spend all that time writing or debugging a TCP/IP stack, etc)
>
> 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.
>> But there are times when an internal CPU works even for high level
>> interfaces. In fact, the J1 was written because they needed a processor
>> to stream video over Ethernet and the uBlaze wan't so great at it.
>>
>> I get the impression your projects are about other things than the
>> FPGA/CPU you use and cost/size really aren't so important. Then you
>> have less reason to squeeze on size, power, unit costs, but rather
>> minimize development cost. If so, that only makes sense.
>
> 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.
>> My next project will be similar in hardware requirements to a digital
>> watch, but with more processing...
>
> 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.
--
Rick