DSP原理及应用答案精.docx
《DSP原理及应用答案精.docx》由会员分享,可在线阅读,更多相关《DSP原理及应用答案精.docx(10页珍藏版)》请在冰豆网上搜索。
DSP原理及应用答案精
广东白云学院2013—2014学年第二学期期末考试《DSP原理及应用》(A卷)参考答案及评分标准
适用专业及方向:
电子信息工程、通信工程
层次:
本科年级:
11级限时:
120分钟考试形式:
闭卷考场要求:
笔试
分)1、DSP定点数值为0x6000,若它是Q15(或S0.15)定标的有符号小数,它的数值是(0.75);若是Q0(或S15.0)格式有符号整数,则它的数值是(24576)。
2、'C54x芯片分成(3)个相互独立的可选择的存储空间,其中程序存储器空间在不扩展的情况下可寻址(64K)字。
3、与单片机相比,DSP采用了改进型(哈佛)结构和流水线/或并行技术,多了硬件乘加器,是(运算密集)型处理器,运算速度和(精度)高。
4、’DSP在CPL=0时,操作数@y的实际地址是将(DP)寄存器的内容作为地址的高(9)位,再加上y提供的低(7)位偏移地址。
5、COFF文件的基本单元是(段)。
它是就是最终在存储器映象中占据连续空间的一个数据或代码块。
6、AR1=1001H时,执行DSTA,*AR1指令后,AH内容存入地址(1001H)的单元,AL存入地址(1000H)的单元。
7、指令ADD#4567H,8,A,B执行前A=00001234H,B=00001100H,执行后A和B
的值分别为(00001234H)、(00457934H)。
第1页共12页
8、'C54x芯片的中断系统可分为硬件中断和(软件中断),还可以分为可屏蔽中断和(非屏蔽中断)。
9、'C54x芯片的硬件复位地址为(FF80H),INT0的中断序号为16,IPTR=1FFH时其中断向量地址为(FFC0H)。
10.在’C54xDSP寻址和指令系统中,操作数Xmem和Ymem表示(数据存储器双寻址数据),Lmem表示(长字寻址的32位数据存储器数据)。
二、判断题(正确的在括号内画√,错误的在括号内画×。
每空1分,共10分)
(√)1、解决流水线冲突的办法之一就是中间插入若干条NOP指令。
(√)2、链接器可以将自定义未初始化段自动地定位到数据存储器。
(√)3、'C54x有6级流水线,包含预取指、取指、译码、寻址、读数和执行。
(×)4、'C54x数据空间可进行页扩展,每页空间是64K字。
(√)5、DSP采用了改进型哈佛结构和流水线技术
(√)6、FRCT=1,可保证Q15×Q15小数乘法结果仍为Q15。
(×)7、SXM=0时数据进入ALU或移位器之前会进行符号扩展。
(√)8、INTM=0允许全局中断。
(√)9、'C54x的IO管脚供电电压为3.3伏。
(×)10、C5000(C54x、C55x)系列主要用于数字控制系统。
编写程序,计算y=∑aixi
i=15。
其中a1=0.1,a2=0.2,a3=-0.4,a4=0.4,a5=0.51,
x1=0.7,x2=0.6,x3=-0.7,x4=-0.8,x5=-0.91
评分标准:
伪指令无误得5分,代码段无误得5分
答案:
第2页共12页
.title"mac.asm"
.mmregs
.bssa,5;.bssx,5;.bssy,1;.globalstart.data;
table:
.word1*32768/10;.word2*32768/10.word-4*32768/10.word4*32768/10.word51*32768/100.word7*32768/10;.word6*32768/10.word-7*32768/10.word-8*32768/10.word-91*32768/100.text;start:
SSBXFRCT;RSBXCPL;STM#a,AR1;RPT#9;MVPDtable,*AR1+;
第3页共12页
STM#x,AR2;
STM#a,AR3;
RPTZA,#4;
MAC*AR2+,*AR3+,A;
LD#y,DP
STHA,@y;
end:
Bend;
.end
三、回答问题(每题4分,共24分)
1、DSP的主要技术指标有哪些?
答:
精度,速度,功耗,片内资源,价格,生命周期及其开发工具等。
2、程序地址生成器PAGEN中,RC起何作用?
如何工作的?
答:
RC是重复计数器,初值决定于RPT(Z)指令的操作数,随后一条指令被重复指令,每重复执行一次RC内容减一,直至0为止。
3、举例反序寻址的表达方式及其关键符号的意义?
答:
反序寻址如*AR4+0B,它表示修改AR4时,AR4=AR4+AR0,B表示反向进位(或借位)。
4、说明FIR滤波器使用线性缓冲区时编程的方法及步骤
答:
线性缓冲区可利用.bss伪指令开辟未初始化数据段,线性数据缓冲区可采用直接寻址(如@x)或间接寻址(*AR1)的方法,
其算法是:
利用MAC指令计算输出,数据的更新法是利用移位指令(即延迟指令)如LTD指令等,进行全区数据的更新。
5、试说明浮点乘法的主要计算步骤(写出关键指令)。
第4页共12页
答:
将0.05和0.85转化成指数(EXP指令)和尾数(NORM指令),再作尾数乘(乘后需再转化成指数和尾数)和指数加。
再利用NORM指令化为定点数。
6.串口的字符组传送模式和连续传送模式的区别在哪里?
答:
前者每16位传送时,需要一个帧同步信号。
后者传输若干个16位只需要一个帧同步信号
1、阅读程序,设x1为300H地址,回答问题(10分)
.title"bitrev.asm"
.mmregs
x
y
.usect"inputx",16.usect"outputx",16.def_c_int01.data
.word1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16table:
.text
_c_int01:
STM#x,AR1
RPT#15MVPDtable,*AR1+
CALLbitrev
end:
Bend
STM#8,AR0bitrev:
STM#x,AR3
STM#y,AR4
RPT#14
第5页共12页
MVDD*AR3+0B,*AR4+
bitrevend:
RET
.end
填空回答问题(每空1分):
1)x1.usect"inputx",16一句表示为:
定义段名为(inputx)的(未初始化自定义段)段,该段长度为16个字,起始地址为(x)
2)、该程序要求X地址低(5)位必须为0,为达到这种要求必须在(*.CMD)文件中对.inputx段分配和存储器配置。
3)、假定AR3中当前值为0304h,在执行指令MVDD*AR3+0B,*AR4+后,AR3的值是
(030C)h
4)、该程序运行的结果是
Y单元的内容为:
(1)
Y+1单元的内容:
(9)
Y+2单元的内容:
(5)
5)、设FFT点数为32,则STM#8,AR0应该改成(STM#16,AR0)。
2、阅读程序填写结果。
(12分)
.title“FIR4.ASM”;
.mmregs;
.defstart;
.bssy,1;
xn.usect“xn”,5;
a0.usect“a0”,5;
PA0.set0;
PA1.set1;
.data
table:
.word2*32768/10;
第6页共12页
.word1*32768/10;
.word3*32768/10;
.word1*32768/10;
.word4*32768/10;
.text
start:
SSBXFRCT;
STM#a0,AR1;
RPT#4;
MVPDtable,*AR1+;
STM#xn+4,AR3;
STM#a0+4,AR4;
STM#5,BK;
STM#-1,AR0;
LD#xn,DP;
PORTRPA1,@xn;
FIR4:
RPTZA,#4;
MAC*AR3+0%,*AR4+0%,A;
STHA,@y;
PORTW@y,PA0;
BDFIR4;
PORTRPA1,*AR3+0%;
.end
填空及回答(每空2分)
1)、语句STM#5,BK表示的意思是:
(设置缓冲区长度为5)
2)、“xn”数据段是线性缓冲区还是循环缓冲区:
(循环缓冲区)
3)、此程序算法的表达式是(y中内容等于):
y(n)=(0.2x(n)+0.1x(n-1)+0.3x(n-2)+0.1x(n-3)+0.4x(n-4)
4):
指出以下指令中各个操作数的寻址方式
STM#a0,AR1
第7页共12页)
(#a是立即寻址,AR1是MMR寻址)LD#y,DP
(#y是立即寻址,DP是MMR寻址)
STHA,@y
(A是MMR寻址,@y是直接寻址(DM区))
4.阅读下面的程序,回答问题。
MEMORY
{PAGE0:
}
SECTIONS
{.text:
}
汇编程序
size.set0x0120
stack.usect“STACK”,size
.text
STM#stack+size,SP
问题:
(1)标号“stack”的存储器地址是多少?
(2分)
(2)执行这段代码之后,SP寄存器的内容是多少?
(2分)STACK:
{}>PROGPAGE0{}>DATAPAGE1PAGE1:
PROG:
origin=0x2000,length=0x1000DATA:
origin=0x3000,length=0x1000答:
(1)stack的存储空间为0x3000;
(2)SP=0x3120;
第8页共12页
设CLKOUT=8MHz,试阅读下列程序。
试回答,引脚XF产生什么波形的信号?
若要求方波周期改为16s,T0中断周期减小到原来一半,试说明程序的修改方法。
程序:
.title"time.asm"
.mmregs
.global_main
K_TCR0.set111001101001B
.text
_main:
nop
STM#0010H,TCR
STM#6399,TIM
STM#6399,PRD
STM#K_TCR0,TCR
STM#0008H,IFR
STM#0008H,IMR
RSBXINTM
Lop:
blop
t0_flag.usect“vars”,1
time0_rev:
PSHMST0
PSHMST1
BITFt0_flag,#1
BCxf_out,NTC
SSBXXF;XF=1
ST#0,t0_flag
Bnext
xf_out:
RSBXXF;XF=0
ST#1,t0_flag
next:
POPMST1
POPMST0
RETE
.end
另外:
在中断向量表vector文件中,在T0中断向量入口处加上如下三条指令:
IV_TINT0:
Btime0_revr
NOP
NOP
第9页共12页
答案:
引脚XF产生占空比为50%,周期为16ms的方波的程序。
原题8ms=(TDDR+1)(PRD+1)ms/8000,
(TDDR+1)(PRD+1)=64000;所以:
可以使TDDR=9,PRD=6399。
现在使PRD=3199即可
方波周期改为16s即每中断2000次修改一次XF,程序进行如下修改:
1,STM#6399,PRD改为STM#3199,PRD
2,在Lop:
blop之前加一条STM#1999,AR1
3,在time0_rev:
PSHMST0之前加两条指令
BANZOK,*AR1-
STM#1999,AR1
4,在RETE前加标号OK,即指令为OK:
RETE
第10页共12页
第11页共12页
第12页共12页