<< Chapter < Page | Chapter >> Page > |
Before implementing the entire system shown in Multirate Processing: Introduction , we recommend you design a system that consists of a cascade of filters FIR 1 and FIR 2 without thesample-rate compressor or expander. After verifying that the response of your two-filter system is correct, proceed toimplement the complete multirate system and verify its total response. At first, use fixed compression and expansionfactors of . Later, you control this factor using a MATLAB interface; be sure to keep this in mind as you write yourcode.
In order to perform the processing at the lower sample rate, implement a counter in your code. Your counter willdetermine when the compressed-rate processing is to occur, and it can also be used to determine when to insert zerosinto FIR 3 to implement the sample-rate expander.
Some instructions that may be useful for implementing your
multirate structure are the
addm
(add to
memory) and
bc
(branch conditional)
instructions. You may also find the
banz
(branch on auxiliary register not zero) and the
b
(branch) instruction useful.
A simple graphical user interface (GUI) is available (as mrategui.m , which requires ser_snd.m ) that sends a number between 1 and 10 to the DSP via the serial port. This canbe used to change the compression and expansion factor in real time.
Run the GUI by typing
mrategui
at the MATLAB
prompt. A figure should automatically open up with a slideron it; adjusting the slider changes the compression and
expansion factor sent to the DSP.
The assembly code that you have been given stores the last
number that the DSP has received from the computer in thememory location labeled
hold
. Therefore,
unless you have changed the serial portion of the givencode, you can find the last compression and expansion factor
set by the GUI in this location. You need to modify yourcode so that each time a new number is received on the
serial port, the compression and expansion factor ischanged. If a "1" is received on the serial port, the
entire system should run at the full rate; if a "10" isreceived, the system should discard nine samples between
each sample processed at the lower rate.
Note that the
READSER
and
WRITSER
macros, which are used to read data from and send data to
the serial port, overwrite
AR0
,
AR1
,
AR2
, and
AR3
registers, as well as
BK
and the condition flag
TC
. You must therefore ensure that these
registers are not used by your code, or that you save andrestore their values in memory before you call the
READSER
and
WRITSER
macros. Thiscan be done using the
mvdm
and
mvmd
instructions. The serial macros set up
the
AR1
and
AR3
each time they are
called, so there is no need to change these registers beforethe macros are called.
More detail about the
READSER
and
WRITSER
macros can be found in
Core File: Serial Port Communication
Between MATLAB and TI TMS320C54x .
Notification Switch
Would you like to follow the 'Dsp laboratory with ti tms320c54x' conversation and receive update notifications?