DATAMATH  CALCULATOR  MUSEUM

NEC µPD940 Series

Features

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.

Family Members and Applications

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
   

Architecture

  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

Calculator Logic Implementation

µPD940:

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'

µPD941:

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: None

µPD943:

Capacity: 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

Technical Specifications

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

Note: The provided Technical Specifications are based on actual measurements on a limited number of devices.

Applications Information

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.

DCM-50A Platform Compatibility

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.

Technology

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.

Packaging

The µPD940 uses a standard 0.6” wide 28-pin DIP (Dual In-line Package with a 0.1” / 2.54 mm lead pitch).

Pin Configuration

 

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. 

Keyboard Scan-Matrix

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

Display

Calculators based on the µPD940 Series of single-chip calculator circuits typically make use of 9-digit low-voltage VFDs (Vacuum Fluorescent Displays). 

horizontal rule

If you have additions to the above datasheet please email: joerg@datamath.org.

© Joerg Woerner, September 29, 2024. No reprints without written permission.