CIS 351

Project 2: Subtract and SLT

Fall 2018

Build a Subtractor and Comparator using JLS

Extend your signed adder from the previous project to build

Pre-requisites

You will need your signed added from the previous project.

Task 1: Adder/Subtractor

Build a circuit that can do both addition and subtraction. Specifically, surround your adder with additional gates so that it performs both addition and subtraction. This circuit should contain one adder only. Be sure to ask for clarification if you don't understand this requirement.

Your inputs must be named InputA, InputB, and Op. If not, your circuit won't work with my tests. The Op input specifies whether to perform addition or subtraction. (1 means subtract, 0 means add).

Your outputs must be named Output, CarryOut, and Overflow. CarryOut is the carry out from the last full adder. It is also, in effect, the overflow indicator for unsigned addition. Unsigned subtraction cannot overflow. (Subtraction that generates a negative result is not considered "overflow".) Overflow is the overflow indicator for singed operations. Remember, CarryOut and Overflow will not necessarily have the same value.

You may use this test file (SampleSigned16BitAddSubtractTest.java) as a basis for your own tests. Warning! This test class is incomplete. Don't assume that a circuit that passes this sample test will pass all of my tests.

Task 2: Set if Less Than

Build a circuit that can compare two integers (either signed or unsigned).

Use your adder/subtractor as a starting point and leverage the fact that

Be aware, however, that this algorithm works only as long as A - B doesn't overflow. You'll need to think about the conditions under which A - B might overflow, and use alternate techniques for comparing A and B in this case.

Your inputs must be named InputA, InputB, and Signed. If not, your circuit won't work with my tests. The Signed input specifies whether to perform a signed or unsigned comparison (1 means signed, 0 means unsigned).

Your output must be named LessThan

You may use this file (SampleSlt16BitTest.java) as a basis for your own tests. Warning! This test script is incomplete. Don't assume that a circuit that passes this sample test will pass all of my tests.

Rules

  1. You are strongly encouraged to work in groups of two. You may work alone only with permission of the instructor.
  2. The simulator comes with a built-in adder. You may not use the built-in adder.
  3. To build the required circuits, you will probably find it useful to design and build several subcircuits. These subcircuits may have any interface you choose; however, you are responsible for testing them.
  4. You must write all of your own chips. In other words, you may not share "internal" chips with your classmates, or download them off the Internet.
  5. Be sure to test your components thoroughly. Just because it passes the test included here doesn't mean it will pass my test.
  6. You may use the built-in mux component.

Hints and shortcuts

Grading

This assignment will be scored out of 50 points.

Category Rubric Maximum Score
Adder/Subtracter
Not attempted 0
Substantially complete, but passes no tests 3
Passes a few tests 5
Correctly adds and subtracts
(but overflow does not work correctly)
8
Passes all tests 10
Sltu
Not attempted 0
Substantially complete, but passes no tests 4
Passes a few tests 6
Passes all tests 12
Slt
Not attempted 0
Substantially complete, but passes no tests 4
Passes a few tests 6
Passes all tests 12
Date 100% correct
Two days early 12
One day early 11
On time 10
One day late 8
(-2 per day) ...
Five or more days late 0
Presentation
Documentation and Neatness 6

Penalties

Deliverables

To submit your project:

  1. Add a text box to your jls files that includes
  2. Either

W3c Validation