この 32 ビット乗算器コードを合成すると、エラーは発生せず、入力が使用されておらず、割り当てられているが使用されていないという警告だけが表示されます。私のコードはこれです:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity multiplier is
Port ( multiplicand : in STD_LOGIC_VECTOR(31 downto 0);
multiply : in STD_LOGIC_VECTOR(31 downto 0);
clk : in STD_LOGIC;
product : out STD_LOGIC_VECTOR(63 downto 0));
end multiplier;
architecture Behavioral of multiplier is
component adder32bit is
port(addone, addtwo : in STD_LOGIC_VECTOR(31 downto 0);
sum : out STD_LOGIC_VECTOR(31 downto 0);
cout : out STD_LOGIC);
end component;
signal tempsum : STD_LOGIC_VECTOR(31 downto 0);
signal preg : STD_LOGIC_VECTOR(63 downto 0);
signal start : STD_LOGIC := '1';
signal tempcout : STD_LOGIC;
signal counter : integer := 1;
begin
addN: adder32bit port map(multiplicand, preg(63 downto 32), tempsum, tempcout);
process(clk)
begin
if(rising_edge(clk)) then
if(start = '1') then
if(counter = 1) then
preg <= "00000000000000000000000000000000" & multiply;
end if;
if(preg(0) = '1') then
preg(63 downto 32) <= tempsum;
preg <= tempcout & preg(63 downto 1);
else
preg <= '0' & preg(63 downto 1);
end if;
counter <= counter + 1;
if(counter = 33) then
product <= preg;
start <= '0';
counter <= 1;
end if;
end if;
end if;
end process;
end Behavioral;
シミュレーションを実行すると、2 つの入力 (被乗数と乗算) に関係なく、出力は "0000...UUUUUUU" のようになります。
ここで何をすべきかについての提案はありますか?