1、第 1 页 共 12 页广东白云学院 20132014 学年第 二 学期期 末 考 试 DSP 原 理 及 应 用 ( A 卷 ) 参 考 答 案 及评 分 标 准命题人签名 陈立旺系 ( 教 研 室 ) 主 任 签 名院长(部)主任签名适用专业及方向:电子信息工程、通信工程 层次: 本 科 年级: 11 级 限时: 120 分钟考试形式:闭卷 考场要求:笔试题号 总分得分一、填空题(请将正确答案填写在括号内。每空 1 分,共 20 分)得 分评卷人1、DSP 定点数值为 0x6000,若它是 Q15(或 S0.15)定标的有符号小数,它的数值是( 0.75 ) ;若是 Q0(或 S15.0)
2、格式有符号整数,则它的数值是( 24576 ) 。2、C54x芯片分成( 3 )个相互独立的可选择的存储空间,其中程序存储器空间在不扩展的情况下可寻址( 64K )字。3、与单片机相比,DSP 采用了改进型(哈佛 )结构和流水线/或并行技术,多了硬件乘加器,是( 运算密集 )型处理器,运算速度和( 精度 )高。4、 DSP 在 CPL=0 时,操作数y 的实际地址是将( DP )寄存器的内容作为地址的高( 9 )位,再加上 y 提供的低( 7 )位偏移地址。5、COFF 文件的基本单元是 ( 段 ) 。它是就是最终在存储器映象中占据连续空间的一个数据或代码块。6、AR1=1001H 时,执行D
3、ST A,*AR1指令后,AH内容存入地址(1001H)的单元,AL 存入地址(1000H)的单元。7、指令ADD #4567H, 8, A,B执行前A=00001234H, B=00001100H,执行后A和B的值分别为( 00001234H ) 、 ( 00457934H ) 。学院 .专业 班级 . 姓名 学号 .-密 -封 -线-第 2 页 共 12 页8、 C54x 芯片的中断系统可分为硬件中断和( 软件中断 ) ,还可以分为可屏蔽中断和( 非屏蔽中断 ) 。9、C54x 芯片的硬件复位地址为( FF80H ) ,INT0 的中断序号为16,IPTR=1FFH 时其中断向量地址为(
4、FFC0H ) 。10. 在C54x DSP 寻址和指令系统中,操作数 Xmem 和 Ymem 表示( 数据存储器双寻址数据 ),Lmem 表示( 长字寻址的 32 位数据存储器数据 )。二、判断题(正确的在括号内画,错误的在括号内画。每空 1 分,共 10 分)( )1、解决流水线冲突的办法之一就是中间插入若干条 NOP 指令。( )2、链接器可以将自定义未初始化段自动地定位到数据存储器。( )3、C54x 有 6 级流水线,包含预取指、取指、译码、寻址、读数和执行。( )4、C54x 数据空间可进行页扩展,每页空间是 64K 字。( )5、DSP 采用了改进型哈佛结构和流水线技术( )6、
5、FRCT=1,可保证 Q15Q15 小数乘法结果仍为 Q15。( )7、SXM=0 时数据进入 ALU 或移位器之前会进行符号扩展。( )8、INTM=0 允许全局中断。( )9、C54x 的 IO 管脚供电电压为 3.3 伏。( )10、 C5000(C54x、C55x)系列主要用于数字控制系统。三、编程题( 10 分)得 分评卷人编写程序,计算 。51iixay其中 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 分第 3 页 共 12 页
6、答案:.title “mac.asm“.mmregs.bss a,5 ;.bss x,5 ;.bss y,1 ;.global start.data ;table: .word 1*32768/10 ;.word 2*32768/10 .word -4*32768/10.word 4*32768/10.word 51*32768/100.word 7*32768/10;.word 6*32768/10 .word -7*32768/10.word -8*32768/10.word -91*32768/100.text ;start:SSBX FRCT ;RSBX CPL ;STM #a,AR1
7、 ;RPT #9 ;第 4 页 共 12 页MVPD table,*AR1+ ;STM #x,AR2 ;STM #a,AR3 ;RPTZ A,#4 ;MAC *AR2+,*AR3+,A ;LD #y,DP STH A,y ;end: B end ;.end三、回答问题(每题 4分,共 24分)得 分评卷人1、DSP 的主要技术指标有哪些?答:精度,速度,功耗,片内资源,价格,生命周期及其开发工具等。2、程序地址生成器PAGEN中,RC起何作用?如何工作的?答:RC 是重复 计数器,初值决定于RPT(Z) 指令的操作数,随后一条指令被重复指令,每重复执行一次RC 内容减一,直至 0为止。3、举例
8、反序寻址的表达方式及其关键符号的意义?答:反序寻址如*AR4+0B,它表示修改 AR4 时,AR4=AR4+AR0, B 表示反向进位(或借位)。4、说明FIR滤波器使用线性缓冲区时编程的方法及步骤答:线性缓冲区可利用.bss 伪指令开辟未初始化数据段,线性数据缓冲区可采用直接寻址(如x)或间接寻址(*AR1)的方法,其算法是:利用 MAC 指令计算输出,数据的更新法是利用移位指令( 即延迟指令)如 LTD 指令等,进行全区数据的更新。第 5 页 共 12 页5、试说明浮点乘法的主要计算步骤(写出关键指令) 。答:将 0.05和和 0.85转转 化成指数化成指数 (EXP指令指令 )和尾数和尾
9、数 (NORM指令指令 ),再作尾数乘(乘后需再乘(乘后需再 转转 化成指数和尾数)和指数加。再利用化成指数和尾数)和指数加。再利用 NORM指令化指令化 为为 定定点数。6.串口的字符组传送模式和连续传送模式的区别在哪里?答:前者每 16 位传送时,需要一个帧同步信号。后者传输若干个 16 位只需要一个帧同步信号四、问答题(26 分)得 分评卷人1、阅读程序,设 x1 为 300H 地址,回答问题(10 分).title “bitrev.asm“.mmregsx .usect “inputx“,16y .usect “outputx“,16.def _c_int01.datatable: .
10、word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.text_c_int01: STM #x,AR1RPT #15MVPD table,* AR1+CALL bitrevend: B endbitrev: STM #8,AR0STM #x,AR3第 6 页 共 12 页STM #y,AR4RPT #14MVDD *AR3+0B,*AR4+ bitrevend: RET.end填空回答问题(每空 1 分):1) x1 .usect “inputx“,16 一句表示为:定义段名为( inputx )的( 未初始化自定义段 )段,该段长度为 16 个字,起始地址为
11、( x )2)、该程序要求 X 地址低( 5 )位必须为 0,为达到这种要求必须在( *.CMD )文件中对 .inputx 段分配和存储器配置。3)、假定 AR3 中当前值为 0304h,在执行指令 MVDD *AR3+0B,*AR4+后, AR3 的值是( 030C )h4)、该程序运行的结果是Y 单元的内容为:( 1 )Y+1 单元的内容:( 9 )Y+2 单元的内容:( 5 )5)、设 FFT 点数为 32,则 STM #8,AR0 应该改成( STM #16,AR0 ) 。2、阅读程序填写结果。 (12 分).title “FIR4.ASM” ;.mmregs ;.def start
12、 ;.bss y,1 ;xn .usect “xn” ,5 ;a0 .usect “a0” ,5 ;PA0 .set 0 ;PA1 .set 1 ;第 7 页 共 12 页.datatable: .word 2*32768/10 ;.word 1*32768/10 ;.word 3*32768/10 ;.word 1*32768/10 ;.word 4*32768/10 ;.textstart: SSBX FRCT ;STM #a0,AR1 ;RPT #4 ;MVPD table,*AR1+ ;STM #xn+4,AR3 ;STM #a0+4,AR4 ;STM #5,BK ;STM #-1,A
13、R0 ;LD #xn,DP ;PORTR PA1,xn ;FIR4: RPTZ A,#4 ;MAC *AR3+0%,*AR4+0%,A ;STH A,y ;PORTW y, PA0 ;BD FIR4 ;PORTR PA1,* 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) )第 8 页 共
14、 12 页4):指出以下指令中各个操作数的寻址方式STM #a0,AR1 ( #a是立即 寻址,AR1是MMR寻址 )LD #y,DP ( #y是立即寻址,DP是MMR寻址 )STH A,y ( A是MMR寻址,y 是直接寻址(DM区) )4. 阅读下面的程序,回答问题。 MEMORY PAGE 0: PROG: origin = 0x2000, length = 0x1000PAGE 1: DATA: origin = 0x3000, length = 0x1000SECTIONS .text: PROG PAGE 0STACK: DATA PAGE 1汇编程序size .set 0x012
15、0stack .usect “STACK”,size.textSTM # stack + size,SP 问题:(1)标号“stack”的存储器地址是多少?(2 分)(2)执行这段代码之后,SP 寄存器的内容是多少?(2 分)答: (1) stack 的存储空间为 0x3000;(2) SP=0x3120;第 9 页 共 12 页三、应用题(10 分)得 分评卷人设 CLKOUT=8MHz,试阅读下列程序。试回答,引脚 XF 产生什么波形的信号?若要求方波周期改为 16s,T0 中断周期减小到原来一半,试说明程序的修改方法。程序:.title “time.asm“.mmregs.global
16、_mainK_TCR0 .set 111001101001B .text_main: nopSTM #0010H,TCRSTM #6399,TIMSTM #6399,PRDSTM #K_TCR0,TCR STM #0008H,IFRSTM #0008H,IMRRSBX INTMLop: b lop t0_flag .usect “vars”,1 time0_rev: PSHM ST0PSHM ST1BITF t0_flag,#1BC xf_out,NTCSSBX XF ;XF=1ST #0,t0_flagB nextxf_out: RSBX XF ;XF=0ST #1,t0_flagnext:
17、 POPM ST1POPM ST0RETE .end 第 10 页 共 12 页另外:在中断向量表 vector 文件中,在 T0 中断向量入口处加上如下三条指令:IV_TINT0: B time0_revrNOPNOP答案:引脚 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,PRD2,在 Lop: b lop 之前加一条 STM #1999,AR13,在 time0_rev: PSHM ST0 之前加两条指令BANZ OK,*AR1- STM #1999,AR14,在 RETE 前加标号 OK,即指令为 OK:RETE