当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我想检查std_logic_vector是否包含负整数》经验,为你挑选了1个好方法。

我怎样才能检查是否...(...)然后...结束if; 构造如果std_logic_vector变量保存负数的位?如果是负数,我必须为其赋值为零.我有 :

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

谢谢!



1> Daniel Kamil..:

你不能添加两个STD_LOGIC_VECTOR,因为语言对它应该执行的算术一无所知.这是因为,对于综合工具,声明为的每个信号/端口/变量STD_LOGIC_VECTOR只不过STD_LOGIC是多值逻辑类型的数组.对这种类型的算术没有意义.

如果要对接口类似于公开的类型的类型使用算术STD_LOGIC_VECTOR,则应使用SIGNED(对于带符号算术)和UNSIGNED(对于无符号算术)类型IEEE.NUMERIC_STD.为了在这些类型之间进行转换,只需使用类型名称显式转换它们,如下所示:

std_logic_vector_variable := UNSIGNED(unsigned_variable);
unsigned_variable := STD_LOGIC_VECTOR(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;

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有