DATAMATH  CALCULATOR  MUSEUM

NEC µPD946 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 µPD273 design.

The µPD940 was formally introduced in September 1974 and 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 µPD946 was introduced in February 1975, increasing both the ROM and SAM capacity of the µPD940 and allowing the design of 8-digit calculators with Memory Function.
In 1965, Gordon E. Moore - co-founder of Intel - postulated that the number of transistors that can be packed into a given unit of space will double about every two years, allowing more functionality or smaller chips. Texas Instruments' TMS0100 Product Family serves as a perfect example for this approach:

TMS0100: 53,000 mil2 / 34 mm2 - Original design, ROM (320 Words * 11 Bits), SAM (13 Digits Registers), 10 um
TMS0600: 47,000 mil2 / 31 mm2 - Increased ROM (384 Words * 11 Bits), identical SAM (13 Digits Registers), 8 um
TMS0700: 42,000 mil2 / 27 mm2 - Identical ROM (320 Words * 11 Bits), identical SAM (13 Digits Registers), 8 um
TMS0800: 39,000 mil2 / 25 mm2 - Identical ROM (320 Words * 11 Bits), reduced SAM (11 Digits Registers), integrated Segment Drivers, 8 um

When the design team at NEC started the development of the µPD946 Series, it increased not only the size of the program memory from 256 Words to 512 Words, but even the data memory from 3 Registers to 5 Registers. The feature set of the µPD946 includes the complete functionality of the µPD940 and adds a 5-key memory and the square function. To balance the functionality of the calculator with its keyboard size, NEC allowed the designer to chose between a keyboard layout with or without an [F] key and with separate [MR] and [MC] keys or a combined [MRC] key. Likewise supports the calculator logic implementation of the µPD946 both "old school" % and "modern" %± functionality. Compared to the 6X4 keyboard scan matrix of the µPD940, used the µPD946 a 10x4 layout for a total of up to 40 keys and switches.

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
µPD946 MBO de Luxe IV, Royal RSC-40 [+][−][=] 1-2-2-2 8 Float None  [+/−][M+=][M−=]
[MR][MC][MRC][ - ]
[%][1/x][x2][√x]
[PI]
NONE
S1, S16
   
µPD947 Royal Model 91K [+=][−=][=] 1-2-X-X 8 2-4, F 5/4  [+/−][M+=][M−=]
[MR][MC][MRC][ - ]
[%][1/x][x2][√x]
NONE
S1, S16
   

Architecture

  Description Comments
Architecture Single-chip Calculator Second Generation
Category Register Processor Bit-serial
Related µPD278 Successor of µPD277
ROM Size 8,704 Bits 512 Words * 17 Bits
RAM Size 260 Bits 5 Registers * 52 Bits (13 Digits)
Outputs 9 Digits
9 Segments
VFD Digit Drivers
VFD Segment Drivers
Inputs 4 Keyboard
1 Clear
Segment to Keyboard Scan-Matrix
Active High

Calculator Logic Implementation

µPD946:

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 not be cleared with the [CE] key
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → 'C1.2345678.', [CE] → '0.'
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 '-' in the leftmost position
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 [C] key
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → ''C1.5239902'
Memory: 5-key memory with [M+=], [M−=], [MR], [MC] and [MRC] keys implemented. Memory store is indicated with '.' in the leftmost position
   [MC] [3] [x] [2] [M+=] → '.   6.', [C] → '.   0.', [MRC] → '.   6.', [MRC] → '0.'
Auto-Summation: Auto-Summation can be enabled with an external switch and adds with each press of the [=] key the display result to the value already stored in the memory.  Memory store is indicated with '.' in the leftmost position
   [ - ] [MC] [3] [x] [2] [=] → '.   6.', [=] → '.   6.', [MR] → '.   12.'
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: If selected, the display blanks out about 30 seconds after the last operation and shows only a '-' in the rightmost digit. Timeout is recoverable with the [CE/D] key
   [1] [2] .. 30 seconds → '-', [CE/D] [3] → '123.'
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 [+] and [−] keys followed by the [%] key allows mark-up and discount calculations. Using the [=] key following the [%] key in multiplication leads to unexpected results
   [2] [0] [+] [5] [%] → '1.', [=] → '21.'
   [2] [0] [-] [5] [%] → '1.', [=] → '19.'
   [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:

Calculator Overflow Bug: Calculator overflow is allowed and calculations can be continued by ignoring the overflow condition
   [1] [2] [3] [4] [5] [x] [1] [2] [3] [4] [5] [=] → 'C1.5239902', [:] [1] [2] [3] [4] [5] [=] → '12344.999'
Memory Overflow Bug: A memory overflow keeps the result with the decimal point shifted 8 positions to the left in the memory and is only indicated with 'C.' in the leftmost position when reading the stored number. Normal operation can be resumed without clearing the number
   [MC] [9] [9] [9] [9] [9] [9] [9] [8] [M+=] → '.99999998.', [3] [M+=] → '.   3.', [C] → '.   0.', [MR] → 'C.1.0000000', [:] [1] [0] [=] → '.10000000.'
Negative Square Root Bug: Negative square roots are allowed and result in a negative number
   [8] [√x] → '2.8284271'; [8] [+/−] [√x] → '-2.8284271'

µPD947:

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 not be cleared with the [CE] key
   [1] [2] [3] [4] [5] [6] [7] [8] [9] → 'C1.2345678.', [CE] → '0.'
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'
Memory: 5-key memory with [M+=], [M−=], [MR], [MC] and [MRC] keys implemented. Memory store is indicated with '.' in the leftmost position
   [MC] [3] [x] [2] [M+=] → '.   6.', [C] → '.   0.', [MRC] → '.   6.', [MRC] → '0.'
Auto-Summation: Auto-Summation can be enabled with an external switch and adds with each press of the [=] key the display result to the value already stored in the memory.  Memory store is indicated with '.' in the leftmost position
   [ - ] [MC] [3] [x] [2] [=] → '.   6.', [=] → '.   6.', [MR] → '.   12.'
Memory Overflow: A memory overflow keeps the stored value in place and is indicated with and 'C.' in the leftmost position. It is only recoverable using the [C] key
   [MRC] [MRC] [9] [9] [9] [9] [9] [9] [9] [8] [M+=] → '.99999998.', [3] [M+=] → 'C.   0.', [C] → '.   0.', [MRC] → '.99999998.'
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 followed by the [x] key allows with the [+=] and [−=] keys mark-up and discount calculations. Using the [+=] or [−=] keys multiple times leads to unexpected results
   [2] [0] [x] [5] [%] → '1.', [+=] → '21.', [+=] → '22.', [+=] → '43.'
   [2] [0] [x] [5] [%] → '1.', [−=] → '19.', [−=] → '-18.', [−=] → '-37.'
   [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'

Technical Specifications

ABSOLUTE MAXIMUM RATINGS

Item Min Typ Max Unit Comments
VDD -15.0   0.3 V to VSS
VGG -15.0   0.3 V to VSS
VOUT -30.0   0.3 V VFD Output Voltage through 50 kOhm Resistors
VIN
(AC, CH, CG)
-15.0   0.3 V Input Voltage through 50 kOhm Resistors
VIN
(NK, FK1, FK2, LK)
-30.0   0.3 V Input Voltage through 50 kOhm Resistors


RECOMMENDED OPERATING CONDITIONS

Item Min Typ Max Unit Comments
VSS   0   V   
VDD -4.95 -4.5 -4.05 V   
VGG -9.9 -9.0 -8.1 V   
VOUT -30.0   0 V VFD Output Voltage through 100 kOhm Resistors
VIH -1.8   0 V Input Voltage through 100 kOhm Resistors
VIL -30.0   -6.5 V Input Voltage through 100 kOhm Resistors
CCG   1,500   pF CG to VSS


ELECTRICAL CHARACTERISTICS

Item Min Typ Max Unit Comments
IDD   2.3 3.5 mA CCG = 1,500 pF, Segment- and
IGG   1.0 1.8 mA Digit-Driver Load 100 kOhm to VGG
ION1 -1.0     mA VOT = -1.0 V
ION2 -3.0     mA VOT = -2.0 V
IOFF     -10 uA VOT = -28.0 V
IIH     +200 uA VIT = -1.8 V
IIL     -20 uA VIT = -24.0 V
FOSC 26 60   kHz CCG = 1,500 pF,

Applications Information

CLOCK GENERATOR

All devices of the µPD946 Series of single-chip calculator circuits include an internal clock oscillator that can be enabled by connecting Pin 28 (CLK/CEXT) with 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 capacitor CEXT with a nominal value of 1,500 pF, respectively for a typical frequency of 60 kHz. Here at the Datamath Calculator Museum we operate the µPD946 Devices-under-Test (DUT) with an external 1,500 pF capacitor but verify its operation between 700 pF and 2,500 pF.

The operating frequency of the internal clock oscillator depends not only on the external capacitor, but its supply voltages VDD and VGG, too. We observed with our DUT a slightly negative gradients of the oscillation frequency VGG variations and negligible changes over or VDD variations.

TIMEOUT FEATURE

To increase the operating time of battery-powered handheld calculators, NEC designed for the µPD946 Series a so-called Timeout feature. When no key presses are detected for about 30 seconds, the display blanks out and shows only a '-' in the rightmost digit to reduce power consumption of the calculator. Timeout is recoverable with the [CE/D] key or interrupted with pressing any other key. The Timeout feature is implemented in the Firmware of the µPD946 single-chip calculator circuit and is activated with a Diode connected in the keyboard matrix between segment-driver output SH and keyboard-matrix input K3.

INTER-DIGIT BLANKING

The µPD946 Series of single-chip calculator circuits is blanking its Digit Outputs for one State Time before (S1) and after (S16) the Segment Output change, while scanning the keyboard and display.

TEST MODE

The chip design of the µPD946 Series of single-chip calculator circuits includes an (undocumented) Test Mode that can be activated with two external Pins, namely AC (Pin 25) and CH (Pin 1). In normal Calculator Mode Pin 25 is tied to VGG and Pin 1 is tied to VSS, the three other combinations are used for the Test Modes:

AC
(Pin 25)
CH
(Pin 1)
µPD946 Mode
VGG VSS Calculator Mode
VSS VSS Test Mode 1
VGG VGG Test Mode 2
VSS VGG Test Mode 3


Test Mode 1: Observing the clock input, keyboard scanning inputs NK, FK1, FK2 and LK, digit-driver outputs D1 to D9 and segment-driver outputs SA to SH and SDP in Test Mode 1 shows activities on all segment-driver outputs while the digit-driver outputs are disabled.

Note: µPD946 left thumbnails and µPD947 right thumbnails.



Test Mode 2: Observing the clock input, keyboard scanning inputs NK, FK1, FK2 and LK, digit-driver outputs D1 to D9 and segment-driver outputs SA to SH and SDP in Test Mode 2 shows strong activities on the digit-driver outputs D4 to D9 while the segment-driver outputs are disabled.



Test Mode 3: Observing the clock input, keyboard scanning inputs NK, FK1, FK2 and LK, digit-driver outputs D1 to D9 and segment-driver outputs SA to SH and SDP in Test Mode 3 shows periodic activities on the segment-driver outputs SE and SF 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 µPD946 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 -5.0V. Alternatively, the more flexible - but less comfortable - DCM-50A Playground BB400 Adapter can be used. While the keyboard of the DCM-50A Platform natively supports the segment scanning approach utilized with the NEC µPD946 Series, is it limited to the segment outputs A to G and DP as known from Texas Instruments' TMS0950 and TMS0970/TMC0900 Product Families. The DCM50A Playground KBD123 Keyboard with Switch Matrix overcomes these limitations of the DCM-50A keyboard and supports the architecture of the µPD946 Series. It is plugged on top of the DCM-50A Platform and centered around a 12x3 switch matrix keyboard with patch field for selector switches with diode matrix. All pins of the matrix (12 Columns, 3 keyboard rows and 1 switch row) are directly accessible on pin headers and can be connected with the matching pins on the DCM50A Playground DIL42 or DCM50A Playground BB400 Daughter Boards.

Technology

The µPD946 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 µPD946 is approximately 175 mils * 150 mils / 4.4 mm * 3.8 mm.

Packaging

The µPD946 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 Test Mode CH 28 I CLK/CEXT
2 O Digit driver 1 (LSD) 27 V Negative Voltage VGG
3 O Digit driver 2 26 V Negative Voltage VDD
4 O Digit driver 3 25 I Test Mode AC
5 O Digit driver 4 24 O Segment driver A
6 O Digit driver 5 23 O Segment driver B
7 O Digit driver 6 22 O Segment driver C
8 O Digit driver 7 21 O Segment driver D
9 O Digit driver 8 (MSD) 20 O Segment driver E
10 O Digit driver 9 (sign) 19 O Segment driver F
11 I Key-matrix input NK 18 O Segment driver G
12 I Key-matrix input FK1 17 O Segment driver H
13 I Key-matrix input FK2 16 O Segment driver DP
14 V Common Voltage VSS 15 I Key-matrix input LK
The Segment drivers A-H and DP (Decimal Point) are connected to the display in the pictured way. 

Keyboard Scan-Matrix

The keyboards of all calculators based on the µPD946 Series of single-chip calculator circuits consist of an x/y-matrix connected to nine segment-driver outputs, common voltage VSS and the key-matrix inputs NK, FK1, FK2 and LK.

Display scanning is performed in D1 → D4 → D7 → D2 → D5 → D8 → D3 → D6 → D9 direction at a rate of about 320 Hz. A short pause for parallel keyboard scanning is inserted every three digits:

State Time = 1 Clock = 0.020 ms @ CK=50 kHz
Digit Time = 16 States  = 0.320 ms @ CK=50 kHz
Keyboad Time = 4 States  = 0.080 ms @ CK=50 kHz
Scan Time = 9 Digit Times + 3 Keyboard Times = 3.120 ms @ CK=50 kHz

Note: The µPD946 Series of single-chip calculator circuits activate only the necessary digit-driver outputs, while displaying a "0." only D1 would be enabled.

Keyboard scanning of the µPD946 differs from the µPD947: The µPD946 is inserting every three Scan Times a brief sequential keyboard scanning cycle, even if no keypress is detected during the parallel keyboard scanning in the short pause every three digits. The µPD947 is scanning the keyboard only sequentially if a keypress was detected during the parallel keyboard scanning.

 

µPD946

  NK FK1 FK2 LK
VSS 0 C %  
SA 1 x =
(√x)
 
SB 2 MR M+=  
SC 3 MC M−=  
SD 4 PI +
(PI)
 
SE 5 +/−
(+/−)
 
SF 6 1/x ÷
(1/x)
 
SG 7 x2 ×
(x2)
[ - ]
SH 8 MRC . [- TIME
OUT
]
SDP 9 (F) CE/D  

 

µPD947

  NK FK1 FK2 LK
VSS 0 C %  
SA 1 x =
(√x)
 
SB 2 MR M+= [F234]
SC 3 MC M−= [F234]
SD 4   += [F234]
SE 5 +/− −=
(+/−)
 
SF 6 1/x ÷
(1/x)
 
SG 7 x2 ×
(x2)
[ - ]
SH 8 MRC .  
SDP 9 (F) CE  

Display

Calculators based on the µPD946 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.