Ich benutze VHDL für die Beschreibung eines 32-Bit-Multiplikator, für ein System auf einem Xilinx FPGA implementiert werden, fand ich im Web, dass die Faustregel ist, dass wenn Sie haben Eingänge von N-Bits Größe, muss der Ausgang (2 * N) -Bits der Größe haben. Ich benutze es für ein Feedback-System, ist es möglich, einen Multiplikator mit einer Ausgabe der gleichen Größe seiner Eingänge zu haben ?.VHDL Multiplikator, der Ausgang hat die gleiche Seite seiner Eingänge
Ich schwöre, sobald ich eine FPGA-Anwendung gefunden, die VHDL-Code hat Addierer und Multiplikatoren Blöcke mit Signalen der gleichen Größe verdrahtet. Die Person, die den Code geschrieben hat, sagte mir, dass Sie nur das Ergebnis des Produkts auf ein 64-Bit-Signal setzen müssen und dann muss der Ausgang die signifikantesten 32 Bits des Ergebnisses erhalten (was nicht notwendigerweise auf den höchstwertigen 32 Bits lag) des 64-Bit-Signals).
ich ein System Zu der Zeit bauen (anscheinend funktioniert), um den nächsten Code verwendet:
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;
ich aber, da sie arbeitet an der Zeit, die ich den Block hatte Aktiv-HDL-FPGA-Simulator simuliert mit, aber weiß, dass ich das gesamte 32-Bit-System mit iSim von der Xilinx ISE Design Suite simuliere. Ich fand heraus, dass meine Ausgabe einen großen Unterschied zu dem realen Produkt von A- und B-Eingängen hat, von dem ich nicht weiß, ob es nur die Genauigkeit ist, wenn 32 Bits übersprungen werden oder mein Code einfach schlecht ist.
ok, wo ist die Frage? – Staszek
Und geben Sie Zahlen, die Sie für die Simulation verwendet haben. – Staszek
Wahrscheinlich möchten Sie nach dem Verschieben das Ergebnis ausrichten. Und Sie haben signierte Festkomma-Eingabe verwendet. – JHBonarius