|
1234567891011121314151617181920212223242526272829303132 |
- //----------------------------------------------------------------------
- // Butterfly: Add/Sub and Scaling
- //----------------------------------------------------------------------
- module Butterfly #(
- parameter WIDTH = 16,
- parameter RH = 0 // Round Half Up
- )(
- input signed [WIDTH-1:0] x0_re, // Input Data #0 (Real)
- input signed [WIDTH-1:0] x0_im, // Input Data #0 (Imag)
- input signed [WIDTH-1:0] x1_re, // Input Data #1 (Real)
- input signed [WIDTH-1:0] x1_im, // Input Data #1 (Imag)
- output signed [WIDTH-1:0] y0_re, // Output Data #0 (Real)
- output signed [WIDTH-1:0] y0_im, // Output Data #0 (Imag)
- output signed [WIDTH-1:0] y1_re, // Output Data #1 (Real)
- output signed [WIDTH-1:0] y1_im // Output Data #1 (Imag)
- );
-
- wire signed [WIDTH:0] add_re, add_im, sub_re, sub_im;
-
- // Add/Sub
- assign add_re = x0_re + x1_re;
- assign add_im = x0_im + x1_im;
- assign sub_re = x0_re - x1_re;
- assign sub_im = x0_im - x1_im;
-
- // Scaling
- assign y0_re = (add_re + RH) >>> 1;
- assign y0_im = (add_im + RH) >>> 1;
- assign y1_re = (sub_re + RH) >>> 1;
- assign y1_im = (sub_im + RH) >>> 1;
-
- endmodule
|