Присвоение массива вектору 32 бита за раз - PullRequest
0 голосов
/ 02 мая 2018

У меня есть массив шириной 32 бита из n элементов, и я пытаюсь назначить эти элементы вектору, у меня есть следующий код:

 function automatic logic [SIZE-1:0] my_function (my_array x_map);

    logic SIZE-1:0] y_map               = '0;
    int fctr                            = (SIZE)/32;
    int top_bnd                         = 31;
    int lwr_bnd                         = 0;

for(int k0 = 0; k0 < fctr; k0++)
    begin

    y_map[top_bnd:lwr_bnd]              = x_map[k0];
    top_bnd                             = (top_bnd + 32'hFFFF);
    lwr_bnd                             = (lwr_bnd + 32'hFFFF);

    end

return y_map;

endfunction

Однако это не работает, и я получаю две ошибки:

1) "диапазон выбора детали недопустим" 2) «Невозможно оценить выражение в выражении левого среза, выражение должно быть постоянной времени компиляции»

Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

Возможно, вы захотите использовать потоковые операторы для этого

y_map = {<<32{x_map}};

Кстати, вы должны показать объявления всех идентификаторов в вашем примере, т.е. my_array.

...