Booth’s Multiplication with FSMs
Contents
Introduction
Our Booth’s multiplier from Lab 2 had an obvious shortcoming. Even though we could “skip” add operations during long strings of 1’s or 0’s in our multiplier, our circuit still performed the operation! (Though, the result of the operation was discarded on cycles where the add/sub wasn’t needed.) The natural next step is to provide functionality to skip unnecessary add and subtract operations. With your new expertise in finite state machines, it is now possible to design a new controller that can skip those operations!
We ask that you implement the new controller twice: once as a Mealy machine and once as a Moore.
Circuit Structure
Failure to follow this structure can result in grading of the lab to be delayed or incorrect.
You will create four circuits for this part, MealyController.dig
, MooreController.dig
, and BoothsMultiplierMealy.dig
and BoothsMultiplierMoore.dig
that follows the same pinouts from Lab 2.
Controller Pinout
The pinouts for the controller can be found in the following sections at the bottom.
The pins we specify here are the minimum required pins for a component. You can have more inputs or outputs if you want for debugging purposes, we will not be touching them.
Multiplier Pinout
Port Direction | Port Name | Active | Port Width (bits) | Description |
---|---|---|---|---|
INPUT | CLK | Rising | 1 | Clock input used for controlling the multiplier |
INPUT | CLR | High | 1 | Clears the multiplier to allow it for later reuse |
INPUT | MULTIPLIER | - | 13 | 13-bit signed decimal input as multiplier |
INPUT | MULTIPLICAND | - | 13 | 13-bit signal decimal input as multiplicand |
OUTPUT | RESULT | - | 26 | 26-bit signed decimal output as a result from your multiplication |
OUTPUT | OP_DONE | - | 2 | The operation you have performed (addition, subtraction, or no-op) |
OUTPUT | DONE | High | 1 | Set high when you have finished the multiplication |