Lattice vs Altera (Mico32 / NIOS)....or?

Hi everybody,

First off all...sorry for cross posting this to both arch.fpga and arch.embedded, but I think it fits in both places.

I'm currently in the selection fase of an FPGA vendor. we need a >2M gate chip with DSP capabilities, SERDES and offcourse the mandatory low cost. Likewise we need a high performance embedded CPU softcore for system management. At the moment things are pointing towards lattice because of price, availability and HW specs. As i'm involved in the SW part of the design me and my team has been trying to evaluate the tool chain (ispLEVER + Eclipse Mico32 environment) and the evaluation board bassed on a Lattice ECP2 FPGA. But we're not quite happy about it. We have spend allot of time to get a very simple CPU system (CPU + intern memory) running on the FPGA. We have done progress but this is very slow and we seem to keep banging our heads against the wall when we try expand the system. My conclusions on the Lattice tool chain and the Mico32 system based on the evaluation is as follows:

  • Bad documentation on both tools and eval boards. Some stuff will never work if you don't reverse engineer HW or get correct support.
  • Outdated tutorials regarding to tool and HW revisions.
  • Poorly integrated and bugy tools.
  • Extremely slow JTAG connection to the CPU (19kbit/sec) for SW debugging/downloading.
  • Hard to trouple shot the CPU configuration (e.g. SW debugger cannot connect to the CPU).
  • Tools crashes
  • Overall poorly matured product (Mico32 and tools).

So my questions are:

  • Is it only me that have come to this conclusion? Are some of you using lattice and Mico32 with success in a commercial product?
  • Any ways (known fixes to issues, third party stuff etc.) to get faster to market with the Lattice solution?
  • Is the stuff (NIOS II and tools) from Altera (or any other vendor) any better regarding the complaints above?
  • The Mico32 is open source but is the origin of the code made by Lattice themselves or?
  • Any recommendations or experiences to share?

Hope to see some comments on my conclusions and questions.

Thank you!

Best Regards

-- MMJ

PS: All in this message is my personal opinions - and may not be the ones of my employer.

Reply to
FreeWheel
Loading thread data ...

There are cheap evaluation kits with NIOS II integrated available, so maybe you should try it yourself. I've used it for a commercial product with a Cyclone, but I wouldn't do it again. It is possible and there are some nice IPs, but the price of a FPGA with all the IPs you'll need for a good system (CPU core, SDRAM/network/UART etc.) is higher than buying it in a hardwired microcontroller, like one of this ones, if you don't need already big parts of the FPGA for FPGA related things, and the NIOS II would be just a small offset to the whole system.

formatting link
formatting link
(the LPC series is nice)
formatting link

And using NIOS II is sometimes tricky (see

formatting link
for some interesting forum posts). Things which are easy with hardwired microcontrollers sometimes gets difficult with NIOS. There were even CPU core bugs in older versions of NIOS and the development environment is bloated and slow. The SoPC builder is powerful, but it is complicated to configure the system (sometimes you have to configure some special attributes of a component and failing to do so results in strange compiling errors), the right busses, arbitraters etc. and route it to a working system.

In theory I like the idea of using just one FPGA to build your whole system, but I think a micorcontroller is better: No costs for additional IPs, DSP functions in the bigger ones included, all hardware you'll need included in tested hardwired blocks, if you choose the right one and free tools like GCC for fast ARM CPUs etc. makes live much easier. Use an additional FPGA for the parts which needs a FPGA, e.g. routing many fast signals, additional DSP functions etc. and attach it to the microcontroller with a memory mapped interface for more complex systems, or a simpler interface.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Did I mention that the professional version of the Altera software license expires after one year and you have to renew it every year (for $2,495), if you want to do bugfixes later in your designs? Last time I used it, you couldn't use NIOS with the free web edition. Compare this to a ARM-GCC-Eclipse toolchain or the free Symphony Studio IDE for the nice Freescale DSPs.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

I think I'm with Frank on this one - unless there is a compelling reason to use an FPGA based micro I think you have a much easier development route with a stand alone device. With a typical ARM based processor or micro-controller you get completely sorted and integrated IP for the core, memory, on chip flash, serial IO, etc etc AND a choice of development tools and decent hardware supported debugging tools. You need to factor in a massive increase in development cost if you go the all FPGA route - there will be the odd occasion when this pays off but with the cost of a decent stand alone processor at

Reply to
MK

Hi MMJ,

What specifically isn't working? Did you contact Lattice about it?

What problems and bugs do you have? Are they with the IDE, the GNU tools or are you talking about the FPGA tools?

Ditto.

If you say what the specific bugs are, maybe I can offer some help or advice.

MicroBlaze and NIOS II have been around for longer and no doubt have a larger user base, but they are not without their own problems. Don't forget that much of the toolchain is pretty much the same s/w.

It's a mixture. The IDE & toolchain are obviously based on other open source projects (Eclipse / GCC / binutils / GDB), but the Mico32 architecture was designed & implemented by Lattice.

Cheers, Jon

Reply to
Jon Beniston

One of the main problems are the poor performance of the debug interface in the Mico32. A download speed of 20-30 kbit/sec is just to slow when developing large applications. Is there any way to speed up this interface?

Offcourse! But you mention a big reasson to try out Altera....the large user base. Lattice have < 100 topics in their forum compared to >8k in Alteras. The large user may help you to find/fight some of the problems.

Regards

-- MMJ

Reply to
MMJ

Maybe there are less topics because there are less problems :-)

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

External flash for code is needed yes - but is also used on most silicon MCU/MPUs. Config memeory for the FPGA will be selected to support a fully configured FPGA. Regarding EMC and PCB we acutally keep allot of signals within the FPGA by embedding the CPU, which eases routing and maybe decreasses layers.

Correct....if the job can be done at the right price by an internal flash MCU.

No the size of the CPU in the FPGA is very few percent relative to the custom hardware that needs to be implemented.

Above 10Mbit on a buffered DMA interface. Internally in the FPGA I guess this can be done by DMA from FPGA RAM to DDR ram of the CPU. Complette control of interrupt loading etc.

-- MMJ

Reply to
MMJ

MMJ pisze:

If you have enough space inside configuration flash you can use it for both - for FPGA image and for softprocessor code.

I'm doing this way.

Adam

Reply to
Adam Górski

Adam Górski pisze:

If you have external SDR SDRAM or DDR SDRAM of course or big enough internal ram

Adam

Reply to
Adam Górski

Are you developing on Lattice's ECP2 board or your own custom board?

Cheers, Jon

Reply to
Jon Beniston

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.