EEPROM Programmer - UART


The largest part of the EEPROM Programmer is a simple UART, or Universal Asynchronous Receiver/Transmitter. (Actually, only the receiver part!) The UART is implemented with these parts: the resistors and diodes, the 555 oscillator, the 74LS164, and the 74LS74. You might want to refer to the schematic.

SIN is the serial input. It is clamped by the resistors and diodes to stay within the range of power supply rails (no less than -0.7 volts, no more than 5.7 volts). It goes into a 74LS164 shift register that is clocked at about 3 times the bit rate by the 555 oscillator. This over-sampling assures that even if the clock or data rate drifts a little, the meaning of the input will not be lost.

This particular UART only receives three characters: ZERO, ONE, and LOAD. These are encoded as 0, 1, and 11, respectively. Before any characters are sent, the line is at the MARK level (shown as a low voltage in the timing diagram . First, a START bit is sent, then the one or two bits of code, and then at least one STOP bit. The START bit (high voltage input) moves through the shift register. First it clocks the previously received bits using SCLK.

Then, using Q4, the delayed START bit samples the incoming message. A ZERO will already have dropped the input line back to a low voltage; it gets clocked into the 74LS74 as a 0. If the character was a ONE, the input line will still be at a high voltage; it gets clocked in as a 1. These data bits are output from the pin labeled SDATA.

The LOAD character is detected by the other half of the 74LS74. Using Q7, the further delayed START bit clocks the input line. If the input is still at a high voltage, it must be a LOAD character. Otherwise it will have dropped to a low voltage: the STOP bit of either a ZERO or ONE. Note that if the character is a LOAD, a 1 is clocked in. That's OK, as long as this "fake ONE" (that always precedes a LOAD character) is ignored by the rest of the logic.

This completes the UART portion of the circuit.

The ZERO and ONE characters are shifted into a data and address registers (the 74LS374 devices) as they are received, using the SCLK signal. When the LOAD character arrives, 13 of the previously received bits are used for the address, and 8 of the bits are used for the data, they are written into the EEPROM when the WE_L (write enable) signal go to a low voltage.


Return to Shark Scanner Page

Return to Bill Grundmann's Project Page