整数数组到有符号数组的类型转换

Type Conversion of an Array of Integer to Signed

如果我有一个类似下面定义的数组...

type A_type is array (0 to 9) of integer;
signal my_array : A_type := (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

如果稍后我想转换为代表相同数字的带符号数字列表。 有没有办法不用for循环就可以完成类型转换?

没有。您将需要一个 for 循环或十个单独的语句。最好的方法是编写自己的转换函数,但我猜你真的很想知道转换是否可以完成"in one go",可以这么说。

VHDL中有两种类型转换方式。第一个是类型转换:

my_new_type_signal <= my_new_type(my_old_type_signal);

(或变量,obvs)。这仅在 my_new_typemy_old_type 密切相关的类型 时有效。例如,integerreal 是密切相关的,std_logic_vectorsigned 也是如此,但你的两个不会。

第二种方式是写一个转换函数。标准类型(来自 standardnumeric_std 包)已经编写了函数。你的不是标准类型,所以你必须自己写。