Contemporary Logic Design
What's Good? Contemporary Logic Design provides a thorough introduction to the world of digital logic design. The author does an excellent job of not only presenting the concepts behind hardware design, but also covers some of the common pitfalls such as timing issues and dealing with the fact that hardware is not perfect. The book is logically divided into three groups of chapters that build on each other towards the final goal: Design of a simple 16-bit processor.
The first five chapters of the book cover the concept of combinational logic. This is the creation of simple circuits that take a given input and provide a given output in which there is no feedback between output and input (for example 1 AND 0 = 0). First, the author covers the basic building blocks of digital logic: AND, OR, and NOT gates. >From here, the subject matter expands into more advanced circuits that are built from combinations of the above gates. The fifth chapter completes the first section with excellent information on the representation of numbers in hardware and implementation of basic add, subtract, and multiply circuits.
Chapters six through ten teach the reader about the world of sequential logic design. Sequential logic is that in which the previous state of the system affects the next given output. Sequential operation is at the heart of computer systems, and this is where the book excels. The basic theory of sequential logic is covered, and several useful examples such as binary counters, a simple DRAM chip, and a vending machine controller are used to demonstrate the principles.
The final two chapters provide and introduction to computer architecture and implementation. An excellent overview of computer organization is provided, and a 16 bit CPU is used as a case study of implementation issues.
While the book covers hardware, the author does an excellent job of keeping from getting too low level by delving into issues such as resistance, capacitance, and transistors. In a few places, the circuit design issues are brought up, but the are generally explained in enough detail that someone with no experience in electronics can understand. For those that are interested in the lowest level details, an appendix provides information on how digital gates are built up from basic analog components.
What to Watch Out For? This is not a book that you can causally read. While the information covered is well presented, it is difficult material and you will often need to re-read a section several times before you clearly understand it, so plan to spend a few months with this book.In addition, many of concepts that are in the book cannot really be completely understood without seeing them in action. For this reason, I suggest that if you are interested in this material and get this book, you should do one of the following: a) Go to your local Radio Shack or your local electronics store and pick up one of those "101 digital logic projects" kits or b) pick up some digital logic simulation software (see this page on Freshmeat for a list of Linux offerings). Either option will allow you to actually build the circuits that are described and see how changing certain aspects will change their behavior.
In Summary If you want to learn about computer hardware design, this is the book for you. It provides a thorough introduction to the subject without requiring much previous knowledge of electronics. The only warning is that you should have plenty of time in which to digest the information contained within this tome and that you should get some real digital hardware with which to experiment as you learn the material.
Pick this book up at Amazon.
Table of Contents
- Introduction
- Two-Level Combinational Logic
- Multilevel Combinational Logic
- Programmable and Steering Logic
- Arithmetic Circuits
- Sequential Logic Design
- Sequential Logic Case Studies
- Finite State Machine Design
- Finite State Machine Optimization
- Finite State Machine Implementation
- Computer Organization
- Computer Implementation
- Appendix A: Number Systems
- Appendix B: Basic Electronic Components
It's interesting there's no mention of booleen algebra. Is everyone taking booleen algebra as a seperate course from logic design?
Computer Organization and Design is excellent. We do use it at CMU, for the introductory Computer Architecture class.
There is another book, Computer Architecture: A Quantitative Approach (Amazon link) by the same authors. It covers the same material, but does go into more depth (and covers superscalar processors, which I don't think CO&D does much with). So if you're really hardcore into this stuff, go for CA: AQA (it is used in the CMU courses beyond the intro architecture course). If you're not going hardcore, CO&D should be very much sufficient for your needs.
The only other differences besides depth between the two books are: A) the authors names are switched on the cover and B) each author wrote the opposite chapters of what he did in CO&D.
I figured I'd explain the difference so if any of you see both books, you'd know which one was appropriate.
And in case you're wondering, Hennessy and Patterson were among the leaders of the "RISC-revolution". They are also (IMO) excellent authors, and the book includes plenty of diagrams and things to help you understand what's going on. If you've ever wondered how your CPU, cache memories, virtual memory, etc work, it's an excellent book to read.
Right on...
If I had thought that his post was actually serious, I might have gone into why nobody in their right mind would try to design a complex circuit using asynchronous design. Sure, async is useful for some things, but nobody would use it to design something like a CPU...you'd never manage to get the thing designed and debugged.
But I think you're right, it's spam. Not only that, but nonsensical spam. I really don't know who the target audience is, since (presumably) anyone who knows enough about logic design to be interested in their tools would know better.
I'm a digital logic designer, so of course I'm interested, but I think many people would find it is very interesting stuff. I know some software types who told me they're practically afraid of learning how the hardware works, and I guess that's OK if you stay in application space. But, for those that kernal hack, write device drivers, hack gcc, or wish to write cache efficient code, I think gaining an understanding of the digital logic level of things can be very beneifical in becoming good at it. Also, the more parallel we design our computers, the more our software is going to have to deal with digital logic design issues. A big issue in digital logic design is latency and synchronization, which is also an issue in software working with ever increasingly, pervasively, parallel systems. People who are good at one of these fields will have developed a good skill set that should transfer well to the other.
(For ECES 281 at CWRU)
This is a good textbook, the one thing that it really lacks is examples of how to do the homework problems at the end of each chapter.
Sure, you scan back through chapter after chapter and eventually you see how to do it, but it doesn't come easily at all.
Computer Organization and Design : The Hardware/Software Interface by David A. Patterson, John L. Hennessy
This book is a well written foray into the internals of processor architecture, memory management structures, etc... one of the best books I've seen on the subject(s). Walks through examples based on a MIPS processor, including pipelining, and really does a good job of making it 'easy' to understand. Kind of expensive for the casual reader 8^) but well worth it for anyone who wants to really learn it.
"It's tough to be bilingual when you get hit in the head."
I must say, with ALL of the AMAZING capitalization and BUZZWORDS in these posts, they seem AMAZINGLY like the spam mail that I immediately delete without reading.
:)
Just an observation.
I think it's funny how everyone seems to be able to predict what the "slashdot crowd" is going to say or do.
:)
Just what is the "slashdot crowd"? Are they childish FUD-slingers who instantly attack anything that has the word "Microsoft" in it? Are they computer science experts who give advice to Jane's Intelligence Review? Are they uber-geeks who absolutely must have the latest and greatest kernel? Are they programmers who don't care about the underlying structure of the art they create?
I, for one, am quite interested in electronics... but I am primarily a programmer. I know enough to wire up a breadboard according to a circuit diagram, and to troubleshoot and modify the results. And I'm one of the few programmers at my college who can help out the electronics majors from time to time.
I consider myself part of the "slashdot crowd". I thought this was "news for nerds", not "news for perl programmers".
Contemporary Logic Design is a good this-is-what-gates do book, but _COD_ is great for learning datapaths. You basically learn MIPS assembly and then design a processor to run the assembly. You must, of course, know the basics of gates (what a mux does, what a NAND does, etc) before you start _COD_. Everything from branch prediction to cache architectures. Yummy.
I guess I'm just more interested in the architecture end than the gate end. I'm certainly not interested in the chemistry/physics end, but alas, that is a required course, that I am taking this semester... and need to get back to work on.
-- Erich
Slashdot reader since 1997
http://http.cs.berkeley.edu/~randy/ CLD/CLD.html