您的当前位置:首页正文

DSP复习题及答案

2024-04-26 来源:步旅网
DSP原理及应用复习题

题型为以下七种:

1、 填空题(每空1分,共10分) 2、 单项选择题(每题2分,共10分) 3、 判断题(每题2分,共10分) 4、 简答题(每题4分,共20分) 5、 程序阅读题(每题4分,共20分) 6、 编程题(8分) 7、 作图题(10分) 8、 程序设计题(12分) 一、填空题

1. 在DSP处理器中,数据地址的产生是由(数据地址发生器)来完成的。

2. TMS320C54x的累加器分别称为(累加器A)和(累加器B),它们的数据宽度是(40)

位。

3. TMS320C54x 的DSP采用先进的(哈佛)结构,其独立的(程序)总线和(数据)总线

允许同时读取(指令)和(操作数),实现高度的并行操作。

4. TMS320C54x的通用I/O引脚有(跳转控制输入引脚BIO )和(外部标志输出引脚

XF)。

5. 指令MPY 0Dh, A中乘数和被乘数分别在( 累加器B高16位 )和(累加器A)中。 6. TMS320C54x有(3)个状态和控制寄存器。

7. 在DSP处理器中,配有两个地址生成器,包括(数据地址发生器)和(程序地址发生

器)。

8. TMS320C54x使用一个40位的(ALU)和两个40位的(累加器ACCA和ACCB)来完

成算数算术运算和逻辑运算。

9. TMS320C54x存储器由3个独立的可选择空间组成:(程序空间)、(数据空间)和(I/O

空间)。

10. TMS320C54x的指令系统包含(助记符指令)和(代数指令)两种形式。

11. 编译器对于符号地址和变量的处理都是相对于本段的开始。连接器为每个段选择了合适

的起始地址,就必须相应地修改这些符号地址和变量,同时修改所有对这些地址和变量的引用,这个过程称为(重定位)。

12. TMS320C54x的总线由(1)组程序总线、(3)组数据总线和(4)组地址总线组成,可

在一个指令周期内产生两个数据存储地址,实现流水线并行数据处理。 一、单项选择题

1. 1.TMS320C54x中累加器分为三个部分,低位字,高位字和保护位,其中高位字是指

( B )

A. 15~0位 B. 31~16位 C. 39~32位 D. 39~23位 2. 2.TMS320C54x中,暂存器T的数据宽度是( C )

A. 40位 B. 32位 C. 16位 D. 8位 3. 3.TMS320C54x的立即数寻址中,位数最长的短立即数的长度是(B ) A. 16位 B. 9位 C. 8位 D. 5位 4. TMS320C54x汇编语言中,用于自定义段的是( A )

A. .sect B. .bss C. .text D. .data 5. 下列TMS320C54x的中断,不是可屏蔽中断的是( D )

A. RINT0 B. HPIINT C. DMAC4 D. reset 6. 1.TMS320C54x中累加器分为三个部分,低位字,高位字和保护位,其中保护位字是

指( C )

A. 15~0位 B. 31~16位 C. 39~32位 D. 39~23位 7. TMS320C54x中,ALU的数据宽度是( A )

A. 40位 B. 32位 C. 16位 D. 8位 8. TMS320C54x的立即数寻址中,长立即数寻址的长度是( A )

A. 16位 B. 9位 C. 8位 D. 5位 9. 4.TMS320C54x汇编语言中,用于定义未初始化段的是( B )

A. .sect B. .bss C. .text D. .data 10. 5.下列哪个浮点数表示的是无效的数( C )

A .99e9 B 9.9e9 C 99e9 D 99.e9 三、判断题

1.TMS320C54x汇编语言中,符号常量可以用.set定义,不占用存储器。( X )

2.TMS320C54x的中断处理分为3个阶段:一是请求中断,二是响应中断,三是执行中断服务程序。 ( √ )

3.TMS320C54x在执行中断之前,要完成所有流水线中的指令。所以,最大的中断延时取决于进入流水线的指令。 ( √ )

4.TMS320C54x在执行中断服务程序(ISR)时,在进入中断服务程序后,CPU将首先把程序计数器(PC)的值,也即返回地址,压入堆栈,然后把中断矢量的地址装入PC。( × ) 5.TMS320C54x有三个状态和控制寄存器,分别是:状态寄存器ST0,状态寄存器ST1,以及处理器方式状态寄存器PMST。 ( √ )

6.如果在程序中未用任何段伪指令,则汇编器将把所有的程序块或数据块统一汇编至.text段中。( × )

7.MEMORY命令是告诉连接器如何将输入段组合成输出段。 ( × ) 8.TMS320C54x在执行中断之前,要完成所有流水线中的指令。所以,最大的中断延时取决于进入流水线的指令。 ( × ) 9.局部标号可以用伪指令来定义。 ( √ )

10.TMS320C54x只有两个状态和控制寄存器,分别是:状态寄存器ST0,状态寄存器ST1。 ( × ) 四、简答题

1.简述哈佛结构的基本特征,并画出示意图。P3

哈佛结构结构采用双存储空间,程序存储器和数据存储器分开,取指和读数可以同时进行,扩展了存储器带宽,增加了系统的吞吐量。

2.简述TMS320C54x DSP的ALU的可能的输入数据来源。P44 第一种答案:

ALU的X输入端的数据:

移位器的输入 来自数据总线DB的数据存储器操作数 ALU的Y输入端的数据:

累加器A中的数据 累加器B中的数据

来自数据总线CB的数据存储器操作数 ④T寄存器中的数据 第二种答案:

可以使用的输入形式包括:16位的立即数,从数据存储器读出的16位字,暂存器T中的16位字,从数据存储器中读出的2个16位字,从数据存储器读出的1个32位字,从其中一个累加器输出的40位值

3.简述辅助寄存器(AR0~AR7)的主要功能。

辅助寄存器(AR0~AR7)属于数据地址生成逻辑单元,产生16位数据空间,通用R,为各种寻址服务。

4.简述TMS320C54x中硬件定时器的功能。

TMS320C54x有一个带有4位预定标器的16位定时电路。这个定时计数器每个时钟周期减1,减至0时就产生一个定时中断。可以通过设置特定的状态位,来使定时器停止、恢复运行、复位或禁止。

5.列举四种绝对地址寻址。P142

数据存储器地址(dmad)寻址 程序存储器地址(pmad)寻址 端口地址(PA)寻址 *(lk)寻址 6.简述TMS320C54x DSP的总线组成和功能。P31

C54x的内部有8组16位总线:4条程序/数据总线和4条地址总线。这些总线功能: (1) 1组程序总线PB 主要用来传送取自程序存储器的指令代码和立即操作数。 (2) 3组数据总线CB、DB、EB

CB和DB用来传送从数据存储器读出的数据; EB用来传送写入存储器的数据。

(3) 4组地址总线PAB、CAB、DAB、EAB 用来提供执行指令所需的地址。 7.简述TMS320C54x DSP的乘法器的输入数据来源。P51 输入端XM数据来自: T寄存器

累加器A的位32-16

DB总线传送过来的数据存储器操作数 输入端YM的数据来自: 累加器A的位32-16

由DB总线和CB总线传送过来的数据存储器操作数 由PB总线传送过来的程序存储器操作数 9.简述TMS320C54x指令系统的特点。

10.列举出TMS320C54x的7种基本的数据寻址方式。P141

立即寻址、绝对寻址、累加器寻址 、直接寻址、间接寻址、存储器映像寄存器寻址、 堆栈寻址 五、程序阅读题

1.请说明下面语句执行后,A,T,FRCT、AR5、数据存储器中0100h的数据。

MAC *AR5, A

指令执行前 执行后

A 00 0000 1000 00 0048 E000

T 0400 0400 FRCT 0 0 AR5 0100 0100 数据存储器

0100h 1234 1234

2.阅读下面的程序段,说明每一条语句的功能,以及整个程序段的功能。 .bss x, 8 为数组x分配8个存储单元 STM #x, AR1 将目的地首地址赋给AR1

RPTZ A, #7 执行一次下一条指令在循环执行7次并对ACC清0 STL A, *AR1+ 把累加器的低端存放到数据存储器中 整个程序段的功能是对数组进行初始化,使x[8]={0,0,0,0,0,0,0,0}

3.阅读下面的程序段,利用长字指令来完成下面程序段的功能,并说明整个程序段完成什么功能。P241

LD @xhi,16,A ADDS @xlo,A ADD @yhi,16,A ADDS @ylo,A STH A,@zhi

STL A,@zlo

答案:DLD @xhi,A

DADD @yhi,A DST A,@zhi

整个程序段完成: Z(32)=X(32)+Y(32) 4. 阅读下面的程序段,说明每一条语句的功能。

STM #88H,AR0 ;将操作数88H装入AR0

LD #1000H,A ;将操作数1000H装入ACC

zhong: SUB AR0,A ;ACC中的值减去AR0中的值,结果存入A

BC zhong,AGT,AOV;若累加器A>0且溢出,则转至zhong,否则往下执行

5. 阅读下面的程序段,说明每一条语句的功能。

STM #123H,AR0 ;将操作数123H装入入AR0

LD #456H,AR1 ;将操作数456H装入ACC CALL new ; 调子程序new

LD AR1,16,A ;将AR1的内容左移16位后装入A new:MPY AR0,AR1,A ;AR0 与AR1的内容相乘,结果存入A中 RET ;子程序返回

6.请说明下面语句执行后,A,C,AR1、SXM、数据存储器中0100h的数据。

SUB *AR1+, 14, A

指令执行前 指令执行后

A 00 0000 1200 FF FAC0 1200 C X 0 AR1 0100 0101 SXM 1 1 数据存储器

0100h 1500 1500 7.阅读下面的程序段,说明每一条语句的功能,以及整个程序段的功能。

rsbx

FRCT ;清楚FRCT标志,表明以下是做整数乘法。

ld temp1, T ;将变量temp1装入T寄存器。

mpy temp2, a ;完成temp1*temp2,结果放入累加器A。 sth a, temp3 ;结果的高16位存入temp3

stl a, temp4 ;结果的低16位存入temp4.

整个程序段的功能是计算temp1×temp2,32位的结果分别存入temp3和temp4. 8.阅读下面的程序段,说明语句1、2和3的功能,以及整个程序段的功能。

.mmregs .global start .data dst .space 18*16 len .word 18

.text

src .string \"this is the source\" .start

stm #dst, ar1 ; 语句1 将dst的地址存入ar1

stm #len, ar2

rpt *(ar2) ; 语句2 循环执行*(ar2)次指令mvpd src, *ar1+ mvpd src, *ar1+

b $ ; 语句3 原地执行

.end

整个程序的功能是将源数据存储区(src)的字符串复制到目的的数据存储区(dst). 9. 阅读下面的程序段,说明每一条语句的功能,以及整个程序段的功能。

SUM3: LD @x1,T ; T=x1 MPY @a1, B ; B=x1×a1 LD @x2, T ; T=x2 MAC @a2, B ; B=x2×a2

STL B,@y ;计算结果的低字BL存入y中 STH B,@y+1 ;计算结果的高字BH存入y+1中 整个程序段的功能是计算y=x1×a1+x2×a2

10. 请说明下面语句执行后,累加器A,寄存器T,FRCT、DP、数据存储器中040Dh的数据。

MPY 0Dh, A

指令执行前 指令执行后

A 00 0000 A039

T 50 50 FRCT 1 1 DP 008 008

数据存储器

040Dh 4000 4000

六、编程题

1、求4项乘积aixi(i=1,2,3,4)中的最大值,并存放累加器A中。P224 .mmregs

STACK .usect “STACK “,10h .bss a,4 .bss x,4 .bss y,1 .def start .data

table: .word 1,2,3,4 .word 8,6,4,2 .text

start: STM #0,SWWSR

STM #STACK+10h,SP STM #a,AR1 RPT #7

MVPD table,*AR1+

CALL SUM end: B end SUM: STM #a,AR3 STM #x,AR4 RPTZ A,#3

MAC *AR3+,*AR4+,A STL A,@y RET .end 2、编制求解yax的程序。 P235

iii125 .mmregs

STACK .usect “STACK “,30h .bss a,25 .bss x,25 .bss y,2 .def start .data

table: .word 1,2,3,4,5,6,7,8,9,10

.word 11,12,13,14,15,16,17,18,19,20 .word 21,22,23,24,25,26,27,8,29,30 .word 1,2,3,4,5,6,7,8,9,10

.word 11,12,13,14,15,16,17,18,19,20 .text

start: SSBX FRCT STM #a,AR1 RPT #49

MVPD table,*AR1+ LD #0,B STM #a,AR2 STM #x,AR3 RPTZ A,#24

MAC *AR2+,*AR3+,A STL A,@y STH A,@y+1 .end

七、作图题

1、扩展程序存储器 p123

2、’C54x与A/D转换器的接口 p126 3、’C54x与D/A转换器的接口 八、程序设计题

对y(n)bix(ni),

i07p273例子

1、利用线性缓冲区法和循环缓冲区法设计一个FIR滤波器,其中滤波系数为b0=0.1,b1=0.2,b2=-0.4,b3=0.3,b4=-0.4,b5=0.2,b6=0.1;(8分) 线性缓冲区法:

.title “FIR1.Asm

.mmregs

.def start

x “x”,7 PA0 .set 0 PA1 .set 1 .data

COEF: .word 1*32768/10 ;b0=0.1

.word 2*32768/10 ;b1=0.2 .word -4*32768/10 ;b2=0.4 .word 3*32768/10 ;b3=0.3 .word -4*32768/10 ;b4=0.4 .word 2*32768/10 ;b5=0.2 .word 1*32768/10 ;b6=0.1 .text

Start: SSBX FRCT

STM #x+7,AR2

STM #6,AR0 LD #x+1,DP

PORTR PA1,@x+1

FIR: RPTZ A,#6

MACD *AR2-,COEF,A

STH A,*AR2 ; 保存滤波器输出结果 PORTW *AR2+,PA0 ;将滤波器的输出从端口送出去 BD FIR1 PORTR PA1,*AR2+0

循环缓冲区法:

.title “FIR2.ASM” .mmregs .def start

.bss y,1

xn .usect “xn”,7

b0 .usect “b0”,7 PA0 .set 0 PA1 .set 1

.data

table: .word 1*32768/10 ;b0=0.1

.word 2*32768/10 ;b1=0.2 .word 3*32768/10 ;b2=0.3 .word 4*32768/10 ;b3=0.4 .word 5*32768/10 ;b4=0.5

.word 6*32768/10 ;b5=0.6 .word 7*32768/10 ;b6=0.7

.text

start: SSBX FRCT

STM #b0,AR1 RPT #6

MVKD table,*AR1+ STM #xn+6,AR2

STM #b0+6,AR3 ;AR3指向系数a6

STM #7,BK ;缓冲区长度为7

STM #-1,AR0 ;AR0 = -1 LD #xn,DP

PORTR PA1, @xn ; 从端口PA1读入采样值

FIR: RPTZ A, #6

MAC *AR2+0%,*AR3+0% STH A,@y PORTW @y,PA0 BD FIR2

PORTR PA1,*AR2+0%

.END

2、编写连接命令文件FIR.CMD。(4分)

程序存储器:4K字ROM,起始地址为C00h,取名为EPROM。 数据存储器:32字RAM,起始地址为60h,取名为SPRAM。 4992字RAM,起始地址为80h,取名为DARAM MEMORY

{ PAGE 0: EPROM: origin = c00H, length = 1000H PAGE 1: SPRAM : origin = 60H, length = 20H DARAM: origin = 80H, length = 1380H }

SECTIONS

{ .text: > EPROM PAGE 0 .data: > EPROM PAGE 0

.bss: > SPRAM PAGE 1

STACK: > DARAM PAGE 1 }

因篇幅问题不能全部显示,请点此查看更多更全内容