Analog Computing Module (ACM)

MTM Scientific, Inc

The MAX Hardware Forth Computer

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.

Analog Computer Books

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.  

Multiplier ACM Diagram

Figure 3: Multiplier Analog Computing Module for MAX


An ACM prototype PCB was designed and fabricated, as shown in Figure 4. We decided to add an adjustable gain stage to the output of the Multiplier IC for calibration. The gain stage is based on an MCP6022 single supply operational amplifier. The analog multiplier requires a split supply of +/- 15V, which is provided by a small RH-0515D power conversion module. We decided to test the module by computing the high byte square of N, divided by 2. The agreement between theoretical and measured output is good, as shown in Figure 5.

Analog Computing Module

Figure 4: Prototype PCB for the ACM

Theoretical vs Actual Performance Results

Figure 5: Experimental Results for Analog Computing Module

Circuit Schematic of ACM

Figure 6: Circuit Schematic for the Analog Computing Module for MAX

We were quite surprised that this works as well as it does. The circuit schematic is shown in Figure 6. Note: We added a divide-by-2 by reducing the gain of the MCP6022 amplifier stage. (We found this was necessary to avoid clipping near the 5 volt rail.) The ACM is able to compute the product in a single machine cycle. Here is a breakdown for the operations performed during the 6 rings of the Multiply operation.

Ring 1: Fetch Instruction (Default)
Ring 2: Index ROM Stack (Default)
Ring 3: Setup NEXT on Bus (Allows Multiplier to Stabilize)
Ring 4: Trigger A/D conversion, keeping NEXT active on Bus
Ring 5: Move Calculation Result to TOS Register
Ring 6: Drop NEXT from Data Stack

We are in the process of designing an updated ACM which will have more computing functions, including a summing junction and possibly an integrator.