Можно ли уменьшить количество битов после арифметического сдвига вправо? - PullRequest
0 голосов
/ 30 апреля 2018

Если я уменьшу количество битов после арифметического сдвига вправо в verilog, получу ли я правильное число со знаком? Это действительно?

уменьшенное количество битов = значение сдвига

A = 1110_1110
A>>>1
new A = 111_0111  

1 Ответ

0 голосов
/ 30 апреля 2018

Да, но вы должны использовать три «>», а не четыре, и, конечно, новая переменная должна быть достаточно большой:

wire signed [7:0] A,B;
wire signed [6:0] just_fits;
wire signed [5:0] oops;

  assign         B = A >>> 1;  // Signed divide by two
  assign just_fits = A >>> 1;  // Signed divide by two
  assign      oops = A >>> 1;  // Goes wrong
...