Radical Computer Technologies
DSP / entity

fft_tdp_ram

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

True dual-port RAM abstraction used by FFT pipeline memories. Keeps storage portable while allowing vendor-specific implementations to infer or instantiate block RAM efficiently.

Use Cases

Block Diagram

fft_tdp_ram radhdl entity clk a_addr a_din a_we b_addr b_din b_we a_dout b_dout
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 fft_tdp_ram is
  generic (
    DEVICE_FAMILY : string := "ultrascale+";
    MEMORY_STYLE : string := "block";
    DATA_WIDTH : integer := 64;
    ADDR_WIDTH : integer := 5;
    DEPTH : integer := 32
  );
  port (
    clk : in std_logic;
    a_addr : in std_logic_vector(ADDR_WIDTH - 1 downto 0);
    a_din : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    a_dout : out std_logic_vector(DATA_WIDTH - 1 downto 0);
    a_we : in std_logic;
    b_addr : in std_logic_vector(ADDR_WIDTH - 1 downto 0);
    b_din : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    b_dout : out std_logic_vector(DATA_WIDTH - 1 downto 0);
    b_we : in std_logic
  );
end component;

Direct Entity Instantiation

u_fft_tdp_ram : entity radhdl.fft_tdp_ram
  generic map (
    DEVICE_FAMILY => "ultrascale+",
    MEMORY_STYLE  => "block",
    DATA_WIDTH    => 64,
    ADDR_WIDTH    => 5,
    DEPTH         => 32
  )
  port map (
    clk    => <clk_signal>,
    a_addr => <a_addr_signal>,
    a_din  => <a_din_signal>,
    a_dout => <a_dout_signal>,
    a_we   => <a_we_signal>,
    b_addr => <b_addr_signal>,
    b_din  => <b_din_signal>,
    b_dout => <b_dout_signal>,
    b_we   => <b_we_signal>
  );

Generics

NameTypeDefaultDescription
DEVICE_FAMILYstring"ultrascale+"Identifies the target FPGA family so wrappers can choose the correct primitive or conservative portable behavior.
MEMORY_STYLEstring"block"Configures MEMORY STYLE for this instance.
DATA_WIDTHinteger64Sets the bit width for DATA WIDTH values carried by this module.
ADDR_WIDTHinteger5Sets the bit width for ADDR WIDTH values carried by this module.
DEPTHinteger32Sets the storage depth, frame length, or number of buffered samples used internally.

Ports

NameDirectionTypeDescription
clkinstd_logicClock for the associated synchronous logic and handshake domain.
a_addrinstd_logic_vector(ADDR_WIDTH - 1 downto 0)A addr interface signal.
a_dininstd_logic_vector(DATA_WIDTH - 1 downto 0)A din interface signal.
a_doutoutstd_logic_vector(DATA_WIDTH - 1 downto 0)A dout interface signal.
a_weinstd_logicA we interface signal.
b_addrinstd_logic_vector(ADDR_WIDTH - 1 downto 0)B addr interface signal.
b_dininstd_logic_vector(DATA_WIDTH - 1 downto 0)B din interface signal.
b_doutoutstd_logic_vector(DATA_WIDTH - 1 downto 0)B dout interface signal.
b_weinstd_logicB we interface signal.

Testbenches

No directly associated testbench was found.

Sources