DATAMATH CALCULATOR MUSEUM |
NEC started the development of the µPD940 Series of single-chip calculator circuits in 1973, balancing a combination of increased functionality and yet reduced die size due to an improved manufacturing process compared to the original µPD271 design.
The µPD940 integrates a complexity of about 5,500 transistors on a silicon die measuring just 3.80 mm x 3.78 mm, significantly smaller than Texas Instruments’ TMS0800 Series with a die size of around 5.2 mm x 5.1 mm. The feature set of the two products is very similar, NEC was even able to squeeze the square root function and PI function in the ROM (Read-Only Memory) of the µPD940 with a capacity of 256 x 19 bits. The shift-register based data memory (SAM, Serial Access Memory) of the µPD940 has a capacity of 144 bits, organized in three 12 Digits Registers of 48 bits, each. The µPD940 was formally introduced in September 1974 and complemented in February 1975 with the µPD946, increasing both the ROM and SAM capacity of the µPD940, allowing the design of 8-digit calculators with Memory Function.
QUICK-LINK to NEC Calculator Integrated Circuits.
Type | Calculators | Keyboard | Constant (M-D-A-S) |
Digits | Fixed DP | Rounding | Special Functions |
Seg./Dig. Blanking |
(6,7,9) Font |
Entry Overflow |
Calculating Overflow |
µPD940 | Lloyd's Accumatic 30 | [+][−][=] | 1-2-2-2 | 8 | Float | None | [%][+/−] [√x][PI] |
NONE LB, TB |
|||
µPD941 | MBO de Luxe I | [+][−][=] | 1-2-2-2 | 8 | Float | None | [%][+/−] | NONE LB, TB |
|||
µPD943 | Royal Model 90K | [+=][−=][=] | 1-2-X-X | 8 | 2-4 ,F | 5/4 | [%][+/−] | NONE LB, TB |
Description | Comments | |
Architecture | Single-chip Calculator | Second Generation |
Category | Register Processor | Bit-serial |
Related | µPD946 | |
ROM Size | 4,864 Bits | 256 Words * 19 Bits |
RAM Size | 144 Bits | 3 Registers * 48 Bits (12 Digits) |
Outputs | 9 Digits 8 Segments |
VFD Digit Drivers VFD Segment Drivers |
Inputs | 4 Keyboard 1 Clear |
Segment to Keyboard Scan-Matrix Active High |
Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
[2] [x] [3] [+=] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is resulting in an overflow condition. The ninth digit can be cleared with the [CE] key
[1] [2] [3] [4] [5] [6] [7] [8] [9] → 'C12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
[1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is not supported
[0] [.] [4] [5] [+] [0] [.] [5] [5] [=] → '1.'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
[1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CE] [3] [=] → '4.'
Change Sign: The change sign function can be used in mid number entry but is ignored if pressing the [+/−] key before entering the number
[+/−] [2] [x] [3] [=] → '6.'; [2] [+/−] [x] [3] [=] → '-6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' immediate to the left of the number
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable using the [C] key
[1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902'
Divide By Zero: A division of a positive or negative number by zero shows a '0' and 'E' in the leftmost position and is only recoverable using the [C] key
[1] [:] [0] [=] → 'E 0.'; [−] [1] [:] [0] [=] → 'E 0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
[2] [0] [:] [3] [=] → '6.6666666'
Automatic Constant: Implemented for multiplication (1st number used as constant), division (2nd), addition (2nd), and subtraction (2nd)
[3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
[3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
[3] [+] [2] [=] [=] → '7.', [1] [=] → '3.'; [4] [+] [=] [=] → '12.'
[3] [−] [2] [=] [=] → '-1.', [1] [=] → '-1.'; [4] [−] [=] [=] → '-4.'
Percent Function: The [%] key following the [x] key allows with the [+] and [−] keys mark-up and discount calculations. Using the [=] key following the [%] key in multiplication leads to unexpected results
[2] [0] [x] [5] [%] → '1.', [+] → '21.', [=] → '22.'
[2] [0] [x] [5] [%] → '1.', [−] → '19.', [=] → '18.'
[2] [0] [x] [5] [%] → '1.', [=] → '20.'
[5] [:] [2] [0] [%] → '25.', [=] → '1.25'
Known Calculator Logic Bugs:
Negative Square Root Bug: Negative square roots are allowed and result in a negative number
[8] [√x] → '2.8284271'; [−] [8] [√x] → '-2.8284271'
Capacity: Up to 8 digits (positive and negative)
Logic: Algebraic Chain Logic with Automatic Constant
[2] [x] [3] [+=] [4] [x] [5] [=] → '50.'
Number Entry: Right-justified number entry, entering a ninth digit is resulting in an overflow condition. The ninth digit can be cleared with the [CE] key
[1] [2] [3] [4] [5] [6] [7] [8] [9] → 'C12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
[1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: Fixed decimal point arithmetic is not supported
Decimal Alignment: Decimal alignment is not supported
[0] [.] [4] [5] [+] [0] [.] [5] [5] [=] → '1.'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
[1] [+] [2] [C] [3] [=] → '3.'; [1] [+] [2] [CE] [3] [=] → '4.'
Change Sign: The change sign function can be used in mid number entry but is ignored if pressing the [+/−] key before entering the number
[+/−] [2] [x] [3] [=] → '6.'; [2] [+/−] [x] [3] [=] → '-6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' immediate to the left of the number
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is only recoverable using the [C] key
[1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902'
Divide By Zero: A division of a positive or negative number by zero shows a '0' and 'E' in the leftmost position and is only recoverable using the [C] key
[1] [:] [0] [=] → 'E 0.'; [−] [1] [:] [0] [=] → 'E 0.'
Timeout: Not supported
Rounding: Rounding of displayed calculating results is not supported
[2] [0] [:] [3] [=] → '6.6666666'
Automatic Constant: Implemented for multiplication (1st number used as constant), division (2nd), addition (2nd), and subtraction (2nd)
[3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
[3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
[3] [+] [2] [=] [=] → '7.', [1] [=] → '3.'; [4] [+] [=] [=] → '12.'
[3] [−] [2] [=] [=] → '-1.', [1] [=] → '-1.'; [4] [−] [=] [=] → '-4.'
Percent Function: The [%] key following the [x] key allows with the [+] and [−] keys mark-up and discount calculations. Using the [=] key following the [%] key in multiplication leads to unexpected results
[2] [0] [x] [5] [%] → '1.', [+] → '21.', [=] → '22.'
[2] [0] [x] [5] [%] → '1.', [−] → '19.', [=] → '18.'
[2] [0] [x] [5] [%] → '1.', [=] → '20.'
[5] [:] [2] [0] [%] → '25.', [=] → '1.25'
Known Calculator Logic Bugs: NoneCapacity: Up to 8 digits (positive and negative)
Logic: Algebraic Adding Machine Logic with Automatic Constant
[2] [x] [3] [+=] [4] [x] [5] [=] → '20.'
Number Entry: Right-justified number entry, entering a ninth digit is resulting in an overflow condition. The ninth digit can be cleared with the [CE] key
[1] [2] [3] [4] [5] [6] [7] [8] [9] → 'C12345678.'
Decimal Point: First entered decimal point is used, additional decimal point entries are ignored
[1] [.] [2] [.] [3] → '1.23'
Fixed Decimal Point: The decimal point can be set to [2 3 4 F] digits
[2 3 4 F]: [1] [+=] [2] [+=] → '3.000'
Clear: Automatic power-up clear implemented. [C] key clears the whole calculator, [CE] key clears last entry of a number
[1] [+=] [2] [C] [3] [+=] → '3.'; [1] [+=] [2] [CE] [3] [+=] → '4.'
Change Sign: The change sign function can be used in mid number entry but is ignored if pressing the [+/−] key before entering the number
[+/−] [2] [x] [3] [=] → '6.'; [2] [+/−] [x] [3] [=] → '-6.'
Number Display: Right-justified number display with leading-zero suppression
Negative Numbers: Negative numbers are shown with '-' at leftmost display position D9
Calculating Overflow: An overflow shows the result with the decimal point shifted 8 positions to the left and 'C' (or 'E' for negative numbers) in the leftmost position and is recoverable using the [CE] key without clearing the display and with the [C] key
[1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902', [CE] → ''1.5239902', [:] [1] [0] [=] → '0.152399'
Divide By Zero: A division of a positive or negative number by zero shows a '0' and 'C' in the leftmost position and is only recoverable using the [C] key
[1] [:] [0] [=] → 'C 0.'; [1] [−=] [:] [0] [=] → 'C 0.
Timeout: Not supported
Rounding: Rounding of displayed calculating results is supported in Fixed decimal Point Mode
[2 3 4 F]: [2] [0] [:] [3] [=] → '6.667'
Automatic Constant: Fully implemented for multiplication (1st number used as constant) and division (2nd), partly implemented for addition (2nd) and subtraction (2nd)
[3] [x] [2] [=] [=] → '18.', [1] [=] → '3.'; [4] [x] [=] [=] → '64.'
[3] [:] [2] [=] [=] → '0.75', [1] [=] → '0.5.'; [4] [:] [=] [=] → '0.25'
[3] [+=] [2] [+=] [+=] → '7.', [1] [+=] → '8.'; [4] [+=] +[=] → '8.'
[3] [+=] [2] [−=] [−=] → '-1.', [1] [−=] → '-2.'; [4] [−=] [−=] → '-8.'
Percent Function: The [%] key following the [x] key allows with the [+=] and [−=] keys mark-up and discount calculations. Using the [=] key following the [%] key in multiplication leads to unexpected results
[2] [0] [x] [5] [%] → '1.', [+=] → '21.', [+=] → '22.'
[2] [0] [x] [5] [%] → '1.', [−=] → '19.', [−=] → '18.'
[2] [0] [x] [5] [%] → '1.', [=] → '20.'
[5] [:] [2] [0] [%] → '25.', [=] → '1.25'
Known Calculator Logic Bugs: None
Item | Min | Typ | Max | Unit | Comments |
VSS | 0 | V | |||
VDD | -6.0 | V | |||
VGG | -12.0 | V | |||
IDD | 5.3 | mA | REXT = 680 kOhm, Segment- and | ||
IGG | 0.7 | mA | Digit-Driver Load 100 kOhm to VGG | ||
VOUT | -35 | -30 | 0.3 | V | VFD Output Voltage through 100 kOhm Resistors |
VIN (K0-K3) | -35 | -30 | 0.3 | V | Input Voltage through 100 kOhm Resistors |
Int. CK | 50 | kHz | REXT = 680 kOhm to VGG CEXT = 56 pF to VSS |
CLOCK GENERATOR
All devices of the µPD940 Series of single-chip calculator circuits include an internal clock oscillator that can be enabled by connecting Pin 28 (CLK/REXT/CEXT) with a resistor REXT to VGG and a capacitor CEXT to VSS. Connecting Pin 28 directly to an external clock source overrides the internal clock oscillator and the chip can be operated with frequencies between 20 kHz and about 100 kHz. The external clock frequency should have a duty cycle close to 50% and oscillate between VSS and VDD.
The frequency of the internal clock oscillator is set with the external resistor/capacitor combination REXT/CEXT with nominal values of 680 kOhm and 56 pF, respectively for a typical frequency of 50 kHz. Here at the Datamath Calculator Museum we operate the µPD940 Devices-under-Test (DUT) with an external 680k Ohm resistor but verify its operation between 300 kOhm and 1 MOhm.
The operating frequency of the internal clock oscillator depends not only on the external resistor/capacitor combination, but its supply voltages VDD and VGG, too. We observed with our DUT opposite gradients of the oscillation frequency for VDD and VGG variations.INTER-DIGIT BLANKING
The µPD940 Series of single-chip calculator circuits is blanking its Digit Outputs briefly before and after the Segment Output change, while scanning the keyboard and display.
TEST MODE
The chip design of the µPD940 Series of single-chip calculator circuits includes an (undocumented) Test Mode that can be activated with two external Pins, namely CH1/ (Pin 2) and CH2/ (Pin3). In normal Calculator Mode both Pins are tied to VSS, the three other combinations are used for the Test Modes:
CH1/ (Pin 2) |
CH2/ (Pin 3) |
µPD940 Mode |
VSS | VSS | Calculator Mode |
VDD | VSS | Test Mode 1 |
VSS | VDD | Test Mode 2 |
VDD | VDD | Test Mode 3 |
Test Mode 1:
Observing the clock input, keyboard scanning inputs K0 to K3, digit-driver outputs D1 to D9
and segment-driver outputs SA to SG and SDP in Test Mode 3 shows the
following activities:
• D2: CLK divided by 2 for 2-Phase Clock • SA: Clock Phase 2 • SF: Clock Phase 1 |
Note: µPD940 left thumbails, µPD941 right thumnails.
Test Mode 2: Observing the clock input, keyboard scanning inputs K0 to K3, digit-driver outputs D1 to D9 and segment-driver outputs SA to SG and SDP in Test Mode 2 shows strong activities on all segment-driver outputs while the digit-driver outputs are scanning in D1 → D9 direction at a rate of about 1,040 Hz.
Test Mode 3:
Observing the clock input, keyboard scanning inputs K0 to K3, digit-driver outputs D1 to D9
and segment-driver outputs SA to SG and SDP in Test Mode 1 shows periodic activities on with all other outputs static on logic low or logic high level.
The Datamath Calculator Museum DCM-50A (PLAYGROUND) supports the Characterization of the µPD940 Series of single-chip calculator circuits using the DCM-50A Playground DIL42 Adapter mounted on top of the DCM-50A PG Frame Carrier and the voltages VSS set to 6.0V and VDD/VGG set to -6.0V. Alternatively, the more flexible - but less comfortable - DCM-50A Playground BB400 Adapter can be used.
The µPD940 was manufactured in a 7.5 um metal gate PMOS process (metal width = 0.30 mil / 7.5 um, metal spacing = 0.30 mil / 7.5 um, diffusion width = 0.25 mil / 6.0 um, diffusion spacing = 0.35 mil / 9.0 um).
The die size of the µPD940 is approximately 150 mils * 150 mils / 3.8 mm * 3.8 mm.
The µPD940 uses a standard 0.6” wide 28-pin DIP (Dual In-line Package with a 0.1” / 2.54 mm lead pitch).
• VSS/VDD/VGG - Confirmed Pin Function from Die Photo • (VSS/VDD/VGG) - Pin Function from Calculator Schematics • N.C. - Confirmed Pin Function from Die Photo or Pin Measurement • (N.C.) - Pin Function from Calculator Schematics |
Pin | IO | Function | Pin | IO | Function |
1 | I | Automatic Clear (low) | 28 | I | CLK/REXT, CEXT |
2 | I | Test Mode CH1 | 27 | V | Negative Voltage VGG |
3 | I | Test Mode CH2 | 26 | V | Negative Voltage VDD |
4 | O | Digit driver 1 (LSD) | 25 | O | Segment driver DP |
5 | O | Digit driver 2 | 24 | O | Segment driver G |
6 | O | Digit driver 3 | 23 | O | Segment driver F |
7 | O | Digit driver 4 | 22 | O | Segment driver E |
8 | O | Digit driver 5 | 21 | O | Segment driver D |
9 | O | Digit driver 6 | 20 | O | Segment driver C |
10 | O | Digit driver 7 | 19 | O | Segment driver B |
11 | O | Digit driver 8 (MSD) | 18 | O | Segment driver A |
12 | O | Digit driver 9 (sign) | 17 | I | Key-matrix input 0 |
13 | I | Key-matrix input 3 | 16 | I | Key-matrix input 1 |
14 | V | Common Voltage VSS | 15 | I | Key-matrix input 2 |
The Segment drivers A-G and DP (Decimal Point) are connected to the display in the pictured way. |
The keyboards of all calculators based on the µPD940 Series of single-chip calculator circuits consist of an x/y-matrix connected to six segment-driver outputs and the key-matrix inputs K0 to K3.
Display scanning is performed in D1 → D9 direction at a rate of about 1,040 Hz:
• State Time = 1 Clock =
0.020 ms @ CK=50 kHz • Digit Time = 4 States = 0.080 ms @ CK=50 kHz • Scan Time = 12 Digit Times (D1 to D9 with D10 to D12 a dead cycle) = 0.960 ms @ CK=50 kHz |
Note: The µPD940 Series of single-chip calculator circuits activate only the necessary digit-driver outputs, while displaying a "0." only D1 would be enabled. The D10 to D12 Digit Times are used for keyboard scanning with the segment-driver outputs, while the display is blanked.
µPD940 | ||||
K0 | K1 | K2 | K3 | |
SA | CE | C | ||
SB | = | % | √x | +/− |
SC | + | − | × | ÷ |
SD | 7 | 8 | 9 | PI |
SE | 3 | 4 | 5 | 6 |
SF | . | 0 | 1 | 2 |
µPD941 | ||||
K0 | K1 | K2 | K3 | |
SA | CE | C | ||
SB | = | % | +/− | |
SC | + | − | × | ÷ |
SD | 7 | 8 | 9 | |
SE | 3 | 4 | 5 | 6 |
SF | . | 0 | 1 | 2 |
µPD943 | ||||
K0 | K1 | K2 | K3 | |
SA | [F234] | [F234] | [F234] | [F234] |
SB | = | % | CE | C |
SC | + | − | × | ÷ |
SD | 7 | 8 | 9 | +/− |
SE | 3 | 4 | 5 | 6 |
SF | . | 0 | 1 | 2 |
Calculators based on the µPD940 Series of single-chip calculator circuits typically make use of 9-digit low-voltage VFDs (Vacuum Fluorescent Displays).
If you have additions to the above datasheet please email: joerg@datamath.org.
© Joerg Woerner, September 29, 2024. No reprints
without written permission.