I pulled an AT28C16 from an old KVM switch and have managed to wire it up like so:

  • A0-10 -> GND
  • CE -> GND
  • WE -> 5V
  • OE -> GND
  • VCC -> 5V
  • GND -> GND
  • I/O0-7 -> Floating. Plugged by hand to level meter one by one.

With all of the address bus lines hooked to GND, I am able to read the first 8 bits as 01110000. This is all well and good, however the datasheet says this is a 16K EEPROM, and this chip has 11 Address Bus line, which equates to 2048 combinations and therefore 2048 bytes or 2048*8 bits. Thats not 16,000 bytes. How to I read the full 16K with only 11 Address Bus lines?


The unit K in computer means 1024 bits. So 16K is 16*1024 or 16384 bits. The datasheet says,

The AT28C16 is a 16K memory organized as 2,048 words by 8 bits.

And since it has got 2^11 (or 2K) address lines, each of which will point to one of these words.

You can determine which word you want to write data in or read from by setting appropriate bits in A0-A10.

  • \$\begingroup\$ So this totals in simplistic terms 2048 Bytes of 8 bit length, with Bytes simply being given the fancy name "Words"? \$\endgroup\$ – DevelopedLogic Dec 10 '17 at 11:51
  • \$\begingroup\$ Yes, note that a word is a fixed-sized piece of data. Here it has the size of 8 bits or 1 byte. It can have larger sizes depending on the processor. \$\endgroup\$ – dirac16 Dec 10 '17 at 11:56
  • \$\begingroup\$ I respectfully disagree that "The unit K in computer means 1024 bits". As explained in another answer, yes it used to definitely mean 1024 (although that can't be assumed now) but not necessarily bits. Many times if someone says "16k of memory" without specifying the units, they could be referring to bytes or words - it all depends on the context, is ambiguous, and this is exactly why the OP of this question was confused. So although in this Atmel datasheet, it says "16K" and means bits, when "k" is said on its own, it doesn't necessarily refer to the number of bits - all IMHO. \$\endgroup\$ – SamGibson Dec 10 '17 at 13:04
  • \$\begingroup\$ It could point out that in the old days we all used to take the SI k (kilo) prefix and cheerfully use it as meaning 1000 or 1024 upon the context, infact leaving the thing up to personal interpretation. This has been disambigued introducing Ki prefix which means 1024 and this is what (since 1990something) has to be used for computer stuff , retaining k for normal 1000 prefix. Of course old datasheets, and sadly many new as well, do not comply. en.wikipedia.org/wiki/Kibibyte \$\endgroup\$ – carloc Dec 10 '17 at 13:40

AT28C16 is a 16-kilobit EEPROM, not a 16-kilobyte one.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.