Patent ID: 7626868

Claim:
A non-volatile memory including a multi-level cell which comprises: a transistor capable of storing charge representing any one of a plurality of 2 n possible values, where n is a selected integer, said transistor including a gate to which can be applied a voltage to turn on the transistor, the threshold voltage of said transistor being a function of the charge stored on said transistor; a circuit for programming said transistor by adding or removing charge from said transistor; a first comparator for determining whether or not the charge stored on said transistor is above the maximum amount of charge capable of being stored on said transistor while still allowing said transistor to turn on in response to a gate voltage being applied to said transistor, said gate voltage corresponding to the threshold voltage corresponding to the value to be stored on said transistor by said charge; a second comparator for determining whether or not the charge stored on said transistor is below the minimum amount of charge capable of being stored on said transistor while still allowing said transistor to turn on in response to a gate voltage being applied to said transistor, said gate voltage corresponding to the threshold voltage corresponding to the value to be stored on said transistor by said charge; and programming circuitry responsive to a signal from said first comparator to remove charge from said transistor until the signal from the first comparator indicates that the charge stored on said transistor is within the range required to give the transistor the desired threshold voltage and responsive to a signal from said second comparator to add charge to said transistor until the signal from the second comparator indicates that the charge stored on said transistor is within the range required to give the transistor the desired threshold voltage.