I am working on a board that has no antialisaing filter at the input of the ADC. I have option to I implement my own filter using RC + Opamp circuit. But is it also possible to implement Anti Aliasing filter after sampling by ADC and processing in Digital domain: a digital Anti aliasing filter?
Just to support Matt's answer and provide a few more details:
Most modern ADCs do most of the hard antialiasing job in the digital domain. Reason is that digital filters tend to produce less by-products for a much lower cost. The actual chain is:
- Analog Input.
- Analog Anti-aliasing filter.
- Oversampling (eg, at 8x).
- Digital Anti-Aliasing Filter.
- Decimating (reduction to 1x).
- Digital Output.
The further illustrate, consider the following:
- The audio is sampled at 44100Hz.
- This provides a Nyquist frequency of 22050 Hz.
- Any frequencies above 24100 Hz will alias back to the audible range (below 20kHz).
- 20000Hz to 24100 is about quarter of an octave.
- Even with a steep 80dB/8ve filter you will only be reducing the aliasing frequencies by 20dB.
But with 8x oversampling:
- The audio is sampled at 352.8kHz (44.1kHz x 8).
- Nyquist is 176.4 kHz.
- Only frequencies above 332.8kHz will mirror to the audible range.
- That's about 4 octaves.
- So you can apply a 24dB/8ve analog filter to reduce aliasing frequencies by 96dB.
- Then oversample.
- Then apply linear phase digital filter between 20kHz and 24.1kHz
The following book is an excellent, clear resource for these sort of things.
I agree with pichenettes's answer but I would like to add that it is pretty common practice to use a simple inexpensive low-order analog anti-aliasing filter, and do the rest of the anti-aliasing filtering in the digital domain. This implies of course that you do not process at maximum sampling rate but that you downsample after the digital anti-aliasing filter. Summarizing:
Of course you need an analog anti-aliasing filter.
The analog filter can be kept very simple if you can downsample your signal. In this case you can do more aliasing removal in the digital domain (before downsampling).
No, this does not make sense. Say your ADC sample rate is 1kHz. A 100 Hz sine wave and a 900 Hz sine wave will yield exactly the same sequence of digital samples once fed into your ADC - but you want to pass the former and attenuate the later. How do you expect your digital filter to produce different outputs when fed the same input?
The only thing that could work would be to sample the input signal as fast as your ADC allows, and then downsample it in the digital domain to your target sample rate - but unless you have CPU cycles to waste, you'd better use an analog filter upstream.