vhdl subtrahieren std_logic_vector
Ich versuche zu subtrahieren 2 std logic vector und bekomme Fehler
p2 <= p1(11 downto 0)- idata(11 downto 0);
Fehler (10327): VHDL-Fehler bei sub.vhd(32): kann nicht bestimmen, definition der operator ""-"" -- gefunden 0 mögliche Definitionen
Ich bereits versucht, um use IEEE.std_logic_signed.all
oder use IEEE.std_logic_unsigned.all
oder beide und schon versucht
p2 <= std_logic_vector(unsigned(p1(11 downto 0)) - unsigned(idata(11 downto 0)));
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
--use IEEE.std_logic_signed.all;
--use IEEE.std_logic_unsigned.all;
entity sub is
port (
clk : in std_logic;
rst : in std_logic;
--en : in std_logic;
idata : in std_logic_vector (11 downto 0);
odata : out std_logic_vector (11 downto 0)
);
end sub;
architecture beh of sub is
signal p1,p2 :std_logic_vector (11 downto 0);
begin
process (clk, rst)
begin
if (rst = '1') then
odata <= "000000000000";
elsif (rising_edge (clk)) then
p1 <= idata;
p2 <= p1(11 downto 0)- idata(11 downto 0);
--p2 <= std_logic_vector(unsigned(p1(11 downto 0)) - unsigned(idata(11 downto 0)));
end if;
end process;
odata<=p2;
end beh;
InformationsquelleAutor Tal Berger | 2015-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
std_logic_vector
Typ ist einfach nur ein array vonstd_logic
, und nicht von selbst irgendwelche numerische interpretation, also der Fehler beim anwenden von numerischen Operationen, wie minus (-
).Nicht die Synopsys nicht-standard -
std_logic_signed/unsigned/arith
Pakete.VHDL-2002: verwenden Sie die
unsigned
Typ in der standard -ieee.numeric_std
Paket konvertierenstd_logic_vector
zu einemunsigned
Darstellung, die ermöglicht die Verwendung von numerischen Operationen, wie minus. Code wie:VHDL-2008: verwenden Sie die standard -
ieee.numeric_std_unsigned
Paket konvertierenstd_logic_vector
zu einemunsigned
Darstellung, die ermöglicht die Verwendung von numerischen Operationen, wie minus. Code wie:Btw. überprüfen Sie heraus dieses Suche für ähnliche Probleme.
Aktualisierte Antwort mit VHDL-2008-konformen code mit der
numeric_std_unsigned
Paket.InformationsquelleAutor Morten Zilmer