gpt4 book ai didi

vhdl 减去 std_logic_vector

转载 作者:行者123 更新时间:2023-12-01 09:20:28 28 4
gpt4 key购买 nike

我正在尝试减去 2 个标准逻辑向量并得到错误

p2 <= p1(11 downto 0)- idata(11 downto 0);

Error (10327): VHDL error at sub.vhd(32): can't determine definition of operator ""-"" -- found 0 possible definitions



我已经尝试添加 use IEEE.std_logic_signed.alluse IEEE.std_logic_unsigned.all或者两者都已经尝试过 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;

最佳答案

std_logic_vector type 只是 std_logic 的数组, 并且本身没有任何数字解释,因此在尝试应用诸如减号 ( - ) 之类的数字运算时会出现错误。

不要使用 Synopsys 非标准 std_logic_signed/unsigned/arith包。

VHDL-2002 :使用 unsigned输入标准 ieee.numeric_std包转换 std_logic_vectorunsigned表示,它允许使用数字运算,如减号。代码如:

use ieee.numeric_std.all;
...
p2 <= std_logic_vector(unsigned(p1(11 downto 0)) - unsigned(idata(11 downto 0)));

VHDL-2008 : 使用标准 ieee.numeric_std_unsigned包转换 std_logic_vectorunsigned表示,它允许使用数字运算,如减号。代码如:
use ieee.numeric_std_unsigned.all;
...
p2 <= p1(11 downto 0) - idata(11 downto 0);

顺便提一句。看看这个 search对于类似的问题。

关于vhdl 减去 std_logic_vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com