Readings
- ALU:
- N2T: Section 2.2.2, 2.3 (p39), 2.4, 2.5 (slides 44-58, 65)
- Bits, Registers, Counters:
- N2T: Section 3 Intro, 3.1 (ignore Memories/RAM), 3.2.1, 3.2.2, 3.2.4, 3.3 (ignore Memories/RAM), 3.4, 3.5 (slides 1-6, 11-23, 32-35, 47-49, 53, 54, 59, 60-64)
Description
This assignment will focus on the following tasks:
- building the major computing device, the ALU
- building simple memory components
Build the
ALU
circuit described in Project 2 and the
Bit
and
Register
circuits described in Project 3:
N2T: Project 2
N2T: Project 3
Chapters 2 and 3 provide 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
Design in Logisim
Note the following requirements:
- arrange the circuits one after the other in the given order
- label the input pins as specified in the contract
- if there are multiple circuits on the canvas add the circuit index (for example
a0,b0,out0)
- save the Logisim files in folder
projects/2/a6
Here are additional specific requirements:
ALU
:
- save in file named ALU.circ
- recall that Multiplexers have "if" meaning
- use the Logisim versions of previously built-components (e.g.
Adder
)
- you may convert a single
Or
component into Or16Way
- minimal use of basic gates
- note on testing:
- initially do not include the (status) outputs
zr
, and ng
- after the
ALU
can perform the operations in Table 2.6, add the (status) outputs
- submit screenshots that show evidence of testing based on the following configurations in Table 2.6:
- case1.png: control pins set as in row for
-x
with inputs x=1011,y=1001
- case2.png: control pins set as in row for
y+1
with inputs x=1110,y=FFFF
- case3.png: control pins set as in row for
x-y
with inputs x=1010,y=1101
- each image size no larger than 500KB
Bit
:
- save in file named Bit.circ
Bit
should be built primarily of D Flip-Flop
(under Memory
)
- do not change the
D Flip-Flop
properties and only use the D, Q, enable, clock
pins
- for testing you will need to attach a
Clock
(under Wiring
)
- minimal use of basic gates
submit screenshots that show evidence of testing
Register
:
- save in file named Register.circ
- for the Logisim version the main input and output will be of width 8, i.e. the circuit will only store 8-bit numbers
Register
is just a parallel sequence of Bit
components
- for the
Bit
component use a 1-bit version of Register
(under
Memory)
- do not change the
Bit/Register
properties and only use
the D, Q, enable, clock
pins
- for testing will need to attach a
Clock
(under Wiring
)
- minimal use of basic gates
submit screenshots that show evidence of testing
Design in HDL
Here are additional specific requirements:
- Implement one circuit at a time. For circuit X copy X.hdl, X.cmp, X.tst to folder projects/2/a6.
Or16Way
:
- create
Or16Way
chip saved in Or16Way.hdl; as simple as possible with as few gates as possible; reuse similar existing chips from previous assignments
- create your own Or16Way.hdl, Or16Way.tst, Or16Way.cmp; model after the existing similar version (it is fine to just copy each data value twice to match the width)
ALU
:
- recall that Multiplexers have
"if"
meaning
- use the chips built in previous assignments (e.g. Adder)
- minimal use of basic gates
- note on testing:
- initially ignore the (status) outputs
zr,ng
; simply do not mention them anywhere in ALU.hdl
- for testing use the provided files ALU-nostat.tst and ALU-nostat.cmp (no status)
- later add the (status) outputs
zr,ng
and for testing use the provided
files ALU.tst and ALU.cmp (with status)
Bit
:
Bit
should be built primarily of the built-in DFF
chip
- minimal use of basic gates
Register
:
Register
is just a parallel sequence Bit
chips
- minimal use of basic gates