As a Software Engineer, i had long thought about learning (and possibly moving into) Hardware Chip Design and/or its ancillary support domains i.e. what you have listed.
I understand that learning FPGA programming (Verilog/VHDL/etc.) is a first-step in that journey. Would you agree? Have you looked at books like FPGAs for Software Programmers? - https://link.springer.com/book/10.1007/978-3-319-26408-0
For each of the domains you have listed, would you mind sharing books/tools/sites etc.?
For example, While researching the above long ago, i had come across the following;
I bought a cheap FPGA board based on Lattice's ice40. There are free OSS tools to write, simulate, and install your Verilog/VHDL design onto the ice40.
It's probably a far cry from what a professional FPGA programmer does with Vivado etc but it might give you an inexpensive idea of the basics and if you want to pursue it.
Remember the old adage; "Crawl, Walk, Run". Since you say that you don't have much background in Embedded Systems, you have to start simple, easy and with hand-holding.
Parallax used to have "BoE-Bot Robot Kit" with a manual titled "Robotics with the Boe-Bot" which consisted of detailed walk-throughs of projects i.e. what to wire, what to program and test. Download the manual from here (or anywhere on the web) - https://www.parallax.com/product/boe-bot-robot-kit-serial/ Go through it to see what all is involved. The above used a stamp mcu with basic language programming which you don't want.
Get an Arduino kit copying the above kit. Follow the projects given in the manual above but using C/C++ to program your Arduino based robot. You will find tons of resources on the web to help you with this. This will give you the absolute fundamentals of simple robotics.
Simultaneously you also have to study embedded systems programming, particularly focusing on hardware and how to interface with them. You also have to learn to use a simple USB Oscilloscope/Logic Analyzer/Multimeter as needed. See my previous comment chains here for how to get started - https://news.ycombinator.com/item?id=33628025 and https://news.ycombinator.com/item?id=44244831
At the end of the above exercise, you will have a good idea of how to program embedded systems using C/C++, understand mcus, understand how to interface them to sensors and other hardware, how to debug problems in the circuit etc. You now have the knowledge and skills to move on to bigger, better and more complex projects.
Agreed. While there has been a lot of progress with AI, the full-throated bleating of its superlatives is tiresome and often verges on outright falsehoods.
That said, Dario is orders of magnitude better than other AI tech ceos who are outright bullshitters/liars. He generally makes/raises good points which are worth thinking over.
> understand the actual specific problem you need to solve, not the abstract general problem. Understand the statistical distribution of actual problem instances, they'll have parameters in some range. Understand the hardware you're building writing software for, understand its finite capacity & capability.
Very much in line with what James Coplien and colleagues described with "Commonality and Variability Analysis" and "Family-oriented Abstraction, Specification, and Translation" (FAST) for Software Engineering in the 90's. Coplien's PhD thesis titled Multi-Paradigm Design and book titled Multi-Paradigm Design for C++ is based on this approach.
> under-appreciated is the degree to which writing itself drives strong memory formation, even if the notes themselves aren’t particularly good or detailed.
I understand that learning FPGA programming (Verilog/VHDL/etc.) is a first-step in that journey. Would you agree? Have you looked at books like FPGAs for Software Programmers? - https://link.springer.com/book/10.1007/978-3-319-26408-0
For each of the domains you have listed, would you mind sharing books/tools/sites etc.?
For example, While researching the above long ago, i had come across the following;
C++ Modelling of SoC Systems Part 1: Processor Elements - https://www.linkedin.com/pulse/c-modelling-soc-systems-part-...
C++ Modelling of SoC Systems Part 2 : Infrastructure - https://www.linkedin.com/pulse/c-modelling-soc-systems-part-...
gem5 Simulator - https://www.gem5.org/
Verilator Simulator - https://www.veripool.org/verilator/
Maybe you can provide a step-by-step roadmap on how a software guy (C/C++, systems programming) can move on to hardware chip design?
reply