gpt4 book ai didi

vhdl - 我想检查 std_logic_vector 是否包含负整数

转载 作者:行者123 更新时间:2023-12-01 00:39:42 26 4
gpt4 key购买 nike

如何检查 if (...) then ... end if;如果 std_logic_vector 变量包含负数的位,则构造?如果它是负数,我必须给它分配一个零值。
我有 :

signal sum : std_logic_vector (15 downto 0);
sum<= (...);
if (...) then
sum<=x"00";
end if;

谢谢!

最佳答案

您不能添加两个 STD_LOGIC_VECTOR s,因为该语言对它应该执行的算术一无所知。这是因为,对于综合工具来说,声明为 STD_LOGIC_VECTOR 的每个信号/端口/变量只不过是 STD_LOGIC 的数组,多值逻辑类型。这种类型的算术没有意义。
如果您想对接口(interface)类似于 STD_LOGIC_VECTOR 所公开的类型的类型使用算术运算, 你应该使用 SIGNED (用于有符号算术)和 UNSIGNED (用于无符号算术)类型在 IEEE.NUMERIC_STD 中定义.为了在这些类型之间进行转换,只需使用类型名称显式转换它们,如下所示:

std_logic_vector_variable := STD_LOGIC_VECTOR(unsigned_variable);
unsigned_variable := UNSIGNED(std_logic_vector_variable);
所以,总结一下 - signal sum应声明为 SIGNED ,因为您显然要对其进行算术运算。然后,您可以自由使用所需的比较和算术运算。生成的代码应该或多或少像这样:
use IEEE.NUMERIC_STD.ALL;
-- entity and architecture declarations...
signal sum : SIGNED (15 downto 0);
-- inside some process...
if (sum <= 0) then sum <= 0; end if;

关于vhdl - 我想检查 std_logic_vector 是否包含负整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800246/

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