System verilog Systemverilog分配-逻辑数组到字节数组

System verilog Systemverilog分配-逻辑数组到字节数组,system-verilog,System Verilog,我正在尝试赋值逻辑l_数据[31:0]到字节数据[] data=l_数据不是合法的SystemVerilog分配。如何做到这一点?使用比特流转换(LRM第6.24.3节)。您需要为强制转换创建一个typedef,但无论如何,对所有变量声明使用typedef是一个好主意 typedef byte unsigned dynamic_byte_array_t[]; typedef logic fixed_logic_array_t[31:0]; dynamic_byte_array_t data;

我正在尝试赋值
逻辑l_数据[31:0]
字节数据[]

data=l_数据不是合法的SystemVerilog分配。如何做到这一点?

使用比特流转换(LRM第6.24.3节)。您需要为强制转换创建一个typedef,但无论如何,对所有变量声明使用typedef是一个好主意

typedef byte unsigned dynamic_byte_array_t[];
typedef logic fixed_logic_array_t[31:0];

dynamic_byte_array_t data;
fixed_logic_array_t l_data;

data = dynamic_byte_array_t'(l_data);
几点注意:

  • 小心使用
    字节
    ,默认情况下它是有符号的
  • 我在所有类型基本名称中添加了一个
    \u t
    后缀
  • 我建议使用比我在这里使用的更有意义的类型名
  • 比特流转换有一个从左向右移动比特的特定顺序。如果需要更复杂的位排序(第11.4.14节),请使用流式操作符
  • 使用比特流转换(LRM第6.24.3节)。您需要为强制转换创建一个typedef,但无论如何,对所有变量声明使用typedef是一个好主意

    typedef byte unsigned dynamic_byte_array_t[];
    typedef logic fixed_logic_array_t[31:0];
    
    dynamic_byte_array_t data;
    fixed_logic_array_t l_data;
    
    data = dynamic_byte_array_t'(l_data);
    
    几点注意:

  • 小心使用
    字节
    ,默认情况下它是有符号的
  • 我在所有类型基本名称中添加了一个
    \u t
    后缀
  • 我建议使用比我在这里使用的更有意义的类型名
  • 比特流转换有一个从左向右移动比特的特定顺序。如果需要更复杂的位排序(第11.4.14节),请使用流式操作符

  • 数据为8位l_数据为32位宽。您希望将哪些l_数据位分配给数据?数据为8位l_数据为32位宽。您希望将哪些l_数据位分配给数据?