Hi Stu,
The short answer is that the 24 and 32-bit modes are not bit-true with the 16-bit mode for 16-bit input data. I agree that the documentation is deficient and will work to correct that (probably via the DevZone article linked from the online help). I consulted with the original designer, who provided the explanation below. Both of us are operating under the assumption that your filter response curves were all produced with a 16-bit stimulus. Let me know if that is not the case.
"The FPGA filters are designed as a trade-off between quality and FPGA resource usage. The goal was to cover most practical real world applications and the filters therefore use internal dynamic corresponding to 32 bit resulting in an overall dynamic range of 26-28 bit depending on filter order and cut-off frequency. You will always lose some bits due to scaling for internal headroom and re-quantization errors. But 26-28 bits is still much better than practically any real world signal, the best A/D converters can not give you more than 24 bit or even less.
When you input an I16 bit signal the dynamic range is internally moved up to use the upper 16 bit of the 26-28 bit range and therefore you do not loose any dynamic in the process. However if you are using the 32 bit mode but only input an I16 signal, you are applying your signal to the lower 16 bit and your output noise will now correspond to at best (26-28)-16 = (10-12 bit). You are not using your dynamic range optimally. It is like inputting a low-level input signal of 10 mV when using the 10 V input range of an acquisition board. To fix 'the problem' you need to prescale/post-scale your signal. Try for example to shift your input signal 16 bit up and your output signal 16 bit down like shown on the attached screenshot."
I hope this explanation helps. The 3 response curves produced with the scaled data described above are practically indistinguishable. It is possible to modify the 32-bit implementation to use a 64-bit internal path and make it behave more like a superset of the 16-bit implementation--let me know if you have a use case for this.
JimMessage Edited by JLewis on 02-29-2008 11:49 AMMessage Edited by JLewis on 02-29-2008 11:50 AM
BW response test.JPG:
http://forums.ni.com/attachments/ni/170/305413/1/BW response test.JPG