EDN logo


Design Ideas: July 18, 1996

Decoder safely drives data-bus buffer

Piotr Mazur,
Wikom, Warsaw, Poland

Figure 1 shows a common way of implementing an I/O decoder for the ISA (or similar) bus. Under control of the decoder chip, a 74LS245 buffer separates the onboard data bus from the ISA bus. If the DIR and G/ signals derive only from decoder inputs, they change state simultaneously at the beginning and end of an I/O cycle. Such behavior can cause undefined operation of the buffer with possible contention on the local or ISA bus (particularly if you use a faster version of the 245).

You can solve this problem by using more complex equations for DIR and G/:

!DIR = (!IOR/ & !AEN & (Address == xxx)) # (!DIR & !G/); !G/ = (!IOR/ & !AEN & (Address == xxx)) & !DIR) # (!IOW/ & !AEN & (Address == xxx));

This solution does not require additional macrocells and assures DIR stability before G/ goes active and after it becomes inactive (Figure 2). The assertion of G/ during read cycles delays until DIR becomes stable. The equation for DIR is equivalent to an R-S latch that is set by active IOR/ and cleared by inactive G/. For correct operation of this latch, the IOR/ and IOW/ pulses must not overlap. This situation is always true for real-bus operation but requires the addition of one idle state between reads and writes in the test vectors for PLD testing. (DI #1898)


| EDN Access | feedback | subscribe to EDN! |
| design features | out in front | design ideas | departments | products | columnist |

Copyright © 1996 EDN Magazine. EDN is a registered trademark of Reed Properties Inc, used under license.