3 ms·
"The reality is that no digital logic design can work 'without a clock'. " This is not true. "HDL based hardware loops are not like this at all. Instead, the
by DigitalJack 9y ago
"The reality is that no digital logic design can work 'without a clock'. "
This is not true.
"HDL based hardware loops are not like this at all. Instead, the HDL synthesis tool uses the loop description to make several copies of the logic all running in parallel."
This is not true as a general statement. There are for loops in HDLs that behave exactly like software loops. And there are generative for loops that make copies of logic.
Also, the "everything happens at once" is not true either. In fact with out the delay between two events happening, synchronous digital design would not work. (specifically flip-flops would not work).
- tonmoy 9y agoI guess a more accurate statement would be "no practical digital logic design can work without clock (unless you are doing seldom used, generally undesirable asynchronous design)" HDL languages do have loops, but they are for testbench purposes only, in hardware implemention non generate loops would not be implemented! I think by saying "Everything happens at once" the author meant that all your code executes at once. He is obviously trying to get the one line at a time sequential mindset out from people used with software.
- forthfifthsixth 9y agoI don't think asynchronous logic is undesirable. For an example, the GA144[1] is an example of a practical computer completely implemented asynchronous logic. Its Asynchronous nature is one of the features, benefits include lower power consumption, faster speed, and lower electromagnetic interference [1]http://www.greenarraychips.com/home/documents/greg/PB001-100503-GA144-1-10.pdf http://www.greenarraychips.com/home/documents/greg/PB001-100...
- tonmoy 9y agoI meant undesireable in the sense that it takes longer time to develop and harder to debug, but you are absolutely right about the power consumption and speed
- DigitalJack 9y agoI would have said synchronous digital logic requires a clock. Clearly combinational logic does not. The type of design you do is purely dependent on your needs. Asynchronous design is neither good or bad. It's what you need or it isn't. Here is a perfectly fine, synthesizable parity generator using a non generative for loop (vhdl): library ieee; use ieee.std_logic_1164.all; entity for_parity is port (input : in std_logic_vector (7 downto 0); even : out std_logic; odd : out std_logic); end for_parity ; architecture for_arch of for_parity is signal even_parity : std_logic; begin calc: process (input) is variable temp : std_logic; begin temp := '0'; for i in 0 to 7 loop temp:=temp xor input(i); end loop; even_parity <= temp; end process calc; even <= even_parity; odd <= (not even_parity); end for_arch; As for the last point, I make extensive use of sequential logic, a concept made possible by delays through transistors, and I can't think of a more confusing thing to say to someone than "it all happens at once" because it does not.
- planteen 9y ago> Also, the "everything happens at once" is not true either. In fact with out the delay between two events happening, synchronous digital design would not work. (specifically flip-flops would not work). I think the author means something more along the lines of something like this: all of your edge triggered state machines in the same clock domain execute at once. It is unlike a traditional programming language where statements where statements execute sequentially.
- blibble 9y agoyep, there were some clockless ARM cpus (never really took off though) asynchronous digital logic forms part of any reasonable digital circuit design course :)