西工大DSP大作业
西工大DSP大作业

西工大DSRt作业实验1基于CCS的简单的定点DSF程序一、实验要求1、自行安装CCS3.3版本,配置和运行CCS2、熟悉CCS开发环境,访问读写DSP勺寄存器AC0-AC3 AR0-AR7,PC, T0-T33、结合C5510的存储器空间分配,访问DSR的内部RAM4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.65、采用定点DSP进行计算,确定每个操作数的定点表示方法,最后结果的定点表示方法,并验证结果6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件二、实验原理DSP芯片的定点运算---Q格式(转)2008-09-03 15:47 DSP 芯片的定点运算1. 数据的溢出:1>溢出分类:上溢(oveflow ): 下溢(underflow )2>溢出的结果:Max MinMin Max un sig ned char 0 255 sig ned char -128 127 un sig nedint 0 65535 signed int -32768 32767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:signed int : 32767+1 = —32768 ; -32768-1 = 32767 unsigned char : 255+1 = 0; 0-1 = 2553>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。
当发生溢出时,自动将结果设置为最大值或最小值。
2. 定点处理器对浮点数的处理:1>定义变量为浮点型(float , double ),用C语言抹平定点处理器和浮点处理器2>放大若干倍表示小数。
比如要表示精度为0.01的变量,放大100倍去运算,3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。
Q0 :小数点在第0位的后面,即我们一般采用的方法Q15 小数点在第15位的后面,0~ 14位都是小数位。
西电DSP大作业报告

DSP实验课程序设计报告学院:电子工程学院学号:1202121013:海霞指导教师:苏涛DSP 实验课大作业设计一 实验目的在DSP 上实现线性调频信号的脉冲压缩、动目标显示(MTI )和动目标检测(MTD),并将结果与MATLAB 上的结果进行误差仿真。
二 实验容2.1 MATLAB 仿真设定带宽、脉宽、采样率、脉冲重复频率,用MATLAB 产生16个脉冲的LFM ,每个脉冲有4个目标(静止,低速,高速),依次做2.1.1 脉压2.1.2 相邻2脉冲做MTI ,产生15个脉冲2.1.3 16个脉冲到齐后,做MTD ,输出16个多普勒通道 2.2 DSP 实现将MATLAB 产生的信号,在visual dsp 中做脉压,MTI 、MTD ,并将结果与MATLAB 作比较。
三 实验原理3.1 线性调频线性调频脉冲压缩体制的发射信号其载频在脉冲宽度按线性规律变化即用对载频进行调制(线性调频)的方法展宽发射信号的频谱,在大时宽的前提下扩展了信号的带宽。
若线性调频信号中心频率为0f ,脉宽为τ,带宽为B ,幅度为A ,μ为调频斜率,则其表达式如下:]212cos[)()(20t t f t rect A t x μπτ+••=;)(为矩形函数rect在相参雷达中,线性调频信号可以用复数形式表示,即)]212(exp[)()(20t t f j t rect A t x μπτ+••=在脉冲宽度,信号的角频率由220μτπ-f 变化到220μτπ+f 。
3.2 脉冲压缩原理脉冲雷达信号发射时,脉冲宽度τ决定着雷达的发射能量,发射能量越大,作用距离越远;在传统的脉冲雷达信号中,脉冲宽度同时还决定着信号的频率宽度B ,即带宽与时宽是一种近似倒数的关系。
脉冲越宽,频域带宽越窄,距离分辨率越低。
脉冲压缩的主要目的是为了解决信号的作用距离和信号的距离分辨率之间的矛盾。
为了提高信号的作用距离,我们就需要提高信号的发射功率,因此,必须提高发射信号的脉冲宽度,而为了提高信号的距离分辨率,又要求降低信号的脉冲宽度。
西工大2020年4月《DSP原理及应用》作业机考参考答案

西工大2020年4月《DSP原理及应用》作业机考参考答案试卷总分:100 得分:92要答案:wangjiaofudao一、单选题(共30 道试题,共60 分)1.满足什么原理的系统是线性系统?A.叠加性原理B.可加性原理C.齐次性原理正确答案:A2.在IIR滤波器设计中,具有最好通带平坦性的模拟滤波器是:A.巴特沃斯滤波器B.切比雪夫滤波器C.椭圆滤波器正确答案:A3.已知LSI系统的差分方程为:,其收敛域为:A.<imgsrc="https:///fileroot/question/5bb49668-9121-4143-9a6c-6d2ba4224c7b/e3cc 70b9-0e88-42ea-8a09-9a28f50d3e9e.jpg"><br/>B.<imgsrc="https:///fileroot/question/5bb49668-9121-4143-9a6c-6d2ba4224c7b/8f62 9f53-13ab-43c7-ae6a-8337ea14b679.jpg"><br/>C.<imgsrc="https:///fileroot/question/5bb49668-9121-4143-9a6c-6d2ba4224c7b/ef62 1a37-3b57-4ff9-b636-a20652188c9d.jpg"><br/>正确答案:A4.时域的连续必然导致频域的。
A.周期化B.非周期化C.离散化正确答案:B5.在对连续信号进行频谱分析时,若采样率为,频谱分析范围是:A.<imgsrc="https:///fileroot/question/92e153da-fe08-437e-b702-2b9f19232215/20fa9 88a-09b6-40f2-a0c6-bb6c02e8e404.jpg"><br/>B.<imgsrc="https:///fileroot/question/92e153da-fe08-437e-b702-2b9f19232215/f9fd8 475-2101-4b50-aefe-fe5657985a41.jpg"><br/>C.<imgsrc="https:///fileroot/question/92e153da-fe08-437e-b702-2b9f19232215/595a d769-2404-4bbf-aa67-c927af8db0ea.jpg"><br/>正确答案:6.一个因果LSI离散系统,其输入为、输出为,系统的差分方程如下:,则系统的系统函数为:A.<imgsrc="https:///fileroot/question/4010312a-81f3-4e6c-abdd-f3c34683c389/61531 7e2-90ab-4629-9a56-721da25a76cc.jpg"><br/>B.<imgsrc="https:///fileroot/question/4010312a-81f3-4e6c-abdd-f3c34683c389/9f0f24 62-8c47-4c5b-b2a9-9df8297d4dfb.jpg"><br/>C.<imgsrc="https:///fileroot/question/4010312a-81f3-4e6c-abdd-f3c34683c389/9cc9a 99b-70e7-4603-8d31-6c99792f6ce6.jpg"><br/>正确答案:7.一个因果LSI离散系统,其输入为、输出为,系统的差分方程如下:,则系统是:A.不稳定B.稳定C.临界稳定正确答案:8.FIR数字滤波器具有线性相位的条件是:A.<imgsrc="https:///fileroot/question/3b2d3ed3-5afc-4143-9dca-92354ca86d58/fc7bb d6a-db32-4743-a6a1-4c72c54de8ee.jpg"><br/>B.<imgsrc="https:///fileroot/question/3b2d3ed3-5afc-4143-9dca-92354ca86d58/8cbe0 ed4-9d10-4eb8-b789-13503b1cb451.jpg"><br/>C.<imgsrc="https:///fileroot/question/3b2d3ed3-5afc-4143-9dca-92354ca86d58/57f61 44b-35ed-4f30-9bc6-87042e6d33a9.jpg"><br/>正确答案:9.FIR数字滤波器具有第一类线性相位的条件是:A.<imgsrc="https:///fileroot/question/cb66039e-fd31-4ada-aef6-acdcc6525d38/e31ce e2a-21bd-43e0-88aa-254d737d3caa.jpg"><br/>B.<imgsrc="https:///fileroot/question/cb66039e-fd31-4ada-aef6-acdcc6525d38/398cd b06-065a-4df1-b143-16f60d5c6cf1.jpg"><br/>C.<imgsrc="https:///fileroot/question/cb66039e-fd31-4ada-aef6-acdcc6525d38/265d5 95d-8741-4f30-a3e1-6e36a48d2d91.jpg"><br/>正确答案:10.两个有限长的复序列和,其长度分别为M 和N,设两序列的线性卷积为,序列的有效长度是:A.N+MB.N+M-1C.N+M+1正确答案:11.序列的N点DFT是的Z变换在的采样。
西北工业大学DSP实验(定点数据表示与处理实验)

西北工业大学DSP实验(定点数据表示与处理实验)实验名称定点数据表示与处理实验课程名称 DSP系统实验实验室名称水下电子信息与通信综合实验室姓名学号班级日期一、实验目的掌握数据的定点表示方法;理解数据的量化效应;掌握定点数的溢出、饱和对数据处理的影响;二、实验要求1(理解定点数量化、溢出与饱和的原理;2(建立工程并编写源程序;3(运行程序并观察、分析运行结果。
三、实验原理实验分成信号的量化、定点数的溢出与饱和两个相对独立的实验。
3.1 信号的量化通常模拟数字转换(A/D转换)是数字信号处理的第一步,模数转换在时间上将采样信号离散化,在幅度上对信号进行量化编码,量化将连续的幅度信息变换成了离散的幅度信息。
幅度的离散化,即量化会产生误差,误差的大小与位数有关,即位数越高,误差越小;而位数越小,误差越大。
信号的量化实验首先产生一个16位的正弦波信号,然后依次屏蔽掉信号的低4为、8为和10位,构成可以与16位数据在幅度上可以比拟的12为、8为和6为数据,从而模拟16位、12位、8位和6位量化编码的过程,比较不同位数量化编码的效果。
3.2 定点数的溢出与饱和定点数可以表示的数值范围与数据的位数有关,与浮点数相比,定点数可以表示的数值范围要小得多。
定点数运算式,如果运算值超过了可以表示的最大值,会发生数据的溢出。
在运算中溢出会造成很大的误差,应尽量避免。
DSP处理器一般都有饱和模式。
在饱和模式下,溢出数据用带有正确符号的最大值填充,相当于对运算结果进行了限幅,使结果不会超出数值的表示范围。
定点数的溢出与饱和实验中,让DSP 分别在非饱和模式和饱和模式下对两组数据进行处理,说明溢出、饱和的情况。
一组数据种是将一个数反复的加上一个常数,这个数的数值会不断增加,当大到超过16位定点数的表示范围时,会发生溢出,观察非饱和模式与饱和模式的差别。
另一组数据是16位的正弦波,将正弦波数据乘上一个常数,当正弦波的数值大时,乘上常数会超过16位定点数的表示范围,而发生溢出,观察非饱和模式与饱和模式的差别。
DSP大作业-设计需求

数字信号处理大作业作业内容:在有线电话拨号时,电话机根据当前所拨号码的不同产生不同频率组的电路信号,从而被另一端的交换机所识别,根据每个顺序识别的号码进行预先定义好的线路交换操作。
拨号产生的信号即双音多频信号。
双音多频DTMF(Dual Tone Multi Frequency),由高频群和低频群组成,高低频群各包含4个频率。
一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。
DTMF 信号有16个编码。
交换机中根据电路的此类双频信号识别用户的播号。
DTMF的具体频率配置如下图所示:本实验要求大家利用FFT或其他高效算法,对给定音频文件中的双音多频信号进行识别:(1)下载附件包中的附件1里有10个长度不一的音频文件,利用Matlab编程对这10个文件进行读取、频谱分析,最后给出10个文件所对应的真实数字。
(2)利用C/C++语言自编程序(禁止使用现成的DSP算法库),完成(1)中的要求。
(3)下载附件包中的附件2里有一个长音频文件,文件中包含了一串DTMF信号,每个双音多频信号之间的时间间隔不一,C/C++语言自编程序(禁止使用现成的DSP算法库),对本串DTMF信号进行识别。
注:禁止手动找出长音频中将存在信号的位置,然后分别处理。
作业说明:(1)附件包中为采样率为10kHz,16bit量化的wav音频文件;(2)第(2)、(3)小题利用C/C++语言编程实现时,若核心处理算法使用的现成的库函数,该问计0分;(3)对于第(3)小题使用C/C++语言编写实时算法、优化计算量、或使用其他效率更高算法的同学给予适当的加分;(4)鼓励创新。
对与具有创新性想法和内容的报告,只要想法合理均给予适当加分。
(5)实验报告中应充分体现出操作流程和分析过程,结果展示中注重使用图片及相应的注解;提交的代码须保证结构完整,并应进行详细注释以保证可读性;(6)作业应独立完成,杜绝抄袭。
实验报告或代码一经发现抄袭现象,无论抄袭者还是被抄者一律计0分。
西电DSP大作业任务报告

DSP实验课程序设计报告学院:电子工程学院学号:1202121013姓名:赵海霞指导教师:苏涛DSP实验课大作业设计一实验目的在DSP上实现线性调频信号的脉冲压缩、动目标显示(MTI)和动目标检测(MTD),并将结果与MATLAB上的结果进行误差仿真。
二实验内容2.1 MATLAB仿真设定带宽、脉宽、采样率、脉冲重复频率,用MATLAB产生16个脉冲的LFM,每个脉冲有4个目标(静止,低速,高速),依次做2.1.1 脉压2.1.2 相邻2脉冲做MTI,产生15个脉冲2.1.3 16个脉冲到齐后,做MTD,输出16个多普勒通道2.2 DSP实现将MATLAB产生的信号,在visual dsp中做脉压,MTI、MTD,并将结果与MATLAB作比较。
三实验原理3.1 线性调频线性调频脉冲压缩体制的发射信号其载频在脉冲宽度内按线性规律变化即用对载频进行调制(线性调频)的方法展宽发射信号的频谱,在大时宽的前提下扩展了信号的带宽。
若线性调频信号中心频率为f,脉宽为τ,带宽为B,幅度为A,μ为调频斜率,则其表达式如下:]212cos[)()(20t t f t rect A t x μπτ+••=;)(为矩形函数rect 在相参雷达中,线性调频信号可以用复数形式表示,即)]212(exp[)()(20t t f j t rect A t x μπτ+••= 在脉冲宽度内,信号的角频率由220μτπ-f 变化到220μτπ+f 。
3.2 脉冲压缩原理脉冲雷达信号发射时,脉冲宽度τ决定着雷达的发射能量,发射能量越大, 作用距离越远;在传统的脉冲雷达信号中,脉冲宽度同时还决定着信号的频率宽度B ,即带宽与时宽是一种近似倒数的关系。
脉冲越宽,频域带宽越窄,距离分辨率越低。
脉冲压缩的主要目的是为了解决信号的作用距离和信号的距离分辨率之间的矛盾。
为了提高信号的作用距离,我们就需要提高信号的发射功率,因此,必须提高发射信号的脉冲宽度,而为了提高信号的距离分辨率,又要求降低信号的脉冲宽度。
DSP设计报告大作业(10313226)

JIANGSU UNIVERSITY OF TECHNOLOGYD S P技术及应用综合训练大作业班级 10通信2W 姓名王超学号 10313226 指导老师倪福银吴全玉2013年12月目录序言---------------------------------------------------------------2第一章 DSP理论技术概述----------------------------------------3 1.1 课程设计目的与意义 --------------------------------------------3 1.2 DSP芯片的选择与封装 ------------------------------------------4 1.3 DSP系统设计的方法和步骤---------------------------------------4 1.4 DSP前沿技术与应用---------------------------------------------6第二章 DSP硬件部分设计---------------------------------------10 2.1 硬件设计任务概述----------------------------------------------10 2.2 总体方案设计--------------------------------------------------11 2.3 模块电路原理图设计--------------------------------------------13 2.4 硬件设计小结--------------------------------------------------18第三章 DSP软件部分设计----------------------------------------18 3.1 液晶屏幕字块控制设计------------------------------------------18 3.1.1 软件设计任务概述---------------------------------------------19 3.1.2 程序设计思路与算法原理---------------------------------------19 3.1.3 软件设计流程-------------------------------------------------21 3.1.4 设计程序编写-------------------------------------------------21 3.1.5软件设计结果与小结-------------------------------------------37 第四章小结-----------------------------------------------------38 参考文献--------------------------------------------------------错误!未定义书签。
西工大DSP第4章习题答案

习题与程序题一、填空:1.寻址方式是指寻找指令中(操作数地址)的方式。
TMS320LF2000汇编指令采用3种存储器寻址方式:(立即寻址方式)、(直接寻址方式)、(间接寻址方式)。
2.立即寻址方式分两种类型:(短立即寻址方式)和(长立即寻址方式)。
3.直接寻址方式的寻址对象是64K字的数据存储器,具体操作是将64K字的数据存储器分为(512)个数据页,每个数据页中包括(128字)单元。
4.间接寻址方式的寻址对象是64K字的数据存储器。
它是利用CPU内部8个16位的(辅助寄存器)(AR0~AR7)中任意一个辅助寄存器Rn的内容作为一个16位地址,来访问64K数据存储器中的任意单元。
5.汇编语言程序的语句除汇编指令以外,还可以由(伪指令)和(宏指令)组成。
6.一条源语句包含有4个有序的域,依次为:(标号域),(助记符域),(操作数域)和(注释域)。
7.一个完整的汇编文件应包含:(汇编源程序文件)、(头文件)、(命令文件)。
二、完成下列指令及注释:1. ⑴LDP #6 ;设置数据页为6(0300h~037Fh)ADD 5h,2 ;将0305h单元的内容左移2位;累加器,结果存入累加器指令执行前指令执行后dma:305h dma:305hC C⑵ADD *+,AR0 ;当前辅助寄存器AR4所指定的;器单元的内容加至累加器;当前辅助寄存器的内容加1;AR0设定为下一个辅助寄存器指令执行前指令执行后ARP ARPAR4 AR4dma:302h dma:302hC C2. 设OVM=0,ADDC *+,AR3 ;累加器结果正常;当前辅助寄存器AR0指定的数据存储单元15h;的内容与ACC和C的内容相加,结果存入CC;AR0的内容加1,指定AR3为下次辅助寄存器指令执行前指令执行后ARP ARPAR0 AR0dma:315h dma:315hC COV OV3. AND *- ;当前辅助寄存器AR2指定的数;的内容与ACC的低位字逻辑“;的低位字,ACC的高位字清零;AR1的内容减1指令执行前指令执行后ARP ARPAR1 AR1dma:315h dma:315hC C4. CALL 300h,*-,AR1 ;PC+2→TOS.程序存储器地址;入程序计数器(PC),并从该地;当前辅助寄存器的内容减1.;一个辅助寄存器指令执行前指令执行后5. CMPR 1 ;(当前AR)<(AR0)?,1表示指令执行前指令执行后6. LDP #0 ;(DP=0)LACL 60h ;60h单元的内;累加器的高16位填0指令执行前指令执行后dma:60h dma:60hACCC C7. LAR AR2,*+ ;将当前辅助寄存器所指的数据存;;容增1指令执行前指令执行后8. LST #1,0h ;(DP=4),ARB被装入新的A指令执行前指令执行后9.⑴NEG ;(OVM=1)OVM=1)累加器求负指令执行前指令执行后ACCC COV OV⑵NEG ;(OVM=0)指令执行前指令执行后ACCC COV OV10. POP ;PC增1.(TOS)→ACC(15:0);堆栈弹出一级指令执行前指令执行后C C堆栈11. PUSH ;PC;推一级.ACC(15:0)→TOS指令执行前指令执行后C C堆栈堆栈12.LDP #6SACL 29h,2 ;PC增1.(ACC)左移2位送入数据;存储单元329h处指令执行前指令执行后ACC ACCC C329h 329h13. SAR AR1,*- ;将AR1的内容存入当前辅;定的存储单元205h指令执行前指令执行后14. SBRK #8Eh ;当前辅助寄存器的值减去靠右对齐;正整数(无符号算术运算)指令执行前指令执行后15. SPLK #ABCDh,*+,AR1 ;将16位立即数ABCDh写入当前;所指定的数据存储单元320h.;当前辅助寄存器的内容增1;AR1被指定为下一个辅助寄存器指令执行前 指令执行后16. SUB *-,1,AR5 ;ACC 的内容减去当前辅助寄存器A;指定的数据存储单元02FEh 的内容;1位后的值(移位时高位填零), ;结果存入ACC 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 基于CCS的简单的定点DSP程序一、实验要求1、自行安装CCS3.3版本,配置和运行CCS2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3,ARO-AR7, PC, T0-T33、结合C5510的存储器空间分配,访问DSP的内部RAM4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.65、采用定点DSP进行计算,确定每个操作数的定点表示方法, 最后结果的定点表示方法,并验证结果6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件二、实验原理DSP芯片的定点运算---Q格式(转) 2008-09-03 15:47 DSP芯片的定点运算1.数据的溢出:1>溢出分类:上溢(overflow):下溢(underflow)2>溢出的结果:Max MinMin Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:signed int :32767+1=-32768;-32768-1=32767unsigned char:255+1=0;0-1=2553>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。
当发生溢出时,自动将结果设置为最大值或最小值。
2.定点处理器对浮点数的处理:1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区2>放大若干倍表示小数。
比如要表示精度为0.01的变量,放大100倍去运算,运算3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。
Q0:小数点在第0位的后面,即我们一般采用的方法Q15小数点在第15位的后面,0~14位都是小数位。
转化公式:Q=(int)(F×pow(2,q))F=(float)(Q×pow(2,-q))3.Q格式的运算1>定点加减法:须转换成相同的Q格式才能加减2>定点乘法:不同Q格式的数据相乘,相当于Q值相加3>定点除法:不同Q格式的数据相除,相当于Q值相减4>定点左移:左移相当于Q值增加5> 定点右移:右移相当于Q减少4.Q格式的应用格式实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。
所以要选择一个适当的定标格式才能更好的处理运算。
一般用如下两种方法:1>使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于2812的32位系统,使用Q15格式,可表示-65536.0~65535.999969482区间内的数据。
三、实验步骤1.双击,启动CCS的仿真平台的配着选项。
选择C5410 DeviceSimulator。
2.点击project菜单栏的new选项,新建一个LAB的工程注意存储的路径。
3.把下图中用到的文件拷到工程文件目录的文件路径下。
4.在ccs平台中将用到的程序导入到平台中,点击project—>add project。
选择多个文件时,可以按住ctrl键。
5.将程序中的start改为_main,INT_2改为_int_2。
然后点击保存。
源程序代码*************************************************** *** example.asm y=0.1*x1.2+35*20+15*x1.6 **************************************************** **.title “example.asm”;为汇编源程序取名.mmregs ;定义存储器映象寄存器STACK .usect “STACK”,10h ;分配10个单元的堆栈空间.bss a,4 ;为系数a分配4个单元的空间.bss x,4 ;为变量x分配4个单元的空间.bss y,1 ;为结果y 分配1个单元的空间.def _c_int00 ;定义标号_c_int00.data ;定义数据代码段table: .word 1,2,3,4 ;在标号table开始的8个单元中.word 8,6,4,2 ;为这8个单元赋初值.text ;定义文本代码段_c_int00 :STM #0,SWWSR ;软件等待状态寄存器置0,不设等待STM #STACK+10h,SP ;设置堆栈指针初值STM #a,AR1 ;AR1 指向a的地址RPT #7 ;从程序存储器向数据存储器MVPD table,*AR1+;重复传送8个数据CALL SUM ;调用SUM 实现乘法累加和的子程序end: B end ;循环等待SUM:STM #a,AR3 ;将系数a的地址赋给AR3 STM #x,AR4 ;将变量x的地址赋给AR3 RPTZ A,#3 ;将A清0,并重复执行下条指令4次MAC *AR3+,*AR4+,A ;执行乘法并累加,结果放在A中STL A,@y ;将A的低字内容送结果单元y RET ;结束子程序.end ;结束全部程序Map文件*********************************************************** ******************TMS320C55x COFF Linker PC Version 3.83*********************************************************** *******************>> Linked Mon May 31 11:03:33 2010OUTPUT : <lab4a.out>ENTRY POINT SYMBOL: "_main" address: 0000e000MEMORY CONFIGURATIONname origin length used attr fill----------------------------------------------------------- PAGE 0: EPROM 0000e000 00000100 0000001d RWIXvecs 0000ff80 00000004 00000000 RWIXPAGE 1: SPRAM 00000060 00000020 0000000b RWIXDARAM 00000080 00000100 0000001a RWIXSECTION ALLOCATION MAPoutput attributes/section page origin length input sections------------------------------------------------.text 0 0000e000 0000001d0000e000 0000001d LAB4A.obj (.text).bss 1 00000060 0000000b UNINITIALIZED四、心得体会经过这次实验,我更加熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3, ARO-AR7, PC, T0-T3 。
实验2 CCS下的FFT算法程序设计一、实验目的CCS下的FFT算法程序设计二、实验要求提供一个CCS下的C语言例程,在CCS下,仿照例程,任选雨中FIR滤波、IIR滤波、FFT算法,采用C语言完成代码的编写、编译、链接、下载和运行,输入数据,滤波器系数任选,并给出运算结果。
1)目的2)工程文件的构成,并附图3)打印源代码4)打印编译成功的信息5)打印map文件6)程序下载的截图过程三)运行结果三、实验步骤1、在ccs平台中将用到的程序导入到平台中,点击project—>add project。
选择多个文件时,可以按住ctrl键。
2.将所有的程序段中的start改为_main,将fft.Asm中的K_FFT_SIZE .set 32 ;NK_LOGN .set 5 ;LOG(N)改为K_FFT_SIZE .set 64 ;NK_LOGN .set 6 ;LOG(N)3、对源文件进行编译(注意先对每个.asm文件先进行编译,以防止程序有错误),没有错误时进行链接。
4.点击菜单 program。
装载.out文件四、实验结果五、源程序代码*********************************************************** ****** 函数原型:void FFT(struct compx *xin,int N) 函数功能:对输入的复数组进行快速傅里叶变换(FFT)输入参数:*xin复数结构体组的首地址指针,struct型*****************************************************************/ void FFT(struct compx *xin) { intf,m,nv2,nm1,i,k,l,j=0;struct compx u,w,t;nv2=FFT_N/2; //变址运算,即把自然顺序变成倒位序,采用雷德算法nm1=FFT_N-1;for(i=0;i<nm1;i++){ if(i<j) //如果i<j,即进行变址{ t=xin[j];xin[j]=xin[i];xin[i]=t; }k=nv2; //求j的下一个倒位序while(k<=j) //如果k<=j,表示j的最高位为1{j=j-k; //把最高位变成0k=k/2; //k/2,比较次高位,依次类推,逐个比较,直到某个位为0 }j=j+k; //把0改为1 } { int le,lei,ip; //FFT运算核,使用蝶形运算完成FFT运算f=FFT_N;for(l=1;(f=f/2)!=1;l++) //计算l的值,即计算蝶形级数 ;for(m=1;m<=l;m++) // 控制蝶形结级数{ //m表示第m级蝶形,l为蝶形级总数l=log(2)N le=2<<(m-1); //le 蝶形结距离,即第m级蝶形的蝶形结相距le点lei=le/2; //同一蝶形结中参加运算的两点的距离u.real=1.0; //u为蝶形结运算系数,初始值为1u.imag=0.0;w.real=cos(PI/lei); //w为系数商,即当前系数与前一个系数的商w.imag=-sin(PI/lei);for(j=0;j<=lei-1;j++) //控制计算不同种蝶形结,即计算系数不同的蝶形结{for(i=j;i<=FFT_N-1;i=i+le) //控制同一蝶形结运算,即计算系数相同蝶形结{ip=i+lei; //i,ip分别表示参加蝶形运算的两个节点t=EE(xin[ip],u); //蝶形运算,详见公式xin[ip].real=xin[i].real-t.real;xin[ip].imag=xin[i].imag-t.imag;xin[i].real=xin[i].real+t.real;xin[i].imag=xin[i].imag+t.imag;}u=EE(u,w); //改变系数,进行下一个蝶形运算}}}}Map文件******************************************************************************TMS320C55x COFF Linker PC Version 3.3 ******************************************************************************>> Linked Sat May 30 23:48:27 2015OUTPUT : <lab.out>ENTRY POINT SYMBOL: "_main" address: 0000e000 MEMORY CONFIGURATIONname origin length used attr fill---------------------- -------- --------- -------- ---- --------PAGE 0: EPROM 0000e000 00000100 00000019 RWIXPAGE 1: SPRAM 00000060 00000020 0000000a RWIXDARAM 00000080 00000100 00000000 RWIXSECTION ALLOCATION MAPoutput attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- .text 0 0000e000 000000120000e000 00000012 LAB2B.obj(.text).data 0 0000e012 000000050000e012 00000005 LAB2B.obj(.data).vectors 0 0000e017 000000020000e017 00000002 VECTORS.obj(.vectors).bss 1 00000060 0000000a UNINITIALIZED00000060 0000000a LAB2B.obj (.bss) GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Nameaddress name-------- ---- 00000060 .bss0000e012 .data 0000e000 .text 00000060 ___bss__ ffffffff ___cinit__ 0000e012 ___data__ 0000e017 ___edata__ 0000006a ___end__ 0000e012 ___etext__ ffffffff ___pinit__ 0000e000 ___text__ 00000000 __lflags UNDEFED _c_int00 0000e000 _main ffffffff cinit 0000e017 edata 0000006a end0000e012 etext ffffffff pinitGLOBAL SYMBOLS: SORTED BY Symbol Addressaddress name-------- ----00000000 __lflags00000060 ___bss__00000060 .bss0000006a ___end__0000006a end0000e000 .text0000e000 ___text__0000e000 _main0000e012 .data0000e012 etext0000e012 ___data__0000e012 ___etext__0000e017 edata0000e017 ___edata__ffffffff pinitffffffff ___pinit__ffffffff ___cinit__ffffffff cinitUNDEFED _c_int00[19 symbols]六、心得体会经过这次实验,我更加熟悉CCS开发环境,CCS下的C语言例程下的 FFT算法,采用C语言完成代码的编写、编译、链接、下载和运行的方法。