<< Chapter < Page Chapter >> Page >

In this example, the filter coefficients are placed in memory in decreasing order; that is, the last coefficient, h 7 , is at location 0x1000 and the first coefficient, h 0 , is stored at 0x1007 .

Now that you can find the coefficients in memory, you are ready to use the MATLAB command freqz to view the filter's response. You must create a vector in MATLABwith the filter coefficients to use the freqz command. For example, if you want to view the response of the three-tap filter with coefficients -10, 20, -10 you canuse the following commands in MATLAB:

  • h = [-10, 20, -10];
  • plot(abs(freqz(h)))

Note that you will have to enter eight values, the contents of memory locations 0x1000 through 0x1007 , into the coefficient vector, h .

Does the MATLAB response compare with your experimental results? What might account for any differences?

Step 7: create new filter in matlab and verify

MATLAB scripts will be made available to you to aid in code development. For example, one of these scripts allows youto save filter coefficients created in MATLAB in a form that can be included as part of the assembly process withouthaving to type them in by hand (a very useful tool for long filters). These scripts may already be installed on yourcomputer; otherwise, download the files from the links as they are introduced.

First, have MATLAB generate a "random" eight-tap filter by typing h = gen_filt; at a MATLAB prompt. Then save this vector of filter coefficients by typing save_coef('coef.asm',flipud(h)); Make sure you save the file in your own directory. (The scripts thatperform these functions are available as gen_filt.m and save_coef.m )

The save_coef MATLAB script will save the coefficients of the vector h into the named file, which in this case is coef.asm . Note that the coefficient vector is "flipped" prior to beingsaved; this is to make the coefficients in h fill DSP memory-locations 0x1000 through 0x1007 in reverse order, as before.

You may now re-assemble and re-run your new filter code as you did in Step 5 .

Notice when you load your new filter that the contents of memory locations 0x1000 through 0x1007 update accordingly.

Step 8: modify filter coefficients in memory

Not only can you view the contents of memory on the DSP using the debugger, you can change the contents at anymemory location simply by double-clicking on the location and making the desired change in the pop-up window.

Change the contents of memory locations 0x1000 through 0x1007 such that the coefficients implement a scale and delay filter with impulse response:

h n 8192 δ n 4
Note that the DSP interprets the integer value of 8192 as a fractional number by dividing the integer by32,768 (the largest integer possible in a 16-bit two's complement register). The result is an output that isdelayed by four samples and scaled by a factor of 1 4 . More information on the DSP's interpretation of numbers appears in Two's Complement and Fractional Arithmetic for 16-bit Processors .
A clear and complete understanding of how the DSP interprets numbers is absolutely necessary toeffectively write programs for the DSP. Save yourself time later by learning this material now!

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 320 - spring 2003. OpenStax CNX. Jan 22, 2004 Download for free at http://cnx.org/content/col10096/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?

Ask