HDL (Verilog, VHDL, Migen, Chisel, Clash...) - Printable Version +- nixers (https://nixers.net) +-- Forum: Embedded (https://nixers.net/Forum-Embedded) +--- Forum: Other Embedded Platforms and Hardware Hacking (https://nixers.net/Forum-Other-Embedded-Platforms-and-Hardware-Hacking) +--- Thread: HDL (Verilog, VHDL, Migen, Chisel, Clash...) (/Thread-HDL-Verilog-VHDL-Migen-Chisel-Clash) |
HDL (Verilog, VHDL, Migen, Chisel, Clash...) - josuah - 23-04-2022 Hardware Description Languages! This drift away a tiny bit from the main Unix topic of the forum, and for help with tinkering on Verilog, this place https://www.eevblog.com/forum/fpga/ could be the best. That is not what I wan to discuss here: Let's poke and discover hardware. After all, by the time of some old timers, computer science and electronics were much closer than now with powerful abstractions to get us away from all the electronic trouble. What are HDLs Of course, large processors, and even the small chips, are not being built out of breadboards: it would be way too tedious to hand-assemble thousands of transistors by hand (yet if you look at the CRAY's wiring you might have doubts: https://www.flickr.com/photos/carrierdetect/3599257794/in/photostream/). You would also have terrible timing offered by such large components. Clock speed at 10Hz anyone? There is a lot of simulation involved, and simulators have to be fed a language. These language describe hardware. Therefore they are hardware description language. Bingo! For real hardware? But production of chips go straight from these hardware description languages to the chip content themself ! The wonders of VLSI! Finally, because building a single chip costs roughly as much as building a thousand, and that crazy-huge costs are involved, a lot of tooling for verification are used. Have a look at these slides for more on that: http://zipcpu.com/tutorial/formal.html Something something FPGA? An alternative fate for these hardware description languages is, instead of being converted to patterns on a silicon crystal, is to land onto an FPGA. Do you remember the news about Bitcoin? You might have be coming across GPU-based rigs for mining, but also much likely FPGA chips, such as these mid/high-end Altera (Intel) or Spartan/Artix (Xilinx, now AMD) boards. FPGA are special-purpose chips that receive a compiled Verilog, VHDL, [...] design, and setlle it up onto a grid of gate connected together, according to the description given in the compiled file. This permits to build-up any kind of harware chip, and therefore was much used to implement bitcoin-mining chips, accelerating the process of mining bitcoins. This made these chips talk a lot about themself. But this is only one of the many use of FPGAs! Basically, every time some corp needs a custom-purpose chip, but building a hundread of thousand of ASICs is out of reach, an FPGA comes as a great friend. - datacenters use FPGA as accelerators for large processing power, like video conversion: Codecs change more often than hardware, building special-purpose hardware over and over would be a big waste. - expensive equipment like RADAR/LIDAR, can make a great use of FPGA: if there is a very large telescope that needs an FPGA for controlling motors involved in optics or orientation, or processing and dispatching input data... There could be as few as one ASIC needed, if there is only one telescope of that kind. FPGA of course! - While FPGA are expensive tools (there are more affordable CPLD chips too), they might contribute to driving costs down: CPUs are not very good at processing things in parallel, and if there is the need to interconnect many signals in parallel, a very-high speed CPU, or a tiny FPGA might both be used. What now? Should we all be learning HDL instead of these inefficient programming languages? Of course not! HDL are a link in the very long chain from high-level features of computers like user interfaces down to hardware. They only serve a slice of the stack, and connect electrical-engineering to software. If you feel like trying, post it here, I'll offer pointers to get an environment setup. |