Sie sind auf Seite 1von 2

CPRE 330 Project: Functional Calculator

For CPRE 330, semiconductor devices, I had four weeks to create a final project. This project
was a functional calculator which supported 3 digit addition and subtraction. For this project I had to
research physical input and output components, as the user would need to input values just like a
normal calculator, and see the output. This project ended up being fairly complex as I wanted to create
a product which was easy to use. This required me to create the proper logic to allow the calculator to
function just as a person would expect it to.

I worked alone for the entirety of this project. Most of the project was done in Verilog and the
ModelSim IDE. I also used cadence and encounter to automate the layout of my circuit after
completion. To begin this project, I first researched the input and output components, and what I would
need to do to get them to work properly in my design. I then created a block diagram for all the main
components that would be needed in my project. One of the most difficult pieces was taking in a
decimal value, converting it to binary, doing an arithmetic operation, converting it back to decimal, and
displaying it.

For the design of this project, I worked on each piece individually. One of the more complex
blocks handled the conversion from decimal to binary, as well as block for binary to decimal. To
accomplish this, I used a multi-cycle implementation of the double dabble algorithm. This algorithm
required as many clock cycles as the length of the input in bits. A three decimal input/output required
12 bits, and therefore it took 12 cycles to complete. For my design, I had to figured out how to properly
pipeline the inputs and outputs to display the correct result. I also designed the hardware to work
exactly how the user expected it to. The user was able to easily input their values, their operations, and
operate on previous outputs just like you would expect from a commercial calculator. The user did not
have to hit any buttons that made my life (the designer) easier.

For this project I learned quite a bit about how to design a product with the user in mind. I
learned about the complexities of dealing with human input, and how much must be done for creating a
simple use case. One struggle with this project was dealing with human input. Computers work in
cycles, and humans interact with hardware much slower. For this reason I had to ensure my design
could properly extract the information the user was inputting despite that input coming in across
millions of clock cycles. I was also able to learn how to use additional outside peripherals in hardware
design.

Diagram Below

Das könnte Ihnen auch gefallen