.mmregs
.bss x,5
stack .usect \ .data
table: .word 0,1,2,3,4 .def start .text start: STM #x,AR1 RPT #4
MVPD table,*AR1+ LD #1,16,B STM #4,BRC STM #x,AR4 RPTB #next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end .end
3.试编一程序,计算y =?aixi,其中数据均为小数。并找出5项乘积aixi(i=1,2,3,
i?154,5)中的最小值,放入z单元中。
4. 编一程序,首先实现对DATA开始的4个单元赋初值0,1,2,3,4,然后再对每个单
元内容加1。 5.编写一段程序,将程序存储器中的10个数据首先传送到数据存储器中(以DATA1开始),再将DATA1开始的10个单元内容传送到DATA2开始的数据储存期中。 .global start
.mmregs .data
Table: .word 2,1,2,3,4,5,6,7,8,2 .bss DATA1,10
.bss DATA2,10 .text
RPT #9
MVPD Table,*AR1+ STM #DATA2,AR0 RPT #9
MVPD DATA1,*AR0+ b end
start: STM #DATA1,AR1
end:
6 将数组x[5] 初始化为{1,2,3,4,5}。
Table:
.global start .mmregs .data
.word 1,2,3,4,5
.bss x,5 .text
start: STM #x,AR1 RPT #4 end:
五、阅读程序
1、阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能。 .title \ ; 为汇编源程序取名
.mmregs ;定义存储器映像文件 .def start ;定义启动模式 .bss y , 1 ;为y分配1个存储空间 X .usect \ ;为x预留7个存储空间 b0 PA0
.usect \;为b0预留7个存储空间 .set 0 ;PA0=0
1 ;PA1=1
MVPD Table,*AR1+ b end
PA1 .set
.data COEF:
.word .word .word .word .word .word .word .text start:
SSBX STM RPT MVPD STM STM STM LD
1*32768/10 2*32768/10 -4*32768/10 3*32768/10 -4*32768/10 2*32768/10 1*32768/10
;0.1 ;0.2 ;-0.4 ;0.3 ;-0.4 ;0.2 0.1
FRCT #b0, #6
FRCT位置1,表示进行小数乘 ;b0的首地址传给AR1 ;重复7次下条指令
;将程序空间的7个数据传送给数据存储器 ; AR2指向x(n-6),AR2=86H ; AR3指向b6单元,AR3=8EH
AR1
table, *AR1+ #xn+6, AR2
#b0+6, AR3 #7, #xn, PA1, A,
BK ;BK=7,设置缓冲区长度 DP ;设置页指针,DP=01H @xn #6
;输入x(n)
;累加器A清零,设置迭代次数
PORTR FIR2: RPTZ
MAC
*AR2+0%, *AR3+0%, A ;A=circ(AR2+AR0)+circ(AR3+AR0)
STH A, @y ;暂存y(n) PORTW @y, PA0 ;输出y(n) BD FIR2 ;执行完下一条后,跳到FIR2处 PORTR PA1,*AR2+0% ;输入最新样本,并修改AR2
.end
功能:N=7的滤波器,y(n)= b0x(n) +b1x(n-1) +b2x(n-2)+ b3x(n-3)+b4 x(n-4)+ b5x(n-5)+ b6x(n-6) 2.阅读下列汇编源程序,在每条语句后写出注释,并叙述程序的功能 .title “cjy4.asm” .mmregs
STACK .usect “STACK”,10H
.bss a,4 ;为a分配4个存储单元 .bss x,4 ;为x分配4个存储单元
.bss y,1 ;为结果y分配1个存储单元 .def start
.data ;定义数据代码段
table: .word 1*32768/10 ;在table开始的8个 .word 2*32768/10 ;地址放数据 .word -3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/10
.text ;定义可执行程序代码段
start:SSBX FRCT ;设置FRCT位,表示进行小数乘 STM #x,AR1 ;将x的首地址传给AR1 RPT #7 ;重复8次下条指令
MVPD table,*AR1+ ;将程序空间8个数传给数据存储器 STM #x,AR2 ;将数据存储器第一个数x1的地址传给AR2 STM #a,AR3 ;将数据存储器第五个数a1的地址传给AR3 RPTZ A,#3 ;将A清零,重复4次下条指令
MAC *AR2+,*AR3+,A ;执行乘法累加和,结果放在A中 STH A,@y ;将A的高端字存入结果y,低端字省去 end: B end ;原处循环等待 .end
4计算y=?aixi的程序段,其中数据均为小数:a1=0.1,a2=0.2,a3=-0.3,a4=0.4,x1=0.8,
i?1x2=0.6,x3=-0.4,x4=-0.2
一、填空(每空1分,共30分)
1. TI公司的定点DSP产品主要有 TMS320C2000 系列、TMS320C5000系列和 TMS320C6000
系列。
2. ’C54x DSP中传送执行指令所需的地址需要用到 PAB 、CAB、DAB和 EAB 4条地
址总线。
3. DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器(ROM)。其中RAM
又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。
4. ’C54x DSP的内部总存储空间为192K字,分成3个可选择的存储空间:64K字的程序
存储空间 、64K字的数据存储空间和64K字的 I/O空间 。
5. 从功能结构上,’C54X DSP的CPU可以划分成 运算部件 和 控制部件 两大部分。 6. ’C54x DSP的寻址方式有七种,分别为立即寻址、绝对寻址、累加器寻址、直接寻址、
间接寻址 、存储器映象寄存器寻址、堆栈寻址。
7. 在’C54x DSP寻址和指令系统中,Xmem和Ymem表示 16位双寻址操作数 ,Dmad为
16位立即数,表示 数据存储器地址 ,Pmad为16位立即数,表示 程序存储器地址 。 8. 程序计数器的值可以通过 复位操作 、 顺序执行指令 、 分支转移 ,累加器转
移,块重复,子程序调用,从累加器调用子程序,中断等操作改变。
9. ’C54x DSP芯片采用了6级流水线的工作方式,即一条指令分为 预取指 、取指、译
码、 寻址 、读数和执行6个阶段。
10. 解决MMR写操作的流水线冲突时,一般可用采用推荐指令和 插入空操作指令 的方
法。
11. ’C54x DSP定时器由3个16位存储器映射寄存器组成:定时器寄存器(TIM)、 定时
器周期寄存器(PRD)和 定时器控制寄存器(TCR) 。
12. 主机接口(HPI,Host Port Interface) 是TMS320C54x 系列定点芯片内部具有的一
种接口部件,主要用于DSP与其他总线或CPU进行通信。
13. ’C54x DSP的指令系统有 助记符指令 和 代数指令 两种形式。
14. COFF目标文件中.text段通常包含 可执行代码 ,.data段通常包含己初始化的数
据,.bss段中通常为 未初始化的数据 保留空间。
15. DSP芯片的开发工具可以分为 代码生成工具 和 代码调试工具 两类。
二、简答题(每题5分,共20分)
1.什么是定点DSP芯片和浮点DSP芯片?各有什么优缺点?
相关推荐: