[Roland Lutz] gave a talk about FPGA design using the free tools for Lattice devices at the MetaRheinMainChaosDays conference this year. You can see the video below. It’s a great introduction to FPGAs that covers both the lowest-level detail and some higher level insight. If you’re getting started with these FPGAs, this video is a must-see.
[Roland] starts with the obligatory introductory material. He then jumps into an actual example before zooming back out to look at the internal details of the Lattice FPGA. For instance, this FPGA supports multiple bitstreams, so you can switch between different “programs” on the fly.
If you ever wondered how tiles and cells relate you’ll get a lot out of the low-level discussion. There’s also a very concise explanation of how tiles interconnect. If you are hazy on the difference between a span-4 and a span-12 wire, you’ll want to watch.
There’s plenty of complimentary details on the web and [Roland] includes some references at the end of the talk. We did our own introduction videos when the IceStorm tools first appeared. If you prefer a graphical tool, you might be interested in Icestudio.
Lutz is a great name for a guy who works on FPGAs!
That’s hilarious! He must have said “LUTs” a thousand times over the course of that presentation, and I didn’t even catch it.
This is a brilliant presentation on FPGAs, BTW. Anyone with interest should really watch it. And [Lutz] (tee-hee) really knows his stuff — he wrote a bitstream-to-midlevel-logic tool in Python that shows how the chip is configured at the cell level, but is also human readable.
It’s like a disassembler for the FPGA fabric, and it looks like it gives tremendous insight into what’s going on during the flow. It makes its appearance toward the last third of the talk, and it’s worth sticking around for, IMO.
got a link to the disassembler? A few minutes googling only found this https://fossi-foundation.org/2017/05/04/gsoc
It was
icebox asc2hlc
and it’s in both the mainline Icestorm and [Lutz]’s GitHub:https://github.com/rlutz/icestorm/blob/master/icebox/icebox_asc2hlc.py
And while we’re at it: http://hedmen.org/icestorm-doc/icestorm.html is [Lutz]’s (in-progress) documentation of the whole shebang. It’s the print version of a lot of that talk.
thanks!
Thank you! Lots of great info here.
I just found the UPduino FPGA board for $8 and I wonder why it isn’t more popular? Never mentioned here on hackaday, very few google hits, few comments and views on youtube videos and it looks like dirt cheap miracle similar to esp8266, arduino pro mini, pi zero.
It is even Lattice ICE40 based so the open sourced FPGA toolchain works with it so where is the catch? Looks like it was annouced on January and is available from at least July. And I found it only today and ordered one immediatelly. I hope it is real :-)
It looks very interesting, but it mentions that some Lattice software has to be installed to program it. Is it Windows only? I didn’t read all of TFA, honestly.
sorry for confusion, my comment is only related to the FPGA and Lattice topics but not to the article or video content. I just found video about UPDuino board on youtube when watching video from the article :-)
I don’t really get the point of FPGA’s for hobbyists/home-gamers. The learning curve is generally way steeper, but more importantly, I can think of literally nothing that a home user would use an FPGA for, that can be learned without intensive university level study. Want to control stuff? Use a microcontroller. Can anyone come up with some good examples that would be useful to a home user?
a) They’re fun. Playing around with logic is great. Playing around with programmable logic is better.
b) Fast / flexible / low-latency / parallel — all the things that FPGAs bring.
vs.
a) Peripherals. Full point for microcontrollers on this one. You’ll be implementing a lot of SPI and buying ADC chips if you go the FPGA route.
b) Memory. The higher-end FPGAs have enough. The Lattice parts probably don’t for a lot of applications. Which means external memory. Which is a hassle.
But hey, don’t knock it ’till you’ve tried it. :) There’s more than one way to blink an LED.
But that’s sort of my point. ” Fast / flexible / low-latency / parallel” I can;t think of any possible use for the average person for these things. They are, of course, extremely useful in industry, and in various consumer products (video processing etc), but for a tinkerer, they seem to be inferior to microcontrollers and at the same time more difficult to use. Sure playing around with them can be fun, but I think the reason things like arduino are popular and things like the UPduino are not is because FPGAs just aren’t useful to the masses. I’m still trying to figure out even one use case.
I’ve programmed FPGAs and while they are interesting, and useful for learning more about logic, they’re not useful for average-people-tasks. Even learning about logic isn’t really useful, unless your task actually needs the things that FPGAs offer (or you have a massive surplus of CMOS chips).
“I can think of literally nothing that a home user would use an FPGA for”
That’s because you didn’t think of software-defined radio. Feed the stream from an RF-sampling ADC into an FPGA. Process the signals. Receive information. Ham radio operators are doing it, and others can, too.
Right, but compare that to what the vast majority of people are doing with arduino. How much effort does it take to go from knowing nothing about FPGAs to having a functional SDR signal processor? Of course it’s possible to do, it’s just fairly hard and there’s not really a middle ground; You can make LEDs blink with simple logic gates, and you can make a real time signal processor, but there’s not much in between those two extremes to keep the average person occupied. You would only use an FPGA if you *had* to, and there are precious few situations where that’s the case, and they all tend to be fairly advanced. I’m not saying FPGAs are useless and no-one should ever use them, I’m just explaining to OP why MCUs are way more popular. I would say that even though FPGAs are technically more versatile (because if you had a fair amount of time on your hands you could set up a CPU in one, or use an off the shellf design), microcontrollers are a much much better fit for the needs of your average consumer.
Which might be why you’ll see FPGAs integrated with other more traditional blocks, so one ends up with a “you get this for free, with that”. Kind of the way BT/FM is integrated with WiFi chips even if not needed.
Very neat, and you can’t complain about that price point. I don’t know about IceStorm support for the UP variant, though.
http://www.clifford.at/icestorm/
Which is no biggie, but you’ll presumably have to use Lattice’s tools if there’s no IceStorm for it (yet).
oh, I might have misunderstood word ‘free’ in comment on this page then https://www.linkedin.com/pulse/upduino-ultraplus-mobile-fpga-board-arduino-form-factor-jennings
talking about this UPDuino, i “found” it early in september, and i published in some other forums you’ll find them easily with google..
it’s really a fancy toy, and i’m having a lot of fun currently; i’d like to extend iceStorm too but it takes time. currently i’m using it with iCEcube2 the proprietary tool running on Linux.
i also developed a small utility, iceProgrammer (borrowing the skeleton from iceStorm too..) and you can find it on github, the link on my name..
the text says “free tools for Lattice devices”. Last time I checked (was quite a while ago), I rejected Lattice components because even their own proprietary free-as-in-beer tool (Lattice Diamond) only worked for the simpler low-end devices but not for the FPGAs with the >=3Gbps transceivers and using those only worked with a paid license. Does anyone know if the tools mentioned here support those >=3Gbps transceivers?