In accordance with an embodiment of the invention, an array of non-volatilememory cells is coupled to both digital and analog read and write circuits.Memory cells in the array store information in user selected formats, a binary format or an analog format. The user can allocate portions of the memory for each storage format. Thus, the memory adapts to changing needs for long term binary storage, error tolerant multi-level digital storage, and analog storage. On-chip digital-to-analog converters (DACs) and analog-to-digital converters (ADCs) allow information to be input in one format and stored or output in another. For example, stored multi-level digital information can be output as an analog value thus eliminating the need for a discrete component DAC coupled to the output port of the memory.
FIG. 1 shows an embodiment of a non-volatile memory 100 having a memory array 190 which can simultaneously hold information in binary format and information in analog format. Memory array 190 is a non-volatile memory such as an EPROM array, an EEPROM array, or a Flash memory array. Such memory arrays are well known in the art and typically contain floating gate transistors which have threshold voltage levels that indicate the information stored. Conventional EPROM, EEPROM, or Flash memory cells may be used in memory array 190. Memory array 190 can also be an array of MNOSmemory transistors which have threshold voltage levels that depend on charges trapped in a nitride-oxide interface. For optimum analog storage, memory cells which have (1) low charge leakage and (2) low sensitivity to program and read disturb of threshold voltages are desirable.
Memory 100 has both analog and digital input/output (I/O) interfaces and has two modes for write/read operations, analog mode and binary mode. An address port 195 is for input of a multi-bit address signal used in both modes. In analog mode, the address signal asserted to address port 195 indicates a selected word line and a selected bit line in array 190, and therefore indicates a selected memory cell. A column decoder 180 connects an analog write circuit 125 or an analog read circuit 175 to the selected bit line for writing or reading an analog value. In binary mode, the address signal asserted to address port 195 indicates a selected word lineand a set of selected bits lines corresponding to N selected memory cells, where N is an integer and typically a multiple of eight. For writing or reading a binary value, column decoder 180 connects a digital write circuit 150 or digital read circuit 155 to the selected bit lines corresponding to the address signal.
FIGS. 2A and 2B show an embodiment of an address decoding system in accordance with the invention. Memory array 190 contains rows of memory cells coupled to word lines 292 and columns of memory cells coupled to bitlines 291. Word lines 292 are accessed through a conventional row decoder 295. Row decoder 295 selects a word line corresponding to bits Aj to A(k-1) of the address signal from address port 195, and sets the voltages on the selected word line and on unselected word lines. The word line voltages depend on the operation (analog write, analog read, binary write,binary read, or erase) being performed and the type of memory cells in memory array 190.
Bit lines 291 couple to a first level of decode transistors 281. A binary decoder 220 (FIG. 2B) converts address bits Ai to A(j-1) to control voltages YB0 to YB(M-1) for decode transistors 281. Binary decoder 220 asserts the one of signals YB0 to YB(M-1) which corresponds to a binary value represented by address bits Ai to A(j-1). A total of N of transistors 281 are turned on in response to an address signal. A second level of decode transistors contains N transistors 282, each of which couples to a group of M of decode transistors 281. From address bits A0 toA(i-1) and a signal BINARY which indicates whether an operation is in binary mode, a binary decoder 210 and OR gates 215 generate control voltages YA0 to YA(N-1) for decode transistors 282. Binary decoders such as binary decoder 210 and 220, which select a bit line identified by a multi-bit address signal, are well known in the art.
For writing or reading an analog signal, only one of control voltages YA0 to YA(N-1) is high, and only one of control voltages YB0 to YB(M-1) is high. Decode transistors 281 and 282 connect the selected bit line to either analog write circuit 125 (for a write) or analog read circuit 175 (for a read). For reading or writing a binary signal, only one of signals YB0 to YB(M-1) is high, but OR gates 215 force all signals YA0 to YA(N-1) high. Decode transistors 282 simultaneously connect N bit lines 291 to N sense amplifiers (for a read) or to N data input voltages (for a write). In effect, control voltages YB0 to YB(M-1) select one of M words in the selected row, and control voltages YA0 to YA(N-1) select a bit in the selected word. Forcing voltages YA0 to YA(N-1) high allows parallel writing or reading of N bits in the selected word.
In one embodiment of the invention, the user provides signals BINARY and ANALOG via a control port 185 (FIG. 1), to indicate whether an operation is in binary or analog mode. Alternatively, signals BINARY and ANALOG are derived from other control signals or from address signals.
As shown in FIG. 2C, memory array 190 can be partitioned into sections 230 each of which is allocated exclusively for analog storage or exclusively or binary storage. Memory 100 can generate signal BINARY or ANALOG according to whether the selected row is in a section 230 allocated exclusively for binary storage or exclusively for analog storage. FIG. 2D shows an embodiment of the invention, wherein each section 230 in memory array 190 contains one or more rows of memory cells and a flag memory cell235 which stores a binary value indicating whether the section is allocatedfor binary or analog data. The user allocates a section for binary or analog storage by writing an appropriate value to the flag memory cell 235for the section. Flag memory cell 235 can be in a column of memory array 190 or outside array 190. In a preferred embodiment, each section 230 contains one row of memory cells, and flag memory cells 235 form a column in array 190.
When a row address is asserted to row decoder 295, flag memory cell 235 in the section containing the selected word line is read before the requestedoperation. In the embodiment with one row per section, row decoder 295 asserts the selected word line, and the column containing flag memory cells 235 is read. In another embodiment, flag cell 235 may not be in the selected row. The address signal asserted to row decoder 295 can be altered, for example by changing or masking the least significant address bits of the row address, to select the row containing flag memory cell 235. Signal ANALOG and BINARY are generated according to the binary value read from flag memory cell 235, and the operation proceeds on the originalselected row.
For faster read operations, flag memory cells 235 in memory array 190 are read after power-up and the information from flag memory cells 235 is stored in an on-chip buffer which contains fast memory cells such as SRAM cells. During access of memory array 190, the buffer is read to generate signal ANALOG or BINARY when appropriate for the corresponding section of memory array 190. Total access time for memory array 190 can be reduced because the read access time of the on-chip buffer is less than that of flag memory cells 235.
In memory 100 of FIG. 1, the I/O path for binary data includes a digital I/O port 140 (multiple terminals), digital I/O buffers 145, and digital write circuit 150 or digital read circuit 155 and couples to memory array 190 via column decoder 180 and row decoder 295. To write information in binary form, a user asserts an address signal to address port 195, assertsa multi-bit binary data signal to digital I/O port 140 and I/O buffers 145,and asserts control signals to control port 185. The control signals indicate the operation is a binary mode write. Digital write circuit 150 generates word line, bit line, and source line voltages for writing the multi-bit binary signal in memory array 190. Column decoder 180 connects digital write circuit 150 to the selected bit lines corresponding to the address signal, and write circuit 150 generates voltages on the selected word line and selected bit lines to program the binary value from buffers 145, in the selected memory cells.
To read binary form information, a user asserts an address signal to address port 195 and control signals to control port 185. The control signals indicate the operation is a binary mode read. Row decoder 295 and column decoder 180 connect digital read circuit 155 to the selected word line and bit lines. Read circuit 155 generates a voltage on the selected word line and then senses the binary states of the selected memory cells. The sensed states are written to I/O buffers 145 and asserted on digital data port 140.
Many methods for writing or reading binary values in non-volatile memory cells are known in the art and may be employed in the invention. Table 1 shows example voltages on word lines, bit lines, and sources to read, write and erase typical Flash memory cells.
Voltages for other types of memory cells are well known in the art.
Analog write and read processes differ from binary write and read process. FIG. 1 shows analog write and read circuits 125 and 175 which are separatefrom digital write and read circuits 150 and 155. Alternatively, analog anddigital read and write paths may share some circuitry.
The analog data paths in memory 100 have an input port 110 (single terminal) and an output port 160 (single terminal). To write information in analog form, a user asserts an address signal to address port 195, an analog signal to analog input port 110, and control signals to port 185. The control signals indicate the operation is an analog write, and cause asample-and-hold circuit 120 to sample the analog signal from analog input port 110 and an analog input buffer 115. Row decoder 295 and column decoder 180 connect analog write circuit 125 to the selected word line andbit line corresponding to the address signal, and analog write circuit 125 generates voltages on the selected word line and bit line to change the threshold voltage of the selected memory cell to a level which indicates the sampled value of the analog signal.
To produce an analog signal from memory array 190, a user asserts an address signal to address port 195, and control signals to a port 185. Rowdecoder 295 and column decoder 180 connect analog read circuit 175 to the selected word line and bit line. Analog read circuit 175 generates a voltage on the selected word and bit lines to sense the threshold voltage of the selected memory cell and generates an output voltage from the sensed threshold voltage. A sample-and-hold circuit 170 holds the generated output voltage to maintain an output analog signal through an output buffer 165. In many applications, the analog output signal is continuously generated and represents a waveform such as a recorded sound.
FIG. 3A shows an embodiment of a non-volatile memory 300 in accordance withanother embodiment of the invention. Circuit blocks identified with the same reference symbols as those in FIG. 1 are similar or identical to corresponding circuit blocks and are described above in regard to FIG. 1. Memory 300 is a monolithic semiconductor structure containing a digital-to-analog converter (DAC) 310 and an analog-to-digital converter (ADC) 320 in the input interface and a DAC 370 and an ADC 380 in the output interface. Converters 310, 320, 370, and 380 allow information storage in a format that differs from the format in which the information is input or output.
For writing information in memory 300, a user provides an input data signaland control signals 391 and 392. Control signal 392 indicates whether the input data signal is in analog or binary format, and control signal 391 indicates the storage mode (binary or analog) for the input data signal. DAC 310 converts a digital input data signal to analog form. ADC 320 converts an analog input data signal to multi-bit binary form. In analog storage mode, multiplexer 330 selects either an analog data signal from analog input buffer 115 or an analog output voltage from DAC 310 accordingto whether control signal 392 indicates the input data signal is analog or digital. Sample-and-hold circuit 120 samples the output voltage from multiplexer 330, and analog write circuit 125 writes the analog value to the memory cell selected by column decoder 180 and row decoder 295 as described above in regard to FIG. 1. In binary storage mode, column decoder 180 connects digital write circuit 150 to the selected bit lines. The digital signal written comes from multiplexer 340 which selects eithera digital data signal from digital I/O buffers 145 or the output voltage from ADC 320 according to whether control signal 392 indicates the input data signal is digital or analog.
For reading information, a user provides control signal 391 indicating the storage mode (binary or analog) and control signal 393 indicating the desired form for output data signals. Alternatively, control signal 391 may be derived from a binary value read from flag memory cell 235 within the section accessed or from the address signal. In analog storage mode, column decoder 180 connects analog read circuit 175 to a selected bit line. Sample-and-hold circuit 170 asserts the analog signal from analog read circuit 175 to a multiplexer 360. ADC 380 converts the analog signal to multi-bit binary form which is asserted to multiplexer 350. In binary mode, column decoder 180 connects digital read circuit 155 to selected bitlines. The digital signal from digital read circuit 155 is asserted to multiplexer 350 and converted by DAC 370 to analog form before being asserted to multiplexer 360. Since an output path through multiplexer 350 is parallel to an output path through multiplexer 360, the user can choosewhether the output signals are in analog form on analog output port 160, inmulti-bit digital form on digital data port 140, or both.
FIG. 3B shows an embodiment of a monolithic memory 305 where DACs 310 and 370 of memory 300 are replaced by a DAC 315 and a multiplexer 375 which connects DAC 315 in the input or output data path so that DAC 315 selectably converts input or output digital signals. Similarly, ADCs 320 and 380 of FIG. 3A are replaced by an ADC 325 and a multiplexer 385 which selectably connects ADC 325 to the input or output data path. Select signals 394 and 395 for multiplexers 375 and 385 depend on control signalssuch as signal 392 or 393. Providing DAC 315 and multiplexer 375 (and/or ADC 325 and multiplexer 385) instead of DACs 310 and 370 (and/or ADCs 320 and 380) typically reduces the chip area required to fabricate an analog/digital memory and therefore reduces memory cost.
Memory 305 provides flexibility for a variety of uses. For example, memory 305 can function as an analog-to-digital (or digital-to-analog) converter by asserting an analog (or digital) input signal to input port 110 (or 140) and configuring multiplexers 385 and 350 (or multiplexers 375 and 365) to route an input signal through converter 325 (or 315) to output port 140 (or 160) without accessing memory array 190. Also, information stored in one part of memory array 190 in one form can be read, converted into another form, and rewritten into another part of memory array 190 without accessing any of I/ O ports 110, 140, and 160. For example, if analog data is acquired at a rate greater than the rate at which analog write circuit 125 can write the data, it may still be possible to convert the acquired analog data to binary form through ADC 325 and then use the faster digital write circuit 150 to write the acquired data in binary form, to memory array 190, in real time as the data is acquired. When memory 305 is otherwise idle, digital values can be read, converted to analog form, and written back to memory array 190 in analog form to reducethe amount of memory needed to store the acquired data.
Converting a multi-bit binary signal to analog form creates a signal which has one of a set of discrete levels, and analog write circuit 125 sets thethreshold voltage of a memory cell to one of a set of discrete values when storing such signals. In the absence of errors, converting the stored signal back to multi-bit binary form during reading provides the value stored. Accordingly, analog storage of digital values stores multiple bitsof information in a single memory cell and increases storage density. However, multi-level memory cells are more sensitive to noise and charge leakage because separation between adjacent threshold voltage levels is less in multi-level memory cells than in conventional binary memory cells.Accordingly, unless accurate tracking of charge leakage is performed, multi-level memory is better suited to error-tolerant applications such a digital storage of audio and video signals. Table 2 shows various combinations of input, storage, and output data formats and typical applications for each combination.
U.S. patent application Ser. No. 08/333,381 which was incorporated by reference above describes an analog memory having an on-chip DAC coupled to an input port and an on-chip ADC coupled to an output port. A further advantage of on-chip DAC 310 and ADC 380 is simplified testing of analog storage. Typically, analog memory is tested by writing a range of analog input signals, reading analog signals from the memory cells, and comparinginput and output analog signals. With on-chip DAC 310 and ADC 380, analog write circuit 125 and analog read circuit 175 can be tested using digital device testing equipment which is usually less costly than analog testing equipment. The same equipment can also test digital storage functions. This reduces the cost of testing analog memory during manufacture.
An example test procedure for memory 300 includes a binary test and an analog test. The binary test erases array 190, programs every cell in memory array 190 with binary values according to a test pattern, and then reads the binary values. Verifying erased and programmed levels match the test pattern detects defects in memory array 190 and in the digital data read and write paths. Many suitable test patterns are known in the art. For example, a diagonal test pattern sets bits along a diagonal of the array so that only one cell in each row or column is set. This is useful for checking the integrity of memory array 190, column decoder 180, and row decoder 295. A checker board pattern sets every other memory cell. Using two or more patterns during binary testing, for example, programmingand verifying a first pattern followed by programming and verifying a second pattern that is complementary to the first, provides good coverage for detecting defective memory cells in memory array 190.
Digital test equipment can perform the analog test by storing digital values in analog form in a sampling of the memory cells in memory array 190 then comparing the digital form of the stored analog values to the digital values written. The analog test need only test a sampling of memory cells because the digital test provides complete coverage for detecting defective memory cells.
FIG. 4A shows a non-volatile memory 400 specially adapted for recording andplaying analog audio and/or video signals. Circuit blocks identified with the same reference symbols as those in preceding figures are similar or identical to the corresponding circuit blocks described above. A primary difference between memory 300 (FIG. 3A) and memory 400 is that memory 400 includes an internal address generator 490 which provides serial addressesto record or playback continuous analog signals.
FIG. 4B shows a block diagram of an embodiment of address generator 490. Address generator 490 contains a binary address counter 492. Address counter 492 has a data input port coupled to address port 195 via an address buffer 493 and loads an address from address buffer 493 when a load signal is asserted. The address can be supplied externally. Alternatively, an on-chip library index (not shown) may contain starting addresses of a variety of sound clips or messages. For example, a portion of memory array 190 can be allocated as the library index for such addresses. The starting addresses are loaded from the library index into address counter 492 to begin playing a recorded sound.
In the example shown, a signal ANALOG indicating analog mode is asserted before memory 400 begins recording or playing a sound. The user generates a signal RECORD to begin recording a sound or a signal PLAY to begin playing a recorded sound. When signal RECORD or PLAY is asserted, AND gate494 asserts the load signal, and address counter 492 loads a starting address from address buffers 493. A signal POWER-ON-RESET resets address counter 492 to a default address (zero) upon power up.
A multiplexer 491 selects either the address directly from address buffer 493 or the address from counter 492 and provides address bits A0 to A(k-1)to memory array 190 (column decoder 180 and row decoder 295). During recording or playing of an analog sound signal, address counter 492 increments according to a clock signal OSC from an internal oscillator 497, and an analog value is written to or read from memory array 190 at the address indicated by address counter 492. Internal oscillator 497 (or alternatively an external source) generates signal OSC at a frequency for sampling of the analog sound signal. Typical, sampling frequencies are from about 4 KHz to over 40 KHz. When the user deasserts signal RECORD or PLAY, recording or playing stops.
When digital write circuit 150 or digital read circuit 155 writes or reads data, address counter 492 stops counting, and address port 195 provides the address signal. Digital values can be written in binary form for example to provide digital information such as recording time, date, titleor any other information which accompanies an analog sound signal. For voice synthesis applications, digital I/O port 140 also allows an externaldigital processor to generate a series of digital values and write the digital values to memory array 190 in analog form through DAC 310, multiplexer 330, sample-and-hold circuit 120, and analog write circuit 125. Further, the external digital processor can digitally process and filter recorded analog values which are read and converted to digital formvia analog read circuit 175, sample-and-hold circuit 170, and ADC 380. Datawhich the external digital processor stores in analog form in memory array 190 are played in the same sequential manner as recorded signals.
Memory 400 of FIG. 4A contains an input amplifier 415 with an automatic gain control and a low pass filter and an output amplifier 465 with a low pass filter. Input amplifier 415 is adapted for processing of an input analog audio signal directly from a microphone or other audio signal inputdevice. Output amplifier 465 is capable of directly driving a speaker.
Although the invention is described with reference to particular embodiments, the description is only an example of the invention's application and should not be taken as a limitation. In particular, although embodiments of the invention are described for storing audio or voice signals, the memory described herein can also store video signals orany other digital or analog signals. Various other adaptations and combinations of features of the embodiments disclosed are within the scopeof the invention as defined by the following claims.