首页 文章

将一种类型的数组转换为另一种类型 - 系统verilog

提问于
浏览
-1

我期待将一种类型的数组转换为另一种类型 .

举个例子,假设我们有一个 byte 类型的数组,并且想要一个类型为 logic [5:0] 的新数组 .

我没有尝试丢失数据时遇到困难 .

谢谢,

乔治

2 回答

  • 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

    可以使用强制转换( ' )操作转换数据类型 .

    对于您的示例,您可以执行以下操作:

    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);
    

    记住你还必须知道数组及其元素的大小,否则数据可能会丢失 .

相关问题