Radical Computer Technologies
DSP / entity

raddsp_audio_stereo_gain

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

Portable stereo fixed-point gain stage for audio sample streams. Applies independent left/right coefficients to signed PCM samples and emits saturated signed PCM output one cycle after each valid input sample.

Use Cases

Block Diagram

raddsp_audio_stereo_gain radhdl entity clk rst enable_i left_i right_i valid_i left_gain_i right_gain_i left_o right_o valid_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_audio_stereo_gain is
  generic (
    SAMPLE_WIDTH : positive := 24;
    COEFF_WIDTH : positive := 18;
    COEFF_FRAC_BITS : natural := 15
  );
  port (
    clk : in std_logic;
    rst : in std_logic;
    enable_i : in std_logic;
    left_i : in std_logic_vector(SAMPLE_WIDTH - 1 downto 0);
    right_i : in std_logic_vector(SAMPLE_WIDTH - 1 downto 0);
    valid_i : in std_logic;
    left_gain_i : in std_logic_vector(COEFF_WIDTH - 1 downto 0);
    right_gain_i : in std_logic_vector(COEFF_WIDTH - 1 downto 0);
    left_o : out std_logic_vector(SAMPLE_WIDTH - 1 downto 0);
    right_o : out std_logic_vector(SAMPLE_WIDTH - 1 downto 0);
    valid_o : out std_logic
  );
end component;

Direct Entity Instantiation

u_raddsp_audio_stereo_gain : entity radhdl.raddsp_audio_stereo_gain
  generic map (
    SAMPLE_WIDTH    => 24,
    COEFF_WIDTH     => 18,
    COEFF_FRAC_BITS => 15
  )
  port map (
    clk          => <clk_signal>,
    rst          => <rst_signal>,
    enable_i     => <enable_i_signal>,
    left_i       => <left_i_signal>,
    right_i      => <right_i_signal>,
    valid_i      => <valid_i_signal>,
    left_gain_i  => <left_gain_i_signal>,
    right_gain_i => <right_gain_i_signal>,
    left_o       => <left_o_signal>,
    right_o      => <right_o_signal>,
    valid_o      => <valid_o_signal>
  );

Generics

NameTypeDefaultDescription
SAMPLE_WIDTHpositive24
COEFF_WIDTHpositive18
COEFF_FRAC_BITSnatural15

Ports

NameDirectionTypeDescription
clkinstd_logic
rstinstd_logic
enable_iinstd_logic
left_iinstd_logic_vector(SAMPLE_WIDTH - 1 downto 0)
right_iinstd_logic_vector(SAMPLE_WIDTH - 1 downto 0)
valid_iinstd_logic
left_gain_iinstd_logic_vector(COEFF_WIDTH - 1 downto 0)
right_gain_iinstd_logic_vector(COEFF_WIDTH - 1 downto 0)
left_ooutstd_logic_vector(SAMPLE_WIDTH - 1 downto 0)
right_ooutstd_logic_vector(SAMPLE_WIDTH - 1 downto 0)
valid_ooutstd_logic

Testbenches

No directly associated testbench was found.

Sources