【问题标题】:Reversing byte order of a word array using stream operator系统verilog - 使用流运算符反转字数组的字节顺序
【发布时间】:2022-01-24 04:29:05
【问题描述】:

假设在系统 verilog 中我有一个 32 位字的数组,如下所示,我想将它打包成一个字节数组,但首先是字的 lsb 字节

     bit [7:0] byte_array[];
     bit [31:0] reg_array[];

     reg_array[0] = 32'h01020304;
     reg_array[1] = 32'h05060708;
     reg_array[2] = 32'h090a0b0c;

所以我想要的输出是这样的,

byte_aray[0]=0x4
byte_aray[1]=0x3
byte_aray[2]=0x2
byte_aray[3]=0x1
byte_aray[4]=0x8
byte_aray[5]=0x7
byte_aray[6]=0x6
byte_aray[7]=0x5
byte_aray[8]=0xc
byte_aray[9]=0xb
byte_aray[10]=0xa
byte_aray[11]=0x9

有没有一种方法可以使用纯流式操作符来做到这一点?我能做的最好的就是在下面,但我想知道我是否可以单独使用流操作符来做到这一点。谢谢。

byte_array={<<32{reg_array}};
byte_array.reverse();

【问题讨论】:

    标签: system-verilog


    【解决方案1】:
     byte_array = {<<8{ {<<32{reg_array}} }};
    

    【讨论】:

    • 感谢戴夫确实有效,我想我试过 {
    • 我在另一个流操作符中嵌套了一个流操作符(注意我放置空格的位置)。每个流操作符都需要两对大括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多