dsp技术及应用课后习题答案(2)
dsp技术及应用第三章
1. C55x DSP支持哪三种寻址模式?
答:C55x DSP支持三种寻址模式,绝对寻址模式;直接寻址模式;间接寻址模式。
2.简述k16绝对寻址和k23绝对寻址不同点和相同点。
答:不同k16绝对寻址的指令其操作数为*abs16(#k16),其中k16是一个16位的无符号常数。寻址方法是将7位的寄存器DPH(扩展数据页指针XDP的高位部分)和k16级联形成一个23位的地址,用于对数据空间的访问。该模式可以访问一个存储单元和一个存储映射寄存器。
和k23绝对寻址的指令其操作数为*(#k23),其中k23是一个23位的无符号常数。使用这种寻址方法的指令将常数编码为3字节(去掉最高位)。
相同点:k16绝对寻址和k23绝对寻址的指令不能与其他指令并行执行。
3.简述C55x DSP并行指令遵守的规则。
答:在并行指令中,必须遵守三条基本规则:
① 两条指令的总长度不能超过6个字节。
② 在指令的执行过程中不存在操作器、地址产生单元、总线等资源冲突。
③ 其中一条指令必须有并行使能位或两条指令符合软-双并行条件。
4. 已知AC1=0200FC00H,AR3=0200H,(200)=3400H。
MOV *AR3+ << #16, AC1
执行上面指令后,AC1和AR3的值分别是多少?
答:Before After
AC1 00 0200 FC00 AC1 00 3400 0000
AR3 0200 AR3 0201
200 3400 200 3400
5. 已知AC0=EC000000H,AC1=00000000H,AR1=0200H,(200)=3300H,TC2=1。ADDSUBCC AR1, AC0, TC2, AC1
执行上面指令后,AC1、AR1和AC0的值分别是多少?
答:Before After
AC0 00 EC00 0000 AC0 00 EC00 0000
AC1 00 0000 0000 AC1 01 1F00 0000
AR1 0200 AR1 0200
200 3300 200 3300
TC2 1 TC2 1
SXMD 0 SXMD 0
M40 0 M40 0
ACOV1 0 ACOV1 1
CARRY 0 CARRY 1
6.已知AC0=69000000H,AC1=00230000H, AR1=EF00H,AR2=0201H, CDP=A067H。 执行下面指令后,
AMAR *AR2+
:: MAC uns(*AR1), uns(*CDP), AC0 >> #16
AC0、 AR1、AR2和AC1的值分别是多少?
答:Before After
AC0 00 6900 0000 AC0 00 95C0 9200
AC1 00 0023 0000 AC1 00 0023 0000
*AR1 EF00 *AR1 EF00
AR2 0201 AR2 0202
*CDP A067 *CDP A067
ACOV0 0 ACOV0 1
ACOV1 0 ACOV1 0
CARRY 0 CARRY 0
M40 0 M40 0
FRCT 0 FRCT 0
SATD 0 SATD 0
7. 已知PC=004042H,AC0=0000000001H,根据下表的情况
B branch
执行上面指令后,PC和AC0分别是多少?
答:Before After
PC 004042 PC 006047
AC0 00 0000 0001 AC0 00 0000 0000
dsp技术及应用第四章
1.根据任务调度的方式不同,C55x处理器程序可以分为哪两类?并简述其优缺点。
答:一类是由程序自己完成任务调度,另一类是由嵌入式操作系统完成任务调度。
由程序自身完成任务调度程序运行效率高,对硬件中断响应快,程序运行稳定,适合于任务较为单一,实时性较强的应用;嵌入式操作系统完成任务调度,可以将应用分解为多个任务,简化了应用系统软件设计,更为重要的是良好的多任务设计有助于提高系统的稳定性和可靠性。
2.请利用指针将IO空间中地址从0x100到0x107中的值放置到数据空间*ptr指针当中。
答:ioport int *a;
Int *ptr
void foo (void)
{
i = 0x100;
a = &i;
for(int j=0;j<=7;j++)
ptr [j]=a[j];
}
3.在o3级优化情况下,利用中断读取0x100000地址,并将值存放到变量in_flag中。 答:变量in_flag定义
volatile unsigned int in_flag;
中断服务程序
interrupt void int_handler()
{
In_flag= (unsigned int *)0x100000;
}
4.在C语言编写的程序中,分别给出利用C语言和嵌套汇编语言打开全局中断的程序代码。 答:C语言打开全局中断
IRQ_globalEnable();
嵌套汇编语言打开全局中断
asm (“BCLR ST1_INTM”);
5.给出函数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传递,输出参数通过T0传送参数。
6.在.sine数据段中定义一个16点的正弦表,其数值采用Q15方式存放。(Q15即小数点在第15位)
答:
.sina
.word 0, 12539,23170,30273
.word 32767, 30273,23170,12539
.word 0,-12539,-23170,-30273
.word -32767,-30273,-23170,-12539
7.在.mydata段中为a,b,c分别预留10、20、5个字的空间。
答:
.def _a
.def _b
.def _c
.sect mydata
_a:
.space 10*16 ;
_b:
.space 20*16 ;
_c:
.space 5*16 ;
8.请给出调用图像和视频处理库所需要的.h文件和.lib文件。
答:调用图像和视频处理库需要需要包含imagelib.h文件,如过采用小模式编程需要55ximage.lib,而采用大模式编程需要55ximagex.lib库。