Hades logoHades applet banner
tri-state buffers

applet icon

The image above shows a thumbnail of the interactive Java applet embedded into this page. Unfortunately, your browser is not Java-aware or Java is disabled in the browser preferences. To start the applet, please enable Java and reload this page. (You might have to restart the browser.)

Circuit Description

A demonstration of the RTLIB tri-state buffers and the std_logic_1164 resolution function.

The applet shows a central 8-bit bus driven by three non-inverting tri-state buffers (classes hades.models.rtlib.muxes.TriBuf and TriBufBig). Except for the slightly larger symbol of the TriBufBig, there is no functional difference between the two variants of the buffers. The buffers are tri-stated when their enable input is low (0), and propagate their input value to the output when their enable input is high.

Click the input switches and enable switches to play with the bus. What happens if multiple tri-state buffers are enabled at the same time? What happens if multiple buffers are enabled but drive the same value on the bus?

Note that both glow-mode and the OpinVector output components use the XXX (or UUU) value and color for a bus with at least one X (or U) bit, at least in decimal and hexadecimal display mode. Try to click the OpinVector to change its display mode to binary, and then enable two (or all threee) of the tri-state buffers. You can now see that the resolution function applies to each bit of the bus individually, and result values like "XXX1XX0X" are possible.

For performance (and didactic) reasons, most logic and arithmetic functions in the Hades RTLIB check for invalid or undefined bits in their input. If at least one undefined bit ('U', 'X', 'Z', 'W', 'D') occurs in the input, the functions will directly return an all-X (XXX) output value. This is much faster than trying to calculate a partial result by a complex bit-by-bit evalution algorithm.

Finally, note that the tri-state buffers used here are non-inverting and controlled by non-inverted enable signals. This is standard practice in register-transfer-level designs, because it is easier to understand. On the other hand, inverting buffers with inverted enable inputs are usually the basic building block on the gate-level; compare the tri-state buffer from the standard Hades gate library (hades.models.gates.Tri).

Print version | Run this demo in the Hades editor (via Java WebStart)
Usage | FAQ | About | License | Feedback | Tutorial (PDF) | Referenzkarte (PDF, in German)
Impressum http://tams.informatik.uni-hamburg.de/applets/hades/webdemos/50-rtlib/10-components/tribuf.html