
ALU, but including Mux4Way, Mux8Way, DMux4Way, DMux8Way from Project 1):
N2T: Project 2
Chapter 2 provides the contract for each circuit, i.e. description of its behavior, names and number inputs, names and state of outputs. The API is available here:
The Hack Chipset
a0,b0,out0)projects/2/a5Splitter: Logisim has a component called Splitter under Wiring; it can be used to split or merge wires depending on the point of view (i.e. on the orientation); it can be oriented appropriately via the Properties panel
Constants: to achieve the effect of sending the constant value 1 to a pin in Logisim use the component 1⚬Constant under Wiring (it can also send 0)
Mux4Way, Mux8Way with .tst.cmp]:
Mux4Way16, Mux8Way16:
Mux4Way16 should be built primarily of Mux16 (as few as possible); basic gates should be avoided if possibleMux8Way16 should be built primarily of Mux16, Mux4Way16 (as few as possible); basic gates should be avoided if possibleDMux4Way, DMux8Way:
DMux4Way should be built primarily of DMux, i.e. only 2 outputs of width 1, and selector of width 1; basic/basic16 gates should be avoided, if possibleDMux8Way should be built primarily of DMux, DMux4Way, i.e. only 2 or 4 outputs of width 1, and selector of width 1 or 2; basic gates should be avoided, if possibleHalfAdder, FullAdder:
Add16:
Adder components (under Arithmetic); the wires of these components should have width 1a, b) that are immediately split into individual wires (use Splitter under Wiring)Inc16:
AdderSplitter:
gatepin=wire[i..j] or gatepin[i..j]=wire (widths have to match)gatepin[i]=wire[j] or gatepin=wire[j] or gatepin[i]=wire (for 1-bit versions)gatepin[i..j]=wire[p..q] (widths have to match)gatepin could be an input or output pin of the gate
Constants: to achieve the effect of sending the constant values 1 or 0 to a pin in HDL you write gatepin=true or gatepin=false (should work regardless of pin width)
Here are additional specific requirements:
Mux4Way16, Mux8Way16:
Mux4Way16 should be built primarily of Mux16 (as few as possible); basic gates may be used if usefulMux8Way16 should be built primarily of Mux16, Mux4Way16 (as few as possible); basic gates should be avoided, if possibleDMux4Way, DMux8Way:
DMux4Way should be built primarily of DMux (as few as possible); basic gates may be used if usefulDMux8Way should be built primarily of DMux, DMux4Way (as few as possible); basic gates should be avoided, if possibleHalfAdder, FullAdder: only basic gates may be usedAdd16: built primarily out of HalfAdder, FullAdder; basic should be avoided, if possibleInc16:
Adder16