Many of the books you find on digital design take too much of an engineering approach to it, & there isn't all that much information on the internet about logic design or digital logic design, so this is my attempt to fill that void.
Please note that the subject of digital logic design is very vast & complex, so this article/tutorial will be branched to better cover select topics in related pages, as to keep this 1 focused & easy to follow.
One of the good things about logic design & digital circuits in general, is that you don't really have to know the underlying "analog" electronics on which the digital circuits are implemented, as they function as combinations of functional blocks.
A very good start on digital logic design is understanding the very basic building blocks: logic gates [click to go to article].
Logic gates perform three basic functions on which all digital operations are performed, & have been named according to their corresponding speech words: AND, OR & NOT.
Basic & not so basic but "one step" circuits are created with combinations of those simple gates, & so these kinds of circuits are called combinational circuits.
To design a combinational circuit to solve a problem, you have to come up with a combination of logic gates that will give the output you want given some conditions you specify.
For example, say you want to simulate a voting system where 3 judges vote on a candidate to pass to the next stage of a contest, but only if at least two out of the three judges vote on them.
This 1 is simple enough, there are four conditions on which the contestant goes to the next level:
- Judge A AND B vote in favor, judge C votes against
OR - Judge B AND C vote in favor, judge A votes against
OR - Judge C AND A vote in favor, judge B votes against
OR - Judge A AND B AND C vote in favor.
By defining the conditions in words, you can easily find when to use each type of gate. Also note that in most cases, if you require a false condition, such as a judge voting against in this example, you use a NOT gate to use after the input, as in transforming a vote against into a vote NOT in favor.
When a combinational problem needs many inputs or has many conditions, the use of a truth table [article pending, click to search in google] & karnaugh maps [article pending, click to search in google] to reduce the number of conditions necessary make it easier to design them.
In the next part of this article, we'll cover sequential logic, introducing flip flops & the use of clock signals to synchronize the operation of the whole circuit.