Patent Description:
A self-timed sensing architecture for reading a selected cell in an array of non-volatile cells is disclosed. The sensing circuitry generates a signal when a stable sensing value has been obtained from the selected cell, where the stable sensing value indicates the value stored in the selected cell. The signal indicates the end of the sensing operation, causing the stable sensing value to be output as the result of the read operation.

In non-volatile memory systems, a read operation is used to determine the data value that has been stored in a selected memory cell. This requires the use of a sensing circuit, which "senses" the value stored in a selected memory cell, often by comparing current drawn by the cell against a reference current or against current drawn by a reference cell. This operation involves a sequence of timed events that have the goal of converting the analog information stored in the selected memory cell into a digital output.

In the prior art, read timing is implemented by a timer that tries to match the actual read duration. However, actual read duration of different selected memory cells in an array can have a wide variation due to differences in voltage supplies, operating temperature, semiconductor process, and cell current. As a result, the read timer design needs sufficient margin to accommodate these variations. Read speed in the prior art therefore is slower than its actual capability. Power consumption is increased because of the longer than needed read duration.

<FIG> depicts the read portion of prior art memory system <NUM>. Read control logic <NUM> receives the address for the read operation, an address transition detection signal (Atd), a clock signal (clk), and a read enable signal (rdn), some combination of which controls the enabling of sensing circuitry <NUM> and read timer <NUM> in parallel through the signal labeled "Start read/Sense enable" output by the read control logic <NUM>. Read timer <NUM> defines the read duration and latches the sense status (labeled "Sense out") of a selected cell in memory array <NUM> in data latch <NUM> after a given predefined delay using the signal labeled "End read. " The digital output of data latch <NUM> is indicative of the value that was read in the selected cell of memory array <NUM> by sensing circuitry <NUM>. Latching the data too early can lead to a read failure, whereas latching the data late leads to poor performance. The read duration implemented by read timer <NUM> is determined during the design phase and incorporates the wide margin discussed above.

Prior art memory system <NUM> is inefficient because the read duration imposed by read timer <NUM> is necessarily more than is needed due to the factors described above.

One prior art effort to overcome these challenges is to perform calibration trimming on a die by die basis during the wafer sort phase of the manufacturing process. However, this adds significant time and cost to the manufacturing process. Moreover, the trimming is done in one environmental setting with a certain temperature and a certain voltage supply, so some margin still needs to be included in the design of read timer <NUM> to accommodate the temperature and voltage supply variations that will be experienced in field operations.

What is needed is an improved system for reading a selected cell in a non-volatile memory array. Specifically, a system is needed with improved read timing that also minimizes power consumption and preferably that does not require calibration trimming during the manufacturing process.

<CIT> discloses that a memory device (<NUM>) includes a plurality of memory cells (<NUM>), bit lines, word lines, a sense amplifier (<NUM>), and a self-timed latch (<NUM>). The sense amplifier (<NUM>), responsive to a sense enable signal, is for sensing and amplifying a voltage on the bit lines corresponding to a stored logic state of a selected one of the plurality of memory cells. An isolation circuit (<NUM>, <NUM>) is coupled between the bit lines (<NUM> and <NUM>) and the sense amplifier (<NUM>). The isolation circuit (<NUM>, <NUM>) is for decoupling the selected one of the plurality of memory cells from the sense amplifier (<NUM>) at about the same time that the sense enable signal is asserted. A self-timed latch (<NUM>) is coupled to the sense amplifier (<NUM>). The self-timed latch (<NUM>) does not receive a clock signal and is responsive to only the amplified voltage.

<CIT> discloses a non-volatile memory system having a memory controller, an array of memory cells and a memory operation manager. The operation manager carries out memory program, read and erase operation upon receipt of program, read and erase instruction from the controller, typically over a system bus. The address block circuitry is provided in the manager which is capable of performing an memory operation on a single address or on multiple addresses depending upon the state of the address block circuitry as determined by the controller. Multiple addresses can be generated based upon a single address provided by the controller so that sectors of the memory can be programmed or read thereby simplifying memory operations and reducing the overhead of the memory controller.

<CIT> discloses a data latch circuit including a differential amplifier for detecting a potential difference between a pair of signal transmission lines for transmitting a pair of complementary signals, a latch timing signal generator for generating a latch timing signal based on the detection by the differential amplifier, and a latch section for responding to the latch timing signal to latch the complementary signals transferred thereto.

<FIG> depicts memory system <NUM>, which comprises memory array <NUM>, sensing circuitry <NUM>, read control logic <NUM>, data latch <NUM>, and self-timer <NUM>. <FIG> depicts a timing diagram <NUM> for a typical read operation performed by memory system <NUM>.

With reference to both <FIG> and <FIG>, read control logic <NUM> receives the address for the read operation, an address transition detection signal (Atd), a clock signal (clk), and a read enable signal (rdn), some combination of which controls the enabling of sensing circuitry <NUM> through the signal labeled "Start read/Sense enable" (SA_EN) output by the read control logic <NUM>. Sensing circuitry <NUM> provides a first output labeled "Sense out" to data latch <NUM> and to self-timer <NUM>, and a second output labeled "Sense out_n" to self-timer <NUM>. When signal Start read/Sense enable is set to active (shown as active high) by read control logic <NUM>, sensing circuitry <NUM> becomes active.

In the initial phase of the reading operation, both Sense out and Sense out_n are equal to "<NUM>" as both signals are not stable at that point in time as internal signals driving Sense out and Sense out_n are initialized at 0V. If the selected cell in memory array <NUM> contains a "<NUM>," then Sense out will go to a "<NUM>" value and Sense out_n will stay at "<NUM>. " If the selected cell contains a "<NUM>" then Sense out_n will go to a "<NUM>" value, while Sense out will stay at "<NUM>". Sense out_n and Sense out thus will be at opposite values as soon as those signals have reached a stable state.

In the alternative, Sense out and Sense out_n can be initialized to "<NUM>" at Vdd instead of "<NUM>. " If the selected cell in memory array <NUM> contains a "<NUM>," then Sense out will remain at a "<NUM>" value and Sense out_n will go to "<NUM>. " If the selected cell contains a "<NUM>" then Sense out_n will remain at a "<NUM>" value, while Sense out will go to "<NUM>". Sense out_n and Sense out thus will be at opposite values as soon as those signals have reached a stable state.

Self-timer <NUM> in one embodiment is implemented with XOR logic and receives Sense out and Sense out_n. The XOR logic initially outputs a "<NUM>" when Sense out and Sense out_n are both at "<NUM>," and outputs a "<NUM>" when either Sense out or Sense out_n goes to a "<NUM>" in response to the value stored in the selected cell of memory array <NUM>, which is shown as the control signal labeled "End read" in <FIG> and <FIG>. When this happens, the "<NUM>" output by the XOR logic of self-timer <NUM> will trigger data latch <NUM>, which will latch the Sense out signal output by sensing circuity <NUM> and present it as the final output, Data out, in digital form that indicates the value stored in the selected cell of memory array <NUM>. At this point, the read operation is complete, and the sense amplifiers in sensing circuitry <NUM> can be turned off, by disabling signal SE_EN, resulting in power savings compared to the prior art.

<FIG>, <FIG>, and <FIG> depict additional detail for an embodiment of sensing circuitry <NUM>.

<FIG> depicts current-to-voltage circuit <NUM>, which is part of sensing circuitry <NUM>. Current-to-voltage circuit <NUM> comprises NMOS transistors <NUM>, <NUM>, <NUM>, and <NUM> and PMOS transistors <NUM>, <NUM>, <NUM>, and <NUM>, configured as shown. The gates of NMOS transistors <NUM> and <NUM> are driven by the sense enable signal "SA_EN" generated by read control logic <NUM>, and the gates of NMOS transistors <NUM> and <NUM> are driven by the inverse of the SA_EN signal, "SA_EN_N", generated by read control logic <NUM>. The gates of PMOS transistors <NUM> and <NUM> are driven by a signal "CHARGE_N" generated by read control logic <NUM>, which generates CHARGE_N by performing a logic operation on address transition detection signal Atd and signal SA_EN. NMOS transistor <NUM> is coupled to selected memory cell <NUM> in memory array <NUM> through the bit line labeled "BL_DWN,", and NMOS transistor <NUM> is coupled to reference memory cell <NUM>, which can be located in memory array <NUM> or in a separate, reference memory array, through the bit line labeled "BL_UP". In the alternative, the roles of selected memory cell <NUM> and reference memory cell <NUM> can be reversed (meaning that cell <NUM> becomes the reference memory cell and cell <NUM> becomes the selected memory cell), which might be useful, for example, if the location of a selected memory cell changes to a different bank of memory cells.

Selected memory cell <NUM> draws zero current when it stores a "<NUM>" value, and it draws a current Ir1 when it stores a "<NUM>" value. Reference memory cell <NUM> is programmed to draw a predetermined current between <NUM> and Ir1, such as <NUM>*Ir1, during a read operation.

During a read operation, transistors <NUM>, <NUM>, <NUM>, and <NUM> are turned on by the signals SA_EN being set to a high level and CHARGE N being set to a low level, depicted in <FIG>, and as a result, the nodes MIRROR_DWN and MIRROR_UP are pre-charged to a certain voltage near the supply voltage VDD through PMOS transistor <NUM>, <NUM>, respectively. The time difference between SA_EN being set to the high level and CHARGE N being set to the low level is responsive to the Atd pulse duration, or a derivative thereof. NMOS transistors <NUM>, <NUM> are held off by signal SA_EN_N. PMOS transistors <NUM> and <NUM> are then turned off by signal CHARGE N being set to a high level, and the sensing phase begins.

Selected memory cell <NUM> and reference memory cell <NUM> draw current in amounts that reflect the values stored in each one. This causes the gates of PMOS transistors <NUM> and <NUM> (connected to nodes "MIRROR DWN" and "MIRROR UP," respectively) to discharge. If selected memory cell <NUM> is in a "<NUM>" state, the node MIRROR_DWN will discharge faster than the node MIRROR UP. If selected memory cell <NUM> is in a "<NUM>" state, the node MIRROR UP will discharge faster than the node MIRROR_DWN. <FIG> depicts the voltage of nodes MIRROR_DWN and MIRROR_UP in the situations where selected memory cell <NUM> contains a "<NUM>" and where it contains a "<NUM>".

In <FIG>, sensing circuitry <NUM> further comprises comparator <NUM>. Comparator comprises NMOS transistors <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> and PMOS transistors <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>, configured as shown. Node MIRROR DWN from <FIG> is connected to the gate of PMOS transistor <NUM>, and node MIRROR_UP from <FIG> is connected to the gate of PMOS transistor <NUM>, such that PMOS transistor <NUM> in <FIG> and PMOS transistor <NUM> in <FIG> form one current mirror, and PMOS transistor <NUM> in <FIG> and PMOS transistor <NUM> in <FIG> form another current mirror. NMOS transistors <NUM> and <NUM> are connected to form a half-latch. The nodes VDO and VDO_N are initially set to <NUM> V through respective pull-down transistors <NUM> and <NUM> through a signal SA_LATCH_SA, generated by read control logic <NUM>, that has the same timing of CHARGE_N in <FIG>, but opposite in phase, which are turned off once the sensing phase begins. In an alternative embodiment, signal SA_LATCH_SA is generated by sensing circuitry <NUM> responsive to signal CHARGE_N.

If selected memory cell <NUM> is in a "<NUM>" state, the node VDO will be pulled up to the supply voltage VDD faster than the node VDO_N because the node MIRROR_DWN will discharge faster than the node MIRROR_UP. If selected memory cell <NUM> is in a "<NUM>" state, the node VDO_N will be pulled up to the supply voltage VDD faster than the node VDO because the node MIRROR UP will discharge faster than the node MIRROR_DWN.

The first of VDO and VDO_N to be pulled up to VDD will cause the other node to be discharged by toggling the half latch state of NMOS transistors <NUM> and <NUM>.

Transistor pairs <NUM> and <NUM>, <NUM> and <NUM>, <NUM> and <NUM>, and <NUM> and <NUM> each form an inverter. The output of comparator <NUM> is Sense Out and Sense Out_n.

<FIG> depicts an implementation of a XOR logic function. XOR logic <NUM> is an embodiment of self-timer <NUM>. XOR logic <NUM> comprises inverter <NUM> and multiplexor <NUM>. Inverter <NUM> and multiplexor <NUM> each receives Sense out as an input. Multiplexor <NUM> also receives the inverter output (which will be the inverse of Sense_out) as an input. Sense out_n from comparator <NUM> controls multiplexor <NUM>, and multiplexor <NUM> outputs the control signal End read. Control signal End_read will equal <NUM> when Sense out and Sense out_n are stable, different values. That is, only if Sense out and Sense out_n are opposite in phase for a time long enough to propagate through XOR logic <NUM> will the XOR output be a stable "<NUM>. " XOR logic is preferred so as to reject an error conditions where both Sense out and Sense out_n are both high or are both low. This is depicted in <FIG> in timing diagram <NUM> for the situation where selected memory cell <NUM> contains a "<NUM>" and in <FIG> as timing diagram <NUM> for the situation where selected memory cell <NUM> contains a "<NUM>". End read is a control signal that is asserted by self-timer <NUM> when the read operation is stable and the data from sensing circuitry <NUM> can be accurately latched by data latch <NUM> for output.

The control signal End read can be sent to data latch <NUM> in <FIG> to latch the final output signal, Data out. The control signal End read is further fed to read control logic <NUM>, and in response read control logic <NUM> disables signal SA_EN (shown as low), disabling sensing circuitry <NUM>.

Thus, unlike in prior art memory system <NUM>, the read timing of memory system <NUM> is self-defined so that data can be output from the read circuitry as soon as the read data is stable. Unlike in the prior art, a timing margin does not need to be added to each read operation, which makes the read operation much faster. Power consumption is minimized since the sense amplifiers are shut off whenever the read is completed. Test time is reduced, since there is no need to perform die-by-die trimming of the read timings during manufacturing.

Claim 1:
A memory system (<NUM>) comprising:
a memory array (<NUM>);
read control logic (<NUM>) for initiating a read operation of a selected memory cell in the memory array by activating a sense enable signal (Start read/Sense enable) and for ending the read operation by deactivating the sense enable signal;
sensing circuitry (<NUM>) coupled to the memory array for outputting in response to activation of the sense enable signal a first signal (Sense out) based on a value stored in the selected memory cell and a second signal (Sense out_n) based on the value stored in the selected memory cell and for turning off in response to deactivation of the sense enable signal;
a self-timer (<NUM>) for receiving the first signal and the second signal and for asserting a control signal (End read) when the first signal and the second signal are different values; and
a data latch (<NUM>) for latching the first signal in response to the control signal to generate a data output (Data out), wherein the data output is the value stored in the selected memory cell.