kinside <= unsigned(resize(signed(sp), 16)) * unsigned(resize(signed(DISTANCE_PER_CLK), 16)) / to_unsigned(3600, 16);仍有Error (10344): VHDL expression error at taxi.vhd(298): expression has 32 elements, but must have 16 elements的问题出现
时间: 2023-11-09 18:04:25 浏览: 131
这个错误提示表明在你的 VHDL 代码中,有一个表达式包含了 32 个元素,但是根据代码逻辑,它应该只有 16 个元素。这通常是由于类型不匹配或者运算符优先级不正确等原因引起的。
在这个具体的表达式中,你需要确保 signed(sp) 和 signed(DISTANCE_PER_CLK) 的值都是 16 位的,并且 to_unsigned(3600, 16) 返回的也是 16 位的无符号数。如果其中任何一个值的长度不正确,那么在进行乘法和除法运算时就会出现错误。
另外,你可以尝试使用括号来明确运算的优先级,例如:
```
kinside <= unsigned(resize(signed(sp), 16)) * (unsigned(resize(signed(DISTANCE_PER_CLK), 16)) / to_unsigned(3600, 16));
```
这样可以确保先进行除法运算,再进行乘法运算,避免出现优先级错误。
阅读全文