Just understanding some syntax. On my Ram (6116) and Rom (27C64) it has a asserted low CE and OE pins. These I believe are control pins.

I'm assuming to use the RAM for example, chip enable (CE) has to be low. Then Output enable has to be low for data to be sent/read to the CPU?

If I'm right so far by looking at the 6116 ram the data bus pins can be either input/output. So CE or OE don't determine whether data is being read or written to that address location. There's another pin called WE which I'm assuming is a control pin for data to be input/output.

What does WE stand for and am I right with what I've assumed?


migrated from cs.stackexchange.com Apr 19 '14 at 18:51

This question came from our site for students, researchers and practitioners of computer science.

  • 2
    \$\begingroup\$ WE=Write Enable. So, yes, WE low means write the memory, WE high means read the memory. Google "6116 datasheet" and look for the truth table. \$\endgroup\$ – Wandering Logic Apr 19 '14 at 2:05
  • \$\begingroup\$ And in case you have any doubt on this, when properly written, signal names have some indication whether the function they are named for (such as WE = "Write Enable") is active high or low. Active low is indicated by some decoration like an overbar, or a slash prefix (/WE) or a # suffix (WE#). \$\endgroup\$ – gwideman Apr 20 '14 at 3:54
  • \$\begingroup\$ @gwideman -- Thanks for mentioning a couple of alternate ways of showing a active low signal using just ASCII characters. I have edit my answer to use the #. \$\endgroup\$ – tcrosley Apr 21 '14 at 0:52

CE (chip enable) may also be named CS (chip select), as it is in the timing diagrams below. The others are WE (write enable) and OE (output enable). These are all active low (indicated by the overbar), but since that can't be done with ASCII characters I will use a # suffix in the text below, e.g. CS#.

CE#/CS# is normally high. To read the RAM, the address of the byte to be read out is presented on the address lines, A0 through A10, not shown. Eleven address lines means the chip can hold 2K bytes. CS# is then brought low, followed by OE# (output enable), which enables the output on the eight I/O lines (they are normally tri-stated when OE# is high).

After a delay known as the access time (maximum of 15 ns for this chip), the contents of the byte in memory will be available on the I/O lines. After reading the data, CS# and OE# can be brought high again.

To write a byte, the address of the byte to be written to is presented on the address lines. CS# is once again brought low. The data to be written is put onto the I/O lines, and WE# (write enable) is brought low for a minimum of 12 ns. WE# then is brought high again, and on the rising edge of WE# the data is written into memory.

If you look at the Truth Table below, you will notice that the I/O lines are tri-stated if either the CS# is high, or both OE# and WE# are high. This is to allow multiple chips to be wired with their I/O lines in parallel.

Let's say you wanted to make an 8K memory using four chips. Two additional address lines A11 and A12 would be decoded into the four CS# lines needed, for example using a 2 to 4 decoder like the 74HCT139. When one chip is selected for reading out, with CS# and OE# both low, its I/O lines are set up as outputs and drive the bus, and the other chips are tri-stated so they don't try to drive the bus themselves. Likewise for writing, when one chip has CS# and WE# low, its I/O lines are set up as input lines, and the other chips stay out of the way.

enter image description here


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.