Переход через конкатенацию в SystemVerilog? - PullRequest
0 голосов
/ 27 сентября 2019

У меня следующий вопрос

Реализация схемы, которая сдвигает 32-битный вектор на два влево и заполняет пустые места нулями.Используйте только оператор конкатенации.

Я только изучаю SystemVerilog, и я не могу понять, как я могу использовать оператор конкатенации для этого.Я бы просто сделал 'assign y = a << 2' без конкатенации (с объявленным 32-битным вектором и 32-битным выходом ya), но я не понимаю, как конкатенация может иметь к этому какое-либо отношение.</p>

1 Ответ

0 голосов
/ 27 сентября 2019

Конкатенация позволяет объединять несколько частей вектора с константами.Таким образом, оператор сдвига влево для a << 2 может быть реализован следующим образом:

logic [7:0] x, y;
always_comb
   y[7:0] = {a[5:0], 2'b0};

Просто конкатенация младших 6 битов с 2 битами по 0 с правой стороны.То же самое, что сделал бы левый сдвиг, но без переполнения.

...