Arithmetic - page 1 There are many ways to design a multiplier. We can use any. We can have integer multipliers, floating point multipliers, slow multipliers, fast multipliers, approximate multipliers, and more, all in 16, 32, 64, or other bit widths. Many types of multipliers can co-exist in a single WIZ, behind different registers. And WIZes can have no multipliers at all. There are plenty of basic blocks of code that do no multiplies. In "The backend in detail" chapter I showed an adder circuit and how it would be interfaced. Much more sophisticated adder circuits, and multiplier circuits, and so on, are available as IP from various companies. Any of these would be suitable for a WIZ, and would be interfaced in the same way. Consider a multiplier designed to receive a series of numbers and return their product. For example: 5 -> multiplier ; 17.04 -> multiplier ; 22.6 -> multiplier multiplier -> printer This prints 1925.52, which is 5 x 17.04 x 22.6. Or this: thermometer , humidity sensor , 6.3 -> multiplier -> printer Here we send three numbers, the temperature, the humidity, and 6.3, to be multiplied together and then printed. Each time we read this multiplier, such as in the final instruction above, "multiplier -> printer", it outputs its accumulated product and resets the register to 1.0, thus beginning a new product with any further numbers it receives.