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.
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.
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).
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
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.
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)
[+] [-] tverbeure|5 years ago|reply
* 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.
[+] [-] postalrat|5 years ago|reply
[+] [-] tyingq|5 years ago|reply
[+] [-] metaphor|5 years ago|reply
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.
[+] [-] snvzz|5 years ago|reply
I do wonder what's the best way to translate to 5v and back. There has to be some fast-switching, go-to part for the purpose.
[+] [-] nkatsaros|5 years ago|reply
[+] [-] snvzz|5 years ago|reply
[+] [-] IgorPartola|5 years ago|reply
[+] [-] rthomas6|5 years ago|reply
[+] [-] fieldprogaway|5 years ago|reply
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).
[+] [-] disqard|5 years ago|reply
I learned some good perspectives from the replies to your query.
[+] [-] amelius|5 years ago|reply
[+] [-] snvzz|5 years ago|reply
https://www.crowdsupply.com/quicklogic/quickfeather
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.
[+] [-] bXVsbGVy|5 years ago|reply
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.
[1] https://www.youtube.com/watch?v=Y1Wwa8csFjk [2] https://symbiflow.github.io/
[+] [-] 0xcde4c3db|5 years ago|reply
[+] [-] b1ackb0x|5 years ago|reply
[+] [-] ThrowawayR2|5 years ago|reply
[+] [-] AlbertoGP|5 years ago|reply
The page is updated though, as can be seen in the edit history with the link at the page footer: https://joelw.id.au/FPGA/CheapFPGADevelopmentBoards?action=d...
As of this writing, the last update was on 2020-07-20.
I’ve sent an e-mail to the author pointing him to this discussion in case other corrections get posted here.
[+] [-] kqr2|5 years ago|reply
[+] [-] ur-whale|5 years ago|reply
Cheap, well made,large choice, decent documentation.
[edit]: they also have an aliexpress store.
[+] [-] CamperBob2|5 years ago|reply
[+] [-] b1ackb0x|5 years ago|reply
[+] [-] duskwuff|5 years ago|reply
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.
[+] [-] rudedogg|5 years ago|reply
Is the project dead, or is there something better out there I should look at?
[+] [-] neuro_mnem|5 years ago|reply
[1] https://www.crowdsupply.com/radiona/ulx3s#details-top
[+] [-] npendleton|5 years ago|reply
[+] [-] andromaton|5 years ago|reply
[+] [-] ColanR|5 years ago|reply
[+] [-] contingencies|5 years ago|reply
[+] [-] jcfrei|5 years ago|reply
[+] [-] nv-vn|5 years ago|reply
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)
[+] [-] imtringued|5 years ago|reply
[+] [-] uticus|5 years ago|reply
[+] [-] ATsch|5 years ago|reply