Расширение знака однобитовых константных литералов в SystemVerilog

SystemVerilog имеет нестандартные однобитовые литералы значений, такие как '0 а также '1, В соответствии с IEEE Std 1800, в 5.7.1 целочисленных литеральных констант, я вижу "одноразрядное значение без размера... должно рассматриваться как беззнаковое". Однако Пример 5 в разделе я также вижу:

logic [15:0] a, b, c, d;
a = '0;    // sets all 16 bits to 0
b = '1;    // sets all 16 bits to 1
...

Разве это не значит '1 считается подписанным?

На самом деле, я получаю следующий результат с '1 а также 1'b1 Quartus Prime и ModelSim-Altera.

logic [3:0] a, b;
assign a = '1;    // => yields 4'b1111
assign b = 1'b1;  // => yields 4'b0001

Я думаю, что оба '1 а также 1'b1 Сами не подписаны. Почему я вижу такую ​​разницу?

1 ответ

Я пропустил описание "Все биты нестандартного значения должны быть установлены в значение указанного бита". в том же разделе. В многобитовом контексте '1 рассматривается как последовательность всех 1, но все еще рассматривается как неподписанный.

Итак, в 4-битном контексте, '1 без знака 4'b1111 а также 1'b1 без знака 4'b0001,

Извините за беспокойство.

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