9.2.1 Datapaths and FSMs
Welcome to Part 2 of 6.004x! In this part of the course, we turn our attention to the design and implementation of digital systems that can perform useful computations on different types of binary data. We'll come up with a general-purpose design for these systems, we which we call "computers", so that they can serve as useful tools in many diverse application areas. Computers were first used to perform numeric calculations in science and engineering, but today they are used as the central control element in any system where complex behavior is required. We have a lot to do in this chapter, so let's get started! Suppose we want to design a system to compute the factorial function on some numeric argument N. N! is defined as the product of N times N-1 times N-2, and so on down to 1. We can use a programming language like C to describe the sequence of operations necessary to perform the factorial computation. In this program there are two variables, "...