labor-mst/src/scaler.vhd
Greek 29036ded6f * Fix scaler
- Add generic to select between signed and unsigned
2020-04-29 17:34:16 +02:00

56 lines
1.5 KiB
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
-- Scaler
-- This entity scales the 'data_in' input by the factor 'factor'.
entity scaler is
generic (
DATA_WIDTH : integer := 12;
FACTOR_WIDTH : integer := 4;
PIPELINE_STAGES : integer := 1
);
port (
clk : in std_logic;
data_in : in std_logic_vector(DATA_WIDTH-1 downto 0);
factor : in std_logic_vector(FACTOR_WIDTH-1 downto 0);
data_out : out std_logic_vector(DATA_WIDTH+FACTOR_WIDTH-1 downto 0)
);
end entity;
architecture arch of scaler is
--*****COMPONENT DECLARATION*****
component mult is
generic (
A_WIDTH : integer := 12;
B_WIDTH : integer := 4;
PIPELINE_STAGES : integer := 1;
UNSIGNED : boolean := true
);
port (
clk : in std_logic;
A : in std_logic_vector(A_WIDTH-1 downto 0);
B : in std_logic_vector(B_WIDTH-1 downto 0);
P : out std_logic_vector(A_WIDTH+B_WIDTH-1 downto 0)
);
end component;
begin
mult_inst : mult
generic map(
A_WIDTH => DATA_WIDTH,
B_WIDTH => FACTOR_WIDTH,
PIPELINE_STAGES => PIPELINE_STAGES,
UNSIGNED => true
)
port map(
clk => clk,
A => data_in,
B => factor,
P => data_out
);
end architecture;