vhdl中的conv_整数

vhdl中的conv_整数,vhdl,Vhdl,这个看起来对吗 Lookup_表(conv_整数(128位))--位置为标准逻辑向量(7到0) 函数conv_integer的参考页没有说明是否可以在括号之间使用两个参数,如上所述。但是,如果参数是整数,则返回整数。有什么想法吗?您正在寻找to_integer方法 通过使用以下代码行之一将位置转换为整数,可以对位置执行整数数学运算: 到_整数(无符号(位置))或到_整数(有符号(位置))取决于它是有符号还是无符号8位向量 然后可以执行查找表(128到整数(无符号(位置)) 在从低阶(更少位)逻辑

这个看起来对吗

Lookup_表(conv_整数(128位))--位置为标准逻辑向量(7到0)


函数
conv_integer
的参考页没有说明是否可以在括号之间使用两个参数,如上所述。但是,如果参数是整数,则返回整数。有什么想法吗?

您正在寻找
to_integer
方法

通过使用以下代码行之一将位置转换为整数,可以对位置执行整数数学运算:

到_整数(无符号(位置))
到_整数(有符号(位置))
取决于它是有符号还是无符号8位向量

然后可以执行
查找表(128到整数(无符号(位置))

在从低阶(更少位)逻辑向量转换为整数之前,您应该始终执行特定的
有符号
/
无符号
转换。另外,如果你在做
int
math,最好在做算术之前先转换成整数


否则,VHDL就像任何常规编程语言一样,它会在将方法的参数放入方法之前对其进行求值,因此在参数内执行操作是完全正确的。

对于VHDL,我通常使用2选1方法在std_逻辑_向量和整数之间进行转换

  • 使用std_logic_unsigned/std_logic_signed library:对于这种方法,模拟器/合成工具会自动将std_logic_向量推断为有符号或无符号
  • 使用数字标准库:对于这个库,我使用unsigned/signed将标准逻辑向量转换为signed或unsigned。它允许在1个模块内混合使用有符号和无符号操作。(尽管如我所知,如果您关心补偿位,签名和使用与几乎操作没有区别)
  • 据我所知,我们有用于此转换的算术(std_logic_arith)库,但有人说它不是标准的,并且与数值_std冲突。您应该切换到数值_std(例如,位长度位转换):


    results您试图转换为整数a
    std\u逻辑向量(127向下到0)
    ?我对这个问题的理解正确吗?128是一个整数,“位置”是位长为8位的std_逻辑_向量。我试图从128中减去“position”的整数值,并使用整数结果对数组LUT中的数据进行索引。即使类型是std_logic_vector而不是unsigned,您是否应该指定“unsigned”?我现在的方式在数学上会出什么问题?它编译得很好。它要么是“有符号”逻辑向量,要么是“无符号”逻辑向量。例如,如果您的std逻辑向量的常数为x“FF”,那么应该是-1还是127?
    result<=std_logic_vector(to_unsigned(128-x,bit_length); -- For unsigned          
    result<=std_logic_vector(to_signed(128-x,bit_length); -- For signed