Description
FUSE DATA STORAGE SYSTEM
USING CORE MEMORY
TECHNICAL FIELD
The invention pertains to semiconductor non¬ volatile memories known as serial memories, and more particularly, to a system for storing configuration data bits, known as fuse data, for such memories.
BACKGROUND ART
A serial memory is a memory that is accessed by a bit stream over a bus having a small number of wires, typically two, one for data and one for a clock or synchronizing signal. Oftentimes, it is advantageous to be able to fine tune the serial memory. Typically, non¬ volatile bits are used to accomplish fine tuning of a serial memory. In the past, such non-volatile bits were stored by fuses and became known as "fuse bits" . Today these bits are frequently retained in non-volatile memory cells. Use of fuse bits provides an easy and efficient way to make adjustments to a serial memory.
Fuse bits are configuration data for ancillary semiconductor memory support circuits particularly for serial memories, allowing control or change of configuration of the ancillary circuits for read or write operations. For example, fuse bits can specify reference voltages for sense amplifiers or voltages for charge pumps or pulse duration for controlling charge pump switches. In the prior art, fuse bits were stored outside of main memory.
With reference to Fig. 1, a known micro¬ controller 11, such as Atmel Corporation's AT89CX051 is connected by a 2-wire bus 13 to a plurality of non-
volatile memory devices, such as the serial memories 21 ... 29. In the protocol described below and in this application, up to 8 serial memories may be connected to bus 13. The number of serial memories could be expanded with certain modifications of the addressing system. A typical serial memory is one of Atmel Corporation's AT24CXX series of devices.
A bidirectional data transfer protocol is utilized by AT24CXX devices of the prior art, allowing a number of compatible devices to share a common 2-wire bus. The bus consists of a serial clock (SCL) line 15 and a serial data (SDA) line 17. The clock is generated by the controller 11, acting as the bus master, and transmitted on line 15 while data is transmitted serially on the data line 17, most significant bit first, synchronized to the clock signal. The protocol supports bidirectional data transfers in 8-bit bytes, although other bit-widths are possible with other memory devices. The bus master 11 initiates a data transfer by generating a start condition on the bus. This is followed by transmission of a command byte containing the device address of the intended recipient, one of the memory devices 21 ... 29. The command byte consists of a 4-bit fixed portion and a 3-bit programmable portion that is the device address. The fixed portion must match the value hard-wired into the slave, while the programmable portion allows the master to select between a maximum of eight slaves of similar type on the bus. The memory devices 21 ... 29, such as AT24CXX serial EEPROMs, receive the command byte with a fixed portion equal to '1010' and a programmable portion matching the address inputs (AO, Al, A2) .
The eighth bit in the command byte specifies a write or read operation. After the eighth bit is transmitted, the master 11 releases the data line and
generates a ninth clock. If a slave of one of the memory devices 21 ... 29 has recognized the transmitted device address, it will respond to the ninth clock by generating an acknowledge condition on the data line. A slave which is busy when addressed may not generate an acknowledge.
This is true for the AT24CXX when a write operation is in progress .
Following receipt of the slave's address acknowledgment, the master 11 continues with the data transfer. If a write operation has been ordered, the master 11 transmits the remaining data, with the slave acknowledging receipt of each byte. If the master has ordered a read operation, it releases the data line and clocks in data sent by the slave. After each byte is received, the master 11 generates an acknowledge condition on the bus 13. The acknowledge is omitted following receipt of the last byte. The master terminates all operations by generating a stop condition on the bus 13. The master 11 may also abort a data transfer at any time by generating a stop condition.
With reference to Fig. 2, data bus 13 is seen connected to memory device 21 serially communicating with a controller, not shown. The two wires which comprise the data bus 13 are the serial clock line 15 and the serial data line 17, both seen connected to start-stop logic 31, serial control logic 33 and output logic 49. The start-stop logic block 31, in combination with the serial control logic 33, recognizes the device address of memory device 21, thereby initiating the preparation of the ancillary circuits necessary to support a memory read or write operation. These ancillary circuits include a high-voltage pump and timing circuit 37, a data word address counter 35, and data recovery circuit 39. Preparation of the circuits includes supplying chip enable signals, reference or power supply voltage levels,
address loading or incrementing signals, etc. The X- decoder 41 and Y-decoder 43, as well as serial multiplexer 47 and output logic 49 and output driver 51, are also prepared for reading or writing a memory word from the memory core 45. The various data bits that enable these ancillary circuits are the fuse bits described in this application. It is seen from Fig. 2 that the enabling and configuring fuse bits are stored outside of the memory core 45, namely in the logic circuits 31 and 33, or alternatively in registers elsewhere in a memory device. It is the storage of fuse bits that the present application addresses.
An object of the invention was to reduce circuitry in a serial memory device, while at the same time not yielding speed or accuracy of the device.
SUMMARY OF THE INVENTION
The above objects have been achieved in a semiconductor non-volatile serial memory that stores fuse data in the memory core. This would seem improbable in the prior art since it would seem that any data from memory could not be used until read circuitry is set up. However, in the present invention, a specially generated pulse fetches the initialization data for read operation from the memory core simultaneously with input of the first command byte on a serial data bus. By the time the first command byte is completely received, initialization of read circuitry outside of the memory is complete. The first command byte specifies a read or write operation. If a read operation is specified, the read circuitry has just been set up and memory core data words can be read. If a write operation is specified, the next command byte, which is address byte, will be sent to the non-volatile serial memory. Simultaneously with the input of the next command byte, the specially generated pulse fetches
initialization data for write operation from the memory core. In each case, a read related fuse byte or a write related fuse byte is fetched from the memory core and read into registers that operate read and write control circuits outside of the memory. All of this is done on- the-fly while opcodes for read or write operations are being received in a serial bit stream. The first bit in a command byte after a start pulse launches the specially generated pulses so that read circuitry can be set up by the time the last bit in the first command byte arrives on the data bus.
By storing fuse bits in the memory core, storage of fuse data is simplified and storage circuitry is reduced.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is an electrical block diagram of a plurality of serial memories connected as slaves under control of a master controller unit by means of a serial bus in accordance with the prior art.
Fig. 2 is an electrical block diagram of one of the serial memories, shown in Fig. 1.
Fig. 3 is an electrical block diagram of a serial memory in accordance with the present invention. Figs. 4 and 5 are timing diagrams for read and write operations, respectively, some generated by a master controller, as in Fig. 1, for use with a serial memory as shown in Fig. 3.
BEST MODE FOR CARRYING OUT THE INVENTION
With reference to Fig. 3, memory core 51 is an X-Y array of memory cells, preferably CMOS EEPROM memory cells arranged in rows and columns in the usual way. For convenience, rows may be organized as pages of logical memory. In a first byte, shown as byte 53 of fuse page
54, read related fuse data is stored. In a second byte, shown as byte 55 of fuse page 54, write related fuse data is stored. In both bytes, the stored data is organized as 8-bit words so that a single memory address corresponds to an 8-bit word.
A controller, not shown in Fig. 3, communicates with memory core 51 on serial data bus 61 having a serial clock line 65 and serial data line 63. Both lines feed logic block 67 that shapes data using the transmitted clock signal and forwards data to memory core 51 using X,Y address logic 71, 73, respectively.
When bits of a new command first arrive at logic block 67, first and second read fuse enable signals are generated, represented by blocks 75 and 77, respectively. This is done automatically and without intervention. These signals are generated immediately upon the arrival of a new command in order to fetch fuse data from memory to alert ancillary circuits 81 that are needed for reading and writing data from and into memory core 51. The signals must act simultaneously with, or before, the arrival of the first command byte so that the first data word from the memory core can be read.
The ancillary circuits 81 may be a charge pump, voltage generators for supplying needed voltages, timing circuits, switches and configuration generating logic. The data stream for the ancillary circuits is fed to ancillary circuits 81 on line 83 from read-write control circuit 85. In turn the read-write control circuit 85 is fed by a circuit means 87 which has a dedicated X decoder 91, multiplexers 95 and 97, bit decoder 101, sense amplifier 103 and output line 105. The output line 105 feeds register bank 107 having 8 registers Reg 0, Reg 1 .... Reg 7. In turn, the register bank 107 feeds read- write control circuit 85.
Returning to the read fuse enable signals represented by blocks 75 and 77, termed RDFENl and RDFEN2 (for read fuse enable signal one and two) , one should note that they directly access memory core 51 through address circuitry, namely the dedicated X decoder 91 and the usual Y decoder 73. The X decoder 91 is not the normal X decoder, but a dedicated circuit that directly accesses the read related fuse byte 53 and the write related fuse byte 55, both in memory core 51 specified by a Y address in Y decoder 73. This fuse data is organized in 8 bit words. Multiplexer 95, connected to Y decoder block 73 identifies which of the bytes 53 and 55 is being accessed. The X decoder 91 accesses the required 8 bits that are fed to a serializing multiplexer 97 that is assisted by a bit decoder 101, giving shape to the bits, and a sense amplifier 103 whereby an 8 bit serial stream is fed to the register bank 107 before loading into read- write control circuit 85.
While the logic block 67 is receiving an initial command, the configuration activity established by RDFENl and RDFEN2 is under way. By the time the configuration activity is complete, the initial word has just been received and the ancillary circuits 81 have received configuration information from the read/write control circuit 85 on line 83.
In the 2-wire serial EEPROM protocol of the prior art, described with reference to Fig. 1, there is an 8-bit start byte (opcode) from controller 11 onto bus 13 or bus 65 of Fig. 3. The first four bits are fixed (1010) and the next three bits are programmed to specify one of up to eight memories. The last bit specifies a read or write operation (write=0; read=l) .
When the first opcode byte of a read or write command is input into a 2-wire serial bus 65, the fuse bytes 53, 55 of memory core 51 are accessed when
generated pules RDFENl in block 75, for read fuse enable one, enables reading of the first fuse byte for controlling memory read circuitry 85. This first fuse byte must direct set up of ancillary circuits 81 for reading main memory before by next opcode. By the time the last bit of the first opcode byte is input into the chip, and a read operation is called by the last bit of the first opcode byte, the chip is ready for read operation. Ancillary circuits 81 for reading main memory are already set up and controlled by the first fuse byte.
If a write operation is called by the last bit of the first fuse byte, one or more further opcodes are read to specify a write address. In this situation, the fuse byte 55 of the memory is accessed when generated pulse RDFEN2, in block 77 for read fuse enable two, enables reading of the second fuse byte for controlling memory write circuitry 85 during the opcode time for the first byte of write address. This second fuse byte directs set up of ancillary circuitry 81 for obtaining addresses for writing to the memory core 51, but there is not the urgency to obtain the fuse data as during the first byte of address opcode time because the whole write opcode time (including start byte opcode, write address bytes and write data bytes) is longer compared to the read operation.
The register bank 107, having eight one-bit registers are provided to control read/write control circuits 85. In the above protocol, the registers are used during a read command for read fuse bits extracted from the fuse byte 53 of the memory core 51. The same registers are used during a write command for write fuse bits extracted from the fuse byte 55 of the memory core 51, the write fuse bits occurring at a different time, namely during the second byte of the opcode and overwriting the read fuse bits.
If the input command is a read command, the read fuse byte will be stored in the registers during the first byte opcode time and the output of the registers will control or change the memory support circuitry for read operation. If the input command is a write command, the write fuse byte will be stored in the registers during the second byte opcode time, the previously stored read fuse byte data in the registers will be overwritten, and the output of the registers will control or change the memory support circuitry for write operation.
With reference to Fig. 4, timing pulses for a read operation are shown. Note the 8 data bits per word. The top two plots show bus signals on lines SCL 65 and SDA 63 in Fig. 3. The next two timing pulses PSTAC and STOP are related to start and stop of communication. The next timing pulse, ACKOUT is a response from logic circuit 67 once 8 data bits are received. In Fig. 4, the 8 data bits are seen to be 10100101, with the last one (1) indicating a read operation. The next pulse, RWB, is read write bar, meaning an active high read is one and an active low write is zero, i.e. a read-write signal. The next two pulses RDFENl and RDFEN2 are represented in blocks 75 and 77. Note that RDFEN2 stays low after the first data word. For a read operation the RDFEN pulses have the following polarities during the first and second opcodes.
Read Word 1 Read Word 2
Get READ Fuse Byte Continue READ
RDFENl HIGH LOW
RDFEN2 LOW LOW
Fig. 5 shows the same timing pulses for a write operation during the first and second opcodes.
Read Word 1 Read
Get READ Fuse Byte G Geett WRITE Fuse Byte
RDFENl HIGH LOW
RDFEN2 LOW HIGH
Note that in the case of Fig. 4 the fuse data during the lowermost pulse train is present only during the first opcode byte. This is because the read configuration must be accomplished by the time that the first opcode byte is received. The early RDFEN pulses allow this to be done.
In the case of Fig. 5 the fuse data during the lowermost pulse train continues after the first opcode byte. The subsequent opcode byte gives an address for writing with further fuse data for write circuit configuration.
Configuration data, or fuse bytes are easily loaded in the memory core at the time of manufacture. The storage locations are logical pages of the memory core not accessible to a user except as described above.