This project involves the design and implementation of a 32-bit Floating Point Multiplier and a 32-bit Fixed Point Multiplier using Verilog. The floating-point implementation adheres to the IEEE 754 single-precision standard, while the fixed-point implementation uses the Q16.16 format for numerical computations.
- Floating Point Multiplier
- IEEE 754 single-precision support.
- Handles normalization, rounding, and exceptions (e.g., NaN, infinity, zero).
- Fixed Point Multiplier
- Implements 32-bit × 32-bit multiplication using Wallace Tree architecture.
- Supports Q16.16 format.
- Digital Signal Processing (DSP)
- Image Processing
- Scientific Computing
- Real-Time Control Systems
- Sign Calculation: XOR the signs of the two operands.
- Exponent Addition: Add exponents with bias adjustment.
- Mantissa Multiplication: Multiply mantissas using Wallace Tree structure.
- Normalization: Adjust mantissa and exponent to maintain precision.
- Rounding: Round result to fit IEEE 754 format.
- Special Cases: Handle NaN, infinity, zero, overflow, and underflow.
- Sign Calculation: Determines the result sign using XOR gates.
- Exponent Addition: Uses a ripple-carry adder for bias-adjusted addition.
- Mantissa Multiplication: Uses a Wallace Tree Multiplier for efficient computation.
- Normalization and Rounding: Adjusts mantissa and exponent to fit within 23 bits.
- Q16.16 format: 16 integer bits + 16 fractional bits.
- Wallace Tree multiplier for partial product reduction.
- Overflow detection and modular design.
- Speed: Single-cycle operation.
- Resolution: 0.0000152587890625.
- Range: -32768.0 to +32767.99998474121.
- Validates positive and negative multiplications.
- Tests special cases like NaN, infinity, and zero.
- Includes overflow and underflow scenarios.
initial begin
$monitor("Time: %0t | A: %h | B: %h | Result: %h", $time, a, b, result);
// Test Case 1: Multiply 1.5 and 2.5
a = 32'h3FC00000; // 1.5
b = 32'h40200000; // 2.5
#10;
// Test Case 2: Multiply by zero
a = 32'h00000000; // 0.0
b = 32'h40400000; // 3.0
#10;
end
- Floating Point Multiplier:
- Adheres to IEEE 754 standards.
- Correctly handles special cases.
- Fixed Point Multiplier:
- High-performance multiplier with Q16.16 format.
- Optimized for speed and area.
- Pipelining for higher throughput.
- Extending to double-precision IEEE 754 format.
- Optimizing power consumption with clock gating.
- Supporting configurable precision for flexible applications.
- Raman
- Kanwarveer Singh Chadha
- Divyansh Barodiya
- Divyanshu Kumar Verma
- Aryan Singh
- Ayush Tyagi
Version: 1.0
Date: November 24, 2024