【问题标题】:Systemverilog assignment - logic array to byte arraySystemverilog 赋值 - 逻辑数组到字节数组
【发布时间】:2014-01-01 17:21:12
【问题描述】:

我正在尝试将logic l_data[31:0]; 分配给byte data[];

data = l_data; 不是合法的 SystemVerilog 分配。怎么办?

【问题讨论】:

  • 数据为 8 位 l_data 为 32 位宽。您想将 l_data 的哪些位分配给数据?

标签: system-verilog


【解决方案1】:

使用比特流转换(IEEE Std 1800-2012 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);

几个注意事项:

  1. 小心使用byte,默认是签名的。
  2. 我为我所有的类型基本名称添加了_t 后缀,
  3. 我建议使用比我在这里使用的更有意义的类型名称。
  4. 比特流转换有一个特定的顺序来从左到右移动比特。如果您需要更复杂的位排序,请使用流式运算符(第 11.4.14 节)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多