Low-Voltage Macintosh Toolbox ROM Card Specification

Nathan Pritchard
Howard Tanner

August 15, 1996


1. SCOPE

This document defines a 4 megabyte 3.3 Volt ROM or flash ROM on a 160-pin
DIMM for Common Hardware Reference Platform (CHRP) based systems requiring
a Macintosh Toolbox ROM.  Features include:

+ Same connector as previous 5V-only design
+ Uses different power pins than 5V design
+ 3.3V-only operation for ROM and flash ROM cards
+ Chip Enable for entire device (potential for low-power standby mode)
+ Output Enable (3-state output)
+ Write Enable for flash ROM cards
+ Detect bits for DIMM presence and burst capability
+ 64-bit big endian data bus
+ Possible future expansion to 8 megabytes

This specification is based upon specifications for DIMMs by Apple
Computer, Inc. for use with MacOS.


2. CONNECTOR

Burndy PN ELF160ASC-3Z50.

This is the DIMM connector currently used in CHRP systems for 5V ROM cards.
This connector is compatible with the current Apple Macintosh ROM standard.
It provides 160 pins in 3 bays of 25/25/30 positions, through-hole solder
tails, and metal retention clips.  It is designed and tested for high-speed
systems with signal rise times greater than one nanosecond.


3. CONVENTIONS

a. Endianness

The ROM address and data buses are organized in "big endian" fashion:
the lowest-numbered bit in a group has the greatest effect on the value 
of the group (it is the "most significant bit") and the highest-numbered 
bit has the least effect (it is the "least significant bit").  For 
example, on a big endian data bus D63 is the 1's place, D62 is the 2's 
place, D61 is the 4's place, etc.

b. Signal levels

A signal's active level determines whether it is "asserted" when it is
high, a logical 1; or low, a logical 0.  A signal performs the function or
indicates the status given by its name when the signal is asserted.  When
the active high signal "READY" is a logical 1, it is asserted and the
associated device is ready.  When the active low signal "PRESENT*" is a
logical 1, it is deasserted and the associated device is not present.

Active low signals in this document are indicated by the symbol "*"
following the signal name.


4. PIN LIST
 
----------------------               -----------------------
Pin number | Signal                  Pin number | Signal
----------------------               -----------------------
80         | +5VCC                   160        | +5VCC
79         | +3.3VCC                 159        | +3.3VCC
78         | RESERVED                158        | RESERVED
77         | GND                     157        | GND
76         | D0 (MSB)                156        | D32
75         | D1                      155        | D33
74         | D2                      154        | D34
73         | D3                      153        | D35
72         | RESERVED                152        | RESERVED
71         | +5VCC                   151        | +5VCC
70         | +3.3VCC                 150        | +3.3VCC
69         | D4                      149        | D36
68         | D5                      148        | D37
67         | D6                      147        | D38
66         | D7                      146        | D39
65         | GND                     145        | GND
64         | D8                      144        | D40
63         | D9                      143        | D41
62         | D10                     142        | D42
61         | D11                     141        | D43
60         | RESERVED                140        | RESERVED
59         | +5VCC                   139        | +5VCC
58         | +3.3VCC                 138        | +3.3VCC
57         | D12                     137        | D44
56         | D13                     136        | D45
----------------------               -----------------------
55         | D14                     135        | D46
54         | D15                     134        | D47
53         | GND                     133        | GND
52         | RESERVED                132        | RESERVED
51         | RESERVED                131        | RESERVED
50         | RESERVED                130        | RESERVED
49         | RESERVED                129        | RESERVED
48         | RESERVED                128        | A9
47         | A10 (MSB)               127        | A11
46         | A12                     126        | A13
45         | A14                     125        | A15
44         | A16                     124        | A17
43         | GND                     123        | GND
42         | RESERVED                122        | BURST_CAP*
41         | +5VCC                   121        | +5VCC
40         | +3.3VCC                 120        | +3.3VCC
39         | RESERVED                119        | RESERVED
38         | ROMOE0*                 118        | ROMOE1*
37         | FLASHWE0*               117        | FLASHWE1*
36         | RESET*                  116        | MBROMEN*
35         | RESERVED                115        | ROMCE*
34         | A18                     114        | A19
33         | A20                     113        | A21
32         | A22                     112        | A23
31         | A24                     111        | A25
----------------------               -----------------------
30         | A26                     110        | RESERVED
29         | RESERVED                109        | A27
28         | RESERVED                108        | A28 (LSB)
27         | GND                     107        | GND
26         | D16                     106        | D48
25         | D17                     105        | D49
24         | D18                     104        | D50
23         | D19                     103        | D51
22         | RESERVED                102        | RESERVED
21         | +5VCC                   101        | +5VCC
20         | +3.3VCC                 100        | +3.3VCC
19         | D20                     99         | D52
18         | D21                     98         | D53
17         | D22                     97         | D54
16         | D23                     96         | D55
15         | GND                     95         | GND
14         | D24                     94         | D56
13         | D25                     93         | D57
12         | D26                     92         | D58
11         | D27                     91         | D59
10         | +3.3VCC                 90         | +3.3VCC
9          | +5VCC                   89         | +5VCC
8          | +3.3VCC                 88         | +3.3VCC
7          | D28                     87         | D60
6          | D29                     86         | D61
5          | D30                     85         | D62
4          | D31                     84         | D63 (LSB)
3          | +12VPP                  83         | +12VPP
2          | GND                     82         | GND
1          | +5VPP                   81         | +5VPP
----------------------               -----------------------

NOTE:

D63 (pin 84) is the least significant bit (LSB) of the data bus, and D0
(pin 76) is the most significant bit (MSB).  A28 (pin 108) is the LSB of
the address bus, and A10 (pin 47) is the MSB for the 4 megabyte ROM.  A9
is available for future expansion to an 8 megabyte ROM module, which would
make A9 the MSB of the address bus.


5. PIN ORIENTATION

Card outline:

              ------------------------------------------
              |                                        |
              | 25           25           30           |
              | positions    positions    positions    |
              --          ---          ---            --
               |          | |          | |            |
               ------------ ------------ --------------
Front pin #:   80        56 55        31 30           1
Back pin #:    160      136 135      111 110         81


Connector (top view, with pin numbers):

            |-|160      136 135      111 110         81|-|
            |-|------------|------------|--------------|-|
            | |            |            |              | |
            |-|------------|------------|--------------|-|
            |-|80        56 55        31 30           1|-|


6. SIGNAL DESCRIPTIONS

-------------------------------------------------------------------------
                         |            |     | Active |
Pin Number(s)            | Symbol     | I/O | Level  | Function
-------------------------------------------------------------------------
84-87,91-94,96-99,       | D63-D0     |  O  | HIGH   | Data output (or
103-106,134-137,141-144, |            |     |        | input for flash
146-149,153-156,         |            |     |        | versions)
4-7,11-14,16-19,23-26,   |            |     |        |
54-57,61-64,66-69,73-76  |            |     |        |
-------------------------------------------------------------------------
30,111,31,112,32,113,33, | A26-A10    |  I  | HIGH   | Non-burst
114,34,124,44,125,45,    |            |     |        | addresses
126,46,127,47            |            |     |        |
-------------------------------------------------------------------------
108,109                  | A28,A27    |  I  | HIGH   | Burst mode
                         |            |     |        | addresses
-------------------------------------------------------------------------
128                      | A9         |  I  | HIGH   | For possible
                         |            |     |        | future expansion
                         |            |     |        | to 8 MB DIMMs
-------------------------------------------------------------------------
115                      | ROMCE*     |  I  | LOW    | Module enable
-------------------------------------------------------------------------
38                       | ROMOE0*    |  I  | LOW    | Enables D31-D0
                         |            |     |        | outputs
-------------------------------------------------------------------------
118                      | ROMOE1*    |  I  | LOW    | Enables D63-D32
                         |            |     |        | outputs
-------------------------------------------------------------------------
116                      | MBROMEN*   |  O  | LOW    | Motherboard ROM
                         |            |     |        | enable
-------------------------------------------------------------------------
122                      | BURST_CAP* |  O  | LOW    | Burst capability
                         |            |     |        | detect
-------------------------------------------------------------------------
37                       | FLASHWE0*  |  I  | LOW    | Enables writing to
                         |            |     |        | D31-D0 (for flash
                         |            |     |        | versions)
-------------------------------------------------------------------------
117                      | FLASHWE1*  |  I  | LOW    | Enables writing to
                         |            |     |        | D63-D32 (for flash
                         |            |     |        | versions)
-------------------------------------------------------------------------
36                       | RESET*     |  I  | LOW    | Reset signal for
                         |            |     |        | some flash ROMs
-------------------------------------------------------------------------
8,10,20,40,58,70,79,88,  | +3.3VCC    | PWR | N/A    | +3.3V Power supply
90,100,120,138,150,159   |            |     |        |
-------------------------------------------------------------------------
9,21,41,59,71,80,89,101, | +5VCC      | PWR | N/A    | +5V Power supply
121,139,151,160          |            |     |        |
-------------------------------------------------------------------------
1,81                     | +5VPP      | PWR | N/A    | +5V Programming
                         |            |     |        | voltage (req'd on
                         |            |     |        | all systems)
-------------------------------------------------------------------------
3,83                     | +12VPP     | PWR | N/A    | +12V Programming
                         |            |     |        | voltage (not
                         |            |     |        | required)
-------------------------------------------------------------------------
2,15,27,43,53,65,77,82,  | GND        | PWR | N/A    | Ground
95,107,123,133,145,157   |            |     |        |
-------------------------------------------------------------------------
22,28,29,35,39,42,48-52, | RESERVED   | N/A | N/A    | Reserved for
60,72,78,102,110,119,    |            |     |        | future (and past)
129-132,140,152,158      |            |     |        | use
-------------------------------------------------------------------------

NOTES:

- D63-D0 represent a 64-bit big endian data bus.  The bus is
output-only for ROM versions but bidirectional for flash ROM versions.

- A26-A10 represent part of the big endian address bus.  These bits
remain constant during burst reads.  A9 is available for possible future
expansion to 8 megabyte DIMMs.

- A28 and A27 are also part of the address bus, and they are
incremented for burst reads by the ROM controller logic if the DIMM is
burst capable.  Bits 32-29 are not needed in the address bus because the
DIMM can produce 64-bit output, although the system can enable each
32-bit half independently.

- ROMCE* is provided as an optional chip enable signal for the entire 
module.  The signal should be wired to the chip select/enable pins of the 
individual ROM chips on the DIMM.  The DIMM must be designed with a
pull-down resistor on the signal to be compatible with systems which do 
not wire a signal to this pin.

- MBROMEN* is implemented for those systems that have Toolbox ROM on the
motherboard.  The pin is tied to +3.3VCC on the DIMM, and it can be used
to disable the motherboard ROM when the DIMM is inserted.  It can also
be used as a presence detect bit.

- BURST_CAP* should be low on modules which are capable of burst reads 
(lower access times for reads when only the two least significant bits are
changed) and high on those which are not.

- On DIMMs using flash ROMs, FLASHWE1* and FLASHWE0* must have pull-up 
resistors to be compatible with systems which do not wire signals to 
these pins.  It is also recommended that these signal be routed to 
the card edge through a 0 ohm resistor so that they may easily be 
disconnected entirely, if so desired.

- RESET* is provided for DIMMs assembled with flash ROMs that support
a reset signal.  Systems that wish to support this should wire the system
reset signal to this pin.  This provision ensures that the flash ROMs will
return to read-mode even if a system reset occurs during a write operation.
The DIMM must be designed with a pull-up resistor on the signal to be 
compatible with systems which do not wire a signal to this pin.  It is also
recommended that this signal be routed to the card edge through a 0 ohm
resistor so that it may easily be disconnected entirely, if so desired.

- The +5VCC pins are labelled for historical purposes.  They must be no 
connects on 3.3V DIMMs to avoid problems if they are put in 5V systems.
A 3.3V DIMM will not function in a 5V system, and a 5V DIMM will not
function in a 3.3V system.

- Systems are required to run +5V to the +5VPP pins to support flash
modules that utilize a 5V programming voltage.  Systems may also run
+12V to the +12VPP pins to support flash modules that utilize a 12V
programming voltage, but it is not required.


7. ROM IMPLEMENTATION

7.1. Parts

        The Hitachi Semiconductor & IC Division offers a line of low
voltage 8-Mbit CMOS mask-programmable ROMs: the HN62W448N series.  Four of
these parts configured for 16-bit output will be used to produce a 4
megabyte device with 64-bit output.  These ROMs are available in a 44-pin
SOP (HN62W448NFB) which is pin-compatible with the parts for the Flash ROM 
implementation.

7.2. Timing

        These parts offer access times adhering to current Macintosh
Toolbox ROM designs, i.e., 120 ns (minimum) standard access times and
60 ns (minimum) burst access times.  Hitachi's HN62W448NFB-12 ROMs are 
currently available with these access times.  Parts with 100 ns standard 
access times and 40 ns burst access times should be available in August 
or September 1996.

7.3. I/O Loads

Parameter Symbol | Parameter Description | Min | Max | Unit |
-------------------------------------------------------------
C IN             | Input Capacitance     | --  | 10  | pF   |
C OUT            | Output Capacitance    | --  | 15  | pF   |

7.4. Current Draw

Sym  | Description             | Conditions                | Max   | Unit |
---------------------------------------------------------------------------
I LI | Input Leakage Current   | normal operation          | +/-10 | uA   |
I LO | Output Leakage Current  | normal operation          | +/-10 | uA   |
I DD | Active Supply Current   | V DD = 3.6V, I DOUT = 0mA | 60    | mA   |


8. FLASH ROM IMPLEMENTATION

8.1. Parts

        AMD offers a line of low voltage 8-Mbit CMOS flash ROMs: the
Am29LV800 series.  Four of these parts configured for 16-bit output will 
be used to produce a 4 megabyte device with 64-bit output.  These ROMs are
available in a 44-pin SOP (Am29LV800T-120SC) which is pin-compatible with 
the parts for the ROM implementation.
        Hitachi also offers a line of low voltage 8-Mbit CMOS flash ROMs:
the HN29WT800 series.  These ROMs are available in the same package
(HN29WT800FP) and can be used in the same configuration.
        Unless otherwise noted, the specifications that follow apply
only to the AMD flash ROM chips, but the Hitachi chips may be assumed 
to have similar characteristics.

8.2. Timing

        These parts for the development and debugging phase of the 3.3v
MACROM design offer standard access times adhering to current MACROM
designs, but no capacity for burst reads.  AMD's Am29LV800T-120SC flash 
ROMs are currently available with 120 ns standard access times.  Flash ROMs
with 100 ns standard access times will eventually be available.
        Hitachi's HN29WT800FP-12 flash ROMs are currently available with 
120 ns standard access times.  Flash ROMs with 100 ns and 80 ns standard
access times will eventually be available.

8.3. I/O Loads

Parameter Symbol | Parameter Description   | Typ | Max | Unit |
---------------------------------------------------------------
C IN             | Input Capacitance       | 6   | 7.5 | pF   |
C OUT            | Output Capacitance      | 8.5 | 12  | pF   |
C IN2            | Control Pin Capacitance | 8   | 10  | pF   |

8.4. Current Draw

Sym   | Description              | Conditions       | Max    | Unit |
---------------------------------------------------------------------
I LI  | Input Load Current       | normal operation | +/-1.0 | uA   |
I LO  | Output Leakage Current   | normal operation | +/-1.0 | uA   |
I CC1 | Vcc Active Read Current  | CE* = 0, OE* = 1 | 35     | mA   |
I CC2 | Vcc Active Write Current | CE* = 0, OE* = 1 | 35     | mA   |

8.5. Programming

        The new low-voltage flash ROMs offered by AMD utilize the
standard programming and status-checking algorithms designed for their 
previous flash ROM products.  These are described in detail in the 
Am29LV800 specifications provided by AMD.  The main ideas are 
summarized here.
        The four 8-Mbit flash ROMs can be easily erased and programmed 
in parallel.  Important points:

- Addresses are latched on the falling edge of ROMCE* or the corresponding
FLASHWE*, whichever occurs later.
- Data are latched on the rising edge of ROMCE* or the corresponding 
FLASHWE*, whichever occurs first.
- The ROM chips are held in word-mode for 16-bit output, so only the 
command values that pertain to word-mode programming are applicable.

8.5.1. Command Definitions

-------------------------------------------------------------------------------
            |                         Bus Write Cycle                         |
Command     |-----1----|-----2----|-----3----|-----4----|-----5----|-----6----|
Sequence    |Addr |Data|Addr |Data|Addr |Data|Addr |Data|Addr |Data|Addr |Data|
-------------------------------------------------------------------------------
Reset/Read  |XXXXH|F0H |RA   |RD  |     |    |     |    |     |    |     |    |
-------------------------------------------------------------------------------
Autoselect  |5555H|AAH |2AAAH|55H |5555H|90H |     |    |     |    |     |    |
-------------------------------------------------------------------------------
Program     |5555H|AAH |2AAAH|55H |5555H|A0H |PA   |PD  |     |    |     |    |
-------------------------------------------------------------------------------
Chip Erase  |5555H|AAH |2AAAH|55H |5555H|80H |5555H|AAH |2AAAH|55H |5555H|10H |
-------------------------------------------------------------------------------
Sector Erase|5555H|AAH |2AAAH|55H |5555H|80H |5555H|AAH |2AAAH|55H |SA   |30H |
-------------------------------------------------------------------------------
Sector Erase|XXXXH|B0H |     |    |     |    |     |    |     |    |     |    |
Suspend     |     |    |     |    |     |    |     |    |     |    |     |    |
-------------------------------------------------------------------------------
Sector Erase|XXXXH|30H |     |    |     |    |     |    |     |    |     |    |
Resume      |     |    |     |    |     |    |     |    |     |    |     |    |
-------------------------------------------------------------------------------

Notes:

RA = Address of the memory location to be read.
RD = Data read from location RA during a read operation.

PA = Address of the memory location to be programmed.
PD = Data to be programmed at location PA.

SA = Address of the sector to be erased.  The combination of the higher
order addresses (A10-A16) will uniquely select any sector.

Reset/Read command can be used at any point during the command sequence
to return the device to read mode and reset the internal state machine.

The address values in the table must be put on the address bus at bits
A13-A28.  The data values in the table must be put on the lower 8-bits 
of each 16-bit ROM package being programmed.  For example, for the first
cycle of a program operation to D32-D63, the value 5555H must be put on
address bits A13-A28 and the value 00AA00AAH must be put on data
bits D32-D63.

8.5.2. Operation Status

8.5.2.1. Data Polling (DQ7)

During a programming operation, attempts to read the value at the
programmed address will cause each ROM package to produce the
compliment of the data last written to its eighth bit (DQ7).  Upon
completion of the operation, the data will be correct although the
other data bits make take one additional read operation to switch to
the correct values.  The negation of the data at the polling bits
guarantees that the value read will not be the correct one until 
after the operation has completed.

During an erase operation, read attempts at addresses being erased
will produce a '0' at the polling bits.  Upon completion of the
operation, the read attempts will produce a '1' at the polling bits.

The data polling bits for the DIMM are D40 and D56 for the low word 
(D32-D63), and D8 and D24 for the high word (D0-D31).

8.5.2.2. Toggling (DQ6)

During a progamming or erase operation, successive attempts to read
data from an address being progammed or erase will cause the sixth
data bit (DQ6) of each ROM package to toggle between '1' and '0'.
Upon completion of the operation, the bit will stop toggling and 
valid data may be read.  Either ROMCE* or the appropriate ROMOE*
toggling will cause the bits to toggle.

The toggle bits for the DIMM are D41 and D57 for the low word
(D32-D63), and D9 and D25 for the high word (D0-D31).

8.5.3. Algorithms

8.5.3.1. Embedded Programming Algorithm

For each address/data pair to be programmed:

a. Write four-cycle program command sequence, include programming 
address and data.
b. Data poll device (read at the address being programmed).
c. Is the data correct?  If not, return to step b.

8.5.3.2. Embedded Erase Algorithm

a. Write six-cylce erase command sequence, either chip erase or sector
erase.
b. Data poll device (read at an address being erased).
c. Is the data all ones?  If not, return to step b.