DSP原理与应用课程作业.ppt

上传人:本田雅阁 文档编号:2102680 上传时间:2019-02-14 格式:PPT 页数:51 大小:288.01KB
返回 下载 相关 举报
DSP原理与应用课程作业.ppt_第1页
第1页 / 共51页
DSP原理与应用课程作业.ppt_第2页
第2页 / 共51页
DSP原理与应用课程作业.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《DSP原理与应用课程作业.ppt》由会员分享,可在线阅读,更多相关《DSP原理与应用课程作业.ppt(51页珍藏版)》请在三一文库上搜索。

1、第 1 次作业,1.1 写出本课程相关以下缩写的中英文全称:DSP、TI、 MIPS、MFLOPS 答:DSP: Digital Signal Processor 数字信号处理器,DSP芯片 TI:Texas Instruments 德州仪器 MIPS:Million Instructions Per Second 每秒百万条指令 MFLOPS: Million Floating point Operations Per Second 每秒百万次浮点操作,1,第 1 次作业,1.2 简述DSP芯片选择原则。 答:DSP芯片选择原则主要包括DSP芯片生产厂家的选择、运算速度、数据的传输能力、片内

2、存储器大小、存储器容量、集成外设、功耗、芯片价格、芯片的供货状况、开发工具。,2,1.3 简述DSP应用系统的一般设计过程 答:确定系统性能指标 核心算法模拟和验证 选择DSP芯片及其他系统组件 软件设计和调试 硬件设计和调试 系统测试。集成,3,第 1 次作业,2.1 TMS320C55x DSP 有哪些特性? 答: TMS320C55x DSP 主要特性如下所示 先进的多总线结构 40位算术逻辑运算单元(ALU),能够进行 高精度的算术和逻辑操作。16位辅助ALU单元,能够和主ALU并行进行简单的算术运算。 两个17位17位的MAC(Multiply and Accumulate)单元,能

3、够在单周期内执行两组惩罚与加法操作 64字节的指令缓冲队列,能够用作程序Cache,高效完成块重复操作,4,4个40位的累加器,能够存储计算结果,减少对存储器的方问 8个增强的辅助寄存器,可用作数据寻址。4个暂存数据寄存器满足数据处理的要求。 循环寻址,最多支持5个循环缓冲 单指令重复、块重复操作支持。 源代码全兼容所有的TMS329C54x器件。,5,第 1 次作业,2.2 简述TMS320C55x DSP的CPU的组成? 请写出C55x 所包含的累加器,并回答累加器有多少位? 答: TMS320C55x DSP的CPU主要由内部地址总线和数据总线、存储器接口单元、指令缓冲单元(I Unit

4、)、程序流单元(P Unit)组成。C55x包含4个累加器,分别是AC0,AC1,AC2,AC3累加器有40位。,6,2.3 C55x 支持多少个中断?如果需要使能TMS320VC5509A 的INT1,IER0或IER1及INTM的值分别应为多少? 答:C55x支持32个中断。如果需要使能TMS320C5509A的INT1,IER1的第0位必须为1.INTM的值应为0(全局使能)。,7,第 1 次作业,2.4 TMS320C55x DSP提供了一个统一的数据/程序空间,其寻址空间为多大?当CPU 从程序空间读取程序代码时,使用多少位地址?程序空间字节地址范围是多少? 当CPU访问数据空间时,

5、使用多少位地址?数据空间字地址范围是多少?一个字有多少位? 答: TMS320C55x DSP提供了一个统一的数据/程序空间的寻址空间为16MB(16兆字节)或8MW(8兆字)。当CPU从程序空间读取程序代码时,使用24位地址。程序空间字节地址范围是0x000000-0xFFFFFF 当CPU访问数据空间时,使用23位地址。 数据空间字地址范围是0x000000-0xFFFFFF。 一个字(word)为16位。,8,第 1 次作业,2.5 TMS320VC5509A片内存储器DARAM字地址范围是多少?DARAM的大小为多少?存储器映射寄存器位于什么地方?有多大? 映射的地址可以定位程序的代码

6、和数据吗? 答: TMS320VC5509A片内存储器DARAM字地址范围是0x0000000x007FFF。DARAM的大小为64KB。存储器映射寄存器位于数据空间的最前面的96个地址(0x000000-0x00005F 字地址),大小为96个字或192个字节。映射的地址不能定位程序的代码和数据,9,第 2 次作业,2.6 ICETEK-VC5509-A评估板上字节地址起止范围为0x0480000x04FFFF对应的哪种存储器?这段存储空间有多大? 外扩寄存器地址 0x400001(字地址) 对应的哪个CE空间? 答:这段地址对应的存储器为SDRAM。这段存储空间的大小32KB。外扩存储器地

7、址0x400001(字地址)对应的CE2空间。,10,第 2 次作业,3.1 CCS软件开发工具有哪些功能? 答:CCS软件开发工具具有: 集成开发环境(软件仿真和硬件仿真) 工程管理器和代码编辑器 代码产生工具 代码调试工具 代码分析工具(Profiler的使用),11,第 2 次作业,3.2 何谓DSK,EVM? 答:DSK:DSP初学者套件(DSP Starter Kit) DSK是TI公司提供给初学者进行DSP编程学习的一套廉价的实时软件调试工具(包括CCS限定版和DSK板)。 TMS320C55x Low-Power Optimization DSP Starter Kit (DSK

8、) TMS320C5509(U.S oart number) 495 SU.S TMS320C55xTM DSP Starter Kit(DSK), TMS320C5510 DSP based 395 SU.S EVM:评估模板(Evaluation Module) 评估模板是一种低成本的开发板,在EVM板上一般配置了一定数量的硬件资源,可用来进行DSP芯片评价、性能评估和有限的系统调试,12,第 2 次作业,3.3 CCS的Simulator和Emulator有何区别,在哪些情况下合适使用Simulator调试程序,哪些情况下必须使用Emulator调试程序。 答:CCS程序的仿真有两种模式

9、:软件仿真(Simulator)和硬件仿真(Emulator). CCS的Simulator是指CCS工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等。软件仿真无需目标板和仿真器等硬件就可以开始软件编程,缺点是仿真速度慢而且无法仿真某些外设的功能。,13,第 2 次作业,硬件仿真需要用户具备目标板,如TI的DSK、EVM及用户设计的系统板,仿真程序会利用开发系统将代码下载到DSP芯片中。程序在目标板中运行,仿真软件只是将结果读出来显示。目标板一般是通过XDS510

10、开发系统与主机相连。硬件仿真的优点是仿真速度快,仿真结果与系统实际一致。有并口、ISA、PCI和USB仿真器。现TI新推出告诉XDS560开发系统。在外设程序调试及系统程序联调时需使用硬件仿真。,14,第 2 次作业,3.4 简述采用CCS及DSP系统开发DSP 程序的主要步骤(包括软件仿真Simulator和硬件仿真Emulator)。 答:1.创建新的工程文件。 2.创建、编写源代码文件(包括.c、.asm、.h等源文件)和链接器命令文件(.cmd)。 3.将工程文件中应包含.c和.asm源代码文件、链接器命令文件、库文件(.lib)添加到工程中。 4.编译产生库文件(.lib)和可执行程

11、序(.out)。 (通常1-4步Simulator ) 5.加载和运行可执行程序。调试代码,修改程序错误,重新编译产生、加载和运行科执行程序(.out) -算法软件(通常先Simulator ,然后Emulator ) -驱动软件(通常Emulator ,需连接DSP硬件系统),15,第 3 次作业,3.5 在本章课上讲解的图形显示示例的输入窗口“Graph Property Dialog”对话框为什么要对图形的标题、起始地址、缓冲区大小、显示数据大小、DSP数据类型、自动标尺属性及最大Y值作如下更改? Graph Title :Input Start Address :inp_buffer

12、Acquisition Buffer Size :100 Display Data Size :100 DSP Data Type :16-bit signed integer Autoscale :Off Maximum Y-value :1000,16,第 3 次作业,Graph Title :Input 给输入数据图形显示窗口命名为“Input”,有助于区分多个同时打开的窗口。 Start Addresss :inp_buffer 显示由文件的输入/输出从sine.dat文件读入到inp_buffer指针内正弦曲线数据 Acquisition Buffer Size :100 获取的缓冲

13、个数为100. Display Data Size :100 显示数据个数为100.,17,DSP Data Type :16-bit signed integer 应与待显示数据类型一致,输入正弦波数据位16比特有符号的整数。 Autoscale :Off 缺省为On,纵轴的最大值就是所显示数据的最大值。为比较处理前后的幅值的放大,将自动标尺关闭。 Maximum Y-value :1000 将最大Y值设置为1000.输入正弦曲线最大值为99,最大放大倍数为10,最大Y值1000能显示放大后曲线所有的点。,18,3.6给出CCS提供的代码分析工具Profiler各项统计数据的含义? 答:Co

14、de Size 代码长度 Incl./Excl.Count 命中次数 Incl./Excl.Maximum 最大时钟周期数 Incl./Excl.Minimum 最小时钟周期数 Incl./Excl.Average 平均时钟周期数 以Incl.为前缀的统计信息表示将剖析区域的子程序调用计算在内。 以Excl.为前缀的统计信息表示将剖析区域的子程序调用排除在外。,19,第 3 次作业,4.1 TMS320C55x DSP支持哪3种类型的寻址方式?它们是如何寻址的? 答: TMS320C55x DSP支持的3种类型的寻址方式分别是绝对寻址方式、直接寻址方式、间接寻址方式。 绝对寻址方式:指令里有一

15、个地址的全部或比分,之时目的地址。 直接寻址方式:使用偏移地址指示目的地址。 间接寻址方式:使用指针指示目的地址。,20,第 3 次作业,4.2 设指令执行前DPH=3, DP=.dp=0x2000, XAR0=0x32000 Data memory 0x032000 0x032001 0x032002 0x032003 分别指出下列指令所使用的寻址方式及指令执行后XAR0、 AC0、T2和T3的值: mov *AR0+, AC0 mov 2003h, T2 mov *abs16(#2002h), T3,21,答:(1)mov*AR0+,AC0;间接寻址方式 执行后:AC0=0x0000,XA

16、R0=0x32001,其他不变。 (2)Mov 2003h,T2;直接寻址方式 执行后:T2=0x3333,其它不变。 (3)mov*abs16(#2002h),T3;绝对寻址方式 执行后:T3=0x2222,其它不变。,22,第 3 次作业,4.3 TMS320C55x DSP的指令集包含了哪几种基本类型的指令? 答:算术运算指令 逻辑运算指令 移动指令 程序控制指令,23,第 3 次作业,4.4 分析下列 TMS320C55x DSP 汇编语言代码,请在每一行语句后对其功能进行注释。 mpym *AR2+,*AR3+,AC0 ;AC0=(*ar2)*(*AR3) ;AR2=AR2+1,AR

17、3=AR3+1 | rpt #4;与上条指令并行,下一条指令执行5次 masm *AR2+,*AR3+,AC0 ;AC0=AC0-(*AR2)*(*AR3) ;AR2=AR2+1,AR3=AR3+1,24,第4次作业,5.1 简述增强性能的DSP代码开发流程。 答:增强性能的DSP代码开发流程可分为4个步骤: 步骤1:写C代码 根据任务写C语言程序,用CCS代码产生工具编译产生DSP内可运行代码,证明其功能的正确性。剖析代码,分析确定代码是否足够有效如果足够有效,则代码开发完成;如果不是,进入步骤2 步骤2:优化C代码 利用C代码优化方法对代码进行优化,再次编译、剖析。进行更多的C优化。如果仍

18、然有效性不够,进入步骤3。,25,步骤3:写汇编代码 分析C代码中存在的影响性能的关键低效率段,用汇编代码编写它们,再次剖析。如果仍然有效性不够,进入步骤4. 步骤4:优化汇编代码 优化汇编代码,再次优化,直至足够有效。,26,第4次作业,5.2 为什么通常需要采用C语言和汇编语言的混合编程? 答:在数字信号处理器的软件开发中一直存在一个两难的选择:C/C+语言开发容易、移植性强、但效率较低,不能满足实时性要求;汇编语言效率高,对硬件的操作更为直接,但程序编写复杂易读性差、移植性不好。 比较好的方法是在二者间折中,即程序的主体框架和对实时性要求不高的部分采用C/C+语言,而算法则采用汇编语言,

19、这样能够充分发挥二者的优点,解决易读性和效率之间的矛盾。,27,第4次作业,5.3 何谓小存储器模式?何谓大存储器模式? 答:在小存储器模式下,代码段和数据段的长度和位置受到一定的限制。如下列段都必须在长度为64KW的存储器的一个单页中: .bss和.data段(存放所有的静态和全局变量) .stack和.sysstack段*(the primary and secondary system stacks:主系统堆栈和二级系统堆栈) .sysmem段(动态存储空间) .const段 在小存储器模式下,.test段 (代码段)、.switch(状态转化段)及.cinit/.pint段(变量初始化

20、段)的长度和位置不受限制。 在小存储器模式下,编译器的数据指针为16位。23-bit XARn寄存器的高7位指向.bss段,并在程序运行时始终指向该段。 *susstack段为C55xDSP所特有,28,如果在编译中设置-ml选项,则编译器按照大存储器模式编译程序。 大存储器模式下可以更加方便地存放数据,而不必过多的考虑数据页的限制,数据指针为23位,而主堆栈和二级堆栈必须放到同一页中;除了代码段可以跨越页边界以外,其它段都不能跨越页边界,也就是说除代码段外的其它所有的段都只能放在一页存储器之中,不能跨页存放但和小存储器模式相比,这些段可以分别放在不同的叶中,而不需要放啊同一页中。,29,第4

21、次作业,5.4 分析下列ICETEK-VC5509-A 评估板 C语言代码,请在每一语句后对其功能进行注释。并说明px 指向的存储器区的物理存储器的类型。 main()/主函数 int i;/定义局部整型变量i unsigned int * px; /定义指向无符号整型变量的指针变量px px=(unsigned int *) 0x20000; /px字地址为0x20000,字节地址为0x40000 /且px指向unsigned int 类型 for ( i=0; i32;i+,px+ ) (*px)=0; /以上for循环的功能是从字地址0x20000开始32个字清0 在ICETEK-VC5

22、509-A评估板中px指向的存储器区的物理存储器为SDRAM,30,第4次作业,5.5 TMS320C55x DSP汇编语句包含哪几个部分?编写汇编语句需要注意哪些问题? 答:汇编语言语句格式可以包含4个部分,标号域、助记符域、操作数域和注释域。 汇编语言语句格式如下: Mnemonic syntax: label:mnemonicoperand list;comment 标号:助记符操作数列表;注释,31,编写汇编语句需要注意如下4个方面的问题: 语句必须以标号、空格、星号(*)、分号(;)开始。 标号为可选项,如要使用标号,则必须从第1列开始。 每个域必须有1个或多个空格分开。Tab等效于

23、空格。 注释为可选项,开始于第1列的须用星号或分号(*或;)开始,但其它列开始的注释前面只能标分号。,32,第4次作业,5.6 汇编伪指令.def,.ref和.global 起到了什么作用? 答:.def符号(sumbol)-在当前文件中定义一个符号,可以被其它文件使用。 .ref符号-在其它文件中定义,可以在本文件中使用的符号。 .global符号-其作用相当于.def、.ref效果之和。,33,第4次作业,5.7 TMS320C55x DSP C语言和汇编语言的混合编程方法主要有哪两种?各有什么特点? 答:C语言和汇编语言的混合编程有如下主要方法和特点: 1.在C语言中直接嵌套汇编语句 特

24、点:嵌套汇编语句的语法十分简单,只要把需要嵌套的汇编语句前面加上asm标示符,左右加上一个双引号并用小括号括住即可 asm(“assembler text”); 比较适合完成对硬件进行简单操作。直接嵌套的方法要十分小心,C语言编译器并不检查和分析嵌入的汇编语句,而嵌入的汇编语句很可能改变C语言的运行环境。采用该方法实现较复杂的功能,会造成程序的可读性较差,并影响程序的可移植性。,34,2.C语言和汇编模块的接口 特点:独立编写C语言程序和汇编程序,C语言通过函数调用汇编子程序,这样既可以提高程序的运行效率,又保证了程序的可移植性,而且程序的结构性较好,并不影响C语言编译器的优化功能。必须遵从C

25、语言调用子函数的规则,这些规则包括C/C+中寄存器的使用、函数的结构及调用规则等。,35,第4次作业,5.8 定义如下结构体类型struct big,请分别给出以下3个C函数传送参数和返回值所用的寄存器或堆栈。 struct big long x10; ; (1) long fn(int *p1, int i2, int i3, int i4); (2) int fn(struct big b, int *p1); (3) void fn(long l1, long l2, long l3, int *p4, int *p5, int *p6, int *p7, int *p8, int i9

26、, int i10);,36,struct biglong x10; AC0 AR0 T0 T1 AR1 (1)long fn(int *p1,int i2,int i3,int i4); T0 AR0 AR1 (2)int fn(struct big b,int *p1) ; AC0 AC1 AC2 AR0 AR1 (3)void fn(long l1,long l2,long l3,int *p4,int *p5, AR2 AR3 AR4 T0 T1 int *p6,int *p7,int *p8,int i9,int i10 );,37,第4次作业,5.9 C语言主程序如下: exter

27、n int exp(int *, int *); int Ai8=100,2,3,4,5,6,7,8; int Xi8=9,3,2,0,1,9,7,1; int y; void main() y = exp(Ai, Xi); 用C55x汇编语言实现C可调用函数int exp(int *, int *),计算,38,.global _exp .text _exp ; ; Indirect addressing with parallel processing ; mpym *AR0+, *AR1+,AR0 mov AC0,T0 Ret .end,39,第5次作业,5.10 DSP/BIOS 支持

28、的4种类型线程,按优先级由低到高给出这4种线程。说明任务(TSK) 的优先级范围。 答:按优先级由低到高DSP/BIOS支持的4种线程为:后台线程(IDL)、任务(TSK)、软件中断(SWI)、硬件中断(HWI)。 任务(TSK)的优先级为1(最低)-(最高)。,40,第5次作业,6.1 16位定点数0xD000,分别计算该数Q15和Q0十进制数的大小。 答:0xD000=1101 0000 0000 0000B Q15:-20+2-1+2-3=-1+0.5+0.125=-0.375 Q0:-215+214+212=-3*212=-3*4096=-12288,41,第5次作业,6.2 已知x=

29、0.4567,试将该数转换为Q15定点数(考虑舍入和不舍入两种情况)。 答:0.4567*32768=14965.1456 舍入 14965(十进制)或0x3A75(十六进制) 不舍入 14965(十进制)或0x3A75(十六进制),42,第5次作业,6.3 采用完整的TMS320C55x DSP 的C语言实现N点Q15 定标的余弦波信号产生函数。要求信号采样频率为44100Hz,包含2400Hz、16000Hz 两种频率成份,幅度均为0.48。 解:C语言编程实现如下: #include #define T1/44100 /0.0000226757 #define f1 2400 #defi

30、ne f216000 #define PI 3.1415926,43,#define two_pi _f1_T (2*PI*f1*T) /*2*pi*f1/Fs*/ #define two_pi_f2_T (2*PI*f2*T) /*2*pi*f2/Fs*/ void signal_gen(int *x,int N) float temp; int i; for (i=0;iN;i+) temp=0.48*cos(float)two_pi_f1_T*i); temp+=0.48*cos(float)two_pi_f2_T*i); Xi=(int)(0x8000*temp)+0.5); ,44,

31、第6次作业,6.4 用C55x汇编语言实现C可调用块实现FIR滤波器函数 void fir(int * in, unsigned int M, int *h, unsigned int L, int * out, int *x ); 函数参数 in: 滤波器输入数据指针 M :输入抽样数 h : FIR系数指针 L: FIR滤波器阶数 out: 输出指针 x:信号缓冲指针,45,第6次作业,6.5 请给出调用C55x DSPLIB所需用的.h文件和.lib文件。 答:所需包含头文件名 dxpib.h 所需的需链接的库文件名为55xdsp.lib(小模式)或55xdspx.lib(大模式),46

32、,第6次作业,7.1 分析下列ICETEK-VC5509-A 评估板 C语言时钟初始化函数代码,请在语句后注释。 ICETEK-VC5509-A 评估板 TMS320VC5509的CLKIN 焊接的晶振为12MHz,请计算执行此函数后评估板的主频。 答:void CLK_init()/定义无参数时钟初始化函数CLK_int,返回值类型viod ioport unsigned int *clkmd/定义指向I/O空间unsigned int 变量指针变量cldmd clkmd=(unsigned int *)0x1c00; /定义一个指向元符号整数的指针clkmd,47,第6次作业,*clkmd

33、 =0x2fb3 /将时钟模式寄存器附值0x2fb3 for(int i=0; i10; i+); /循环,时间等待 for(int i=*clkmd i=*clkmd&1)/时间等待直到时钟发生器的锁定 计算:0x2+b3 即0010 1111 1011 0011b (b为二进制) PUL MULT(11-7)=31 PLLPIV(6-5)=1 fout=31/(1+1) 12MHz=186MHz,48,第6次作业,7.2 分析下列ICETEK-VC5509-A 评估板 C语言I2C总线写函数代码,请在每一语句后对其功能进行注释。 void I2C_Write(unsigned short

34、int device, int count, / )/定义在参I2C写函数I2C_Write,参数为device,count和; unsigned char *bytedata /bytedata,返回值为void PC55XX_I2C pI2C = (PC55XX_I2C)C55XX_I2C_ADDR; /定义结构体指针变量pI2C, pI2C值赋为= (PC55XX_I2C)C55XX_I2C_ADDR int i; /定义整型变量 i,49,第6次作业,Write(pI2C - iccnt, count);/将待写字节数count写入I2C数据计数寄存器 WriteMask(pI2C -

35、 icsar, device, ICSAR_MASK_7);/将设备地址写入I2C从地址寄存器 WriteMask(pI2C - icmdr, ICMDR_STT | ICMDR_STP | ICMDR_TRX, ICMDR_STT | ICMDR_STP | ICMDR_TRX); for (i = 0; i icdxr, bytedatai);/将第i个字节写入I2C数据发送器 while(!(pI2C - icstr /循环查询I2C状态寄存器中的XRDY位,直到RXDY位为1 ,50,7.3 McBSP的寄存器主要包括哪三 部分? 答:数据的接收和发送寄存器 McBSP控制寄存器 多通道控制寄存器,51,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1