* Fix scaler
- Add generic to select between signed and unsigned
This commit is contained in:
parent
89182e8060
commit
29036ded6f
51
src/mult.vhd
51
src/mult.vhd
@ -12,7 +12,8 @@ entity mult is
|
|||||||
generic (
|
generic (
|
||||||
A_WIDTH : integer := 12;
|
A_WIDTH : integer := 12;
|
||||||
B_WIDTH : integer := 4;
|
B_WIDTH : integer := 4;
|
||||||
PIPELINE_STAGES : integer := 1
|
PIPELINE_STAGES : integer := 1;
|
||||||
|
UNSIGNED : boolean := true
|
||||||
);
|
);
|
||||||
port (
|
port (
|
||||||
clk : in std_logic;
|
clk : in std_logic;
|
||||||
@ -27,19 +28,37 @@ architecture arch of mult is
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
MULT_MACRO_inst : MULT_MACRO
|
mult_gen : if (UNSIGNED = true) generate
|
||||||
generic map (
|
MULT_MACRO_inst : MULT_MACRO
|
||||||
DEVICE => "7SERIES", -- Target Device: "VIRTEX5", "7SERIES", "SPARTAN6"
|
generic map (
|
||||||
LATENCY => PIPELINE_STAGES, -- Desired clock cycle latency, 0-4
|
DEVICE => "7SERIES", -- Target Device: "VIRTEX5", "7SERIES", "SPARTAN6"
|
||||||
WIDTH_A => A_WIDTH, -- Multiplier A-input bus width, 1-25
|
LATENCY => PIPELINE_STAGES, -- Desired clock cycle latency, 0-4
|
||||||
WIDTH_B => B_WIDTH) -- Multiplier B-input bus width, 1-18
|
WIDTH_A => A_WIDTH+1, -- Multiplier A-input bus width, 1-25
|
||||||
port map (
|
WIDTH_B => B_WIDTH+1) -- Multiplier B-input bus width, 1-18
|
||||||
P => P, -- Multiplier ouput bus, width determined by WIDTH_P generic
|
port map (
|
||||||
A => A, -- Multiplier input A bus, width determined by WIDTH_A generic
|
P(A_WIDTH+B_WIDTH+1 downto A_WIDTH+B_WIDTH) => open,
|
||||||
B => B, -- Multiplier input B bus, width determined by WIDTH_B generic
|
P(A_WIDTH+B_WIDTH-1 downto 0) => P,
|
||||||
CE => '1', -- 1-bit active high input clock enable
|
A => "0" & A,
|
||||||
CLK => clk, -- 1-bit positive edge clock input
|
B => "0" & B,
|
||||||
RST => '0' -- 1-bit input active high reset
|
CE => '1',
|
||||||
);
|
CLK => clk,
|
||||||
|
RST => '0'
|
||||||
|
);
|
||||||
|
else generate
|
||||||
|
MULT_MACRO_inst : MULT_MACRO
|
||||||
|
generic map (
|
||||||
|
DEVICE => "7SERIES", -- Target Device: "VIRTEX5", "7SERIES", "SPARTAN6"
|
||||||
|
LATENCY => PIPELINE_STAGES, -- Desired clock cycle latency, 0-4
|
||||||
|
WIDTH_A => A_WIDTH, -- Multiplier A-input bus width, 1-25
|
||||||
|
WIDTH_B => B_WIDTH) -- Multiplier B-input bus width, 1-18
|
||||||
|
port map (
|
||||||
|
P => P,
|
||||||
|
A => A,
|
||||||
|
B => B,
|
||||||
|
CE => '1',
|
||||||
|
CLK => clk,
|
||||||
|
RST => '0'
|
||||||
|
);
|
||||||
|
end generate;
|
||||||
|
|
||||||
end architecture;
|
end architecture;
|
||||||
@ -26,7 +26,8 @@ architecture arch of scaler is
|
|||||||
generic (
|
generic (
|
||||||
A_WIDTH : integer := 12;
|
A_WIDTH : integer := 12;
|
||||||
B_WIDTH : integer := 4;
|
B_WIDTH : integer := 4;
|
||||||
PIPELINE_STAGES : integer := 1
|
PIPELINE_STAGES : integer := 1;
|
||||||
|
UNSIGNED : boolean := true
|
||||||
);
|
);
|
||||||
port (
|
port (
|
||||||
clk : in std_logic;
|
clk : in std_logic;
|
||||||
@ -42,7 +43,8 @@ begin
|
|||||||
generic map(
|
generic map(
|
||||||
A_WIDTH => DATA_WIDTH,
|
A_WIDTH => DATA_WIDTH,
|
||||||
B_WIDTH => FACTOR_WIDTH,
|
B_WIDTH => FACTOR_WIDTH,
|
||||||
PIPELINE_STAGES => PIPELINE_STAGES
|
PIPELINE_STAGES => PIPELINE_STAGES,
|
||||||
|
UNSIGNED => true
|
||||||
)
|
)
|
||||||
port map(
|
port map(
|
||||||
clk => clk,
|
clk => clk,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user