<< 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 coef1 and the first coefficient, h 0 , is stored at coef1+7 .

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];
  • freqz(h)

Note that you will have to enter eight values, the contents of memory locations coef1 through coef1+7 , into the coefficient vector, h .

You must divide the coefficients by 32768. Where does this scaling factor come from?

How 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',fliplr(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 and can be found at V:/ece420/55x/m_files )

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 coef1 through coef1+7 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 coef1 through coef1+7 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.

The DSP must be in a halted state in order to overwrite the memory.

Change the contents of memory locations coef1 through coef1+7 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 before attempting Lab 1!

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 420 fall 2013. OpenStax CNX. Sep 26, 2013 Download for free at http://cnx.org/content/col11560/1.3
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 420 fall 2013' conversation and receive update notifications?

Ask