我希望将一种类型的数组转换为另一种类型。
举个例子,我们假设我们有一个byte
类型的数组,并且想要一个类型为logic [5:0]
的新数组。
我在尝试丢失数据时遇到困难。
谢谢,
乔治
答案 0 :(得分:1)
如果要将一种类型的数组转换为另一种类型的数组,如果它们具有完全相同的总位数,则可以通过比特流转换轻松实现。动态大小的数组需要调整大小以具有确切的位数。
一个60字节的数组可以转换为80个6位的数组,因为它们都包含480位。
typedef logic [7:0] array_8_60_t[60];
typedef logic [5:0] array_6_80_t[60];
array_8_60_t a1;
array_6_80_t a2;
...
a2 = array_6_80_t'(a1);
如果目标数组(a2
)的位数多于所需位数,或者您有一些特殊的格式,则需要查看流式运算符,或者还原为foreach
循环;
答案 1 :(得分:1)
可以使用强制转换('
)操作转换数据类型。
对于您的示例,您可以执行以下操作:
typedef byte byte_arr_t[];
byte_arr_t byte_arr;
typedef logic logic_arr_t[5:0];
logic_arr_t logic_arr;
logic_arr = logic_arr_t'(byte_arr);
记住你还必须知道数组及其元素的大小,否则数据可能会丢失。