Actually after reading the data from ADC is an $Q15$ format (ie. ADC supports 0-3.3v, ADC is an unipolar type). then the $Q15$ data is converted to $q31$ format ($Q31$ value = $q15_{data}$ <<16). this $Q31$ value is fed in to FIR filter (FIR filter is an $Q31$ format) then filter output is fed in to the fftr(real fft).
Iam facing the problem like if my input is more than 600mv the value of the $Q31$ (after filter stage) is exceeding the $2^{31}$($q31$) limit. Kindly give some suggestion how to solve this problem.
My ADC output is 16bit (ADC MAX vge is 0-3v unipolar type). then this value i am converting to $Q31$ as follows uint_16 ADC_value;\ADC value $Q31$ value = (Q31) ((q15) (ADC_value-offset))<<16; \ here offset is (unipolar to bipolar conversion ie. AVG of ADC_value )16 bit to $Q15$ conversion
if my input voltage is more than 600mv $Q31$ value is not correct.
Kindly suggest me how to convert $Q15$ to $Q31$
No comments:
Post a Comment