DSP原理课练习题Word下载.docx
- 文档编号:1393857
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:221.13KB
DSP原理课练习题Word下载.docx
《DSP原理课练习题Word下载.docx》由会员分享,可在线阅读,更多相关《DSP原理课练习题Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
voidfir(int*x,int*y)
{
inti,j;
for(i=0;
i<
1024;
i++)
{
doubleaccumulator=0.0;
for(j=0;
j<
15;
j++)
{
accumulator+=x[i-j]*coef[j];
}
y[i]=(int)accumulator;
}
}
以上表达式中,
分别是低通滤波输入、输出的16位整型数组变量。
现在要求把以上过程优化为在C54x平台上运行的精度最高、执行效率最高的16位定点运算形式。
试写出在C54xDSP和CCS2.2环境下完成16位相乘和32位累加的定点运算的C程序。
3.解决图像编码中常见的8x8离散余弦变换在VC5402DSP上定点运算问题。
⑴用C语言写出定点运算实现
的程序,并且把最后结果存放到16位整型变量r中。
数据类型见前面题3的表格。
⑵用C54x汇编指令写出定点运算实现
的代码,并且把最后结果转换为16位整数存放到1102H的地址中。
⑶现有一个8位无符号字符数118,对其执行浮点运算
,VC5402汇编指令代码段如下:
SSBXFRCT
MPY*(1000H),#118,A
MPYA*(1001H)
STHB,*(1002H)
运算前数据页1000H和1001H的地址存放的数据是多少?
运算后数据页1002H的地址存放的结果是多少?
⑷上面⑶的代码段求出
的结果是多少?
4.现在需要对16位整型音频信号数据执行512点FFT,待处理数据放在数据页首地址为0A00H,长度为512的缓冲区内。
在按时间抽取基2FFT碟形运算中输入数据倒序,输出数据顺序。
⑴写出在一个512次循环中以降序ARx-0B读入数据页0BFFFH~0A00H的256个输入数据的汇编指令代码。
⑵在⑴中已经读取0A65H地址的数据后,随后连续8次读取的输入数据的地址是多少?
要求写出详细计算过程,光写对答案不能得满分。
5.使用VC5402DSP芯片对一无限长的16位整型音频信号序列执行103阶FIR带通滤波。
需要分配滤波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF。
现有的在C54xDSP和CCS2.2环境下的C语言程序fir.c和相应的链接命令文件fir.cmd如下:
fir.c文件:
intfir_data[103];
intfir_coef[103];
main()
fir(fir_data,fir_coef,signal_len,fp_in,fp_out);
//执行FIR滤波的汇编函数
fir.cmd文件:
MEMORY
PAGE0:
/*programspace*/
VECS:
origin=0x0080,length=0x0080/*vectortablespace*/
PROG:
origin=0x0100,length=0x2B00/*programmemoryspace*/
PAGE1:
/*dataspace*/
DAT1:
origin=0x2C00,length=0x1400/*applicationdata*/
DAT2:
origin=0x4000,length=0x4000/*applicationdata*/
SECTIONS
.vectors:
{}>
VECSPAGE0/*interruptvectortable*/
.text:
PROGPAGE0/*programcode*/
.data:
PROGPAGE0/*initializeddata*/
.coeffs:
PROGPAGE0/*initializedparameters*/
.stack:
DAT1PAGE1/*softwarestacksection*/
.variable:
DAT2PAGE1/*uninitializedvarsforDSP&
AIC10*/
.bss:
DAT2PAGE1/*uninitializedvarsforapplications*/
于是滤波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF都在片外SRAM中。
现在为了提高执行效率尤其在汇编函数中使用双操作数寻址,需要令滤波数据缓冲区FIR_DATA和滤波系数缓冲区FIR_COEF在片内DARAM中。
在上面的C语言程序fir.c和相应的链接命令文件fir.cmd中需要做出哪些改动?
写出所有改动的地方。
6.在VC5402芯片上对无限长16位整型音频信号执行分段实时采集、滤波、输出至功放。
其中滤波使用51阶Hamming窗低通滤波以及循环缓冲区方法。
汇编指令代码段如下:
LOOP_FILTERING:
STM#DATA_PTR+50,①
STM#COEF_PTR,②
STM#LEN-1,AR7
STM#IN_PTR,AR1
STM#OUT_PTR,AR2
STM③,AR0
SSBX④
loop2:
STM⑤,BK
MVDD*AR1+,⑥
LD#0,A
STM⑦,AR6
loop1:
MAC⑧,⑨,A
BANZloop1,*AR6-
STHA,*AR2+
BANZloop2,*AR7-
其中COEF_PTR指向滤波系数缓冲区,DATA_PTR指向输入缓冲区,IN_BUF指向音频采集缓冲区,OUT_BUF指向音频功放输出缓冲区。
(1)在上面汇编指令代码段中9个标有序号的空中填空,使程序完整并且正确运行。
(2)在上面代码段跟踪过程中,读出指向滤波系数缓冲区的辅助寄存器内容为10AFH,随后连续执行4次MAC指令所访问的4个内存地址分别是多少?
又读出指向输入缓冲区的辅助寄存器内容为10F1H,随后同一辅助寄存器对同一缓冲区访问102次后读数是多少?
7.在题7标示为LOOP_FILTERING的使用循环缓冲区法完成FIR滤波的汇编指令代码段中存在两重循环嵌套。
现有代码采用根据辅助寄存器进行条件跳转的方法实现循环。
C54xDSP还提供另外一种执行效率更高的实现循环的方法,即重复和块重复。
⑴重复指令RPT和RPTZ使用C54xDSP内核什么专门的寄存器或者标志位?
把他们全部列举出来。
⑵块重复指令RPTB使用C54xDSP内核什么专门的寄存器或者标志位?
⑶对题6标示为LOOP_FILTERING的使用循环缓冲区法完成FIR滤波的汇编指令代码段进行优化,用重复指令和块重复指令完全消除根据辅助寄存器进行条件跳转的指令。
8.题4标号为LOOP_FILTERING的滤波代码段必须封装成为如下形式的函数方能被C语言主程序调用。
voidfir(int*in_buf,int*data_buf,int*coeff_buf,intlen,int*out_buf)
其中第一形参为指向音频采集缓冲区的指针in_buf,第二形参为指向输入缓冲区的指针data_buf,第三形参为指向滤波系数缓冲区的指针coeff_buf,第四形参为滤波长度(不等于信号分段长度)len,第五形参为指向音频功放输出缓冲区的指针out_buf。
从C主程序跳入汇编子函数时ST1状态寄存器的CPL位自动为1。
(1)在跳入汇编子程序fir并且执行如下现场保护后,写出把上述fir函数五个形参传递至累加器B的指令。
PSHMAR0
PSHMAR1
PSHMAR2
PSHMAR3
PSHMAR4
PSHMAR5
PSHMAR6
PSHMAR7
FRAME#-12
(2)写出返回C语言主程序前执行现场恢复的汇编指令代码。
9.现在需要对信号缓冲区的256个16位有符号整数的音频信号数据减去其均值(直流分量),成为交流信号。
信号缓冲区在数据页,首地址2C00H。
均值存放于数据页2D00H地址中。
去直流分量的汇编指令代码如下:
STM#2C00H,AR1
LD*(2D00H),B
STM#255,AR0
loop:
LD*AR1,A
SUBB,A
STLA,*AR1+
BANZloop,*AR0-
现在要求对上述代码进行优化以提高执行效率,措施包括双16位读写和减法运算、重复或者块重复等。
其中仅改写为双16位操作便可使循环次数减半。
写出在上述代码基础上经过优化达到最高执行效率的汇编指令代码。
10.由美国国家科学奖章获得者、美国高通公司创始人之一兼首席科学家、被誉为CDMA之父的AndrewJ.Viterbi发明的Viterbi译码是卷积码的译码方法之一,因运算复杂度最低而广泛用于3G移动通信系统和卫星通信系统的信道纠错与检错。
其运算核心为循环执行的加比选ACS碟形运算,VC5402汇编代码如下:
LD*AR2,B;
本地码间汉明距离→BL
ADD*AR5,B,A;
AL=Old_Met(2*j)+BL
SUB*AR5
(1),B,B;
BL=Old_Met(2*j+1)-BL
MAXA;
A=max(A,B)
STLA,*AR4+
LD*AR2,B
SUB*AR5+,B,A;
AL=Old_Met(2*j)-BL
ADD*AR5+,B,B;
BL=Old_Met(2*j+1)+BL
STLA,*AR3+
现在要求用双16位运算指令对以上汇编代码进行优化以提高一倍运算效率。
写出经过双16位运算优化后达到最高执行效率的汇编指令代码。
已知每次ACS碟形运算开始时AR5内容为偶数。
11.现在需要在
(
)共8个乘积中取最小值并且存放到数据页1020H的内存中去。
和
分别存放于首地址为1000H和1010H的长度为8的内存区中,十进制数值如下所示:
在下面所出现的C54xDSP汇编指令中,LD*ar2+,T指令,MPY*AR3+,A/B指令,MINA指令,STLA,*AR1+指令均是单字指令,MINA指令的操作是比较两个累加器A和B的数值然后取其中最小值送至累加器A。
1写出执行完以下汇编指令后,AR1-1(即AR1所指向的上一个地址)的地址是多少?
其中十进制数值是多少?
STM#1000H,AR2
STM#1010H,AR3
STM#1020H,AR1
STM#6,AR0
LD*AR2+,T
MPY*AR3+,A
MPY*AR3+,B
MINA
STLA,*AR1+
2写出执行完以下汇编指令后,AR1-1(即AR1所指向的上一个地址)的地址是多少?
BANZDloop,*AR0-
3写出执行完以下汇编指令后,AR1-1(即AR1所指向的上一个地址)的地址是多少?
4写出执行完以下汇编指令后,AR1-1(即AR1所指向的上一个地址)的地址是多少?
5最后,上面哪段代码正确(与本题第一句话的要求一致)?
哪段代码的执行效率最高?
12.下面的汇编代码段实现视频编码的16x16方块运动估计。
用VC5402的ABDST指令计算当前16x16图像块与参考帧带运动补偿的16x16图像块之间的绝对值和差。
其中省略了计算出当前块与参考块指针的部分代码。
每行汇编指令后面都标出了指令周期数。
试用重复、块重复、跳转延迟等优化措施改写这段代码,使得运算结果相同的情况下执行效率最高。
SSBXSXM
(1)
LD*(pos_size),A
(1)
STLMA,AR3
(1)
L1:
……(省略)
LD*(width),A
(1)
STLMA,AR0
(1)
LD#0,B
(1)
STM#15,AR2
(1)
L2:
MVMMAR6,AR4
(1)
MVMMAR7,AR5
(1)
LD#0,A
(1)
STM#16,AR1
(1)
L3:
ABDST*AR4+,*AR5+
(1)
BANZL3,*AR1-(4)
MAR*AR6+0
(1)
MAR*AR7+0
(1)
BANZL2,*AR2-(4)
LD*(BL),A
(1)
SUB*(min_sad),A
(1)
BCL4,AGEQ(5)
STLB,*(min_sad)
(1)
LD*(current_pos),A
(1)
STLA,*(best_pos)
(1)
L4:
ADDM#1,*(current_pos)
(2)
BANZL1,*AR3-(4)
13.实验六A/D转换(输入数据)实验和实验七D/A转换(输出数据)实验利用VC5402DSP的片内外设第1号多通道缓冲串行口McBSP#1分别接收和发送数据。
McBSP的结构方框图如图1所示。
在EL-DSP-EXPⅠ教学实验系统中,VC5402的McBSP#1与位于语音处理单元的TLC320AD50C芯片相连,分别完成一维音频信号的输入、A/D转换、DSP采集和DSP输出、D/A转换、输出。
图1VC5402芯片的片内外设多通道缓冲串行口McBSP的结构方框图
接收数据时,自DR进入的数据最后到达McBSP#1内部16位寄存器DRR1,DDR1在VC5402的数据存储区映像地址是0x0041,同时发生三个动作:
①第1号串行口控制寄存器SPCR1的第1bit接收就绪位RRDY(ReceiveReady)显1;
②RINT线向C5402的CPU发出中断;
③REVT线向VC5402的DMA控制器发出事件激励信号。
一旦VC5402的CPU或者DMA控制器把DRR1的16位数据读出,1号串行口控制寄存器SPCR1的第1bit接收设备就绪位(ReceiverReady)显0。
这样VC5402的CPU或者DMA控制器就逐个读出DRR1的16位数据并且转存到数据缓存区中。
实验六的数据缓存区首地址1000H,长度256个16位字。
数据缓存区填满后,便可进行数字信号处理。
发送数据时,一旦上一个数据自McBSP#1内部16位寄存器DXR1(DXR1在C5402的数据存储区映像地址是0x0043)复制到发送部件上去(最后从DX发送出去),相当于DXR1被清空,就同时发生三个动作:
:
①第2号串行口控制寄存器SPCR2的第1bit发送设备就绪位XRDY(TransmitterReady)显1;
②XINT线向VC5402的CPU发出中断;
③XEVT线向VC5402的DMA控制器发出事件激励信号。
一旦VC5402的CPU或者DMA控制器向DXR1写入16位数据,2号串行口控制寄存器SPCR2的第1bit发送设备就绪位XRDY(TransmittReady)显0。
这样VC5402的CPU或者DMA控制器就把数据缓冲区中经过数字信号处理的数据逐个写入到DXR1。
实验七的数据缓存区首地址3000H,长度40个16位字。
实验六和实验七的指导程序都是用CPU查询方式分别完成数据接收和数据发送。
现在要求用效率较高的中断方式完成数据接收与发送的方案。
相关中断系统参数如图2和图3所示。
图2
图3
如图2所示,VC5402的McBSP#1的接收数据中断位是第10bit,发送数据中断位是第11bit。
其中断向量表的偏移量如图3所示,分别是68H和6CH。
试写出把实验六指导程序的查询方式改为中断方式的所有程序代码。
14.阅读C5402中断系统、DMA和McBSP的文档。
现在要求用效率最高的DMA方式完成数据接收与发送的方案。
(1)当DMA控制器与DSPCPU通过中断同步时,分别写出把实验六和实验七指导程序的查询收发数据方式改为DMA方式的所有程序代码。
(2)当DMA控制器与DSPCPU通过查询DMA块传输是否结束的标志同步时,分别写出把实验六和实验七指导程序的查询收发数据方式改为DMA方式的所有程序代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 原理 练习题