- 1.
- The Fourier transform of a low-pass filter will have a value of 1 for
low frequencies and a value of 0 for high frequencies:

Consider a low-pass filter with the cutoff frequency . Find the impulse response

*h*(*n*) of this discrete-time system by taking the inverse Fourier transform of*H*(*w*). - 2.
*h*(*n*) has an infinite number of terms, so cannot be implemented. We can get an approximation of*h*(*n*) by taking a limited number of terms. Write a MATLAB program to find the 101 terms of*h*(*n*), . Print out a`stem`plot of this truncated impulse response,*h*_{t}(*n*).- 3.
- Use MATLAB to take the Fourier transform of
*h*_{t}(*n*). Plot the frequency response |*H*(*f*)| vs*f*and phase of*H*(*f*) vs*f*. - 4.
- Implement the FIR filter on the 56002. The program
`fir.asm`is a macro to implement an FIR filter on the 56002, and the program`firt.asm`shows how to use the macro. Note that when you call the`fir`macro, it expects the new input data*x(n)*to be in the`x0`register, and when it exits, the new output data*y(n)*will be in the`a`accumulator. You need to reserve storage in`x`data space for the input data (`states`in the`firt`program), and need to put the filter coefficients in the`y`data space (`coef`in the`firt`program). Before you call the`fir`macro the first time, you need to set up`r0`to point at the input data array,`r4`to point at the filter coefficients, and`m0`and`m4`to be modulo the number of coefficients in the filter.Your filter uses 101 coefficients. It would be tedious and error-prone to type these coefficients into your program by hand. Instead, modify your MATLAB program to print the coefficients out for you in a way that they can automatically be included in your program. Here is a program fragment which can do this:

fid = fopen('lab4coef.asm','w'); fprintf(fid,'ntaps equ %d\n\n',length(h)); fprintf(fid,' org x:$100\n'); fprintf(fid,'states dsm ntaps\n\n'); fprintf(fid,' org y:0\n'); fprintf(fid,'coef\n'); for n=1:length(h) fprintf(fid,' dc %14.8f\n',h(n)); end fprintf(fid,'\n'); fclose(fid)

In your 56002 program the line

include lab4coef.asm

will put in the necessary information. - 5.
- Measure the frequency response (both gain and phase) of the filter.
Compare the frequency response to the plots of Part 1.
- 6.
- This it a 100th order filter. What is the maximum order filter you could implement on the 56002, keeping the 48 kHz sampling rate?

Copyright © 1998, New Mexico Tech