4 ms·
That's because hardware description languages are not programming languages. This point was constantly emphasized in my digital systems courses. You do not desc
by nulldozer 11y ago
That's because hardware description languages are not programming languages. This point was constantly emphasized in my digital systems courses. You do not describe a sequence of instructions using an HDL, you describe the layout of a circuit with registers, wires, and logic blocks. You have to consider the physics of the device to avoid violating timing constraints or driving a signal from two different sources, etc.
- elihu 11y agoHardware description languages are not imperative programming languages (even if they might superficially resemble them). That doesn't mean they aren't programming languages at all -- they just belong to a different category of language. (I suspect that there's a connection between hardware design and functional programming, but I don't have enough hardware design experience to know how closely the two are related.)
- sklogic 11y agoI'd rather classify HDLs as dataflow languages.
- tel 11y agoConal Elliott, Haskeller of FRP fame, was recently working for a company where he was developing a compiler of functional programming into categorical semantics which is actually quite neatly similar to the layout of a circuit. The company went under, unfortunately, so I'm not sure of the status of his research, but some remarks are available on his blog [0] [1] [2]. Further, there is a notion of a Generalized Arrow [3] which is a useful, advanced functional programming technique which is quite nice for implementing FRP. These are somewhat obviously "wiring diagrams" but are shown to be in correspondence with a more normal "lambda calculus"-like syntax. [0] http://conal.net/blog/posts/haskell-to-hardware-via-cccs http://conal.net/blog/posts/haskell-to-hardware-via-cccs [1] http://conal.net/blog/posts/overloading-lambda http://conal.net/blog/posts/overloading-lambda [2] http://conal.net/blog/posts/optimizing-cccs http://conal.net/blog/posts/optimizing-cccs [3] http://www.megacz.com/berkeley/garrows/ http://www.megacz.com/berkeley/garrows/
- cfsc 11y agoYou have CλaSH [0] based in Haskell developed at University of Twente that has the same goal. [0] http://www.clash-lang.org/ http://www.clash-lang.org/
- sklogic 11y agoOf course they are programming languages. Anything with a well-defined semantics is a programming language.
- deleted 11y ago[deleted]
- sklogic 11y agoAnd why setting up LUTs and interconnect is not a programming?
- Matumio 11y ago(Apologies for deletion. I moved my comment to parent. Won't try that again.) It is, but on a different level. I think the analogy would be that in VHDL/Verliog you are dealing with a template or macro language (which is executed to generate code) as opposed to a low-level language (which translates almost directly to machine instructions).
- sklogic 11y agoI'm not sure a presence of a stream of instructions or anything comparable is a requirement for a definition of a "programming". You can program a DNA, or a slime mold: http://www.wired.com/2013/06/slime-mold-computers/ http://www.wired.com/2013/06/slime-mold-computers/ Or even crabs: http://hackaday.com/2012/09/28/making-logic-gates-out-of-crabs/ http://hackaday.com/2012/09/28/making-logic-gates-out-of-cra... Anything which can be used to implement any kind of computing in a broad sense is a programming, as long as it's done using a well-defined formal language.
- p4bl0 11y agoOr carnivorous plant! http://www.dailymotion.com/video/xbwqej_david-naccache-quel-est-le-qi-de-di_tech http://www.dailymotion.com/video/xbwqej_david-naccache-quel-... (sorry it is in French).
- Matumio 11y agoThey are programming language, but you don't program the FPGA device with them. Your program a generator that runs on your CPU and creates the physical layout for the FPGA device as its output.