TAMS / Java / Hades / applets: contents | previous | next | ||||
Hades Applets contents visual index introduction std_logic_1164 gatelevel circuits delay models flipflops adders and arithm... counters LFSR and selftest memories programmable logic state-machine editor misc. demos I/O and displays DCF-77 clock relays (switch-le... CMOS circuits (sw... RTLIB logic input and ou... configuration animation incrementer adder subtraction rotate shifters comparison logic (bitwise) logic (wordw... muxes bit-twiddling bus-tap expand bits tri-state bu... RTLIB registers Prima processor D*CORE MicroJava Pic16 cosimulation Mips R3000 cosimu... Intel MCS4 (i4004) image processing ... [Sch04] Codeumsetzer [Sch04] Addierer [Sch04] Flipflops [Sch04] Schaltwerke [Sch04] RALU, Min... [Fer05] State-Mac... [Fer05] PIC16F84/... [Fer05] Miscellan... [Fer05] Femtojava FreeTTS | tri-state buffers
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 |