<< 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 . After you have verified that the multirate system works at a fixed rate, you should modify your code so that therate can be changed easily. Later, you have the option of controlling this factor in real-time using a MATLAB interface. Regardless of whether you choose to use the MATLAB interface, you must be able to quickly change the compression and expansionfactors when you demo your code .
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 for interacting with the serial port, provided in
the handout
Core File: Serial Port
Communication Between MATLAB and TI TMS320C54x , 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. This
can 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 'Digital signal processing laboratory (ece 420)' conversation and receive update notifications?