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/a5
Splitter
: 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
:
Adder
Splitter
:
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