m<=(s-1) mod 2
这里'm'是一个信号,而s是一个输入向量 在尝试实现代码时,我收到一个错误“mod在此上下文中不能有这样的操作数” 错误可能是由于尝试获取矢量值的mod。 有没有办法将向量等同于整数值或通过其他方法纠正错误?
答案 0 :(得分:3)
由于mod 2
基本上只是提取向量的最后一位而-1
只是否定了这一点,为什么不做呢:
m <= not s(0);
答案 1 :(得分:0)
我假设's'被定义为'std_logic_vector'。您最好/应该使用'ieee.numeric_std'库中的'unsigned'或'signed'来表示这些运算符。您可以使用类型转换将'std_logic_vector'转换为'signed'或'unsigned'。例如。无符号(一个或多个)。 无论如何:Sonicwave的解决方案更清洁。
答案 2 :(得分:0)
使用integer
代替矢量(即更改信号类型)或在integer
之前将其转换为mod
use ieee.numeric_std.all;
i := to_integer(unsigned(s));
m := (i-1) mod 2;