资源描述
一.填空题(本题总分12分,每空1分)
1.累加器A分为三个部分,分别为 AG ; AH ; AL 。
2.TMS320VC5402型DSP的内部采用 8 条 16 位的多总线结构。
3.TMS320VC5402型DSP采用 哈佛 总线结构对程序存储器和数据存储器进行控制。
4.TMS329VC5402型DSP有 8 个辅助工作寄存器。
5.DSP处理器TMS320VC5402中DARAM的容量是 16K 字。
6.TI公司的DSP处理器TMS320VC5402PGE100有 2 个定时器。
7.在链接器命令文件中,PAGE 1通常指 数据 存储空间。
8.C54x的中断系统的中断源分为 硬件 中断和 软件 中断。
9. TI公司DSP处理器的软件开发环境是 CCS(Code Composer Studio)
10. DSP处理器TMS320VC5402外部有 20 根地址线。
11. 直接寻址中从页指针的位置可以偏移寻址 128 个单元。
12. 在链接器命令文件中,PAGE 0通常指 程序 存储空间。
13. C54x系列DSP处理器中,实现时钟频率倍频或分频的部件是 锁相环PLL
14. TMS320C54x系列DSP处理器上电复位后,程序从指定存储地址 FF80h 单元开始工作。
15. TMS320C54x系列DSP处理器有 2 个通用I/O引脚,分别是 BIO和XF
16. DSP处理器按数据格式分为两类,分别是 定点DSP 和 浮点DSP
17. TMS329VC5402型DSP的ST1寄存器中,INTM位的功能是 开放/关闭所有可屏蔽中断
18. TMS320C54X DSP主机接口HPI是 8 位并行口。
19. 在C54X系列中,按流水线工作方式,分支转移指令的分为哪两种类型: 无延迟分支转移;延迟分支转移
20. C54x的程序中,“.bss”段主要用于 为变量保留存储空间
21. 从数据总线的宽度来说,TMS320VC5402PGE100是 16 位的DSP处理器。
22. TMS320VC5402型DSP处理器的内核供电电压 1.8 伏。
23. TMS320C5402系列DSP处理器最大的数据存储空间为 64k 字。
24. 在链接器命令文件中,PAGE 0通常指 程序 存储空间。
25. DSP技术是利用专用或通用数字信号处理芯片,通过 数值 运算的方法对信号进行处理。
26. C54x的程序中,“.text”段是 文本 段,主要包含 可执行文本
27. C54x系列DSP上电复位后的工作频率是由片外3个管脚 CLKMD1 ; CLKMD2 ; CLKMD3 来决定的。
28. DSP处理器TMS320C5402最大的程序存储空间为 1M 字。
29. 从应用领域来说,MCU(单片机)主要用于 控制领域 ;DSP处理器主要应用于 信号处理
30. TMS320C54X DSP提供一个用16位堆栈指针(SP)寻址的软件堆栈。当向堆栈中压入数据时,堆栈是从 高 地址向 低 地址方向填入。
31. TMS320C54X DSP软硬件复位时,复位中断向量的地址为程序空间的 FF80H
32. 4.TMS320C54X可编程定时器的定时周期 =(时钟周期)*(分频系数TDDR+1)*( PRD +1)。
33. 5.DSP处理器的英文全称 Digital Signal Processor
34. DSP处理器TMS320VC5402的IO管脚供电电压 3.3 伏。
35. C54x的程序中,“.data”段是 数据 段,主要用于 通常包含初始化数据
36. DSP处理器TMS320C5402的I/O空间为 64k 字。
37. TMS320VC5402型DSP的累加器是 40 位。
38. TMS329VC5402型DSP的MP/MC管脚的功能是 微计算机或是微处理器工作模式 。
39. TMS320VC5402型DSP的CPU采用 桶形移位寄存器 作为专用硬件实现移位功能。
40. 汇编语句“STL A,@y”中“@y”表示 直接 寻址方式。
41. TMS320VC5402型DSP的ST1寄存器中,CPL位的功能是指示 直接寻址采用何种指针
42. 解释汇编语句“READA *AR1”的功能:以累加器A的内容作为地址读取程序存储单元,将读取的数据存入以ARI的内容作为地址的数据存储单元中
43. TMS320C54X具有两个通用I/O口, BIO 用于输入外设的状态; XF 用于输出外设的控制信号。
三.程序阅读题(本题总分30分,每小题10分)
1. 阅读下面的程序,回答问题。
.bss x, 8
LD #0001H,16,B
STM #7,BRC
STM #x,AR4
RPTB next-1
ADD *AR4,16,B,A
STH A,*AR4+
next: LD #0,B
问题:(1)寄存器“BRC”的功能是什么? 答:功能是暂存块循环的次数
(2)汇编语句“ADD *AR4,16,B,A”执行了多少次? 答:8次
(3)执行语句“LD #0001H,16,B”后,累加器B的内容是多少?答: B=0x0100H
2. 阅读下面的程序:
.mmregs
DAT0 .SET 60H
DAT1 .SET 61H
DAT2 .SET 62H
DAT3 .SET 63H
add3 .macro P1,P2,P3,ADDRP
LD P1,A
ADD P2,A
ADD P3,A
STL A,ADDRP
.endm
ST #0034h,DAT0
ST #0243h,DAT1
ST #1230h,DAT2
ADD3 DAT0,DAT1,DAT2,DAT3
问题:(1)语句“.mmregs”的含义。
答:定义存储器映像寄存器的符号名称
(2)语句“ADD3 DAT0,DAT1,DAT2,DAT3”是一条什么类型的语句?作用是什么?
答:类型:宏调用 作用:执行三个数相加
(3)执行此段程序后,存储单元(DAT3)的运行结果多少?
答:14a7H
3. 阅读下面的程序片断,写出运行结果
.mmregs
DAT0 .SET 60H
LD #004h,DP
ST #0345h,DAT0
STM #0002h,T
MPY DAT0,A
NOP
问题:(1)寄存器T的作用是什么?
答:作用是暂存被乘数
(2)执行“MPY DAT0,A”后,累加器A的内容是什么?
答:0x68A或68Ah
4. 阅读程序,回答后面的问题
STM #6,AR4
begin: STM #9,BRC
RPTB next-1
nop
next: LD #0,B
banz begin,*AR4-
问题:(1) BRC寄存器是做什么用途?
答:保存RPTB指令的循环次数
(2)语句“banz begin,*AR4-”的作用是什么?
答:判断AR4的内容是否为零,若不为零,跳转到标号begin
(3)其中的“nop”语句被执行了多少次?
答:70次
5. 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=111,外部晶振=10MHz,参数设置表:
CLKMD1
CLKMD2
CLKMD3
CLKMD复位值
时钟方式
0
0
0
E007H
PLL×15
0
0
1
9007H
PLL×10
0
1
0
4007H
PLL×5
1
0
0
1007H
PLL×2
1
1
0
F007H
PLL×1
1
1
1
0000H
2分频
1
0
1
F000H
4分频
STM #00H,CLKMD
Status:LDM CLKMD,A
AND #01H,A
BC Status,ANEQ
STM #9007H,CLKMD
问题(1)DSP复位后,DSP的工作时钟是多少? 答:5MHz
(2)执行上面的程序片段后,DSP的工作时钟是多少? 答:100MHz
6. 阅读下面的程序片断,写出运行结果
.mmregs
bei_hua .set 18
LD # bei_hua,A
问题:(1)“.mmregs”的作用是什么?
答:定义存储器映像寄存器的符号名称
(2) 运行此段程序后,累加器A的结果是多少?
答:18
7. 阅读下面的程序,回答问题。
.sect ".vectors"
rst: B _c_int00 ;复位中断向量的入口
NOP
NOP
.space 18*4*16
tint: B timeout ;定时器0的中断向量的入口
NOP
NOP
问: (1) “.sect”伪指令的作用是什么?
答:定义一个自定义段名的程序段
(2) 标号“rst”的地址为6000H,请问标号“tint”的地址是多少?
答:604Ch
8. 阅读下面的命令连接文件(简称CMD文件)和程序文件:
CMD文件:
MEMORY
{ PAGE 0: PROG: origin = 0x1000, length = 0x1000
PAGE 1: DATA: origin = 0x2000, length = 0x1000
}
SECTIONS
{ .text: {} > PROG PAGE 0
.data: {} > DATA PAGE 1
}
.data
table: .word 1,2,3,4 ; 变量初始化
.text
start: STM # 0,SWWSR ; 插入0个等待状态
问:(1)MEMORY和SECTIONS的作用各是什么?
答:链接伪指令,用来指定目标存储器结构和地址分配
(2)标号“table”和“start”的地址分别是什么,分别位于程序空间还是数据空间?
答:标号“table”:1000h(程序空间)
标号”start”:2000h(数据空间)
9. 阅读下面的程序片断,回答下面的问题
DAT0 .SET 60H
DAT1 .SET 61H
DAT2 .SET 62H
DAT3 .SET 63H
LD #004h,DP
ST #83h,DAT0
ST #0041h,DAT1
RSBX SXM
LD DAT0,A
RPT #15
SUBC DAT1,A
STL A,DAT2
STH A,DAT3
问:在CPL=0的情况下,
(1) 语句“STL A,DAT2”,其中DAT2所指的地址是多少?
答:0262h
(2) 存储单元(DAT2)和(DAT3)的内容是多少?
答:(DAT2)=02H (DAT3)=01H
10. 阅读下面的程序,回答问题。
MEMORY
{ PAGE 0: PROG: origin = 0x2000, length = 0x1000
PAGE 1: DATA: origin = 0x3000, length = 0x1000
}
SECTIONS
{ .text: {} > PROG PAGE 0
.bss: {} > DATA PAGE 1
}
汇编程序:
.bss a,4
.bss x,4
.bss y,1
STM #a, AR3
STM #x, AR4
RPTZ A, #3
MAC *AR3+,*AR4+,A
STL A,*(y)
问题:(1)指令“STM #a, AR3”的作用是什么?执行此句指令后,寄存器AR3的内容是多少?
答:将标号a的地址赋给辅助工具寄存器AR3, AR3=3000h
(2)指令“MAC *AR3+,*AR4+,A”执行了几次?每执行一次寄存器AR3和AR4的内容如何变化?
答:执行了4次,每执行一次,辅助功能寄存器AR3和AR4内容增一
(3)这段代码的功能是什么?
答: y=a1x1+a2x2+a3x3+a4x4
11. 阅读下面的程序,回答问题。
MEMORY
{ PAGE 0: PROG: origin = 0x2000, length = 0x1000
PAGE 1: DATA: origin = 0x4000, length = 0x1000
}
SECTIONS
{ .text: {} > PROG PAGE 0
STACK: {} > DATA PAGE 1
}
汇编程序
size .set 0x0120
stack .usect “STACK”,size
.text
STM # stack + size,SP
问题:(1)指令“stack .usect “STACK”,size”的作用是什么?
答:定义一个未初始化段,段名为”STACK”,目的是为变量stack保留size个存储空间
(2)标号“stack”的存储器地址是多少?
答:0x4000
(3)执行这段代码之后,SP寄存器的内容是多少?
答:SP=0x4120
12. 阅读下面的程序,回答问题。
MEMORY
{PAGE 0: PROM: org=0E000h,len=100h
VECS: org=0FF80h,len=04h
PAGE 1: SPRAM: org=0060h,len=20h
DARAM: org=0080h,len=100h
}
SECTIONS
{ .text :>EPROM PAGE 0
.data :>EPROM PAGE 0
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
vectors :>VECS PAGE 0
}
问题:(1)该文件是如何配置程序空间和数据空间的?
(2)该文件中出现了几个段?哪些是初始化段?哪些是未初始化段?各段是如何分配的?
答:出现了5个段, text ,data 和vectors是初始化段,bbs和STACK段是未初始化段
13. 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=101,外部晶振=10MHz,参数设置表:
CLKMD1
CLKMD2
CLKMD3
CLKMD复位值
时钟方式
0
0
0
E007H
PLL×15
0
0
1
9007H
PLL×10
0
1
0
4007H
PLL×5
1
0
0
1007H
PLL×2
1
1
0
F007H
PLL×1
1
1
1
0000H
2分频
1
0
1
F000H
4分频
STM #00H,CLKMD
Status:LDM CLKMD,A
AND #01H,A
BC Status,ANEQ
STM #9087H,CLKMD
问题:(1)DSP复位后,DSP的工作时钟是多少? 答:2.5MHz
(2)执行上面的程序片段后,DSP的工作时钟是多少?答:100MHz
14. 阅读程序,回答后面的问题
STM #9,AR4
begin: STM #7,BRC
RPTB next-1
nop
next: LD #0,B
banz begin,*AR4-
问(1)BRC寄存器是做什么用途? 答:保存RPTB指令的循环次数
(2)其中的“nop”语句被执行了多少次? 答:80次
15. 阅读下面的程序,回答问题。
MEMORY
{ PAGE 0: PROG: origin = 0x2000, length = 0x1000
PAGE 1: DATA: origin = 0x3100, length = 0x1000
}
SECTIONS
{ .text: {} > PROG PAGE 0
.bss: {} > DATA PAGE 1
}
汇编程序:
.bss x,16
.bss y,16
.text
STM #x,AR2
STM #y,AR3
RPT #15
MVDD AR2+,*AR3+
问题:(1)变量“x”的存储器地址是多少?位于哪个存储空间(程序还是数据存储空间)。
答:0x3100 ,位于数据存储空间
(2)语句“STM #x,AR2”的作用是什么?执行此句指令后,寄存器AR2的内容是多少?
答:将”x”的地址赋给辅助工具寄存器AR2 , AR2=3100h
(3)语句“MVDD AR2+,*AR3+”的执行了多少次?每执行一次寄存器AR2和AR3的内容如何变化?
答:执行了16次。每执行一次,辅助功能寄存器AR2和AR3内容增一
(4)此段代码的功能是多少?
答:将数组变量”x”的数据传送到数组变量“y”中
16. 阅读下面的程序,回答后面的问题
.bss x,10
.bss y,1
STM #x,AR1
STM #9,AR2
LD #0,A
loop: ADD *AR1+,A
BANZ loop,*AR2-
STL A, * (y)
问:(1) 解释语句“.bss x,10”的含义。
答: 给x保留10个空间
(2) 解释语句“STL A, * (y)”的含义。
答: 将累加器A的低16位数据存储到变量y中
(3)这一段程序实现什么功能?
答:y=x1+x2+x3+…...+x10
17. 已知DSP的三个时钟引脚状态CLKMD1-CLKMD3=110,外部晶振=10MHz,参数设置表:
CLKMD1
CLKMD2
CLKMD3
CLKMD复位值
时钟方式
0
0
0
E007H
PLL×15
0
0
1
9007H
PLL×10
0
1
0
4007H
PLL×5
1
0
0
1007H
PLL×2
1
1
0
F007H
PLL×1
1
1
1
0000H
2分频
1
0
1
F000H
4分频
STM #00H,CLKMD
Status: LDM CLKMD,A
AND #01H,A
BC Status,ANEQ
STM #4087H,CLKMD
问题:(1)DSP复位后,DSP的工作时钟是多少? 答:10MHz
(2)执行上面的程序片段后,DSP的工作时钟是多少? 答:50MHz
15
展开阅读全文