I can't let a topic like this pass by without mentioning commercial (often obsolete) FPGA-based products that are repurposed as development boards. They usually offer FPGAs with much higher capacity for rock bottom eBay prices.
Playing with these has been a fun hobby of mine and while I have a box full of 'real' development boards, I usually find myself going back to the Cisco board for my personal projects.
If you need 5V compatibility, or large sizes for cheap, search eBay for [altera university]. Since these boards were mandatory for many classes there are pretty easy to find for under $50, and include lots of peripherals, buttons, LEDs, connectors, etc. The cheap ones are old, of course, but still useful.
The devil in the details is that when 5V-tolerant I/O are naively configured as such, device reliability drops like a rock. You'll likely find this disclosed in the manual fine print. Something to consider when prototyping a design destined for production.
In these boards it's not "5V tolerant". It's actual 5V I/O. EPF10K70. They are obsolete, and so the production part doesn't apply. Solely for hobby stuff.
What's the software requirement side look like? Intel's website[1; under Legacy Devices] says Quartus II v9.0 was the latest release that could target FLEX 10K devices. Doesn't look like you can download that release anymore, and liable to run into compatibility issues just installing on modern OSs without a VM.
This only became an issue a few months ago, and it's really annoying if you need older software. Intel/Altera's site used to let you download older releases; it now redirects to a discontinuation notice.
> ...and it's really annoying if you need older software.
Bummer, and a real shame given how seemingly common regressions are in this space. Not my specialization, but anecdotally over a decade or so, I've encountered scenarios on MAX 7000 and Cyclone II (Quartus II v9.0 builds, v10.x breaks), Virtex-7 (Vivado v2018.3 builds, v2019.1 breaks) and Virtex-5 (ISE v14.6 builds, v14.7 breaks).
Unfortunately, there's not a good single solution. Best depends on single vs bi-directional (also, which direction), switching speed, tristate or not, etc.
Yes, a major pita. Mainly afraid of not groking the bus and driving the bus at the same time as the 68k. The working idea is to use a bunch of some sort of voltage translator chip (finding the right one for this is the pain point), and imposing constraints so that if the CPU is driving the address or data bus as signaled by e.g. /AS or the R/W signal, then the translators won't drive it. With a bunch of 74s or a CPLD in the 5v side.
I didn't have that one PDF, so I saved it for safe-keeping with my other 68k stuff. Thanks.
I recommend the Terasic DE10-Nano. Because of the MiSTer (https://github.com/MiSTer-devel/Main_MiSTer/wiki) project, a cottage industry has formed around addons for this board which makes it a good choice for hobbyists who may want additional peripherals.
I have always been curious about FPGAs and I think I understand the concept, but what could someone provide some use cases for why you might want one (that aren’t calculating SHA-1 hashes)? As someone who understands microcontroller programming and wiring, what cool things could I do with an FPGA that I would have a hard time doing with other hardware?
Most things you can do with a custom ASIC chip you can do with an FPGA, except with slower clock speeds. High speed signal processing, massive parallel designs, custom anything pretty much. You can (and often do) even have processors inside the FPGA running software. Some real world applications include a lot of video encoding and processing, cellular stuff, electronic warfare and radar applications, self driving cars, and other high bandwidth and high speed custom data processing. Basically if you need a custom chip but don't need 10 million of them, FPGAs are a good choice.
* Experimental processor design. If you want to make a processor with its own custom instruction set, or modify an existing processor design, you need an FPGA to actually see it in action.
* Synthesizers and audio filters. You can do a lot of low latency signal processing compared to even a beefy microcontroller with an FPGA, so if you want to make your own synth sounds in hardware, an FPGA might make sense.
* Computer vision stuff. If you want to make some gadget that does some kind of image processing that is streaming from a camera, and FPGA would work, especially if you wanted it to be small/portable.
There's not much there for hobbyists past toy ISA design and basic digital logic design exercises unless you really stretch the definition of hobbyist. It's a steep increase in learning curve for power that most people will never use.
Electronic warfare is most commonly the disabling of enemy radio frequency equipment (radar, communications, targeting, etc).
A lot of people believe that the year of the "maker FPGA" is upon us, and that the only thing holding it back is bad vendor tooling, so there's a lot of HN posts about them as of late. The vendor tooling is bad, but more than anything, the use case just isn't there.
Given, this is just my opinion on the matter, so take it with a grain of salt.
Esoteric communication interfaces and situations where you want to address a lot of devices in parallel.
It's kind of a stretch, but take a wall of addressable LED strips like WS2812s as an example. Color data is sent along one wire as precisely-timed pulses, 1.25us per bit.
You can drive a few strips using critical sections written in assembly, or misusing SPI peripherals if your clock speed can easily divide into ~2.4MHz. But you'd be hard-pressed to run dozens of parallel LED strips with a good framerate.
On an FPGA, you can just write an "LED" module and add as many of those modules as you can fit into the chip. You can also decide whether to include a simple CPU in the design, or use another method of processing lighting patterns.
They're flexible, but they are also expensive enough that it's kinda hard to find somewhere that they make sense. A "cheap FPGA" price point of $50-150 is still an order of magnitude pricier than a cheap microcontroller board ($2-10).
Oh interesting. So basically instead of using 20 Arduinos I can make an FPGA into a custom LED driver where I hand it a bitmap and it communicates the image to the LED matrix? That sounds pretty neat.
Thank you for asking this question! Like you, I have some experience with microcontrollers and have lately been kinda curious about getting into FPGAs.
I learned some good perspectives from the replies to your query.
OTOH, while not actively contributing, Lattice (iCE40, ECP5) are aware and do tolerate the open stack.
They reversed some new terms of use recently (stating it was a mistake), when the community realized they had added some clauses against reverse engineering and made a lot of noise about it. It means they are aware of the positive effect the open stack has provided from a marketing standpoint.
Recently Lattice updated their licensing forbidding reverse engineering, but changed their mind once the community complained.
Also, a while back, lattice added support to something that was already implemented on the open source tools, but with a different name -- thus, code that worked on open source don't work on the official tool. (I'm not sure if this was "fixed").
The open source tools have been create by hard work of many hackers. If you want to know more, watch this 35C3 talk [1] where MathiasL describes how they reverse engineered the Artix-7 bitstream.
Last time I checked, Symbflow [2] only supported Lattices FPGAs and Artix-7 (smallest fpga from Xilinx 7-series). Both are quite small FPGAs.
Probably Lattice, although considering the field that's not saying much. But they at least removed a license term on their software that some of the FOSS toolchain developers complained about.
FPGA tools allow a lot of customization if you need it, what difference will it make if they are fully opensource? FPGA chip design isn't opensource anyway
The vendors tools are notoriously buggy, don't conform to the HDL standard and
lacks support to inference of some functional block (cascade DSPs and FIFOs for
example).
Some FPGAs features are only available on yearly paid subscription. Also, the license
is very restrictive, publishing benchmarking is not allowed, therefore,
there is no public information on how to chose a computer to have faster synthesis.
Other than solving those issues, an open source framework enable the researches
to search for newer place and route algorithms;
enables new HDL languages to
target the actual hardware instead of using verilog as intermediate language.
Well you can say the same thing about computers. But if computers were as closed as some FPGA offerings, then we wouldn't have had Linux and its ecosystem of open/free tools, for instance.
When I saw the Parallella (https://parallella.org) listed there I thought that it must be a very old list, but it turns out that it’s still being sold at least by Digikey.
Putting in a plug for ZTex as well (https://www.ztex.de). Not the cheapest but far from the most expensive, and they publish full schematics. Stefan Z.'s support is first-rate in my experience.
1) The boards are very bare-bones. Most of the I/Os are tied up in high-speed connectors like PCIe or SFPs, which will be very difficult for a beginner to work with.
2) The Virtex/Kintex parts they're using require a paid (or pirated) Xilinx license, and the sheer size of the parts makes compile times even slower than normal.
1. I/O isn't that bad, 40-100 GPIOs out, pretty much on par with most Artix-7 boards out there, SFP and PCIe is a plus cause Artix chips have no/slow transceivers and simply can't use them, and well everything aside from tutorials aren't beginner thing on FPGAs
2. License is pain though, you can get a proper demo license for Kintex probably
3. Compile times for barebones projects are few times more for a larger FPGAs, but as you add IPs and stuff they take a few minutes on a fastest computer anyway
But if you are not beginner some of these boards are really great. Combination of large and fast Kintex-7 FPGA, SO-DIMM, PCIe and Gigabit Ethernet is really cool. For a price of Zybo Z7-10!!! Compile time and tooling is another issue. Naked ZynQ project with ZynQ alone takes few minutes even on decent machine.
What I never see mentioned are cheap FPGA dev boards that don't come with any peripherals. I guess those aren't worth the pain of adding the peripherals back on?
I'm curious: Would it be worthwhile porting the entire stack required for http(s) (tcp/ip, ssl, etc) to an fpga? Would it be faster than running it on a CPU?
I think really any task can benefit from being ported to FGPA, but FPGA clocks tend to be slower than CPU clocks and large logic will force you to lower the clock as components become more spread out on the chip (assuming all the logic elements needed even fit on your board). The caveat is that it's expensive to do things in hardware, and some things are already designed very well -- if you need to design a whole CPU from scratch on an FPGA to run your code it'll obviously be slower, but it will also take way too much time to get it anywhere near real world performance per clock. Since TCP/IP and SSL are mostly pretty specialized, the answer is yes. If you're interested, there's some open-source projects that do part of this https://github.com/fpgasystems/fpga-network-stack)
* Pano Logic G1 board: https://github.com/tomverbeure/panologic
* Pano Logic G2 board: https://github.com/tomverbeure/panologic-g2
* Colorlight 5A-75B: https://github.com/q3k/chubby75
* Cisco HWIC-3G-CDMA: https://github.com/tomverbeure/cisco-hwic-3g-cdma
Playing with these has been a fun hobby of mine and while I have a box full of 'real' development boards, I usually find myself going back to the Cisco board for my personal projects.