FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

FIR II bit growth

Altera_Forum
Honored Contributor II
1,069 Views

Good afternoon, 

 

Can I please ask if there is any formula connecting the FIR II filter's performance and bit widths (especially coefficient width). 

 

To be more precise I would like to short out (reduce) the output width that as far as I understand is determined by:input width+coefficient width+ log2(coefficient number). 

 

I would like that as short as possible,is there any way to relate the attenuation achieved with the coefficient bit width? 

 

Bear in mind that I simply import floating point coefficients, fixed point would increase the outoput size dramatically. 

 

Thanks in advance, 

 

G
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
109 Views

 

--- Quote Start ---  

Good afternoon, 

 

Can I please ask if there is any formula connecting the FIR II filter's performance and bit widths (especially coefficient width). 

 

To be more precise I would like to short out (reduce) the output width that as far as I understand is determined by:input width+coefficient width+ log2(coefficient number). 

 

I would like that as short as possible,is there any way to relate the attenuation achieved with the coefficient bit width? 

 

Bear in mind that I simply import floating point coefficients, fixed point would increase the outoput size dramatically. 

 

Thanks in advance, 

 

--- Quote End ---  

 

 

for coeffs: 

convert coeffs to fixed point e.g. 

coeffs = round(coeffs*2^15)/2^15; 

then plot freqz(coeffs); 

 

you should be able to see response and measure it. 

 

for coeffs and signal: 

use above scaled coeffs on fixec point input (x): 

y = filter(coeffs,1,x);  

 

f = fft(y); 

plot(20*log10(abs(f)));
Altera_Forum
Honored Contributor II
109 Views

Kaz, 

 

Thank you very much for your reply, 

 

It is very helpful explaining how the conversion works but unfortunately is not what I am after. 

 

I would like to know if there is any formula (mathematical relation) between output performance and bit growth. 

 

Best Regards 

George
Altera_Forum
Honored Contributor II
109 Views

 

--- Quote Start ---  

Kaz, 

 

Thank you very much for your reply, 

 

It is very helpful explaining how the conversion works but unfortunately is not what I am after. 

 

I would like to know if there is any formula (mathematical relation) between output performance and bit growth. 

 

Best Regards 

George 

--- Quote End ---  

 

 

I never heard of any formula for that. But my previous post tests that directly. 

In practice we have to truncate signals to same width as input (usually). You choose your final ADC or DAC bitwidth and study accordingly. 

There are formulas for SNR of quantisation noise at ADC/DAC which basically states that SNR = 6*bitwidth in dBs for a clean tone.
Altera_Forum
Honored Contributor II
109 Views

Thanks a lot!

Reply