3 ms·
You need a solid background in digital electronics to start. 1. Nand2Tetris 2. Books: The Art of Electronics, especially the last half. Learning the Art of
by wrycoder 5y ago
You need a solid background in digital electronics to start.
1. Nand2Tetris
2. Books:
The Art of Electronics, especially the last half.
Learning the Art of Electronics. Also especially the last half.
3. You should have a good understanding of programming in C.
- vlovich123 5y agoWith FPGAs? It’s been a long time since college but I recall my FPGA experience being very much like programming once you realized all lines of code executed in parallel and “function” calls were just connecting wires. I don’t recall many issues. Maybe some things around synthesizability but I can’t recall anymore if this applied to FPGAs or just ASICs
- wrycoder 5y agoThe first half of Nand2Tetris is about synthesizing a small computer using a hardware definition language (HDL) that was invented for the book[0]. It's similar to Verilog. It's true that creating a design in Verilog is similar to conventional programming, but looks are deceiving. While conventional software (in C, for example) is a series of sequential steps, Verilog has two types of statements: combinational, which combine inputs and outputs using boolean logic, and sequential, which are structures implemented by networks of flip-flops, and which are clocked and which act as memory elements. All the combinational statements take place "instantly", while all the sequential statements in the program are executed at the same time when the clock pulses. The clock causes the whole program to make a step and then re-evaluate the combinatorial statements in preparation for the next clock. I suppose one could write Verilog code without any knowledge of electronics, and I imagine some programmers do that under the direction of engineers who do understand digital design. The last halves of the two books I suggested teach digital design. I think it's necessary, at a minimum, to understand something about the possibilities, limitations, and conventional approaches before expecting to produce a useful FPGA design. You don't usually want to spend a lot of time re-implementing something in an FPGA that you could just buy from Mouser and which would be much cheaper and a lot faster. Also, it's necessary to understand how to interface the FPGA to the real world, so a knowledge of digital design is required. The first halves of those two books is about analog design, which is also useful when interfacing to real world sensors and actuators. [0] https://www.nand2tetris.org/book https://www.nand2tetris.org/book