Since using an FPGA requires designing hardware at the logic gate level, the realistic answer is to get a computer engineering degree or the equivalent self-study. The HDLs (Hardware Description Language) used to specify these circuits may superficially resemble a programming language but they really, really aren't.
You can get a rough idea of what you're getting into by going through the NAND2Tetris self-learning course ( https://www.nand2tetris.org/ ) and the associated textbook The Elements of Computing Systems: Building a Modern Computer from First Principles. But that's just scratching the bare surface of the depth you'd need to go to to get useful acceleration.
That doesn't even go into the eyewatering cost of the development tools and professional FPGA boards. There are free versions of the tools and small FPGA boards intended for student and hobbyist use but, assuming your code is non-trivial, they're unlikely to get you any significant speed up.
I bought a cheap Sipeed Tang Nano 9K FPGA Development Board (Gowin GW1NR-9 RISC-V HDMI) for $24 last year via Amazon. I ended up using Yosys[1] as a toolchain for programing, instead of the one from the manufacturer, code/program it. I had a lot of fun.
Whatever people may say about reddit, it seems to be a good starting point to get started with pretty much any hobby (even if it's just to get a link to another community).
I suppose if you are literally only bound by processor speed it might help. But bringing it all together into a working system will take some effort. Had you considered offloading to GPUs instead?
I started down this path a few months ago. Here's a few links I've collected that have been useful
- https://nandgame.com/
- https://www.asic-world.com/verilog/verilog_one_day.html
- https://hdlbits.01xz.net/wiki/Problem_sets
- https://edaplayground.com/home
I would also recommend this book: https://nostarch.com/gettingstartedwithfpgas
And it's associated starter FPGA: https://nandland.com/the-go-board/
If you outgrow this I would recommend moving to some sort of Xilinx Arty Spartan board
Many thanks
Since using an FPGA requires designing hardware at the logic gate level, the realistic answer is to get a computer engineering degree or the equivalent self-study. The HDLs (Hardware Description Language) used to specify these circuits may superficially resemble a programming language but they really, really aren't.
You can get a rough idea of what you're getting into by going through the NAND2Tetris self-learning course ( https://www.nand2tetris.org/ ) and the associated textbook The Elements of Computing Systems: Building a Modern Computer from First Principles. But that's just scratching the bare surface of the depth you'd need to go to to get useful acceleration.
That doesn't even go into the eyewatering cost of the development tools and professional FPGA boards. There are free versions of the tools and small FPGA boards intended for student and hobbyist use but, assuming your code is non-trivial, they're unlikely to get you any significant speed up.
Thanks. The idea of another degree could be interesting.
I bought a cheap Sipeed Tang Nano 9K FPGA Development Board (Gowin GW1NR-9 RISC-V HDMI) for $24 last year via Amazon. I ended up using Yosys[1] as a toolchain for programing, instead of the one from the manufacturer, code/program it. I had a lot of fun.
[1] https://yosyshq.net/yosys/
Take a look at https://old.reddit.com/r/FPGA/
Whatever people may say about reddit, it seems to be a good starting point to get started with pretty much any hobby (even if it's just to get a link to another community).
Edit: https://github.com/BrunoLevy/learn-fpga looks interesting.
Thank you for the links
> I met a trader who suggested I get my code running on FPGA hardware. He didn't know how exactly to get started.
Did he say why? It's hard to see what the motive for this is.
He said because it allows for parallel processing, faster execution for realtime processing.
I suppose if you are literally only bound by processor speed it might help. But bringing it all together into a working system will take some effort. Had you considered offloading to GPUs instead?
Own an FPGA(?)