Analog
Computing Module (ACM)
MTM
Scientific, Inc
Figure 1: The MAX Hardware Forth Engine Computer
The Analog Computing Module (ACM) is an analog based computational unit
designed to provide mathematical support (similar to an Arithmetic
Logic Unit) for a TTL-based 8-bit Forth hardware engine computer.
The homebrew Forth computer is named MAX. This computer consists of a
passive backplane with insertable cards for various purposes, such as:
Data Stack, ROM Stack, Return Stack, Memory Stack, Clock, Controller,
NAND ALU, ACM, Counter, Input, and Output. The MAX Computer is
programmed using 32 Forth primitives as machine opcodes. Here is a link
to a forum thread with additional information about MAX: ANYCPU.ORG
Forum
Our interest in the MAX Computer design was initially focused on the
Forth hardware aspects, such as the stacks. The first Arithmetic Logic
Unit we incorporated was a simple NAND function using 74LS00 integrated
circuits. Later, we added a parallel ALU with FULL ADDER function using
74LS283 integrated circuits. Both ALU designs work well for their
purposes. Our original thought was to eventually incorporate a Look-Up
ALU, similar to our LALU
Single Board Computer Design.
It was around this time that we began to consider the possibility of
incorporating ALU functionality using analog circuitry. (We had seen
some of the classic analog benchtop computers during our time as an
engineering student at the University of Michigan.) Our research
returned numerous design resources for analog computing, with much of
it from the 1950's and 1960's. For example "Electronic Analog
Computers" by Korn, 1956 and "Basic Analog Computation" by Peterson,
1967. Computers which combine digital and analog computing
elements are called Hybrids. There is a modern book on this topic "Analog and Hybrid Computer
Programming" by Ulmann, 2023.
Figure 2: Analog Computer
Books
Classic analog computing
circuits generally use operational ampfliers for integrators, summers,
differentiators, etc. Operational amplifiers classically use a split
power supply with positive and negative rails. (e.g. +/- 15 V) Our
first experiments have focused on identifying useful single-supply
integrated circuits. For example, we found the AD557 to be useful
as an 8-bit digital to analog converter. The ADC0820 was likewise found
to be useful as an 8-bit analog to digital converter. Both of these
devices work well from a single +5VDC supply, and they are TTL
compatible. We found that switching can be accomplished using the
74HCT4066, a 4-Channel Analog Switch. (Essentially performing the
function of 'patch cords' in a classic analog computer.) We designed
and tested several PCB cards using these devices separately.
Eventually, we decided to design and build the first prototype of
an Analog Computing Module (ACM) for our MAX Computer. The MAX
computer is an 8 bit hardware forth engine, constructed using TTL
logic, operating at 1 MHZ. The MAX computer does not use a standard
CPU. The Controller for MAX consists of 3 custom programmed 27C256
ROMs. This arrangement gives us complete control over the hardware
control signals. The Forth primitives are coded into the ROMs as a
sequence of hardware operations during a cycle. A cycle consists of 6
rings from a ring counter. The first 2 rings are used for
instruction fetch and stack indexing, leaving 4 rings for instruction
synthesis.
Analog computers excel at solving Ordinary Differential Equations
(ODE), typically involving R/C integrators. For our proof of principle
ACM we started with a simple combinatorial analog function which
does not involve time. We chose to use an AD633 Multiplier chip to
perform high-byte multiplication. (Multiplication of two 8-bit
bytes results in a 16-bit word result. High byte multiplication is an
approximation, sometimes used in video games. Only the high byte of the
product is returned.) The conceptual layout of our ACM Multiplier
is shown in Figure 3.
Figure 3: Multiplier Analog
Computing Module for MAX