我需要在 FPGA 中执行以下操作: Dft=1/4shiftPS+3/4shiftPS_ant
我是这样执行的:
signal shiftPS : signed(pwm_bits-1 DOWNTO 0);
signal shiftPS_ant : signed(pwm_bits-1 DOWNTO 0);
variable Dft : signed(pwm_bits-1 downto 0);
Dft := (shift_right(shiftPS,2))+(shift_right(shiftPS_ant,2)+shift_right(shiftPS_ant,2)+shift_right(shiftPS_ant,2));
在每次 shift_right 操作时,我可能会丢失 2 位的信息。我想通过将操作重写为:
来减少轮班操作的次数,从而最大程度地减少丢失的信息signal shiftPS : signed(pwm_bits-1 DOWNTO 0);
signal shiftPS_ant : signed(pwm_bits-1 DOWNTO 0);
variable Dft : signed(pwm_bits-1 downto 0);
Dft := shift_right(shiftPS+shiftPS_ant+shiftPS_ant+shiftPS_ant,2);
一切似乎都工作正常,但我不太确定它在某些情况下可能会失败,因为添加 4 个信号可能会溢出向量的原始大小(尚未递增)
任何人都可以告诉我这是如何工作的吗??
问候!!