Logisim is a freely available, simple to use, and surprisingly powerful digital logic simulator and design tool, produced by Carl Burch.
Logisim allows interactive creation and simulation of a wide range of combinational and sequential logic circuits, and includes a library of pre-created circuit building blocks, arranged by category.
A powerful Circuit Analysis tool is available for combinational logic circuits which allows circuit operation to be interactively defined and even simplified using truth table, Boolean expression and Karnaugh map views. Any change made in one view is immediately updated in the others, and the resulting circuit may then be automatically generated using standard logic gates or a NAND only design.
Any circuits generated using the Combinational Analysis tool will appear as named sub-circuits, which may then be inserted into the main circuit. (It is also possible to create sub-circuits manually, or even to 'nest' one inside another.) A circuit to perform binary addition is an example of the hierarchical design process, as shown below.
In this case, a half adder circuit has first been created as a sub-circuit. Two of these are then used to create a full adder, together with an additional logic gate. Finally, four full adders are combined to form a 4-bit adder circuit, with the Carry Out from one connected to the Carry In of the next. (The illustration shows the addition of two 4-bit numbers, A = 3, B = 3, resulting in Sum = 6.)
Multiple bit circuit operation
While the previous adder circuit illustrated the possibilities for structured design, Logisim already contains an adder circuit in its standard component libraries, removing the need to design this particular circuit from first principles. In fact, many Logisim components have a Data bits configuration setting, which allows a traditional single bit electronic component to be transformed into one which handles multiple bits. The following illustration shows a 4-bit adder made from 1-bit components at the left, or as a single 4-bit adder at the right.
To change the data width used by a component, first highlight it using the Pointer tool, and then change the Data Bits setting at the lower left. You will then need to change the data width of any connected inputs and outputs, until any 'incompatible widths' errors disappear.
Logisim is quite remarkable, as it manages to combine ease of use with power and reliability – and at zero cost!
It is certainly an ideal tool for education, although there is a danger that some learners may use the circuit design tools without first having a thorough grasp of underlying concepts. The task for educators in this case is surely to design activities which encourage learning through discovery and experimentation, with answers backed up by appropriate theory.