<< Chapter < Page | Chapter >> Page > |
Analyze the following lines of code. Refer to Two's Complement and Fractional Arithmetic for 16-bit Processors , Addressing Modes for TI TMS320C55x , and the Mnemonic Instruction Set manual for help.
1 FIR_len .set 3
23 ; Assume:
4 ; BK03 = FIR_len5 ; firStateIndex is stored at memory location 1008h
6 ; AR2 = 1000h7 ; AR3 = 1004h
8 ; FRCT = 19
10 BSET AR3LC ; sets circular addressing for AR311 mov mmap(AR3), BSA23
12 mov #firStateIndex, AR413 mov *AR4, AR3
14 mov LO(AC0),*AR3+15 mov #0, AC0
16 rpt #(FIR_len-1)17 macm *AR2+,*AR3+,AC0
Anything following a "
;
" is considered a comment.
In this case, the comments indicate the contents of theauxiliary registers, the
BK03
register, and the address registers before the execution of
the first instruction,
mov
.
The line
FIR_len .set 3
defines the name FIR_len as equal to 3. The
BK03
register contains the length of the
circular buffer we want to use for auxiliary register 0 through 3. The
BSET AR3LC
modifies the increment operator
+
so that it
behaves as a circular buffer. This means circular addressing will be used for AR3. Refer to Section 6.11 of the
CPU Reference Guide for help on circular addressing.
Note that any number
followed by an "
h
" or preceded with a
0x
represents a
hexadecimal value.
1000h and 0x1000 both refer to the decimal number 4096.
Assume that the data memory is initialized as follows starting
at location
1000h
.
Memory location | Value |
---|---|
1000h | 1000h |
1001h | 0000h |
1002h | 4000h |
1004h | 1000h |
1005h | 1000h |
1006h | 4000h |
1007h | 1000h |
1008h | 0000h |
After familiarizing yourself with the
mov
,
rpt
, and
macm
instructions, step
through each line of code and record the values of theaccumulator
AC0
and auxiliary registers
AR2
and
AR3
in the spaces provided
in
[link] . Additionally, record the value
of the memory contents after all three instructions have been"executed" in the blank data memory table in
[link] .
AC0 | AR2 | AR3 | |
---|---|---|---|
00 0000 8000h |
1000h |
1004h |
at start of code |
after
mov instruction line 11 | |||
after
mov instruction line 12 | |||
after
mov instruction line 13 | |||
after
mov instruction line 14 | |||
after
mov instruction line 15 | |||
after
rpt instruction line 16 | |||
after first
macm instruction | |||
after second
macm instruction | |||
after third
macm instruction |
When working through the exercise, take into account that the
accumulator
AC0
is a 40-bit register, and that the
multiplier is in the
fractional arithmetic mode .
In this mode, integers on the DSP are interpreted asfractions, and the multiplier will treat them accordingly.This is done by shifting the result of the integer multiplier
in the ALU left one bit. (All the arithmetic is fractional in these examples.)Multiplies performed by the ALU
(via the
macm
instruction) produce a result that
is twice what you would expect if you just multiplied the twointegers together. DSP numerical representation and
arithmetic are described further in
Two's Complement and Fractional Arithmetic
for 16-bit Processors .
Memory location | Value |
---|---|
1000h | |
1001h | |
1002h | |
1004h | |
1005h | |
1006h | |
1007h | |
1008h |
Notification Switch
Would you like to follow the 'Ece 420 fall 2013' conversation and receive update notifications?