Расширение знака однобитовых константных литералов в 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
,
Извините за беспокойство.