《DSP-C55x期末考试复习题(共9页).doc》由会员分享,可在线阅读,更多相关《DSP-C55x期末考试复习题(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上1、DSP技术期末考试课本复习题:1、 简述数字信号处理器的主要特点; 答:(1)存储器采用哈佛或者改进的哈佛结构;(2)内部采用了多级流水;(3)具有硬件乘法累加单元;(4)可以实现零开销循环;(5)采用了特殊的寻址方式;(6)高效的特殊指令;(7)具有丰富的片内外设。2、 请给出数字信号处理器的运算速度指标; 答:常见的运算速度指标有如下几种:(1) 指令周期:执行一条指令所需的最短时间,数值等于主频的倒数;指令周期通常以ns(纳秒)为单位。例如,运行在200MHz的TMS320VC5510的指令周期为5ns。(2) MIPS:每秒百万条指令数。(3) MOPS:
2、每秒百万次操作数。(4) MFLOPS:每秒百万次浮点操作数。(5) BOPS:每秒十亿次操作数。(6) MAC时间:一次乘法累加操作花费的时间。大部分DSP芯片可在一个指令周期内完成MAC操作;(7) FFT执行时间:完成N点FFT所需的时间。FFT运算是数字信号处理中的典型算法而且应用很广,因此该指标常用于衡量DSP芯片的运算能力。3、 简述C55x的存储器配置情况;(课本1112页) C55x采用统一的存储空间和I/O空间。C55x的内存储空间共有352KB,外部存储空间共有16MB。存储区支持的寄存器类型有异步SRAM、异步EPROM、同步DRAM和同步突发SRAM。C55x的I/O空
3、间与程序/地址空间分开。I/O空间的地址为16位,能访问64K字地址,当CPU读/写I/O空间时,在16位地址前补0来扩展成24位地址。4、 TMS320C55x的寻址空间是多少?当CPU访问程序空间和数据空间时,使用的地址是多少位; 答:C55x的寻址空间为16MB,当CPU从程序空间读取程序代码时,使用24位地址,当访问数据空间时,使用23位的地址。但是在访问数据空间时,将23位地址左移一位,并将地址总线上的最低有效位(LSB)置0,使得在对数据空间或程序空间寻址时,地址总线都传送24位地址。5、 VC5509A的PGE LQFP封装芯片共有多少个引脚?其中GPIO引脚有多少个?并行地址总
4、线引脚有多少个?并行双向数据总线引脚有多少个?(此题答案不确定) 芯片共有144个引脚;GPIO引脚:7个;并行地址总线:14个;并行双向数据:16个6、 C55x的指令分为两个阶段,第一阶段为取指阶段,第二阶段为执行阶段;7、 C55x的CPU包含4个40位的累加器,辅助寄存器ARn有16位,XARn有23位;8、 XF位是寄存器ST1_55中的第13位,它是一通用的输出位,能用软件处理且可输出至DSP引脚。若要使该引脚输出高电平,可用指令BSET XF;9、 CPL位是寄存器ST1_55中的第14位,指令BCLR CPL的功能是对CPL清零;10、INTM位是寄存器ST1_55中的第11位
5、,该位能够使能或禁止可屏蔽中断,如果INTM=0,C55x使能所有可屏蔽中断。11、SATA位是寄存器ST3_55中的第5位,如果SATA=1,则执行A单元ALU的饱和模式;12、MPNMC位是寄存器ST3_55中的第6位,该位使能或禁止片上ROM,如果MPNMC=0,则为微计算机模式,使能片上ROM;(812题在课本41页附近)13、VC5509A拥有160K字的片内存储器资源,其中有128K字RAM和32K字ROM。外部扩展存储空间由CE3:0组成,其中CE0的首字地址为H,CE1的首字地址为H;(5152页)14、C55x有32个中断向量,中断向量指针IVPD、IVPH应指向中断向量表的
6、首地址;15、IER0和IER1的功能是什么? IER0:中断使能寄存器0;IER1:中断使能寄存器1。当寄存器某位的值为1时,开启该位所控制的中断,为0则关闭该位所控制的中断。16、请写出允许定时器0中断的指令代码。17、C55x的不可屏蔽中断有哪几种? 三种:硬件中断RESET,硬件中断NMI,软件中断。18、C55x支持3种类型的寻址方式,分别是绝对寻址模式;直接寻址模式和间接寻址模式19、什么是绝对寻址方式?C55x有几种绝对寻址方式,分别是什么? 绝对寻址方式:通过在指令中指定一个常数地址完成寻址;有三种绝对寻址方式:K16绝对寻址方式,K23绝对寻址方式,I/O绝对寻址方式。20、
7、什么是直接寻址方式?C55x有几种直接寻址方式,分别是什么? 直接寻址方式:使用地址偏移量寻址;有四种直接寻址方式:DP直接寻址,SP直接寻址,寄存器位直接寻址,PDP直接寻址。21、什么是间接寻址方式?C55x有几种间接寻址方式,分别是什么? 间接寻址方式:使用指针完成寻址;有四种间接寻址方式:AR间接寻址,双AR间接寻址,CDP间接寻址,系数间接寻址。22、指令 MOV *abs16(#2002h), T2 采用的是绝对 / k16绝对寻址方式。设DPH=03h,该指令的功能是#k16=2002H,CPU从H处读取数据装入T2;23、指令 MOV port(0), T2 采用的是直接 /
8、PDP直接寻址方式。设PDP=511,该指令的功能是PDP:Poffset=FF80H,CPU从FF80H读取数据进T2;24、已知AC1=0200FC00H,AR3=0200H,(200)= 3400H,0 MOV *AR3+ #16, AC1执行上面指令后,AC1和AR3的值分别是多少? 指令功能是把AR3指向的地址里面的内容左移16位(二进制左移16位相当于十六进制左移四位,所以在右边补四个0),把AR3指向的地址里面的内容左移后的内容送进AC1,之后指针AC3自加一次。 所以 AC1=H ,AR3=0201H。说明:其实AC0AC3是40位,如果问AC1的内容,则AC1=H25、已知A
9、C0=ECH,AC1=H,AR1=0200H,(200)= 3300H,TC2=1, ADDSUBCC *AR1, AC0, TC2, AC1执行上面指令后,AC1、AR1和AC0的值分别是多少?指令功能是:如果TC2=1,则AC1=AC0+(*AR1)#16;否则AC1=AC0(*AR1)#16,这里TC2=1,所以AC1=AC0+(*AR1)#16,AC1=ECH+H=11FH,AR1=0200H,AC0=ECH。说明:其实AC0AC3是40位,AC0的内容是00ECH,AC1的内容是011FH26、在.text、.data和.bss段,初始化段是.text和.data,未初始化段是;.b
10、ss27、利用.sect指令可创建已初始化段,利用.usect指令可创建未初始化段;28、请指出汇编语言文件中的伪指令.def、.ref和.global的区别; 是指在一个模块中定义,可以在另一个模块中引用的符号.可以用伪指令.def、.ref或.global来定义. .def 在当前模块中定义,可在别的模块中使用; .ref在当前模块中使用,但在别的模块中定义; .global全局符号变量。29、DSP链接器命令文件中,MEMORY和SECTIONS伪指令的作用是什么? MEMORY伪指令用来表示实际存在的目标系统中可被使用的存储器范围,每个存储器范围都有名字、起始地址和长度。 SECTIO
11、NS伪指令的作用是:描述输入段怎样被组合到输出段内;在可执行程序内定义输出段;规定在存储器内何处存放置输出段;允许重命名输出段。30、CCS有两种工作模式,分别是软件仿真器模式和硬件在线编程模式;31、在大存储模式下编译代码时,必须和rts55x.lib运行时间库链接;32、给出函数int fn(long l1, long l2, long l3, int *p4, int *p5, int *p6, int *p7, int *p8, int i9, int i10)中传送参数所使用的寄存器;分别为:AC0, AC1, AC2, AR0, AR1, AR2, AR3, AR4, T0, T1
12、即是longl1存放在AC0,对应下去。33、以下的汇编语句实现两个整型数的饱和加法,请编写C语言程序调用该汇编函数,实现整数20000和30000的饱和加法,并在CCS中输出和的值; .def _sadd_asmfun _sadd_asmfun: BSET ST3_SATA ADD T1, T0 BCLR ST3_SATA RET #include stdio.h main() int c=0; int sadd_asmfun(int a, int b); /声明函数 c = sadd_asmfun(20000, 30000); printf( c=%d,c); int sadd_asmfu
13、n(int a, int b) /定义函数 return _sadd_asmfun(a,b) 34、TMS320VC5509A系统的晶体振荡器频率为12MHz,试通过设置DPLL,使系统的时钟频率为144MHz;(1)使DPLL工作在锁定模式:D4(PLL ENABL)=1B(这里B表示二进制,不是11,下面 的也是,D4表示时钟模式寄存器(CLKMD)的第5位,D0为第1位,下面D11D5意 思类似)(2)根据题意有 144MHz=PLL MULT/(PLL DIV+1)12MHz (“/”表示除号)解得 PLL MULT/(PLL DIV+1)=12,取PLL DIV=0,PLL MULT
14、=12,即有: D6D5(PLL DIV)=00B,D11D7(PLL MULT)=01100B(3)时钟模式寄存器(CLKMD)的其他未均取为0。(时钟模式寄存器(CLKMD)共16位)综合(1)、(2)、(3),得CLKMD=0000 0110 0001 0000 B或者CLKMD=0C10H用汇编予以实现:mov #0000 0110 0001 0000 B, port(#1c00h) 或者 mov 0C10H, port(#1c00h);1c00h是时钟模式寄存器(CLKMD)的地址。35、 设DSP定时器输入时钟频率为100MHz,如果要求定时器发送中断信号的频率为1000次每秒,需
15、要如何对定时器进行设置?答:根据公式 输入时钟频率为100MHz,TINT频率为1kHz,由于TDDR为4位,这里我们把TDDR设为9,即TDDR=0101B,则PRD为9999,PRD为16位,即PRD=01111B =270FH。36、写出使C5509A的GPIO4、GPIO6和GPIO7引脚输出高电平的C语言代码。 #define IODIR (*(ioport unsigned int*)0x3400) #define IODATA (*(ioport unsigned int*)0x3401) IODIR |=0xF0; IODATA |=0xF0;附一历年考题及答案:通信系DSP原
16、理及应用期末考试题(答案)姓名: 学号: 班级: 分数: 考试时间:15:4017:30 考试方式:开卷;注意:所有答案必须写在答题纸上,试卷上的答案无效!一、 填空题(每空2分,共20分)1、 在C语言和C55x汇编语言的混合程序设计中,C函数的参数和返回值传递到C55x的寄存器中。在函数“long func(int *p1, int i2, int i3, int i4)”中,*p1传递到 AR0 寄存器,i2传递到 T0 寄存器,i4传递到 AR1 寄存器,返回值由 AC0 寄存器传递。2、 汇编语言“mov *AR0,AC0”使用的寻址方式是 间接寻址模式 ,“mov #0x3,DPH
17、”使用的寻址方式是 直接寻址模式 ,“mov *(#0x),T2”使用的寻址方式是 绝对寻址模式 。3、 指令执行前AC0的值是,那么汇编语句“AND #0x7f, AC0”,执行之后,AC0的值是 。4、 C55x 的链接器命令文件中,SECTIONS命令的主要作用是 告诉链接器如何将输入段组合成输出段,以及在存储器何处存放输出 。MEMORY命令的主要作用是 定义目标系统的存储器配置图,包括对存储器各部分的命名,以及规定它们的起始地址和长度 。二、简述题(共40分)1、 根据你的理解,试列举 DSP 芯片的特点?(5分)答:哈佛结构;多总线结构;指令系统的流水线操作;专用的硬件乘法器;特殊
18、的DSP指令;快速的指令周期;丰富的外设 2、 TMS320C55x 芯片的总线结构有何特点,主要包括哪些总线?它们的功能是什么?(6分) 答:TMS320C55x DSP采用先进的哈佛结构并具有十二组总线,其独立的程序总线和数据总线允许同时读取指令和操作数,实现高度的并行操作。采用各自分开的数据总线分别用于读数据和写数据,允许CPU在同一个机器周期内进行两次读操作数和一次写操作数。独立的程序总线和数据总线允许CPU同时访问程序指令和数据。 包括12条总线,分别是:PAB和PB、BAB和BB、CAB和CB、DAB和DB、EAB和EB、FAB和FB。功能:3、 DSP 为了降低功耗采取了哪些措施
19、?(6分)答:双电压供电;多种工作模式4、 TMS320C55x 的总存储空间为多少?可分为哪 3 类,它们的大小是多少?存储器空间的各自作用是什么?(6分)答:程序空间16M Byte;I/O空间64K Words;数据空间8M Words5、 TMS320C55x有哪些寻址方式,它们是如何寻址的?试为每种寻址方式列举一条指令(6分)答:直接寻址模式,mov K16,DP;间接寻址模式,mov *AR0,AC0;绝对寻址模式,mov *(#0x),T2;MMR寻址模式,mov *abs16(AR2), T2;寄存器位寻址模式,btstp 30, AC1;圆形寻址模式。6、 将C源程序转换成可
20、执行文件需要经过哪些步骤?(6分)答:创建C源文件;创建工程文件;创建连接器命令文件;编译整个工程文件;链接;生成可执行文件7、 常用的TMS320C55x汇编命令有哪些,它们的作用是什么?(5分)三、程序设计题(共40分)1、 用C55x汇编语言实现计算 的程序。(10分)答:mpym *AR0+, *AR1+, AC0mpym *AR0+, *AR1+, AC1add AC1, AC0mpym *AR0+, *AR1+, AC1add AC1, AC0mpym *AR0+, *AR1+, AC1add AC1, AC0或者:mpym *AR0+, *AR1+, AC0 |rpt #2 ma
21、cm *AR0+, *AR1+, AC02、 用C55x汇编语言实现计算 的程序。(10分)答:mpym *AR0+, *AR1+, AC3 masm *AR0+, *AR1+, AC33、 以8点的FFT为例,用C55x的汇编语言实现FFT的算法,并且解释该算法的实现方法。(20分)答: .sect fft_code _fft: aadd #(ARGS-Size+1),SP ; Adjust stack for local vars mov mmap(ST1_55),AR2 ; Save ST1,ST3 mov mmap(ST3_55),AR3 mov AR2,fft.d_ST1 mov A
22、R3,fft.d_ST3 btst #0,T1,TC1 ; Check SCALE flag set mov #0x6340,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM,FRCT (SCALE=1) mov #0x1f22,mmap(ST3_55) ; Set: HINT,SATA,SMUL xcc do_scale,TC1 mov #0x6300,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM (SCALE=2) do_scale mov T2,fft.d_T2 ; Save T2 | mov #1,AC0 mov AC0,fft.d_L
23、; Initialize L=1| sfts AC0,T0 ; T0=EXP mov AC0,fft.d_N ; N=1EXP mov XAR1,XCDP ; CDP = pointer to U mov XSP,XAR4 add #fft.d_temp,AR4 ; AR4 = pointer to temp mov XAR0,XAR1 ; AR1 points to sample buffer mov T0,T1 mov XAR0,XAR5 ; Copy externd bits to XAR5outer_loop ; for (L=1; L=EXP; L+) mov fft.d_L,T0
24、; note: Since the buffer is| mov #2,AC0 ; arranged in re,im pairs sfts AC0,T0 ; the index to the buffer neg T0 ; is doubled| mov fft.d_N,AC1 ; But the repeat coutners sftl AC1,T0 ; are not doubled mov AC0,T0 ; LE=21 | sfts AC0,#-1 sub #1,AC0 ; Init mid_loop counter mov mmap(AC0L),BRC0 ; BRC0=LE1-1 s
25、ub #1,AC1 ; Init inner loop counter mov mmap(AC1L),BRC1 ; BRC1=(NL)-1 add AR1,AR0 mov #0,T2 ; j=0 | rptblocal mid_loop-1 ; for (j=0; jLE1;j+) mov T2,AR5 ; AR5=id=i+LE1 mov T2,AR3 add AR0,AR5 ; AR5 = pointer to Xid.re add #1,AR5,AR2 ; AR2 = pointer to Xid.im add AR1,AR3 ; AR3 = pointer to Xi.re | rpt
26、blocal inner_loop-1 ; for(i=j; i#1,dual(*AR3) ; Scale Xi by 1/SCALE mov dbl(*AR3),AC2 scale add T0,AR2| sub dual(*AR4),AC2,AC1 ; Xid.re=Xi.re/SCALE-temp.re mov AC1,dbl(*(AR5+T0) ; Xid.im=Xi.im/SCALE-temp.im| add dual(*AR4),AC2 ; Xi.re=Xi.re/SCALE+temp.re mov AC2,dbl(*(AR3+T0) ; Xi.im=Xi.im/SCALE+tem
27、p.iminner_loop ; End of inner loop amar *CDP+ amar *CDP+ ; Update k for pointer to Uk| add #2,T2 ; Update j mid_loop ; End of mid-loop sub #1,T1 add #1,fft.d_L ; Update L bcc outer_loop,T10 ; End of outer-loop mov fft.d_ST1,AR2 ; Restore ST1,ST3,T2 mov fft.d_ST3,AR3 mov AR2,mmap(ST1_55) mov AR3,mmap(ST3_55) mov fft.d_T2,T2 aadd #(Size-ARGS-1),SP ; Reset SP ret .end专心-专注-专业