Saturday, February 26, 2005

Understanding the diagrams

Any post whose title begins with "[Image]" is a bcd circuit diagram. Each box in the diagram represents a functional unit of a design, just like an IC in an electronic circuit diagram. I've color-coded them by type, and each type has different attributes and displays different data during simulation. The values shown in most images will be the default values, unless otherwise noted [for example, if I say that I'm showing a simulation in progress].

  • Basic Cells

    Each basic cell [always outlined in blue] is made up of one or more of the fundamental gates that make up the computer, described in the introduction and in this post. All gates in a single basic cell are considered to share a single axis, so they'll all always be in the same state [0 or 1]. The state is displayed both in the position of the pink arms and by the large digit displayed at the right side of the gate.

  • Terminal Cells

    Each terminal cell [always outlined in purple] represents a magical piece of machinery that I haven't designed yet. There should be very few of these in the design, and most of them will go away when I hook all the components together. Generally they're just dumb sources or sinks of balls [things that spit out balls or make them vanish], but I've also got special ones that spit out balls on demand [when tugged on via a pulley]. I have ideas for how they will work in physical form, but it's not relevant to the design, so I'll just deal with that during Step 5.

  • Container Cells

    Each container cell [always outlined in yellow] represents a composite cell made up of other components. It's just my way of reusing blocks of logic. I will generally be uploading diagrams as clickable image maps, so that you can click on a container cell and see the design that it represents.

    Here's another view of a container cell. In this image I've turned on "full-depth" drawing, so you can see the cell's interior logic drawn on top of its normal image. I generally keep this turned off to remove the clutter [and to speed up the designs that are big enough to matter], but it can come in handy during simulation [or just to show off how friggin' huge some of my designs are].

  • Ports

    Ports and connections are the means by which cells are connected. They can represent attachment points for the tubes that will carry balls around [the red and blue ports, for inputs and outputs respectively] and for cords that connect pulleys [the yellow and green ports, for single-cord and double-cord pulleys, respectively]. The ports show up both as small boxes on cells and as larger boxes in the internal views of container cells.

  • Connections

    Connections represent either tubes through which balls roll or cords attached to pulleys. Both are shown in bcd as straight off-white lines [yellow if they've been selected]. Connections currently default to having no wire delays [balls flow through them in zero time]; I'll probably change that to one gate delay per connection later on. When a connection has delays [i.e. is slow, such as a spiral tube that would take a ball a while to roll through], you'll see a rectangular box containing digits which are either '0' or '1'. Each '1' represents a ball. As the simulation clocks, the '1's shift from left to right through the box, and when they run off the end, the ball comes out of the connection into its output port.

    Sometimes it's useful to hide connections. On designs with quite a few connections, it's often really hard to see one particular line on which you're trying to focus. For these occasions, I will generally "stub out" the offending connections. Here's what the stubs look like:

    Note that connections turn yellow when selected, and may be drawn either on top of or beneath ports and cells.

Now that you understand all that, take a look at this diagram, which is a state machine that I built to test my 8-byte register file [the lowest byte of which always reads as 0].


Post a Comment

Links to this post:

Create a Link

<< Home