CIS 351 |
Project 1: Build an Adder |
Winter 2022 |
For this project, you will use JLS to implement a signed adder.
You should work in teams of two. This project is a lot of work. Working alone is foolish.
Begin by following this GitHub Classroom link to create the repository for this project. You may want to copy your unsigned adder from the lab into this new repo.
Implement a 16-bit signed adder using any algorithm you
wish, provided the circuit (1) has a reasonable size, (2) a running time of 225 or better, and
(3) at least partially incorporates elements of a sub-linear algorithm
(carry-lookahead, carry-select, Kogge-Stone, etc.)
Your adder must report overflow conditions when they
occur (with respect to signed inputs).
Notice that this circuit must have an input named CarryIn
.
You will use this input for future projects.
The starter code contains a file named SignedAdder_16bit.jls
. You must place your solution
in this file. Do not change the names of any of the inputs or outputs. (If you change the filename
or the names of any inputs/outputs, the automated tests will not work.)
CarryOut
is the carry out from the last full adder. It is also,
in effect, the overflow indicator for unsigned inputs. Overflow
is the overflow
indicator for signed inputs. Remember, CarryOut
and Overflow
will not
necessarily have the same value.
You may use SampleSigned16BitAdderTest.java
as a basis for your own tests. Warning! This
test file is incomplete. Don't assume that a circuit that passes this sample test will pass all of my tests.
JLS
and DLUnit
. Commit and push your code often. That way, if JLS does crash
you won't lose too much work. Also, please e-mail me with any bugs you
find or feature requests you have. If JLS crashes, please e-mail me the
JLSerror
file.
When your adder passes all of the automated tests, prepare a document that discusses its overall design and analyzes its
To compute the exact size, simply count the total number of gates used. (You don't need to consider the number of inputs.)
To compute the exact time, compute the propagation delay using the default component delays given by JLS (10 for AND, OR, XOR, 5 for NOT, NAND, NOR, etc.). To see a component's default delay, right-click on it and choose "change timing" from the context menu. (Look at the time; but, don't actually chagne it!)
Your adder's big-O running time describes how the running time will change if you applied your pattern to adders of increasing size. If you used a hybrid design, describe how you would extend your design to build 32-bit and 64-bit adders. (Your technique for extending your hybrid design will determine the big-O running time.)
Finally, add a paragraph or two discussing your adder's overall design. In particular, if you used a hybrid design, list any sub-linear addition algorithms used and how you incorporated them into your adder.
Place this information in a file named either analysis.txt
or analysis.pdf
. For each answer, please include
a paragraph or two describing how you got your answer.
You are expected to revise your circuits and analysis documents until both (1) the automated tests pass, and (2) the analysis document has earned a score of "E" or "M". Project "Late Days" will accumulate until both requirements have been satisfied.
Extra Credit: You can earn extra credit on this project based on the time of your adder:
You can also accumulate up to -2 Late Days if you project meets all requirements before the deadline. (Negative Late Days can be used to offset any Late Days acquired on other projects or labs.)
To submit your project:
jls
files that includes the names of all team members.
analysis.txt
or analysis.pdf
.
[Grade Me]
in the commit message. ([Grade Me]
is not a
formal syntax, it is just tells me that you are ready for me to look at your project.)
Updated Monday, 24 January 2022, 11:29 AM