VHDL操作顺序,先加后移,还是先移后加?

问题描述 投票:0回答:0

我需要在 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 个信号可能会溢出向量的原始大小(尚未递增)

任何人都可以告诉我这是如何工作的吗??

问候!!

vhdl
© www.soinside.com 2019 - 2024. All rights reserved.