Расширение знака однобитовых константных литералов в SystemVerilog - PullRequest
0 голосов
/ 12 сентября 2018

SystemVerilog имеет нестандартные однобитовые литералы значений, такие как '0 и '1.В соответствии со стандартом IEEE 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 Ответ

0 голосов
/ 12 сентября 2018

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

Таким образом, в 4-битном контексте '1 является беззнаковым 4'b1111 и 1'b1 без знака 4'b0001.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...