If you know how to program in assembly language, then you have ultimate say about how things get implemented, although it falls to you to know how to precisely instruct the machine to use its hardware. If you have experience programming on micro controller platforms (say like an Arduino), you likely know about about getting close to the machine’s architecture - maybe directly doing things with peripherals like serial or parallel I/O via a memory mapped I/O, interrupts ISR, etc. Whereas, C/C++ and other high-level languages intentionally seek to abstract and utilize various CPU architectures (bare-metal or hosted by an OS). And also the mechanical and thermal issues… Since you speak of building a PCB with these parts plced on it, you’ll need to know how to interface the electrical (things like: voltage, speed, controlling impedance…) and logical (terms like: gates, registers, clocks, domain crossing, buffers, buses, state machines, floor plans, ip cores, async and synchronous, etc.). VHDL (also Verilog) is literally a hardware definition language. FPGAs are the closest thing to the highest speed you can get, other than building a custom application specific IC (ASIC). This allows, for example, having instantaneous and asynchronous, non-clocked propagation of logic signals (concurrent logic) likewise, you can also build state machines running synchronously on some clock domain you define. In an FPGA you are literally fabricating logic to run bits around your board at the hardware level.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |