4 ms·
I've done a fair amount of hobbiest microcontroller work, I'm comfortable with asm and c for low level systems stuff with 8 bit micros, etc... How hard is it t
by claytongulick 4y ago
I've done a fair amount of hobbiest microcontroller work, I'm comfortable with asm and c for low level systems stuff with 8 bit micros, etc...
How hard is it to get into FPGA development with that sort of background? Starting from barely knowing how to spell FPGA?
- lnsru 4y agoDepends on what you want to do. For blinking some LEDs be prepared to write some asm level code. For gigabit transceiver system prepare to deep dive into complex IDE from the manufacturer. I am here minority claiming, that vendor tools are okay. Everybody else wants open source toolchains. Last week I dealt with complex clock distribution problem in my design. It was easy to debug it with vendor tools. I don’t know how far are these open source toolchains in such complicated matters.
- boondaburrah 4y agoHow comfortable are you with functional programming? I've found digital logic to have more in common with describing data transformations than C/ASM, though understanding bitmasks/bitflipping helps.
- ahefner 4y agoIt's not hard to get into at all, if you're already comfortable thinking in terms of bits and digital logic.
- dailykoder 4y agoUsually it's fairly simple to get your feet wet and a blinking LED. The problem with FPGAs tho is that you basically have to do everything yourself and apparently it's not easy for a lot of people to "get it". Even tho Verilog and VHDL look like normal programming languages, you aren't actually programming. You are describing hardware/logical circuits. Most things run, by default, in parallel, which you always have to keep in mind. But then there are things like processes which are evaluated sequentially, but they still behave different than a C-program. You could also use external IP-Blocks to not be forced doing everything from scratch, but they are not always easy to work with. So my (personal) conclusion is: It's not hard to get it running. You could easily do that. Personally I would prefer to go with Xilinx or Intel chips, just because you have more resources and a kind-of working IDE. Or you could go with some Lattice ECP-5 based chips and use the open source toolchain yosys etc. It can be a super exciting experience, but a lot of people just seem to find it boring. I am personally very grateful that I had an exceptionally good professor in uni that thought us most things.
- phamilton 4y agoOne caveat on tooling: unless things have changed recently it's an overwhelmingly Windows-centric ecosystem. That honestly been the biggest barrier to entry for me using fpgas in hobby projects.
- dailykoder 4y agoXilinx' Vivado works decent on my Ubuntu 20.04 machine (just haven't gotten around to upgrade yet). Been using it since 18.04 or something like that. It's not the best experience, but it gets the job done. For small hobby projects I use Yosys+nextpnr and GHDL+gtkwave for simulation, which can be used nicely on Linux, you just don't have such good debugging capabilities yet.
- bee_rider 4y agoNever hurts to wait for a couple rounds of polish before updating.
- tails4e 4y agoFor a power user, vivado is streets ahead of the open source alternatives. The integrated IDE makes working with and debugging performance issues helpful as you can cross probe between placement, elaborate RTL, timing reports all the way back to the source RTL. Also things like pynq are amazing, blending python, with user defined hardware blocks.
- fxtentacle 4y agoNot difficult, but feels weird. Vhdl looks like programming, but all the rows are executed in parallel all the time. You need to wrap your head around that level of parallelism. But once you do, I'm sure it'll also make you an excellent CUDA / OpenCL GPU programmer.
- magicalhippo 4y agoHow comfortable are you with logic gates? I found it pretty easy to get into with similar background, but it was crucial for me to think in terms of wires, logic gates, flip-flops and multiplexers. Like, you're not assigning a value, rather connecting an output to an input with a wire. You're not writing traditional sequential statements, but wiring logic gates (level-based) or hooking up flip-flops and latches (edge-based) to implement state machines. With this in mind, I got a very simple soft-CPU going in very little time. I found it more difficult to get data into or out of the FPGA though. Things like I2C which is trivial with a microcontroller that has I2C peripheral is suddenly not so fun.
- yababa_y 4y agoI’ve done it myself and found it not too bad. I was already familiar with the underlying paradigms of digital circuitry so it was mostly a process of struggling with tools until I got a good flow. Using obscure boards (lattice vvml) with obscure languages (chisel, myhdl, spinalhdl) and obscure tools (nextpnr, yosys) has been an exercise in careful reading of documentation and disciplined experimental strategy.
- rasz 4y agoSee if you are comfortable playing in https://github.com/logisim-evolution/logisim-evolution https://github.com/logisim-evolution/logisim-evolution
- tails4e 4y agoPYNQ is an interesting project. It blends python / jupyter notebooks running on the embedded processor in the FPGA ps with any custom hardware you design for the FPGA pl (programmable logic). You can generate the hardware logic by writing a Verilog module, or else using HLS which is a flow for taking c code and creating hardware. It's a really fun environment. You'll still need to grok the HW side, but thats part of the fun!