DSP测试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、什么是哈佛结构和冯·诺伊曼(Von Neuman)结构?它们有什么区别?
答:(1) 冯·诺伊曼(Von Neuman)结构
该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
(2)哈佛(Harvard)结构
该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
两者区别:
哈佛(Harvard)结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
冯·诺伊曼(Von Neuman)结构:当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
2、TMS320VC5416-160的指令周期是多少毫秒?它的运算速度是多少MIPS?
答:TMS320VC5416-160的指令周期16ns,它的运算速度是160MIPS。
3、TMS320C54x芯片的流水线操作共有多少个操作阶段?每个阶段执行什么任务?完成一条指令都需
要哪些操作周期?
答:(1)六个操作阶段。
(2)各个阶段执行的任务:
①预取指P:将PC中的内容加载到PAB
②取指F:将读取到的指令字加载到PB
③译码D:将PB的内容加载IR,对IR的内容译码
④寻址A:CPU将数据1或数据2的读地址或同时将两个读地址分别加载到数据地址总线DAB
和CAB中,并对辅助寄存器或堆栈指针进行修正。
⑤读数R:将读出的数据1和数据2分别加载到数据总线DB和CB中。
若是并行操作指令,
可同时将数据3的写地址加载到数据地址总线EAB中。
⑥执行X:执行指令,写数据加载EB。
(3)完成一条指令需要的周期:
需要:预取指周期、取指周期、译码周期、寻址周期和读数周期。
4、TMS320VC5402 共有多少可屏蔽中断?它们分别是什么?NMI和RS属于哪一类中断源?
答:(1)TMS320VC5402 有13 个可屏蔽中断。
(2)TMS320VC5402 有的13 个可屏蔽中断分别是:(课本56页最下面)
(3)RS 和NMI属于外部硬件中断。
5、试分析下列程序的流水线冲突,画出流水线操作图。
如何解决流水冲突?
STLM A,AR0
STM #10,AR1
LD *AR1,B
答:流水线图如下图:
解决流水线冲突:最后一条指令(LD *AR1,B)将会产生流水线冲突,在它前面加入一条NOP 指令可以解决流水线冲突。
6、已知(1030H)=0050H,AR2=1040H,AR3=1060H,AR4=1080H。
MVKD 1030H,*AR2
MVDD *AR2,*AR3
MVDM 1060H, AR4
运行以上程序后,(1030H)、(1040H)、*AR3和AR4的值分别等于多少?
答:(1030H)=0050H,(1040H)=0050H,*AR3=0050H,AR4=0050H
7、已知,(1080H)=0020H、(1081H)=0030H。
STM #1080H,AR0
STM #1081H,AR1
LD *AR0,16,B
ADD *AR1,B
运行以上程序,B等于多少?
答:(B)=0020 0030H
8、试阅读以下程序,分别写出运行结果。
(1).bss x,4
.data
table:.word 4,8,16,32
……
STM #x,AR1
RPT #2
MVPD table,*AR1+
答:数据表table中的常量4传送到以变量x 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2 的地址为地址的存储单元中。
(2).bss x,4
.data
table: .word 4,8,16,32
……
STM #x,AR1
RPT #2
MVPD table,*+AR2
答:数据表table中的常量4传送到以变量x 的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1 的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2 的地址为地址的存储单元中。
9、NOP指令不执行任何操作,它有什么作用?
答:延时几个周期,避免流水线冲突;需要精确延时程序时,可能也会用到NOP指令。
10.说明.text段、.data段和.bss段分别包含什么内容?
答:.text 段(文本段),通常包含可执行代码;
.data 段(数据段),通常包含初始化数据;
.bss 段(保留空间段),通常为未初始化变量保留存储空间。
11.链接器能完成什么工作?链接器命令文件中,MEMORY 命令和SECTIONS 命令的任务是什么? 答:链接器将各个目标文件合并起来,并完成如下工作:
(1)将各个段配置到目标系统的存储器。
(2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。
(3)解决输入文件之间的未定义的外部引用。
MEMORY命令的作用:
MEMORY命令用来建立DSP应用系统中的存储器模型。
通过这条命令,可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范围。
SECTION命令的作用:
说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输出段在存储器中的存储位置;
允许重新命名输出段。
12.在堆栈操作中,PC当前地址为4020H,SP当前的地址为0013H,运行PSHM AR7后,PC和SP
的值分别为多少?
答:PC=4021H;SP=0012H
13.试写出以下两条指令的运行结果:
①EXP A
A=FFFD876624 T=0000
则以上指令执行后,B、T的值各是多少?
答:A=0xFFFD876624;T=5
②NORM B
B=420D0D0D0D, T=FFF9
则以上指令执行后,B、T的值各是多少?
答:B=0x841A1A1A, T=FFF9
14.阅读以下程序,写出运行结果。
.bss y, 5
table .word 1,2,3,4,5
STM #y, AR2
RPT #5
MVPD table,*AR2+
LD #0,B
LD #81h, AR5
STM #0,A
STM #4, BRC
STM #y, AR5
RPTB sub-1
ADD *ARM5,B,A
STL A,*AR5+
sub: LD #0,B
运行以上程序后,(81H),(82H),(83H),(84H)和(85H)的值分别是多少?
答:(81H)=#1,(82H)=#2,(83H)=#3,(84H)=#4,(85H)=#5 。
15.FIR滤波器的算法为y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4),试用线性缓冲区和直接寻址
的方法实现。
答:.title “FIR1.ASM”
.mmregs
.def start
x .usect “x”,5
PA0 .set 0
PA1 .set 1
.data
COEF:.word 1*32768/10;定义a4= 0.1
.word -3*32768/10;定义a3= -0.3
.word 5*32768/10 ;定义a2=-0.5
.word -3*32768/10 ;定义a1= -0.3
.word 1*32768/10 ;定义a0=-0.1
.text
start: SSBX FRCT
STM #x+5,AR2
STM #4,AR0
LD #x+1,DP
PORTR PA1,@x+1
FIR1: RPTZ A,#4
MACD *AR2-,COEF,A
STH A,*AR2
PORTW *AR2+,PA0
BD FIR1
PORTR PA1,*AR2+0
.end
16.试用线性缓冲区和间接寻址的方法实现上题算法的FIR滤波器。
答:.title “FIR2.ASM”
.mmregs
.def start
.bss y,1
xn .usect “xn”,5
b0 .usect “a0”,5
PA0 .set 0
PA1 .set 1
.data
table: .word 1*32768/10;定义a4= 0.1
.word -3*32768/10;定义a3= -0.3
.word 5*32768/10 ;定义a2=-0.5
.word -3*32768/10 ;定义a1= -0.3
.word 1*32768/10 ;定义a0=-0.1
.text
start: SSBX FRCT
STM #a0,AR1
RPT #4
MVPD table,*AR1+
STM #xn+4,AR2
STM #b0+4,AR3
STM #5,BK
STM #-1,AR0
LD #xn,DP
PORTR PA1,@xn
FIR2: RPTZ A,#4
MAC *AR2+0%,*AR3+0%,A
STH A,@y
PORTW @y,PA0
BD FIR2
PORTR PA1,*AR2+0%
.end
17.试分别说明下列有关定时器初始化和开放定时中断语句的功能:
①STM #0080H,IFR
答:清除定时器中断1标志位
②STM #0080H,IMR
答:允许定时器T1或DMAC1中断(使用哪一种中断由DMA通道优先级和使能控制寄存器DMPREC 控制。
在复位以后,中断被配置为定时器T1中断)。
③RSBX INTM
答:使能所有可屏蔽中断。
④STM #0279H,TCR
答:设置定标计数器的值PSC为9;定时器分频系数为9;以PRD中的值加载TIM,以TDDR中的值加载PSC;定时器停止工作。
18.假设时钟频率为40MHZ,试编写在XF端输出一个周期为2ms的方波的程序。
答:(定时半周期=CLKOUT*(TDDR+1)*(PRD+1);
1/2T=(1/40M)*(9+1)*(3999+1)=1ms)
;abc1.asm
;定时器0寄存器地址
TIM0 .set 0024H
PRD0 .set 0025H
TCR0 .set 0026H
;K_TCR0:设置定时器控制寄存器的内容
K_TCR0_SOFT .set 0b ;Soft=0
K_TCR0_FREE .set 0b ;Free=0
K_TCR0_PSC .set 1001b ;PSC=9H
K_TCR0_TRB .set 1b ;TRB=1
K_TCR0_TSS .set 0b ;TSS=0
K_TCR0_TDDR .set 1001b ;TDDR=9
K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR
;初始化定时器0
;Tt=25*(9+1)*(3999+1)=1000000(ns)=1(ms)
STM #3999,TIM0
STM #3999,PRD0
STM #K_TCR0,TCR0 ;启动定时器0中断
RET
;定时器0的中断服务子程序:通过引脚XF给出
t0_flag .usect “vars”,1 ;若t0_flag=1则XF=1,若t0_flag=0则XF=0 time0_rev: PSHM TRN
PSHM T
PSHM ST0
PSHM ST1
BITF t0_flag,#1
BC xf_out,NTC
SSBX XF
ST #0,t0_flag
B next
xf_out: RSBX XF
ST #1,t0_flag
next: POPM ST1
POPM ST0
POPM T
POPM TRN
RETE
19.试分别说明下列语句的功能:
①STM #SPCR10,SPSA0
STM #0001H,BSP0
答:对串口控制寄存器SPCR10赋值。
不使用数字循环返回模式,接收数据DRR[1,2]采用右对齐方式,连续时钟方式,DX使能判断,接收中断由RRDY产生,接收移位寄存器未超载,串口接收器准备好,使能串口接收器。
②STM #SPCR20,SPSA0
STM #0081H,BSP0
答:对串口控制寄存器SPCR20赋值。
串口使用软件模式,帧同步逻辑、采样率发生器复位,由发送准备好XRDY驱动发送中断;发送移位寄存器为空,发送器未准备好,使能串口发送器。
③STM #SPCR20,SPSA0
ORM #01000001B,BSP0
答:修改串口控制寄存器SPCR20的值。
由采样率发生器产生帧同步信号,使能串口发送器。
20.已知中断向量TINT=013H,中断向量地址指针IPTR=0111H,求中断向量地址。
答:中断向量地址=(100010001B)<<9+(10011)<<2=88CCH。
21.将TMS320VC5402芯片从2分频方式切换到4分频方式试编写程序。
答:(2分频与4分频之间也不能直接切换,要先把2分频切换到倍频方式(PLL方式),然后再切换到4分频。
)
STM #F007H,CLKMD ;切换到PLL*1方式
Status:LDM CLKMD,A ;测试PLLSTATUS位
XOR #F007H,A ;异或-->相同为0,不同为1
BC Status,ANEQ ;若A≠0,则转移,表明还没有切换到PLL方式
;若A=0,则顺序执行,已切换到PLL方式
STM #F000H,CLKMD ;切换到4分频方式
22.Intel128F400B3是一种64K*16位的Flash存储器,其控制逻辑信号如图表8.1,试将该存储器作为
DSP的外部数据存储器进行扩展。
若要将该芯片进行程序存储器扩展,该如何连接?
题表8.1 Intel128F400B3的控制逻辑信号
引脚功能引脚功能
—CE 片选
—
RP
复位
—OE 输出使能
—
WP
写保护
—
WE
写控制Vpp 电源答:
编者:这些题都是个人根据课本和一些资料自己弄的,一些错误是避免不了的,仅供参考,欢迎各位大神找出错误给予改正!。