Let’s Build a Calculator
In Chapter 4, Counting Button Presses, we learned how to store values using Flip Flops (FFs). We learned about timing and constraints, simulation and delta cycles, and clock domain crossing. In this chapter, we are going to use our HDL knowledge of combinational logic and sequential elements to discuss state machine design. We’ll look at classic state machine designs and develop a traffic light controller, a staple of Electrical Engineering (EE) projects.
We’ve built a controller for a seven-segment display that we can use to show numerical values and we know how to handle button and switch inputs safely. Now, we’ll take this knowledge and show how we can define a state machine to keep track of the calculations we want to perform. We’ll use this to develop our first truly useful design, a simple calculator capable of entering two 16-bit numbers and adding, subtracting, multiplying, and dividing them, placing the output...