Is continuity inherently more powerful than discreteness?
(Or how I built my first (proper) computer...)
Wednesday, December 10, 2014
Saturday, December 6, 2014
Equality
My second (and this time successful) attempt at what I naively assumed would be a straightforward thing to implement: to test when two voltages are 'equal':
The DG403 chip (shared between channels) provides normally open and closed switching - these outputs also appear on the front panel.
The INA128 (which has very low offset voltage) is configured to give a gain of about 500; any significant difference in X and Y input voltages gives rise to a significant voltage (positive or negative) - the TL071 op amp inverts the output of the INA128; the output of this op amp and the direct output are put through the Schottky diodes - hence regardless of the sign of the voltage difference, the base of the first transistor is driven high when X does not equal Y. The base of the second transistor goes high when X = Y, as does its emitter!
The actual circuit has two independent X = Y channels:
In the scope display below, the horizontal axis is 20 microseconds / division; the triangle wave (i.e. X) (5 kHz) is 20 mV / division; Y = 0 volts. The X = Y output (which appears on the computer's front panel) is 0 to 10 V. In practice, the circuit detects X = Y when X is within +/- 10 mV of Y, for X and Y in the range -10 V through +10 V.
The DG403 chip (shared between channels) provides normally open and closed switching - these outputs also appear on the front panel.
Sunday, November 30, 2014
Inequality
This circuit detects X < Y - it is what in the old days was called a differential relay (a single pole double throw switch driven by the output of an operational amplifier) - in this circuit the relay of old is realised via a CMOS analog switch (DG403). In my circuit, the output of a INA128 instrumentation amplifier drives a couple of transistors to get the gain up enough so that the output switches for about a 5 mV difference in inputs. An LED on the computer's front panel will indicate X < Y; there is a 10 V output also for this condition.
Next board is X = Y (which is proving surprisingly complicated!)
Next board is X = Y (which is proving surprisingly complicated!)
Saturday, November 22, 2014
Off On a Tangent
Have finally completed the special function circuitry...in the end I moved (temporarily) to the dark side...buying a few AT28C64B EEPROMs and a MiniPro TL866 programmer.
The EEPROM is sandwiched between a AD7820 8 bit ADC and a AD7224 DAC. The ADC drives eight of the (64K) EEPROM's addresses; one is driven by the output of a sign detection op amp; the remaining four address bits are connected to a Lorlin binary-coded (16-position) rotary switch. Each switch position gives a separate function. The ADC / DAC are clocked at about 360 kHz.
The absolute value of the input voltage (scaled so that 0 - 10.2 V input voltage maps to 0 to 5.000 V at the input to the ADC), drives the ADC; the sign of the input voltage drives an address bit of the EEPROM. Hence negative and positive halves of the function's domain occupy separate parts of the memory.
Here's the circuit. The MC14495 display drivers and displays (included in anticipation of the thing not working!) were omitted in the final design.
The contents of the EEPROM was cooked up using a MATLAB program - it's easy enough to have any functions (single-valued!) I like - I've opted for the usual suspects - sine, cosine, tangent; their inverses; their hyperbolic cousins; logarithm, exponentiation...plus some slightly more esoteric things (Bessel, error, gamma...)
The EEPROM is sandwiched between a AD7820 8 bit ADC and a AD7224 DAC. The ADC drives eight of the (64K) EEPROM's addresses; one is driven by the output of a sign detection op amp; the remaining four address bits are connected to a Lorlin binary-coded (16-position) rotary switch. Each switch position gives a separate function. The ADC / DAC are clocked at about 360 kHz.
The absolute value of the input voltage (scaled so that 0 - 10.2 V input voltage maps to 0 to 5.000 V at the input to the ADC), drives the ADC; the sign of the input voltage drives an address bit of the EEPROM. Hence negative and positive halves of the function's domain occupy separate parts of the memory.
Here's the circuit. The MC14495 display drivers and displays (included in anticipation of the thing not working!) were omitted in the final design.
The contents of the EEPROM was cooked up using a MATLAB program - it's easy enough to have any functions (single-valued!) I like - I've opted for the usual suspects - sine, cosine, tangent; their inverses; their hyperbolic cousins; logarithm, exponentiation...plus some slightly more esoteric things (Bessel, error, gamma...)
![]() |
| sine |
![]() |
| tanh |
![]() |
| cosh |
![]() |
| tangent |
Negative and positive overflow are determined by all zeros or all ones from the EEPROM output - using a NOR gate and NAND gate respectively; since the pin-outs of a 4068 and 4078 are the same I got away with piggy-backing the chips:
(Reminds me of when I had a TI-59 calculator - needless to say I dismantled the thing to have a look...I think I am correct in saying that at least one of the chips (TMC 0583?) was soldered (presumably by hand!) directly onto another chip...that was an amazing bit of circuitry - it even had a LM324 quad op amp in there...)
Saturday, September 27, 2014
Sine of the times
The remaining big part of the computer is a means of generating certain special functions (sine, cosine, their inverses, and desirably, Bessel and the like) of a voltage. Two attempts so far. The first (converting a ramp waveform into a sine wave; sampling the sine wave when the input voltage (x) equals the ramp voltage) ended up as being considered too complicated and capricious. The second, resorting to a classical diode function generator (DFG), made the component count of the first attempt look positively pedestrian...
That's a sixteen breakpoint DFG - and (if set correctly!) would do just one function. Even replacing the potentiometers with resistors would leave an awful lot of parts and board space. The third attempt - which is still on the drawing board - is looking a tad digital...
That's a sixteen breakpoint DFG - and (if set correctly!) would do just one function. Even replacing the potentiometers with resistors would leave an awful lot of parts and board space. The third attempt - which is still on the drawing board - is looking a tad digital...
Sunday, September 7, 2014
Roots and Powers
The root and power board returns x^m or x^1/m, where m is equal to 1, 2, 3, 4, 5 or 6 (this choice being governed principally by the availability or otherwise of selector switches).
Based on the Analog Devices' AD538 chip, plus some circuitry to carry the sign through where appropriate.
I've built three of these.
Next is the sine, cosine and the like...
Based on the Analog Devices' AD538 chip, plus some circuitry to carry the sign through where appropriate.
I've built three of these.
Next is the sine, cosine and the like...
Saturday, July 26, 2014
Subscribe to:
Posts (Atom)













