A method of
programming a
memory cell having a floating gate by applying a first program pulse to the
memory cell to place electrons on the floating gate, wherein the first program pulse comprises a program
voltage that includes a preliminary
voltage level in a first portion of the first program pulse and a first
voltage level in a second portion of the first program pulse, wherein the first voltage level is greater than the preliminary voltage level. The first voltage level is applied immediately successive to the preliminary voltage level. Then, applying successive program pulses to the
memory cell to place additional electrons on the floating gate, wherein the successive program pulses include the program voltage, and wherein the program voltage increases in voltage level for each one of the successive program pulses relative to a previous one of the successive program pulses or the first program pulse.