14 ms·
How FPGAs work, and why people will buy them (2013)
- julsimon 8y agoNice article, but it's from 2013.
- monocasa 8y agoAnd to be fair, since then FPGAs have exploded in non ASIC prototyping use cases. They're even starting to be used for some consumer electronics.
- simias 8y agoFPGAs have been used in the industry for decades, basically every time you need high throughput and/or very low latencies and you don't have the volume to justify making an ASIC then FPGAs and CPLDs are the way to go. The article is not really talking about that though, it's more about having FPGAs in mainstream desktop computers. This is still far from a reality, even if Intel seems to be pushing for it.
- dboreham 8y agoThis has been something FPGA fans have been pushing since I left college with my BsEE 30 years ago.
- monocasa 8y agoI mean, I know, I've professionally written HDL for FPGAs. My point is that back then (a decade or so ago and farther back) it was relegated to low volume, high margin products, explicitly as a replacement for an ASIC. This was due to the cost of the FPGAs. The point of this article is that by embracing the reprogrammable nature, they'll make their way into places that in fact have the volumes required for an ASIC (which might not be nearly as big as you might think), but choose an FPGA anyway in order to reconfigure out in the field. We are starting to see this and I'm seeing fairly cheap consumer electronics positions (ie. products in the range of a hundred or so dollars) asking for HDL experience more and more in my area. Desktops aren't the only mass platform out there.
- esmi 8y agoKeep in mind ASIC fabrication and tool prices are way down compared to 10 years ago so "cheaper than an ASIC" is a moving target too.
- snaky 8y agoMaybe the only one market segment where FPGAs aren't in wide use yet is desktop computers. iPhone 7 has iCE5LP4K inside, AWS provide FPGA-based instances, and Microsoft have even FPGA-powered NICs. https://www.theregister.co.uk/2018/01/08/azure_fpga_nics/ https://www.theregister.co.uk/2018/01/08/azure_fpga_nics/
- hobo_mark 8y agoMost desktop and server motherboards embed small CPLDs and FPGAs for low-level stuff, like power sequencing.
- LeifCarrotson 8y agoI'm interested in seeing some examples of their use in consumer electronics. I think this article would be a lot more compelling if it had a section on "You've already bought one if you have a (hypothetically) Roomba vaccum/ Tesla Model S/ Thinkpad laptop/ Ubiquiti router." I'm pretty sure most of those don't have FPGAs, but would be curious to see a list of things which do. I am by no means a representative consumer, but I know there's an FPGA in my: - Rigol oscilloscope - National Instruments DAQ equipment - Mecco laser cutter - DJI drone Any others where I might not have taken it apart and seen the big QFP with "Xilinx" or "Altera" on the circuit board would be interesting!
- monocasa 8y agoThe iPhone 7 has a iCE5LP4K. Those little CPLDs (which are full FPGAs these days, but fighting that terminology seems to be a losing battle) are in everything. Which is fair, they're fantastic power sequencing controllers and great for coalescing I2C and SPI buses into something more easily consumed by the application processor. Think an FPGA that constantly polls sensors, wrapping their chip specific format in a way that let's them filter on the CPLD and only wake up the application processor when something interesting happens.
- snaky 8y agoDigital audio, DACs in particular. From high-end dCS and Chord down to cheap (but fairly widely known and highly regarded) Singxer USB-I2S converters.
- Rebelgecko 8y agoI think they're more common than you think The Model S has at least one FPGA, as do some of Ubiquiti's products. I don't know about the Thinkpad, but Apple has used cheap Lattice FPGAs for interfacing between different hardware components. Macbook Pros have used them in the past (IIRC for driving the display and interfacing with the battery), as have iPhones.
- mastercheif 8y agoFPGAs are starting to see extensive use in the high end audio market for implementing custom filtering, DSP, and discrete DAC mapping algorithms. Here's an interview with Rob Watts, a DAC designer who's getting the best measurements in the industry right now with his Chord DAC's (specifically Chord DAVE) http://www.the-ear.net/how-to/rob-watts-chord-mojo-tech http://www.the-ear.net/how-to/rob-watts-chord-mojo-tech
- make3 8y agoand I still haven't bought an fpga :p lies (jk)
- davemp 8y ago> FPGAs are a programmable platform, but one designed by EEs for EEs rather than for programmers. This is the problem with FPGAs. Their performance and utility is not really disputed. Working with them is so un-ergonomic that it's frankly embarrassing. The EE world is notoriously closed/proprietary making it incredibly difficult to explore novelty or customize tooling to suit specific needs. The situation is reminiscent of the pre-gcc era proprietary C compilers. Sure synthesis / place and route are much harder problems than compiling to machine code but I would guess that fact amplifies the need. One can't really expect software's current development comfort without acknowledging its driving force (GNU/the free software movement).
- walkingolof 8y agoOne exception, the ICE range from Lattice which have a open source tool-chain https://en.wikipedia.org/wiki/ICE_(FPGA) https://en.wikipedia.org/wiki/ICE_(FPGA)
- xigency 8y ago> The EE world is notoriously closed/proprietary See the IEEE.
- RandomInteger4 8y agoCan you elaborate?
- ThePhysicist 8y agoDoes anyone have experience with cloud-hosted FPGAs (e.g. on AWS), and if so would you recommend this platform to get started with FPGA programming?
- aseipp 8y agoYou should not use AWS F1 instances if you are just starting out. They will burn a nice-sized hole in your wallet and the only thing you'll get in return is confusion and frustration as a beginner. The AWS F1 devkit and APIs are largely oriented around making OpenCL-based designs easy and fast to develop (using Xilinx's "SDAccel" framework), but if you're just starting out you almost certainly want to start with classic RTL development using Verilog or whatnot. But "traditional" RTL development is substantially more involved. The documentation and the environment itself is largely oriented with the assumption you're a semi-experienced RTL developer and there's no real way around that part. (For example, even when using OpenCL, you're going to have a hell of a time optimizing anything without understanding real RTL/digital design principles.) The F1 also has a non-trivial build system, meaning you have to do literally everything on AWS. Not a deal-breaker, but considering the equivalent of a "Hello World" will take you something like 30+ minutes to compile using something like a t2.2xlarge, and anything beyond that will be multi-hour (yes, this isn't an exaggeration) -- you probably don't want to just be spending money on every minor iteration. I would suggest getting a cheap Lattice FPGA and using Project Icestorm, which is a free FOSS Verilog toolchain, in order to get started. This will cost you closer to $20 USD. https://www.latticesemi.com/icestick https://www.latticesemi.com/icestick and http://www.clifford.at/icestorm/ http://www.clifford.at/icestorm/ -- there are allegedly good books on Verilog, but I'm afraid I can't recommend any myself... After that, when you've got a big enough design where the monstrous VU9P -- the Xilinx chip used in the F1 -- is relevant to your interests, you'll know. :) Source: I worked on moving/porting our designs to the AWS F1 (traditional RTL based stuff, not HLS/OpenCL -- and it was surprisingly challenging, up-to and including talking with AWS engineers directly to resolve bugs in their datacenters. And I was the software guy!)
- floatboth 8y agoI wonder if FPGAs would make good crypto devices, e.g. for disk encryption? If you implement AES on an FPGA, is it fast enough to keep up with at least a SATA 3 SSD?
- aswanson 8y agoYes, they are used extensively in crypto applications for precisely that reason.
- anfilt 8y agoYea some FPGAs could do that.
- pmalynin 8y agoI thought that CPU’s with AES-NI can already keep up. EDIT: in fact I just looked up some benchmarks for Ryzen and it can do 3GB/s per core. So that should be enough
- floatboth 8y agoIt's not about performance. (Perf is necessary, not the goal.) Doing crypto on a separate chip lets you keep they key away from system RAM and CPU cache, removing any possibility of leaks into other programs.
- Timmah 8y agoJust because it can doesn't mean it's tolerable to have one core of their CPU eaten up just working on AES all day. Plus if it wasn't task set to a CPU you'd see massive latency hits on disk access even the CPU could keep up. The kernel still has to schedule the task and load balance.
- aseipp 8y agoYes, they can do traditional cryptography pretty well (depending on the algorithm, of course.) AES-128 in an FPGA can encrypt a full 16-byte block every clock cycle when done right. With 100Mhz clock that's about 2.3Gbp/s, well within SATA 3 transfer speeds. You can achieve that with a last-last-gen FPGA that will cost you a couple bucks out of pocket, and it will use a fraction of the power/thermal footprint of any desktop/mobile processor that doesn't have AES support. Likewise, you can easily scale this up -- 10gig/s isn't even worth mentioning because it's trivial, so you can think closer to 40Gbp/s and beyond (which, today -- still not that impressive, I'm just giving you an idea.) The thing is, if you're going to do ubiquitous encryption for something like your SATA link at scale, with a lot of units being sold -- you're better off just using a dedicated ASIC with a fixed algorithm, and your performance/power profile will skyrocket even further.
- andyjohnson0 8y agoI've been considering getting an Arduino MKR Vidor 4000, which has an integrated FPGA and is fairly new. Does anyone here have any experience with this as a learning platform for FPGAs? (I already have reasonable experience with Arduino) Any suggestions for alternative boards/tech?
- TomVDB 8y agoWhenever people ask this question, I'm the broken record with the same reply: start out with the cheapest kit possible, an Altera EP2C5TQ144 development board. http://land-boards.com/blwiki/index.php?title=Cyclone_II_EP2C5_Mini_Dev_Board http://land-boards.com/blwiki/index.php?title=Cyclone_II_EP2... They are old, and you need a slightly older version of the Altera Quartus software suite, but they are dirt cheap. Go to eBay, search for EP2C5TQ144, and you can find development kits including programming cable starting at $3.50. The FPGA is tiny, but it has quite a bit of RAM, a bunch of hardware multipliers, and a sufficient amount of logic gates to create your own 32-bit RISC processor if you feel like it. And because it is so tiny, full synthesis and place & route run will take a few minutes. You may be tempted to go the open source route with a Lattice ICE40 FPGA. There are now tons of board out there with this FPGA, and being fully open source is great. But once you start debugging, you'll be without all the goodies that come with Altera, especially SignalTap (an on-chip synthesized logic analyzer.) Chances are that you will never outgrow the EP2C5 FPGA because you'll lose interest and move on to something else. But if you outgrow it, all you've wasted was one latte at Starbucks.
- nraynaud 8y agoI'd advise people to start with a Cypress PSoC MCU, they have the taste of FPGA, but have a lot of useful stuff for various projects, and I bought 10 MCUs for $10.
- TomVDB 8y agoI just googled it and they seem to be MCUs with no programmable logic? What feature gives them a taste of an FPGA?
- bcheung 8y agoThis article makes me wonder if adding FPGA units to existing CPUs and GPUs that integrate with existing silicon makes a lot more sense than having a completely separate FPGA.
- FPGAhacker 8y agoIntegration of cpu and fpga has been done for years.
- lucb1e 8y agoBut not in household CPUs which I think is what GP meant. CPU speeds don't increase anymore, having an FPGA that can be programmed by software such as photo editors or encryption engines, things can be sped up a lot. (At least for crypto, one reason to stay with particular algorithms is hardware support; we'd be more agile if we could implement that in software without sacrificing much speed.)
- jamesissac 8y agoDo checkout Xilinx's Zynq series or Altera's Cyclone series, I think that may be what you're inferring ?
- tejtm 8y agoIn case there is some interest in learning hardware iCEBreaker FPGA The first open source iCE40 FPGA development board designed for teachers and students. https://www.crowdsupply.com/1bitsquared/icebreaker-fpga https://www.crowdsupply.com/1bitsquared/icebreaker-fpga full disclosure: I will likely get an enthusiastic "Thank you!" for dropping this here.