CSC 480 Lab #8

"Counting the memories" Lab

Purpose

Today, we will create a simple control unit, using (and learning) two new chips.

Components used

Datasheets are attached for:
2816 EEPROM
7493 binary counter

Lab Problems

First, we'll learn how the EEPROM works. Then, we'll play with our binary counter. In the finale, we're going to use the counter to generate addresses for the EEPROM. Therefore, I suggest the following:

When you put your EEPROM in the board, leave room to your left for the counter chip.
Read the whole lab before starting and that may give you insight in building a neat setup rather than a plate of spaghetti.
I have suggested specific connections throughout much of the lab because we're going to occasionally be clever with switch usage and such. If you deviate, then please understand the ramifications to the rest of your design.

 

1. The EEPROM, 2816

The 2816 EEPROM is a 2K x 8 electronically erasable ROM. The goal of part 1 to is to write the following table into the ROM:

Address Value
0000 3
0001 11
0010 7
0011 0
0100 3
0101 9
0110 6
0111 9
1000 1
1001 2
1010 4
1011 10
1100 0
1101 10
1110 15
1111 1

Please note that the values in the table are just gibberish that I made up. You can put your own values in as long as you write them down and as long as they are also somewhat random... don't want to stifle your creativity, eh.

Read the datasheet description of the 2816 EEPROM. Draw a circuit diagram of how you plan on hooking it up. Here's some help:

There are 3 enable bits. Please note that they are all active low:
CE' - chip enable, which can turn the whole unit off
WE' - write enable, which allows you to write a value to the current address
OE' - output enable, which allows you to read the value at the current address
There are 11 address bits A10 - A0 to enable the addressing of 2K words
There are 8 input/output bits I/O7 - I/O0 which are used as inputs when write_enable is active and are used as outputs when output_enable is active

Here's my suggested connections:

Connect CE' to ground, so the chip is always enabled
Connect OE' and WE' to a pulse button, so that we are reading the ROM by default and will write a value to the ROM when pressing the button. Connect OE' to the rising edge of PB1 (active on logic 0, when PB1 is at rest) and WE' to the falling edge of PB1 (active on logic 0, when PB1 is pressed).
Connect the lowest 4 address bits A3 - A0 to switches S7 - S4.
Connect the higher-order address bits A10 - A4 to ground because we are only storing 14 words.
Connect the low-order I/O bits I/O3 - I/O0 to switches S3 - S0. The values will be programmed in using these switches.
Also connect the low-order I/O bits to LED's L3 - L0 so that you can view the values as they are being set.

Again, please draw your circuit diagram before starting.

Set your address and value switches, and "program" your ROM using the values from the table. Press the PB1 button each time to write to the ROM.

Once, you've programmed the ROM, you want to show that the values have successfully been written. You need to disconnect switched S3 - S0 from the ROM, so the ROM's output values will drive the LED's, not the switches. Don't forget to turn the power off as you are altering the connections. Don't worry though, your 2816 is nonvolatile.

Turn the power back on. Try addresses 0 through 15 and verify that you have programmed your values into the ROM. Note: give your EEPROM some time to power up. It took a while (10 seconds plus) for mine.

When you have verified that you ROM is programmed, then move on to part 2.

Deliverable: For part 1, hand in your circuit diagram

Don't disconnect your EEPROM!

Leave it be, so you can use it for part 3.

2. The Counter, SN7493

In part 2, please connect the 7493 to count from 0 to 15, repeating, showing the count in octal on the logic board's seven segment display. The seven segment display has two digits, DS1 & DS2, on the lower right. You can use the seven segment display by doing the following:

Connect DS1DE & DS2DE to +5V to supply power to the display
Once power is connected, DS1 treats connections DS1D, DS1C, DS1B, DS1A as a four bit binary value. That value is shown on the DS1 display. For example, for values DS1D = 0, DS1C=1, DS1B=0, DS1A=1, DS1 will light a 5 on its display.
Likewise, DS2 shows the binary value of DS2D, DS2C, DS2B, DS2A as a four bit binary value.

Please read the description of the counter.

I suggest connecting it as follows:

Tie reset inputs R0(1) and R0(2) together and controlled with any available switch
Connect INPUT A to one of the pulse buttons, like PB1. Note on the datasheet that INPUT A has an bubble on it. This means that it will be driven on a negative edge.
Connect QA to INPUT B which directs the chip to count from 0 to 15.

We will show the count using octal values on the seven segment display, so:

Connect the low order outputs of the counter (QC, QB, QA) to the DS2 inputs.
Connect the high order output, QD, to low-order bit of DS1.

Draw your circuit diagram, showing all connections.

You should be ready to count, using the PB1 button. Learn how to start your count at 0 using your reset switch. Success is counting from 0 to 15 (or 17 in octal) and repeating.

Deliverable: For part 2, hand in your circuit diagram

3. A caveman's micro sequencer

For the final step, connect the QD - QA outputs of your counter to the A3 - A0 address inputs of the ROM. You should be able to cycle through the ROM values that you set earlier using the counter.

Deliverable: Show me your stuff working before you leave!