FPGA selection recommendation

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
I need an FPGA chip with about 100 GPIO pins and capable of hosting a  
CPU with an existing Linux port, mainly to run a web server. I would
like to connect it to a 16-bit     DRAM, so there should exist a memory  
controller with this feature, either a hard macro or a soft IP core.
There should also be a fast ethernet MAC. Nothing fancy, but:

1. This is for a small non-profit project, so the IP cores must be free.
Paying O(500) bucks for a Nios/MicroBlaze license is out of the  
question. Ditto about the MAC. As far as I know, neither Xiling nor
Altera have a free/very cheap licensing option for non-profit  
applications, so the most obvious way is a no-go. Are there any
*reasonable* open CPU/MAC/memory controller cores to use instead?
$1000 per year is extremely cheap for commercial purposes, but
a showstopper for hobby applications, where you can buy a bucket
of STM32-class chips.

2. The chip must be hand-solderable and introduce no thermal strain  
problems. This excludes the BGA/chip scale packages and leaves only
the QFP variants on the table. I don't care about the superior
signal integrity benefits of the leadless packages, 50MHz is more
than needed. But this requirement kills Zynq/Cyclone V, otherwise
a perfect choice for this application. The PCB must be manufacturable
in a cheap PCB shop and they can often do at most 4 layers.

3. The FPGA must be SRAM-based.

4. I don't want the SOM modules.

The older Spartan 3Es (3S500E) or equivalent Cyclone 3 in PQFP208
would have been aa good choice here, but I seem to be blocked by
the licenseing issues. I'd gladly stick to these platforms, but
could you please recommend me any robust open-source IP cores
which fit inside this class of FPGAs?

    Best regards, Piotr


Re: FPGA selection recommendation
On Saturday, 14 April 2018 17:06:42 UTC+2, Piotr Wyderski  wrote:

Quoted text here. Click to load it
<snip>

I'm playing with the Terasic DE1-SoC (sporting a dual core ARM aside a mid-range
Cyclone V), pretty cheap and pretty cool.  But in hindsight I should have gone
for the one with no OpenCL support but the HDMI output instead...  I mean, I
thought OpenCL would be my way, as I was coming from pure software, then, after
purchasing my board, I have realised the Intel OpenCL SDK isn't free and not
even cheap.  After learning the A of the ABC of digital design in Verilog, I am
now playing with the Intel HLS compiler...  A  lot of (free) IP cores, and
indeed there is a free toolchain: not possible to go supertech with it, such
as you cannot do explicit placement or project partitioning, but otherwise
no limitations.  --  That said, I am seeing a lot of people around here rather
talking of Xilinx, but I have no experience with those.

Julio

Re: FPGA selection recommendation
Julio Di Egidio wrote:

Quoted text here. Click to load it

But this is a ready-made FPGA development kit and one of the essential  
aspects of my projects is to create a working system from scratch,  
including custom board design and hand soldering by the advanced  
hobbyists. I don't want it to be pure Arduino-style software massaging.

Quoted text here. Click to load it

Because Xilinx and Altera are the elite in this business. They have
just forgotten about the hobbyists and charge them the same way as their  
industrial clients, despite the fact the hobby projects generate
zero income. There used to be some exceptions for students, but not all
hobbyists are students and even $500 for a yearly NIOSII license is more  
than the entire hobby budget. Same with MicroBlaze. The price is way too  
low for professional purchases and way too high for hobbyists, hence the  
problem. I don't understand this strategy of deterence, but it clearly  
works. Anyway, it's not my point, the manufacturers can set
the price of their tools as high as they wish. I accept the situation
and just ask: what cores/chips should I use instead?

    Best regards, Piotr

Re: FPGA selection recommendation
On Saturday, 14 April 2018 18:30:45 UTC+2, Piotr Wyderski  wrote:
Quoted text here. Click to load it

I have no idea why you'd call it Arduino-style, but never mind, to each
his requirement.

Quoted text here. Click to load it

I don't see how you'd say that either, ~250 bucks for a development and
prototyping board, plus indeed an industry level mind-set (not everything
is so polished in fact, but that's another story) seems pretty cool to me.
Anyway, I do come from the industry...

Thanks for the feedback and good luck,

Julio

Re: FPGA selection recommendation
Julio Di Egidio wrote:

Quoted text here. Click to load it

By "Arduino-style" I mean buying a ready-made board and
mixing existing code snippets without deeper understanding
of the physical aspect of the device or even of the problem domain. I  
want to show how
hard is to make such a board, solving all the problems on the
way, and that it is finally doable. Anybody can buy any kit without
understanding of the effort put into its creation and claim
to be a hacker. My goal is to provide much deeper understanding
of its *construction*, not *use*. IMHO one should be allowed
to buy such a kit only after succesful completion of a DYI board.
I mean, the kits are for professionals, because they offer significant
development time (and money) saving.
Quoted text here. Click to load it

I also come from the industry, but a different one. And it is perfectly  
normal to pay for the tools you earn your money with. Even as much as
$50k per seat per year, been there, done that. But if a guy just wants
to play with the technology involved and from the very beginning it is
clear that he will make no money on that (come on, he wouldn't even  
afford the
EMI testing required before product introduction to the market),  it's
not very wise to repel him with industrial-level charges, because
you're most likely repelling your future user or at least a friendly  
advocate. This thread  is an example of this situation, the message
is: what should I use (i.e. learn and get used to) *instead of*
Quartus/ISE. I don't have to understand this marketing policy, but
I can certainly adapt to it. Professionally I'd probably get something
from the Ultrascale line and wouldn't care about the complexity of the
proper BGA package soldering, because it would be done by a machine anyway,
a 10 layer board wouldn't be a problem because they are affordable
in quantity. Fine, but it is not a professional application. And it seems
that creating a simple web server on a custom FPGA board is not doable
using the proper, vendor-approved tools, purely because of licensing  
costs. Crazy, but true. :-/

So the only option here is to get something working from opencores, but  
I can't say much about the quality of their particular implementations,  
hence the question. I need a GCC-supported CPU, a memory controller and  
a MAC. The budget is $10. :-)

    Best regards, Piotr




Re: FPGA selection recommendation
On Sat, 14 Apr 2018 17:06:37 +0200, Piotr Wyderski wrote:

Quoted text here. Click to load it

100 GPIO + CPU + Ethernet + DRAM + Linux in non-BGA?  Not likely

I have not done an exhaustive search in a while but 144pin XC6SLX9  
will give you 102 IO pins.  You can get a Altera EP1C12Q240C7N in a  
QFP-240 with 173 IO.

If this is a learning tool to program a FPGA I can see the need
but I scoped out FPGA vs a SOM or Raspberrry PI Compute module and
the latter always won.  Even in quanity I cannot compete price wise  
with a SOM or Rpi CM.  A XC6SLX9 will run you 16 bucks from  
Digi-Key and the EP1C12Q240C7N is $48. I dont think you will have  
enough resources in the FPGA to do a soft cpu, dram controller and  
ethernet block plus some gpio pins.

You can buy a CM3 for $30.  You will be hard pressed to make a board,  
get the FPGA, config memory, DRAM, Phy, etc for 30 bucks unless you  
are thinking mega quanity.  No way you are gonna hand solder  
enough boards to get in that range.  

Granted you will have to have a carrier board/socket for the CM3 or  
SOM so that adds to the $30 cost.

A uC with maybe a SPI or I2C port expander would give you more horse
power and still be hand solderable.

--  
Chisolm
Republic of Texas


Re: FPGA selection recommendation
Joe Chisolm wrote:

Quoted text here. Click to load it

The number of GPIOs is just a rough estimate and not all of them
must be created equal. There are dirt-cheap 16-bit SPI expander chips.
The CPU and Linux running capabilities are not related to the specific  
packaging, it's just a legal (licensing) problem.

On the market there are still the old Cyclones in PQ240, many
chips from Altera and Xilinx are available in PQ208 and a horde
of them is in PQ144. But even if you solder it succesfully to
the board, you can't do much with it only because of the legal wall.
I don't want to persuade Xilinx/Altera their policy is wrong, I don't
even want to discuss it, as it is a pure waste of time of all the
involved parties. I just consider this situation to be a law of nature
and adapt to it by avoiding the quality implementations the vendors
don't want to share. So I am open to the alternatives (Microsemi,  
Lattice, open-source IP cores, legacy chips).

Quoted text here. Click to load it

Exactly, but the purpose is to learn building such a system from  
scratch, including PCB design, and it is beyond hobby capabilities
to re-create even an RPi.

Quoted text here. Click to load it

It's not about competition, it's about learning this particular design  
process. Don't want it, don't play it, it has never been aimed at  
stealing the market share of the (good!) solutions you mention.

Quoted text here. Click to load it

But it's not the goal. This price battle has already been lost,
I'm perfectly aware of it. The goal is to build a decent, working FPGA
system from the first principles.

Quoted text here. Click to load it

But there are no PLD resources, which are the main point here. The only
solderable CPU with PLD I know of is PSOC5LP in TQ100, but it is way too  
small to host a Linux port and doesn't have a MAC on board.

    Best regards, Piotr


Re: FPGA selection recommendation
Quoted text here. Click to load it

If that's the goal, you have options:

1. Use a ready-made FPGA board (with a BGA part)
2. Use a system-on-module and your own carrier
3. Use separate CPU and FPGA chips
4. Be a microcontroller, don't run Linux

If you've discounted those, you've constrained the problem so much that the
only solution to your constraints is the empty set.

Theo

Re: FPGA selection recommendation
On Sat, 14 Apr 2018 20:02:16 +0200, Piotr Wyderski wrote:

Quoted text here. Click to load it

It seems your goal is you want to do a DIY build of a system that
uses a FPGA, or make the concept of the kit avilable to others so
they can replicate what you have done.  Design a board using a FPGA
and make the FPGA do "something".

That's all well and good but the board,fpga and hand solderable is
a VERY small part of the equation. Where is the FPGA bit stream
going to come from to "make it do something"?  And no, I'm not
asking about the config memory.

You are going to have to be able to use the free versions of the
FPGA tool chain of the vendor you choose.  That's just one hurdle,
the 2nd big one is getting today's hobbist to learn a HDL and how
to use the tools - simulation and test bench, systhsis, P&R, build  
the bit stream, load it, test again.

To be able to take something off of open cores and actually make
it do something in your own FPGA is not a trivial task.  You are
not going to down load a "openrisc-v2.1.34-for-cyclone-v" bit stream
and magically make it work.  Just dealing with io placement will
throw that off.

I think it's a noble cause and I'd love to see more people know
the down and dirty of how a box works but what you are asking is
indeed difficult.  If your hobbist target group is people doing
digital design, maybe a uC with glue logic, etc is one thing but
taking some person who's been doing python on linux and get them
thinking hardware, VHDL or Verilog thinking, can be a rather large
mountian to climb.


[snip]

--  
Chisolm
Republic of Texas


Re: FPGA selection recommendation
Quoted text here. Click to load it

Agreed 110%.  What's more, a lot of this is out of the competence of people
who do software.  There's a huge pile of stuff built just to get to a shell
prompt.  But maybe your thing doesn't work.  Is it a software bug, an OS bug,
a compiler bug, a cache bug, a CPU bug, a peripheral bug, a memory bug, it
failed to meet timing, you failed to constrain it properly, a signal
integrity bug, a power supply bug...?

The reason I suggested looking again at systems-on-module, particularly the
ones with hard ARM cores in them, is that you have at least a working system
that will reliably boot Linux, without too much in the way of dependencies
on external infrastructure - just power and connectors.  The OS works, the
compiler is fairly well tested, the dev environment is familiar and tools
like gdb work.  All of these you have to build yourself from the ground up
with a soft CPU.

Then, if you wish, you can build your own CPU alongside in the FPGA
soft-logic.  Eventually you can turn off the ARM altogether if you want.  
But you always have the ARM as a familiar dependable environment to fall
back on as a halfway house - and to debug your soft CPU.  SOMs make custom
PCB assembly easier, but also people can use off-the-shelf dev boards if
they want.

The only thing you lose is the ability to solder your own FPGA, which is not
really an advantage to anyone unless you're selling in volume.  Oh, did I
also mention it's hard to buy FPGAs for sane prices if you're not selling in
volume?

Theo

Re: FPGA selection recommendation
On 15/04/18 20:40, Joe Chisolm wrote:

Quoted text here. Click to load it

That immediately brings to mind MyHDL - do the HDL design in Python.

Putting a big cpu and logic for a Linux system in an FPGA is a complex
task - even with a hard cpu core.  I can't see how it adds anything to a
"learn hardware design" board.  I am not even convinced that a
microcontroller beside the FPGA is worth the effort, but it could be fun
to play with.

Key features I would think for the system are:


1. An FPGA with some pins on LEDs, keys, etc., and some on headers.

2. An Arduino ARM compatible microcontroller and layout, with some pins
on LEDs, keys, etc., and some to the FPGA.

3. A USB hub chip, with downstream components (FTDI devices or whatever)
covering an FPGA interface compatible with a standard programmer for the
FPGA device, a programmer interface for the Arduino chip, a serial port,
and a connection to the FPGA for making your own USB device in
programmable logic.

4. A few sensors, buzzers, etc.

5. Arduino compatible or Raspberry Pi compatible headers, but connected
to the FPGA pins.


And on the software side, a whole bunch of MyHDL examples and components
for the board.  Plus some in VHDL and some in Verilog, for more advanced
stages.





Re: FPGA selection recommendation
On Saturday, April 14, 2018 at 12:02:09 PM UTC-5, Joe Chisolm wrote:
Quoted text here. Click to load it

The Altera-Intel MAX X family is available in 144 pin flat-pack

Jim Brakefield

Re: FPGA selection recommendation
Quoted text here. Click to load it

What's the application that needs an on-FPGA CPU, rather than a CPU with
attached FPGA?  Could you use an existing CPU instead?  eg a Beaglebone with
FPGA wired to the PRU pins?

Anything with a 16 bit DRAM (SDRAM?) isn't going to be very fast.

Quoted text here. Click to load it

OpenRISC might be worth a look.  There are some RISC-V cores but nothing
I've seen stable enough to use for real Linux work.  On all of these the
Linux ports are a bit sketchy (you'll be managing your own toolchains and
OS builds - no apt-get install here).

For Linux you'll need an MMU, which will eat BRAMs.
What storage will you be using for the OS and data?

To save area, perhaps use an external ethernet MAC chip?  You'll need an
external chip for the PHY anyway.

By the end of all this, you've built yourself a pretty cumbersome Linux
system.  I'd suggest trying to use a hard CPU in some way instead.

Quoted text here. Click to load it

The cheap Altera boards on ebay seem to be QFP Cyclone II and Cyclone IV,
but they aren't very big.

Quoted text here. Click to load it

Cyclones should build with the free Quartus Lite (formerly Web edition).  I
think NIOS and other bits of basic IP should be included, but I haven't
confirmed that.

Theo

Re: FPGA selection recommendation
Theo Markettos wrote:

Quoted text here. Click to load it

This is an option, but the CPU must be capable enough to run a decent  
OS, which means a fast ARM with MMU, which most likely means BGA again.
So then it is better to use a Zynq/Cyclone V with such an ARM on chip.

Quoted text here. Click to load it

The performance doesn't have to be stellar.

Quoted text here. Click to load it

The compiler toolchain must be existing and stable, the hobbyists will  
not debug their custom GCC ports.

Quoted text here. Click to load it

Probably a QSPI FLASH, maybe an SDHC card.

Quoted text here. Click to load it

Is there anything solderable and still capable of running a pretty heavy OS?

Quoted text here. Click to load it

There are evaluation versions of the mentioned IPs, but they work as
long as the JTAG is connected. You'll not create a stand-alone device
this way.

    Best regards, Piotr



Re: FPGA selection recommendation
Quoted text here. Click to load it

Well, there's things like the Ingenic X1000, which has a 1GHz single core
MIPS and runs Linux.  It has 64MB LPDDR in package.  It's 0.8mm BGA, but you
don't need to solder many of the balls to get it going, so you can do it
with a simpler PCB.  Though it doesn't have GPIO capability if you want that
(and that would mean soldering more balls)

Quoted text here. Click to load it

TBH it's no different from NIOS or Microblaze.  The toolchains aren't
custom, but aren't to the same level as ARM or MIPS.

Yocto, Angstrom and similar make it a bit easier to build a distro for a
custom platform.  But expect glitches.

Quoted text here. Click to load it

So you'll need IP cores for those too.  There's an open source SD controller
on OpenCores, but I'm not sure how well it works.  I haven't looked at QSPI.
Plus you'll need drivers (Linux+bootloader).

Quoted text here. Click to load it

There's the older generation of parts with ARM7s and ARM9s in them - mostly
QFP.

Also the Allwinner A13 is a Cortex A8 in QFP.  However you still need to
attach DDR2/3 memory, which is BGA.  You might be able to find DDR2 in TSOP
perhaps?

Apart from the goal of QFP-ness, do you actually need an FPGA for anything?
Or would a suitable SoC in QFP fulfill your needs?

Quoted text here. Click to load it

Ah, understood.

Theo

Re: FPGA selection recommendation
Piotr Wyderski wrote:

Quoted text here. Click to load it
I don't think this is possible.  The FPGAs that can support a Linux  
environment with a WEB SERVER are "serious" FPGAs.  The lowest performance  
and capacity FPGAs that can support micro-style CPUs are not going to be  
able to handle a web server under Linux.  Given that, the only ones that can  
are ALL going to be BGA-type packages.


Jon

Re: FPGA selection recommendation
On 14/04/18 17:06, Piotr Wyderski wrote:
Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

I think you might want to step back a little, and try to think what you
are actually trying to achieve.  What is the task at hand?  What are the
quantities?  What is the target environment?  Why are you looking for an
FPGA - why are you even /considering/ making a board when you are
talking about such small quantities that a $500 license fee is relevant?

You say you need "a web server".  That can range from something needing
a multi-core multi-GHz processor, to something that can be done on a $5
microcontroller with a FreeRTOS or mbed demo program.  At no stage in
between is an FPGA a cost-effective way to run a web server application.

You say you want 100 pins, but not what you are doing with them -
perhaps they are mostly for the ram you think you need, the Ethernet
interface, etc.  What else do you want to do with these pins?

You say you don't want SOM's or other modules - why not?  They would
reduce your development effort by orders of magnitude, and make
certification, testing and production far simpler and cheaper.

As far as I can see, your specifications here don't add up.  It sounds
like you have picked a "solution" of an FPGA without considering if it
is the right tool for the job.  And it sounds like you have a somewhat
mixed up view of where the costs lie in going from vague idea to a
produced product.  (Most people have unrealistic views of costs - many
will spend weeks of developer effort to "save" a few hundred dollars of
license fees, without considering the cost of that developer time.)


Re: FPGA selection recommendation

Quoted text here. Click to load it

I think Lattice has the IP available for free. But no solderable FPGAs
in the relevant families it seems.

The other small player, Microsemi (or Microchip now) almost seems to
have the FPGAs in the Igloo2 family, TQFP package with 84 I/O and a hard
DDR2/DDR3 controller but I don't know about free IP. Or if the chips
that are available in the TQFP are big enough for this (12k LEs, I think
Altera's Max10 demo boards stuffed a Nios in their 8 k LE devices).

Looks like Intel's Max 10 is the best bet for FPGA. EQFP package with
101 I/O and hard DDR2/3.

Quoted text here. Click to load it

For a soft CPU a RISC-V might be reasonable and a Linux port exists even
if it's very new. RISC-V is an instruction set but as I understand it,
there are loads of free implementations on Github.

I don't know if decent ethernet MACs with Linux drivers are available
for free. Maybe consider a separate chip? Microchip's ENC28J60 is
probably one of the cheapest but it's 10 Mbps and SPI interface.




Re: FPGA selection recommendation
Quoted text here. Click to load it

Do you know of any RISC-V cores on FPGA which are capable of booting Linux?
There's loads of microcontroller-class cores, but not many larger ones.

I've only seen Rocket, which is somewhat awkward to deal with, and LowRISC
which is an older version of Rocket (those folks are at the forefront of
suffering the pain of interfacing with Rocket).  SiFive are shipping(ish)
silicon with Rocket in it.  There's also PULP and various CPUs from IIT
Madras, but I'm not sure what state of completeness they're in.

In our experience with BERI (which is a 100MHz 64 bit CPU with caches and
MMU, but using the MIPS ISA and runs FreeBSD rather than Linux), it'll fit
on a 115K Cyclone IV but nothing much smaller.

Theo

Re: FPGA selection recommendation

Quoted text here. Click to load it

I've got a virtex-7 board running Fedora on a quad-core 64-bit RISC-V.
Is that big enough?  ;-)

Site Timeline