整数数组到有符号数组的类型转换
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_type
和 my_old_type
是 密切相关的类型 时有效。例如,integer
和 real
是密切相关的,std_logic_vector
和 signed
也是如此,但你的两个不会。
第二种方式是写一个转换函数。标准类型(来自 standard
和 numeric_std
包)已经编写了函数。你的不是标准类型,所以你必须自己写。
如果我有一个类似下面定义的数组...
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_type
和 my_old_type
是 密切相关的类型 时有效。例如,integer
和 real
是密切相关的,std_logic_vector
和 signed
也是如此,但你的两个不会。
第二种方式是写一个转换函数。标准类型(来自 standard
和 numeric_std
包)已经编写了函数。你的不是标准类型,所以你必须自己写。