Variable not saturating

Requests, not necessarily related to fpga4fun...

Variable not saturating

Postby neil_mallia » Wed May 05, 2010 9:26 am

Hi,

I am trying to implement an integrator but when it is reaching the maximum it is not saturating but resetting and starting again from 0.

Here is the part of the code which is relevant:

INTEGRATION := INTEGRATOR + T_DIFF + (T_DIFF & "000000000") - (T_DIFFPRE & "000000000");

IF INTEGRATION >= "0000000011111111111111111111111111" then

INTEGRATOR := "11111111111111111111111";

ELSE

INTEGRATOR := INTEGRATION(22 DOWNTO 0);

END IF;



T_DIFF is an 8bit constant
T_DIFFPRE is an 8bit constant
INTEGRATION is a 31 bit variable
INTEGRATOR is a 23 bit variable

I don't know what I'm doing wrong but I think when INTEGRATION reaches "0000000011111111111111111111111111" INTEGRATOR should be kept at "11111111111111111111111" and it will stay like this.

Any ideas on whats happening?

Thanks
neil_mallia
 
Posts: 4
Joined: Mon Mar 29, 2010 2:29 pm

Return to Help requests