Java Circuit Simulation Workaround ▾

Due to recent changes by Oracle, java applets have become difficult to run in the browser. To mitigate the troubles, Oracle has provided the following websites to help users troubleshoot: and

Even after following the above instructions, loading applets may still show warning concerning “unsigned application” and “unknown publisher”. For Teahlab in particular, these warnings are due to the fact that we have opted not to pay a third party such as Verisign to sign our applets. Any warning that comes up when you try to run our applets should emphasize that our applets will always run with “limited access”, which is Oracle’s way of letting you know that teahlab doesn’t do anything on your computer except running the circuits you see: in other words, our applets are safe to run.


The Teahlab Team

by Isai Damier (Let's connect on twitter @isaidamier )

The interactive Parallel Register digital logic circuit, with Boolean function


If you have ever installed a printer or other hardware on your own personal computer, quite likely you have had to choose between a parallel port and a serial port. What this question is actually asking you is to choose your blessing, or poison — depending on how you look at it. The serial port on your computer allows you to use a single wire and a single circuit cell to transfer data. This method of transferring data is good except in one way. Because you are only using one wire and one circuit block, the component is relatively inexpensive to build and is physically relatively small. And people like small electronics. But there is a catch. The serial port is slow. It is slow because it only transfers one bit of data for every clock cycle. As a consequence, it takes eight clock cycles to move 1 byte (= 8 bits) of data.

The parallel port is a lot faster than that. The parallel port only uses one clock cycle to move all the data. So if you have a component that can move 8 bytes of data in parallel, that’s one clock cycle as opposed to sixty–four clock cycles on a serial port. Think one second versus one minute! Parallel computing is fast! So what is the disadvantage? The problem is that more wires and more circuit cells means more money, larger and heavier digital systems, more parts that can break during operation, more heat to dissipate, etc. Digital systems that can move bulk of data in parallel are expensive to build and to maintain.

So far we have been using the word “port” because many people who own personal computers are familiar with the terms parallel ports and serial ports. But the technical name for the component that allows computers to move data either serially or in parallel is Register.

Design and Operation

Registers are where computers save data. Parallel registers can receive and transmit data in parallel. The interactive circuit in Figure 1 is the simplest type of parallel register. It is just a line of flipflops. In computer engineering talk, the word register means a group of flipflops treated as a unit. One flipflop can store one bit of information. To save k bits of data as a unit we need a unit of k flipflops. We call the unit a register.

A simple interactive parallel register digital logic circuit, with Boolean function
Figure 1

The register in Figure 1, however, is too simple to be of great use. It is entirely controlled by the clock. As such it can only retain information for one clock cycle. Whatever is at the inputs of the flipflops will replace the data at the outputs on the next clock cycle.

Compare Figure1 to the main interactive circuit at the top, however. They are both really the same register: both have four flipflops arranged in parallel and therefore can only store and transfer 4–bit data per clock cycle. But the main interactive register uses four 2–to–1 multiplexers to protect the data inside the flipflops from whatever is happening at the input pins. The Load switch decides when the signals at the data ports may be transferred into the flipflops. The main interactive circuit is an example of a robust register.

Each 2–to–1 multiplexer is wired to an input switch and to a flipflop output feedback. The Load switch serves as the selector switch of the multiplexers. When Load = 1 the multiplexer lets the input signal X through; when Load =0 the multiplexer lets the feedback signal Q through. At all time the clock signal is free to come in. But the clock signal does not control the circuit; the Load switch does. Figure 2 shows a single 2–to–1 multiplexer; in case you wanted to see one by itself.

Interactive single 2–to–1 multiplexer digital logic circuit, with Boolean function
Figure 2

A final note: it is often tempting to gate the clock signal — as opposed to the input signals — so as to control access to the register. The reasoning being, if we prevent the clock signal from reaching the register, then the data inside the register cannot change. The problem with this practice is that it interposes propagation delays and will cause the register to go out of synchronism with the master clock and the rest of the digital system. Therefore, using a loading switch with multiplexers or similar gating techniques to control the connection between the data bus and the register is a superior design method — as shown in the main interactive circuit.