システムでザイリンクスFPGAを実装するために、32ビット乗算器の記述にVHDLを使用していますが、 Nビットサイズの入力を有する場合、出力はサイズの(2 * N)ビットでなければならない。私はそれをフィードバックシステムに使用しています、それは入力の同じサイズの出力を持つ乗数を持つ可能性がありますか?出力が同じ入力側にあるVHDL乗算器
私は、vhdlコードが同じサイズの信号で配線された加算器と乗算器ブロックを持つFPGAアプリケーションを見つけたら、私は誓っています。コードを書いた人は、製品の結果を64ビットの信号に載せなければならないと言いました。その結果、出力は最も重要な32ビットの結果を得なければなりませんでした(これは必然的に最も重要な32ビット64ビット信号のうちの1つ)。次のコード使用して、私はシステムを構築する時には
(明らかに動作します):
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity Multiplier32Bits is
port(
CLK: in std_logic;
A,B: in std_logic_vector(31 downto 0);
R: out std_logic_vector(31 downto 0)
);
end Multiplier32Bits;
architecture Behavioral of Multiplier32Bits is
signal next_state: std_logic_vector(63 downto 0);
signal state: std_logic_vector(31 downto 0);
begin
Sequential: process(CLK,state,next_state)
begin
if CLK'event and CLK = '1' then
state <= next_state(61 downto 30);
else
state <= state;
end if;
end process Sequential;
--Combinational part
next_state <= std_logic_vector(signed(A)*signed(B));
--Output assigment
R <= state;
end Behavioral;
を私はそれが私がブロックでは、Active-HDL FPGAシミュレータを用いてシミュレートした時以来働いてますが、知ってたがザイリンクスISE Design SuiteのiSimを使用して32ビットシステム全体をシミュレートしています。私の出力はAとBの入力の実際の製品と大きな違いがあることがわかりました。正確には32ビットをスキップして正確さが失われているのかわかりません。
大丈夫です、どこに問題がありますか? – Staszek
そして、シミュレーションに使用した番号を入力してください。 – Staszek
ポストシフトを使用して結果を整列させたいと思うかもしれません。そして、あなたは署名された固定小数点入力を使用しています。 – JHBonarius