Расширение знака с использованием конкатенации

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

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

но ошибка в том, что:

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

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

это объединение в неправильной реализации, или в чем причина этой конкретной ошибки?

1 ответ

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

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

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

Другие вопросы по тегам