sammyt09
Newbie level 6
hogenauer
Hi,
I have designed a 3rd order CIC filter. However, the bitwidths I require for each of the integrators appear to be much bigger than I anticipated by calculation.
The filter can be summarised as:
Over Sampling Rate (OSR) = 512
Differential Delay (D) = 1
Order = 3rd order
The filter is being fed by a binary output stream from an ideal delta sigma ADC.
From my understanding of Hogenauer filters:
The maximum dynamic range:
B_grow = (OSR x D) ^ order
= (512 X 1) ^ 3
= 134217730
Equavalent in bits to:
b_grow = log2( B_grow )
= 27
Therefore, the internal word width required is:
W = Win + 3 x log2( OSR x D )
= 1 + 3 x log2( 512 x 1 )
= 28
However, from my simulations, the filter is not operating correctly unless I have a word width of 38 bits. This is a big difference to what I have calculated and I dont understand why?
Can anybody spot any mistakes I have made in the above calculations? Is it ok to define 'Win' as 1 if I am feeding the filter from a delta sigma ADC?
(I am not concerned with pruning at the moment, as I will address this once I have got the basic model working).
Thank you in advance for any help.
Sammyt09
Hi,
I have designed a 3rd order CIC filter. However, the bitwidths I require for each of the integrators appear to be much bigger than I anticipated by calculation.
The filter can be summarised as:
Over Sampling Rate (OSR) = 512
Differential Delay (D) = 1
Order = 3rd order
The filter is being fed by a binary output stream from an ideal delta sigma ADC.
From my understanding of Hogenauer filters:
The maximum dynamic range:
B_grow = (OSR x D) ^ order
= (512 X 1) ^ 3
= 134217730
Equavalent in bits to:
b_grow = log2( B_grow )
= 27
Therefore, the internal word width required is:
W = Win + 3 x log2( OSR x D )
= 1 + 3 x log2( 512 x 1 )
= 28
However, from my simulations, the filter is not operating correctly unless I have a word width of 38 bits. This is a big difference to what I have calculated and I dont understand why?
Can anybody spot any mistakes I have made in the above calculations? Is it ok to define 'Win' as 1 if I am feeding the filter from a delta sigma ADC?
(I am not concerned with pruning at the moment, as I will address this once I have got the basic model working).
Thank you in advance for any help.
Sammyt09