Radical Computer Technologies
DSP / entity

raddsp_xilinx_dsp48_wide_mul

Documentation version: 0.2.1 / Subpackage: dsp_transform / Source package: raddsp

Wide signed multiplication helper built from Xilinx DSP48 resources. Splits operands across DSP slices and recombines partial products for widths beyond a single DSP primitive.

Use Cases

Block Diagram

raddsp_xilinx_dsp48_wide_mul radhdl entity clk rst valid_i a_i b_i valid_o p_o
VHDL Include And Instantiation Template

File Header

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

library radhdl;
-- Direct entity instantiation below does not require importing the entity name.
use radhdl.dsp.all;
-- Narrower alternative: use radhdl.dsp_transform.all;

Component Declaration

component raddsp_xilinx_dsp48_wide_mul is
  generic (
    DEVICE_FAMILY : string := "7series";
    A_WIDTH : positive := 16;
    B_WIDTH : positive := 16;
    PRODUCT_WIDTH : positive := 64;
    CHUNK_WIDTH : positive := 16
  );
  port (
    clk : in std_logic;
    rst : in std_logic;
    valid_i : in std_logic;
    a_i : in signed(A_WIDTH - 1 downto 0);
    b_i : in signed(B_WIDTH - 1 downto 0);
    valid_o : out std_logic;
    p_o : out signed(PRODUCT_WIDTH - 1 downto 0)
  );
end component;

Direct Entity Instantiation

u_raddsp_xilinx_dsp48_wide_mul : entity radhdl.raddsp_xilinx_dsp48_wide_mul
  generic map (
    DEVICE_FAMILY => "7series",
    A_WIDTH       => 16,
    B_WIDTH       => 16,
    PRODUCT_WIDTH => 64,
    CHUNK_WIDTH   => 16
  )
  port map (
    clk     => <clk_signal>,
    rst     => <rst_signal>,
    valid_i => <valid_i_signal>,
    a_i     => <a_i_signal>,
    b_i     => <b_i_signal>,
    valid_o => <valid_o_signal>,
    p_o     => <p_o_signal>
  );

Generics

NameTypeDefaultDescription
DEVICE_FAMILYstring"7series"Identifies the target FPGA family so wrappers can choose the correct primitive or conservative portable behavior.
A_WIDTHpositive16Sets the bit width for A WIDTH values carried by this module.
B_WIDTHpositive16Sets the bit width for B WIDTH values carried by this module.
PRODUCT_WIDTHpositive64Identifies the target FPGA family so wrappers can choose the correct primitive or conservative portable behavior.
CHUNK_WIDTHpositive16Sets the bit width for CHUNK WIDTH values carried by this module.

Ports

NameDirectionTypeDescription
clkinstd_logicClock for the associated synchronous logic and handshake domain.
rstinstd_logicActive-high synchronous reset for this clock domain.
valid_iinstd_logicInput valid qualifier for this operation or sideband channel.
a_iinsigned(A_WIDTH - 1 downto 0)Input a i signal for this module.
b_iinsigned(B_WIDTH - 1 downto 0)Input b i signal for this module.
valid_ooutstd_logicOutput valid qualifier aligned with the produced result.
p_ooutsigned(PRODUCT_WIDTH - 1 downto 0)Output p o signal generated by this module.

Testbenches

No passing testbench waveform is available for this module.

Sources