подписать расширение с помощью конкатенации

Мне нужно сделать расширение знака с 4-битного числа на 32-битное число. Я пытаюсь повторить MSB 28 раз следующим образом:

assign x={28'b{a[3]},a[3:0]};

Но я получаю сообщение об ошибке:

Синтаксическая ошибка рядом с "{"

x определяется как :wire [31:0] x ;

a определяется как: input [3:0]a;

Является ли эта конкатенация неправильной?


person sepeee    schedule 28.10.2015    source источник


Ответы (1)


Вам нужно избавиться от 'b и добавить еще одну пару {}:

assign x = { {28{a[3]}}, a};

См. IEEE Std 1800-2012, раздел 11.4.12.1 " Оператор репликации».

person toolic    schedule 29.10.2015