CONSTANT MAXPOW = 100;
CONSTANT WIDTHAD = CEIL(LOG2(MAXPOW));
SUBDESIGN S2PWM
(
Clk : INPUT;
Power[WIDTHAD..0] : INPUT;
PWM : OUTPUT;
)
VARIABLE
Value[WIDTHAD..0] : DFF;
BEGIN
Value[].clk = Clk;
PWM = Value[] >= MAXPOW;
if(PWM)
then Value[] = Value[] + Power[] - MAXPOW;
else Value[] = Value[] + Power[];
end if;
END;