1、简述数字信号处理器的主要特点;答:(1)存储器采用哈佛或者改进的哈佛结构;(2)内部采用了多级流水;(3)具有硬件乘法累加单元;(4)可以实现零开销循环;(5)采用了特殊的寻址方式;(6)高效的特殊指令;(7)具有丰富的片内外设。
2、请给出数字信号处理器的运算速度指标;答:常见的运算速度指标有如下几种:(1)指令周期:执行一条指令所需的最短时间,数值等于主频的倒数;指令周期通常以ns(纳秒)为单位。
例如,运行在200MHz 的TMS320VC5510 的指令周期为5ns 。
(2)MIPS :每秒百万条指令数。
(3)MOPS :每秒百万次操作数。
(4)MFLOPS :每秒百万次浮点操作数。
(5)BOPS :每秒十亿次操作数。
(6)MAC 时间:一次乘法累加操作花费的时间。
大部分DSP 芯片可在一个指令周期内完成MAC 操作;(7)FFT 执行时间:完成N 点FFT 所需的时间。
FFT 运算是数字信号处理中的典型算法而且应用很广,因此该指标常用于衡量DSP 芯片的运算能力。
3、简述C55x 的存储器配置情况;(课本11~12 页)C55x 采用统一的存储空间和I/O 空间。
C55x 的内存储空间共有352KB ,外部存储空间共有16MB 。
存储区支持的寄存器类型有异步SRAM 、异步EPROM 、同步DRAM 和同步突发SRAM 。
C55x 的I/O 空间与程序/地址空间分开。
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 引脚有多少个?并行地址总线引脚有多少个?并行双向数据总线引脚有多少个?(此题答案不确定)芯片共有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 位,该位能够使能或禁止可屏蔽中断,如果INTM=0 ,C55x 使能所有可屏蔽中断。
11、SATA 位是寄存器ST3_55 中的第 5 位,如果SATA=1 ,则执行 A 单元ALU 的饱和模式;12、MPNMC 位是寄存器ST3_55 中的第 6 位,该位使能或禁止片上ROM ,如果MPNMC=0 ,则为微计算机模式,使能片上ROM ;(8—12题在课本41页附近)13、VC5509A 拥有160K 字的片内存储器资源,其中有128K 字RAM 和32K 字ROM 。
外部扩展存储空间由CE[3:0] 组成,其中CE0 的首字地址为0020000H,CE1 的首字地址为200000H;(51—52 页)14、C55x有32个中断向量,中断向量指针IVPD 、IVPH 应指向中断向量表的首地址;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、什么是直接寻址方式?C55x 有几种直接寻址方式,分别是什么?直接寻址方式:使用地址偏移量寻址;有四种直接寻址方式:DP 直接寻址,SP 直接寻址,寄存器位直接寻址,PDP 直接寻址。
21、什么是间接寻址方式?C55x 有几种间接寻址方式,分别是什么?间接寻址方式:使用指针完成寻址;有四种间接寻址方式:AR 间接寻址,双AR 间接寻址,CDP 间接寻址,系数间接寻址。
22、指令MOV *abs16(#2002h), T2 采用的是绝对/ k16 绝对寻址方式。
设DPH=03h ,该指令的功能是#k16=2002H,CPU 从032002H 处读取数据装入T2;23、指令MOV port(@0), T2 采用的是直接/ 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=34000000H ,AR3=0201H 。
说明:其实AC0~AC3 是40 位,如果问AC1 的内容,则AC1=0034000000H25、已知AC0=EC000000H ,AC1=00000000H ,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=EC000000H+33000000H=11F000000H ,AR1=0200H ,AC0=EC000000H 。
说明:其实AC0~AC3 是40位,AC0 的内容是00EC000000H,AC1的内容是011F000000H26、在.text、.data和.bss段,初始化段是.text 和.data,未初始化段是;.bss27、利用.sect指令可创建已初始化段,利用.usect 指令可创建未初始化段;28、请指出汇编语言文件中的伪指令.def、.ref和.global 的区别;是指在一个模块中定义,可以在另一个模块中引用的符号.可以用伪指令.def、.ref或.global 来定义..def 在当前模块中定义, 可在别的模块中使用;.ref 在当前模块中使用,但在别的模块中定义;.global 全局符号变量。
29、DSP链接器命令文件中,MEMORY 和SECTIONS 伪指令的作用是什么?MEMORY 伪指令用来表示实际存在的目标系统中可被使用的存储器范围,每个存储器范围都有名字、起始地址和长度。
SECTIONS 伪指令的作用是:描述输入段怎样被组合到输出段内;在可执行程序内定义输出段;规定在存储器内何处存放置输出段;允许重命名输出段。
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 即是longl1 存放在AC0 ,⋯⋯对应下去。
33、以下的汇编语句实现两个整型数的饱和加法,请编写 C 语言程序调用该汇编函数,实现整数20000 和30000 的饱和加法,并在CCS 中输出和的值;.def _sadd_asmfun _sadd_asmfun: BSET ST3_SATAADD T1, T0BCLR 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_asmfun(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位,下面D11~D5 意思类似)(2)根据题意有144MHz=[PLL MULT/(PLL DIV+1)] ×12MHz (“ /”表示除号)解得PLL MULT/(PLL DIV+1)=12 ,取PLL DIV=0 ,PLL MULT=12 ,即有:D6D5(PLL DIV)=00B ,D11~D7(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) 的地址。