# Thread: Reverse Engineering a NAND Flash Device Management Algorithm

1. ## Reverse Engineering a NAND Flash Device Management Algorithm

I read this write up today and thought some of the people here might find it interesting: Reverse Engineering a NAND Flash Device Management Algorithm.

2. Originally Posted by laserlight
I read this write up today and thought some of the people here might find it interesting: Reverse Engineering a NAND Flash Device Management Algorithm.
Uber geek stuff. I can't understand a thing though, but I think I probably can, if I am just able to do this.

3. Hehehe, lesson learned maybe? No traveling with SD cards inserted into laptops!
And ewww to Verilog. VHDL all the way!

4. "The problem with this is that the bypassed transistors (that is to say, the ones that we're skipping over – the ones that we're not sensing) are not perfect. Even though they are supposed to conduct when they are being bypassed, if they have been programmed, they might conduct slightly less well."

Does someone know what the term "programmed" means in this context? Is the author saying transistors that have current flowing?

Also, thank you LaserLight for posting this .

5. I believe, he means the transistors have had their stand-off ratio adjusted. This is done by changing the diffusion characteristics of the conductive material.

EDIT: Unijunction transistor - Wikipedia, the free encyclopedia is an example of a programmable transistor.

6. Originally Posted by Alpo
"The problem with this is that the bypassed transistors (that is to say, the ones that we're skipping over – the ones that we're not sensing) are not perfect. Even though they are supposed to conduct when they are being bypassed, if they have been programmed, they might conduct slightly less well."

Does someone know what the term "programmed" means in this context? Is the author saying transistors that have current flowing?

Also, thank you LaserLight for posting this .
I believe "programmed" here refers to the process of storing a "one" in the transistor
by charging the transistor's floating gate. These floating gate transistors form a NAND
function; they are connected in series, with each transistor storing one bit of information.

To read a specific bit, all the transistors except the one storing that bit are bypassed,
and that one transistor in question is applied a gate signal. If it has been programmed
with a one, it will not turn on. The string consisting of that transistor and the bypassed
transistors will not conduct. If it has been erased, it will turn on and the series string
will conduct.

Bypassing is accomplished by driving the gate harder (or at least differently somehow).
An erased transistor will turn on (conduct) hard. A programmed transistor may not turn
on and conduct as well.

(edited)
I have "one" and "zero" reversed; looks like charging the gate stores a "zero".

The term "programming" goes all the way back to some of the first memory devices.
ROM (masked ROM) had the information placed in the memory cells during manufacture.
PROM (programmable read only memory) then appeared, which could be programmed
only once in the field. Then there was EPROM (erasable programmable read only memory).

Just a guess, but the term might have been used because these devices almost always
contained program code.

-

7. Originally Posted by megafiddle

(edited)
I have "one" and "zero" reversed; looks like charging the gate stores a "zero".

The term "programming" goes all the way back to some of the first memory devices.
ROM (masked ROM) had the information placed in the memory cells during manufacture.
PROM (programmable read only memory) then appeared, which could be programmed
only once in the field. Then there was EPROM (erasable programmable read only memory).

Just a guess, but the term might have been used because these devices almost always
contained program code.

-
Sure enough, you seem to be right on:

"The presence or the absence of a charge results in a more positive or more negative threshold voltage. In flash memory lingo, programming (putting electrons into the floating gate) means writing a 0, erasing (removing the charge from the floating gate) means resetting the flash memory contents to 1; or in other words: a programmed cell stores a logic 0, an erased (a.k.a. flashed) cell stores a logic 1."

COEN 180

Popular pages Recent additions