Расширение знака с использованием конкатенации
Мне нужно сделать расширение знака от 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 "Оператор репликации".