J'utilise VHDL pour décrire un multiplicateur 32 bits, pour un système à implémenter sur un FPGA Xilinx, j'ai trouvé sur le web que la règle de base est que si vous avoir des entrées de taille N bits, la sortie doit avoir (2 * N) bits de taille. Je l'utilise pour un système de feedback, est-il possible de disposer d'un multiplicateur avec une sortie de la même taille que ses entrées?multiplicateur VHDL dont la sortie a le même côté de ses entrées
Je jure une fois que j'ai trouvé une application fpga, quel code vhdl a des additionneurs et des blocs multiplicateurs câblés avec des signaux de même taille. La personne qui a écrit le code m'a dit qu'il suffit de mettre le résultat du produit sur un signal 64 bits et que la sortie doit obtenir les 32 bits les plus significatifs du résultat (ce qui n'était pas forcément sur les 32 bits les plus significatifs) du signal 64 bits).
Au moment où je construis un système (fonctionne apparemment) en utilisant le code suivant:
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;
Je pensais qu'il travaillait depuis au moment où j'avais le bloc simulé avec simulateur Active-HDL FPGA, mais savoir que je simule tout le système 32 bits en utilisant iSim de Xilinx ISE Design Suite. J'ai trouvé que ma sortie a une grande différence avec le produit réel des entrées A et B, que je ne sais pas si c'est juste la précision lâche de sauter 32 bits ou mon code est tout simplement mauvais.
ok, où est la question? – Staszek
Et fournissez les numéros que vous avez utilisés pour la simulation. – Staszek
Vous souhaitez probablement utiliser le post-décalage pour aligner le résultat. Et vous utilisez une entrée à virgule fixe signée. – JHBonarius