The Design Book: Techniques and Solutions for Digital Computer Systems


Preface

Developing design techniques, instincts, and experience is not an easy process, and many books and materials have been created to present different ideas and methods of design. When I have attempted to discuss design techniques with others, either in a peer situation in industry or in an instructional situation, communication is most effective when an example is available to demonstrate specific ideas. This book presents a number of different techniques which can be utilized in a number of different ways. It is intended to be a supplemental text for an advanced design course, or a design demonstration book which can be used to introduce different ideas to working engineers. In particular, this book was created to be a companion volume for a specific design text (L. H. Pollard, Computer Design and Architecture, Englewood Cliffs, NJ: Prentice Hall, 1990.) It does not identify the "best" way to do designs; rather, it presents some ideas and techniques which can be utilized in a variety of situations. Also, where appropriate, it compares different design techniques and ideas, one with another, demonstrating how engineering criteria can be used to evaluate one technique with respect to another. Different criteria will apply in different circumstances, but the techniques of evaluation will be similar.

The material in this book covers a number of different topics, and the designs and techniques presented should be evaluated in the arena in which they are presented. Certainly some of the designs can be improved, and where this can be identified, differences between the approach presented in the book and other approaches should be detailed and the reasons for the improvements explained. In this way, students and professionals can evaluate the validity of assumptions, of design techniques, and of implementation methods. Design ideas are valuable only when applied to the solution of real problems, and the solutions can be very helpful when shared with colleagues.

The logic drawings included in this book conform to ideas of polarized mnemonics and logical state indicators demonstrated by Fletcher (William I. Fletcher, An Engineering Approach to Digital Design, Englewood Cliffs, NJ: Prentice Hall, 1980.) in his book and in practice. These ideas have proved very beneficial in practice; the drawings presented here utilize these ideas to a great degree. Signals are named in a manner which connotes their function. The final two letters of the name indicate the level at which the function is performed. An -H suffix indicates that the function is accomplished when the signal is high; an -L suffix indicates that the function occurs when the signal is low. These names are created to agree with the presence or absence of logical state indicators on the outputs of the gates which create them. A signal which is the output of a gate with a logical state indicator (the little bubble at the output of the gate) will have an -L suffix, while a signal which is the output of a gate without the logical state indicator will have an -H ending. Also, there should be agreement between the creation and use of signals. That is, signals with a logical state indicator at the output of a gate should feed gates (or devices) which also have logical state indicators. Where this does not occur, an incompatibility triangle marks the signal at the input of the gate. This is a communication help, and it allows the creator of a design to tell the reader that the incompatibility was done on purpose.

The material in the book is broken into six different chapters covering different areas of interest. While some of the information may appear trivial to some observers, other readers may gain new insights into old problems by considering the information presented. Chapter 1 contains some information about number systems and information representation. The material presented covers some integer methods for number conversions, basic limitations to information representation, and some floating point exercises. These number systems are basic to the manner in which we deal with computers and should be understood by all users of the machines.

Chapter 2 presents several methods for design of combinational systems. Some will argue that combinational design is not interesting, since much of the design can be turned over to automatic design tools. However, engineers and designers must know how to evaluate the effectiveness of the tools, and hence different design methods are presented. These methods are compared one to another to determine the utilization of system resources, and one design will be selected based on the desired use of a critical resource.

Chapter 3 contains a number of register transfer language (RTL) presentations of different instruction techniques. The techniques begin with a very simple system, and the examples presented progress in their complexity to a fairly complex unit. The intent is to demonstrate the effectiveness of an RTL in describing the work which must be done in a system, as well as to present different techniques for working with information. The techniques presented can be modified or used directly to derive information about an existing system.

Chapter 4, the longest in the book, contains examples in the area of sequential control design. This is an area which has many different possibilities, and questions abound concerning techniques and their implementations. Again, the same design is approached from different aspects, to derive designs with different characteristics. A system designer must be able to make reasonable engineering judgements about an implementation; this chapter progresses through the details of design implementations in order to demonstrate effective sequential control techniques.

Chapter 5 deals with the area of computer interface. Many different techniques have been utilized over the years to communicate with computers, and the information presented here covers only a small part of the total field. Nevertheless, it does tie together some of the ideas presented in earlier chapters to create systems which provide an exchange of digital information. And, as done in other parts of the book, an evaluation method is suggested through the design methodology presented.

Chapter 6 contains designs for memory systems. These start with simple 1-D and 2-D design techniques which can be applicable within memory chips and within larger memory systems. The designs move to progressively more complex implementations, ending with a combination dynamic RAM and cache system.

The designs and technique presented here provide at least three different possibilities. First, for engineers and students just entering the exciting field of digital design, this book contains a number of methods and ideas which will lead to good working systems. Second, through the comparison techniques presented, different approaches to evaluation of implementations can be explored. It is often as important that an engineer know why a technique is good as it is to identify a good technique. And third, if a designer disagrees with a technique or an idea, a thorough examination of the information presented here and alternative techniques will lead to a better understanding of the underlying issues.

Many of the designs presented here have been implemented in one form or another in the process of solving design problems at a number of locations. My first designs were done at Utah State University, where as a student of Bill Fletcher and Al Despain I attempted to create digital devices for a number of systems. These design ideas were further enhanced by creating stand-alone digital systems for Reticon Corporation. Then I had the opportunity to become involved with a number of computer interfaces while employed by Lockheed Missiles and Space Company. Since that time I have been involved with academic institutions, and have attempted to teach many of these ideas to captive audiences of beleaguered students. However, I have had the privilege of continued involvement in real designs and real computer systems through an association with the Data Systems group (MEE-10) of the Mechanical and Electronics Engineering Division of Los Alamos National Laboratory. I continue to enjoy designing and building digital systems, and to those who have made that possible and fun I extend my thanks.

L. Howard Pollard


Table of Contents