我想对列表中的信号求和,当然我使用了variable和for(就像在VHDL中一样):
@always_comb
def sum():
sum = 0
for i in range(len(summands)):
sum = sum + summands[i]
product.next = sum
问题是,这将使用整数(在VHDL中)作为sum变量,当sum的宽度超过32位时,这没有多大用处。你知道吗
所以我试着这样做:
@always_comb
def sum():
sum = intbv(0, min=vmin, max=vmax)
for i in range(len(summands)):
sum = sum + summands[i]
product.next = sum
我得到以下错误(在转换过程中):
Type mismatch with earlier assignment: sum
我不知道该怎么处理。我猜它在sum中得到intbv的值是整数,因此是不同的类型。你知道吗
谢谢你的建议
我已经设法做了非常难看的变通办法:
以这种方式,它将生成正确的VHDL:
但是,在每次赋值求和时创建一个新的intbv对象,会严重影响模拟的性能。你知道吗
相关问题 更多 >
编程相关推荐