2
m<=(s-1) mod 2

这里 'm' 是一个信号,而 s 是一个输入向量在尝试实现代码时,我收到一个错误“mod 在这种情况下不能有这样的操作数”错误可能是由于试图获取向量值的 mod。有没有办法将向量等同于整数值或通过其他方法纠正错误?

4

3 回答 3

3

因为mod 2基本上只是提取向量的最后一位而-1只是否定了这一点,为什么不这样做:

m <= not s(0);
于 2013-02-11T07:13:10.073 回答
0

我假设's'被定义为'std_logic_vector'。对于这些运算符,您最好/应该使用“ieee.numeric_std”库中的“unsigned”或“signed”。您可以使用类型转换将您的 'std_logic_vector' 转换为 'signed' 或 'unsigned'。例如无符号。总之:Sonicwave 的解决方案更清洁。

于 2013-02-11T09:07:36.787 回答
0

要么使用 ainteger来代替向量(即更改信号的类型),要么将其转换为integerbefore moding

use ieee.numeric_std.all;

i := to_integer(unsigned(s));
m := (i-1) mod 2;
于 2013-02-11T14:01:18.907 回答