DSP简介

时间:2019-05-15 04:38:19下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《DSP简介》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《DSP简介》。

第一篇:DSP简介

DSP简介

1. 什么是DSP芯片

DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可以用来快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法。(2)程序和数据空间分开,可以同时访问指令和数据。

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。

(4)具有低开销或无开销循环及跳转的硬件支持。(5)快速的中断处理和硬件I/O支持。

(6)具有在单周期内操作的多个硬件地址产生器。(7)可以并行执行多个操作。

(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。2.DSP芯片的发展

世界上第一个单片DSP芯片是1978年AMI公司宣布的S2811,1979年美国Iintel公司发布的商用可编程期间2920是DSP芯片的一个主要里程碑。这两种芯片内部都没有现代DSP芯片所必须的单周期芯片。1980年。日本NEC公司推出的μPD7720是第一个具有乘法器的商用DSP 芯片。第一个采用CMOS工艺生产浮点DSP芯片的是日本的Hitachi 公司,它于1982年推出了浮点DSP芯片。1983年,日本的Fujitsu公司推出的MB8764,其指令周期为120ns,且具有双内部总线,从而处理的吞吐量发生了一个大的飞跃。而第一个高性能的浮点DSP芯片应是AT&T公司于1984年推出的DSP32。

在这么多的DSP芯片种类中,最成功的是美国德克萨斯仪器公司(Texas Instruments,简称TI)的一系列产品。TI公司灾982年成功推出启迪一代DSP芯片TMS32010及其系列产品TMS32011、TMS32C10/C14/C15/C16/C17等,之后相继推出了第二代DSP芯片TMS32020、TMS320C25/C26/C28,第三代DSP芯片TMS32C30/C31/C32,第四代DSP芯片TMS32C40/C44,第五代DSP芯片TMS32C50/C51/C52/C53以及集多个DSP于一体的高性能DSP芯片TMS32C80/C82等。

自1980年以来,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛。从运算速度来看,MAC(一次乘法和一次加法)时间已经从80年代初的400ns(如TMS32010)降低到40ns(如TMS32C40),处理能力提高了10多倍。DSP芯片内部关键的乘法器部件从1980年的占模区的40左右下降到5以下,片内RAM增加一个数量级以上。从制造工艺来看,1980年采用4μ的N沟道MOS工艺,而现在则普遍采用亚微米CMOS工艺。DSP芯片的引脚数量从1980年的最多64个增加到现在的200个以上,引脚数量的增加,意味着结构灵活性的增加。此外,DSP芯片的发展,是DSP系统的成本、体积、重量和功耗都有很大程度的下降。

3.DSP芯片的分类

DSP的芯片可以按照以下的三种方式进行分类。(1)按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。如果DSP芯片在某时钟频率范围内的任何频率上能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称之为静态DSP芯片。

如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称之为一致性的DSP芯片。(2)按数据格式分

这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称之为定点DSP芯片。以浮点格式工作的称为DSP芯片。不同的浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,有的DSP芯片则采用IEEE的标准浮点格式。(3)按用途分

按照DSP芯片的用途来分,可分为通用型DSP芯片和专用型的DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片。专用型DSP芯片市为特定的DSP运算而设计,更适合特殊的运算,如数字滤波,卷积和FFT等。4.DSP芯片的基本结构 DSP芯片的基本结构包括:

(1)哈佛结构。哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。

(2)流水线操作。流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。

(3)专用的硬件乘法器。乘法速度越快,DSP处理器的性能越高。由于具有专用的应用乘法器,乘法可在一个指令周期内完成。

(4)特殊的DSP指令。特殊的DSP指令DSP芯片是采用特殊的指令。

(5)快速的指令周期。快速的指令周期哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令再加上集成电路的优化设计可使DSP芯片的指令周期在200ns以下。

5.DSP系统的特点

数字信号处理系统是以数字信号处理为基础,因此具有数字处理的全部特点:

(1)接口方便。DSP系统与其它以现代数字技术为基础的系统或设备都是相互兼容,这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易的多。

(2)编程方便。DSP系统种的可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级。

(3)稳定性好。DSP系统以数字处理为基础,受环境温度以及噪声的影响较小,可靠性高。

(4)精度高。16位数字系统可以达到的精度。

(5)可重复性好。模拟系统的性能受元器件参数性能变化比较大,而数字系统基本上不受影响,因此数字系统便于测试,调试和大规模生产。(6)集成方便。DSP系统中的数字部件有高度的规范性,便于大规模集成。

6.DSP芯片的应用

现代数字信号处理器是执行高速数字信号处理的IC电路、它恰好适应多媒体信息化社会需求,迅速发展壮大。如今,世界电子器件市上,各种各样的DSP器件已相当丰富。大大小小封装形式的DSP器件,已广泛应用于各种产品的生产领域,而且DSP的应用领域仍在不断地扩大,发展迅速异常。(1)数字化移动电话

数字化移动电话尽管花样繁杂,但基本上可划为两大类:高速移动电话和低速移动电话。其中,高速移动电话顾名思义是在高速移动体里使用的电话,诸如可在飞机、轮船和汽车等里自由通话的电话。虽然数字化高速移动通过标准很多,但当今普遍应用的是欧洲GSM(GlobalSystemforMobileCommunication)标准。自从推出数字化蜂窝式电话机以来,现已遍布全球70多个国家广泛应用。俗称GSM标准的数字化蜂窝电话,叫作数字化大哥大,它具备国际漫游(Roaming)功能,SIMC(SubscriberIdentificationModuleCard)给用户带来使用大哥大的方便。现正在扩展数据通信服务能力以及它与ISDN系统兼容性,例如,英国BT公司的Cellnet部已经利用GSM提供数字化数据和传真服务,于是东芝笔记本电脑也安上了数字化的大哥大。

低速移动电话就其实质而论。它是数字化无绳电话,仍然保持模拟式无绳电话的子母式结构:子机亦称为手机,可以距母机为百米左右半径内的空间里自由步行移动情况下实现通话;母机也称为基地站,可作为家庭里的留守电话,也可悬挂在商店的墙壁上,街道的电线柱上,广为分布。由统一的交换设施进行管理,实现无缝交递(SeamlessHandOn)功能。这类低速移动电话式标准很多。例如,欧洲较为普遍应用的DECI(DigitalEuropeanCordlessTelecommunictaion),日本、韩国、东南亚应用的PHS(PersonalHandy-phoneSystem)以及Philips和我国联合开发的DCCT(DigitalChinaCordlessTelephone)。其中,尤以PHS和DECT制式低速移动电话发展较快,我国的DCCT由于缺乏关键性的DSP技术仍处于设计阶段。

数字化移动电话(包括高速和低速)的每个手机,都要用至少1个DSP器,因此,高速发展的数字化移动电话急需极为大量的DSP器件。(2)数据调制解调器

从所周知,数字信号处理器的传统应用领域之一,就是调制解调器。如今,调制解调器作为联系通信与多媒体信息处理系统的纽带,日益受到重视。特别是近年来Internet热潮,方兴未艾,普通百姓在Internet上冲浪蔚然成风。利用PC机通过调制解调器经由电话线路,实现拨号连接Internet已是最简便的访问形式。由于Internet用户急剧增加,一度致使28.8Kbps的调制解调器成为市场上的脱销产品。特别是由PC机上利用浏览程序调用活动图像信息时,期望使用数据传送速度更高的调制解调器。为适应这种新需求,国际上已制订出高速(33.6Kbps)调制解调器国际标准。这就意味,在高速调制解调器里需要更高性能的DSP器件。这种33.6Kbps的调制解调器(V.34)

是为传送数据而设计的,在此基础上发展出DSVD调制解调器,它既可传送数据又可传送声音。无疑,这样一来将需要更高功能的DSP器件。

随着高性能调制解调器不断出现,似乎低速的调制解调器如像V.17(14.4Kbps)再也没有用武之地。事实上,刚刚相反,如今信息家电抬头,例如PHS母机留守电话与个人FAX一体化的产品大量上市。这就是说,V.17(14.4Kbps)型的调制解调器仍有市场。于是,各种调制解调器里要求的DSP也是多种多样的。

(3)磁盘/光盘控制器需求

随着多媒体信息化的发展,各种信息存储媒体产品都应运而生,诸如磁盘存储器、CD-ROM和DVD(DigitalVersatileDisk)-ROM新产品纷纷上市。今日的磁盘驱动器HDD,存储容量已相当可观,大型HDD姑且不谈,就连普通PC机的HDD的存储容量已高在1GB以上,详见照片4。小型HDD向高密度、高存储容量和高速存取方向发展,其控制器必须具备高精度和高速响应特性,它所用的DSP性能也是今非昔比,高速DSP是必不可少的关键性器件。

日本的HDD技术不能超过美国,于是把主攻方向集中到光盘技术,在1996年日本第35届ElectronicsShow'96上,终于把DVD-ROM产品公布于众。而且,日本并不以此为满足,志在夺取可擦写的DVD-RAM。仅就DVD-ROM而论,单面1片12cm盘片记录4.7GB信息量,相当于直径12cm的软盘FD片3200张之多,比CD-ROM存储容量高出6倍。如此高密度的DVD-ROM,读出控制的精细程度可想而知。

HDD和光盘机的控制器里之所以必须利用高速DSP,主要是利用其高速“积和”处理能力。因为,盘片旋转控制、磁头定位控制和光盘中的激光束聚焦控制,都是采数字伺服与系统控制技术。这是现在控制技术,建立在数学模型基础之上。通过复杂的矩阵运算实现控制。没有高速运算的DSP,是绝对不行的。(4)图形图像处理需求

DVD里应用的活动图像压缩/解压缩用MPEG2编码/译码器,同时也广泛地应用于视频点播VOD、高品位有线电视和卫星广播等诸多领域。在这些领域里,应用的DSP应该具备更高的处理速度和功能。而且,活动图像压缩/解压技术也日新月异,例如,DCT变换域编码很难提高压缩比与重构图像质量,于是出现了对以视觉感知特性为指导的小波分析图像压缩方法。新的算法出现,要求相应的高性能DSP。最近,日本各大学和高技术企业对于开发虚拟现实VR系统,投入相当力量,利用现代计算机图像学CG生成3维图形,迫切需要多个DSP并行处理系统。其中,系统里的结点DSP单元,要求采用与并行处理相适应的体系结构。

彩色静止图像压缩/解压,现在普遍应用JPEG标准,其核心算法也是离散余弦变换。JPEG编码/译码器的应用,除了数字化照像机之外,估计彩色打印机和彩色扫描器也将要应用。因此,对于普通DSP的用量,必将日益增长。

(5)汽车电子系统及其它应用领域

汽车电子系统日益兴旺发达起来,诸如装设红外线和毫米波雷达,将需用DSP进行分析。如今,汽车愈来愈多,防冲撞系统已成为研究热点。而且,利用摄像机拍摄的图像数据需要经过DSP处理,才能在驾驶系统里显示出来,供驾驶人员参考。

应用DSP的领域可以说是不胜枚举,电视会议系统里,也大量应用DSP器件。视听机器里也都应用DSP。随着科学技术的发展,将会出现许许多多的DSP新应用领域。

第二篇:DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的:

按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。实验步骤:

以演示实验一为例:

1. 使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;

2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStartsinewave”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;

3. 打开源文件exer3.asm,在注释行“set breakpoint in CCS!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;

4. 点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框

5. 双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;

6. 点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察

7. 点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:

心得体会:

通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。实验二 基本算数运算

2.1 实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来

实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法

和编程技巧。本实验的演示文件为exer1.out。

2.2 实验原理 定点 DSP 中的数据表示方法

C54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表

示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加

法),而ADDM 专用于立即数的加法。实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。实现 16 位定点整数乘法

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器

中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B 寄存器的高16 位。实现 16 位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意

整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)

相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可

得到16 位的结果。6 实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法

来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于

除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。实现 16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的

SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。

2.3 实验内容

本实验需要使用C54X 汇编语言实现加、减、乘、除的基本运算,并通过DES 的存 贮器显示窗口观察结果。1 编写实验程序代码 用 ccs simulator 调试运行并观察结

2.4 实验结果

1、加法结果

2、乘法结果

3、减法结果

4、除

2.5 思考题(0.5、0.25)

实验三 C54X的浮点数的算术运

一、实验目的 练习TMS320C54X 汇编程序的编写与调试方法,重点练习C54X 程序流程控制的方法。学习并掌握应用 TMS320C54X 来进行浮点数的各种算术运算的算法实现。练习并掌握 TMS320C54X 的汇编语言的汇编指令系统的使用方法,重点练习具有C54X 特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。练习并掌握用 CCS 调试程序的一些基本操作。二.实验原理 1 浮点数的表示方法

在定点运算中,小数点是在一个特定的固定位置。例如,如果一个 32-bit 的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运

算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。3 浮点数运算的步骤

程序代码分成四个 ASM 文件输入,通过编译生成.obj 文件,连接生成.out 文件后就可以在DES320PP-U 实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:

a.首先启动 setup CCS C5000,在其中设置目前需要的CCS 的工作状态为C54xxsimulator,保存这一设置并退出。然后再启动CCS 实验系统软件CCS C5000。

b.在下拉菜单中选择“File”->“Load Program”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。

c.在下拉菜单中选择“View”->“CPU Registers”->“CPU Register”,可以看见在CCS 界面下部份会出现CPU 中的相关寄存器;选择“View”->“Memory…”,在弹出的“Memory Window Options”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个Data Memory 窗口,其中显示了从0x80h 开始的.bss 区。

d.在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop 的位置都可以加一个断点。

e.在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

f.当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0 以浮点数的格式放在内存区0x08a-0x08b 中,其值为4140h 和0000h。加数12.0 放在内存区0x08c-0x08d 中,其值也为4140h 和0000h。

g.再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量op1hm、op1lm 和op1se 的值在内存区0x084-0x086 中,分别为00c0h、0000h 和0082h。同样加数被格式转换后的变量op2se、op2hm 和op2lm的值在内存区0x087-0x089 中,分别为0082h、00c0h 和0000h。

h.再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign 和rltexp 的值在内存区0x080-0x083 中,其值分别为0040h、0000h、0180h 和0083h。

i.这时可以看到 A 寄存器中的值为AH=41c0h,AL=0000h 这就是最后的以浮点数的格式表示的结果值24(=12+12)。加法运算到此结束。

j.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的13.0 与12.0 进行减法运算的结果:AH=3f80h,AL=0000h。这是用浮点数格式表示的数1(=13-12)。减法运算的程序到此结束。

k.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与12.0 进行乘法运算的结果:AH=4310h,AL=0000h。这是用浮点数格式表示的数144(=12*12)。乘法运算的程序到此结束。

l.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与4.0 进行除法运算的结果:AH=4040h,AL=0000h。这是用浮点数格式表示的数3(=12/4)。至此加、减、乘、除四种运算都运行完毕。

m.如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在 CCS 的C54xx simulator 上调试观察实验结果

浮点加法断点一:

浮点加法断点二:

浮点加法断点三:

浮点减法

浮点数乘法

浮点数除法

四 心得体会

通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。实验四用定时器实现数字振荡器

实验四 用定时器实现数字振荡器

4.1 实验目的

在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。

4.2

本实验利用定时器产生一个 2kHz 的正弦信号。定时器被设置成每25uS 产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS 的图形显示功能查看波形。

4.3 实验原理 数字振荡器原理

sinkωT,其

z 变换为

H(z=

其中,A=2cosωT, B=-1, C=sinωT。设初始条件为0,求出上式的反Z 变换得:

y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2 C54X 的定时器操作

C54X 的片内定时器利用CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2 中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402 的另一个定时器(定时器1)的控制寄存器分别为:0x30

TIM1),0x31(PRD1),0x32(TCR1)。C54X 中断的使用

C54X 中用户可以通过中断屏蔽寄存器 IMR 来决定开放或关闭一个中断请求。图 4-1 给出了 C5402 的 IMR 寄存器的各个比特位的定义。

图 4-1 ‘C5402 的IMR 寄存器

其中,表示HPI 接口中断,INT3-INT0 为外部引脚产生的中断,TXINT 和TRINT 为TDM 串口的发送和接收中断,BXINT0 和BRINT0 BSP 串口的发送和接收中断,14

为定时器 0 中断。在中断屏蔽寄存器 IMR 中,1 表示允许 CPU 响应对应的中断,0 表示禁止。当然要 CPU 响应中断,INTM 还应该为 0(允许所有的中断)。

本实验的初始化程序读取中断向量表的启始地址,然后设置的高

DSP 能正确响应中断,代码如下:

ld #0,dp ;设置DP 页指针 ssbx intm ;关闭所有中断

ld #vector, a ;读出中断向(地址vector 在中断向量表程序中定义)

and #0FF80h, a ;保留高9 位(IPTR)andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

stlm a, pmst ;设置PMST(其中包括IPTR)

4.4 实验内容

C54X 汇编语言或C 语言实现数字振荡器,并通过CCS 提供的图形显示窗口观察出信号波形以及频谱。实验分下面几步完成: 根据确定数字振荡器的频率,确定系数。2 启动 CCS,新建工程文件。

选择 Project 菜单中的Options 选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择build options 项来修改或添加编译、连接中使用的参数。选择Linker Output Filename”栏中写入输出OUT 文件的名字,如sine.out,你还可以设置生成的MAP 文件名。4 完成编译、连接,正确生成OUT 文件。5 选 View→Graph→

5…打开图形显示设置窗口。在汇编源程序的中断服务程序(_tint)中的“nop”语句处设置断点。用右键单击图形显示窗口,并选择“Proporties”项以便修改显示属性。清除所有断点,关闭除波形显示窗口外的所有窗口,并关闭工程文件。完成编译、连接,正确生成OUT 文件。

10打开 C 源程序(timer.c)窗口,在中断服务程序(函数tint()的“con_buf=0

Start Address ”改为 buf ;“ Acquisition Buffer Size ”改为“ Display Data Size 128,“DSP DataType”为“32-bit floating point”

11选择 Debug→Animate,运行程序,观察输出波形。

第三篇:DSP实验报告

实验0 实验设备安装才CCS调试环境

实验目的:

按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。实验步骤:

以演示实验一为例:

1. 使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源; 2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStartsinewave”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;

3. 打开源文件exer3.asm,在注释行“set breakpoint in CCS!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示; 4. 点击主菜单“View->Graph->Time/Frequency„”,屏幕会出现图形窗口设置对话框

5. 双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;

6. 点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察

7. 点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:

心得体会:

通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

实验二 基本算数运算

2.1 实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来 实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法 和编程技巧。本实验的演示文件为exer1.out。

2.2 实验原理

1)定点 DSP 中的数据表示方法

C54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表

示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。

2)实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加 法),而ADDM 专用于立即数的加法。

3)实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。

4)实现 16 位定点整数乘法

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器 中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B 寄存器的高16 位。

5)实现 16 位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意 整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可 得到16 位的结果。

6)实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法 来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于 除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。

7)实现 16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的

SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。

2.3 实验内容

本实验需要使用C54X 汇编语言实现加、减、乘、除的基本运算,并通过DES 的存 贮器显示窗口观察结果。

1)编写实验程序代码

2)用 ccs simulator 调试运行并观察结

2.4 实验结果

1、加法结果

2、乘法结果

3、减法结果

4、除2.5 思考题(0.5、0.25)实验三 C54X的浮点数的算术运

一、实验目的

1)练习TMS320C54X 汇编程序的编写与调试方法,重点练习C54X 程序流程控制的方法。2)学习并掌握应用 TMS320C54X 来进行浮点数的各种算术运算的算法实现。

3)练习并掌握 TMS320C54X 的汇编语言的汇编指令系统的使用方法,重点练习具有C54X 特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。

4)练习并掌握用 CCS 调试程序的一些基本操作。

二.实验原理

1)浮点数的表示方法

在定点运算中,小数点是在一个特定的固定位置。例如,如果一个 32-bit 的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。

3)浮点数运算的步骤

程序代码分成四个 ASM 文件输入,通过编译生成.obj 文件,连接生成.out 文件后就可以在DES320PP-U 实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:

a.首先启动 setup CCS C5000,在其中设置目前需要的CCS 的工作状态为C54xxsimulator,保存这一设置并退出。然后再启动CCS 实验系统软件CCS C5000。

b.在下拉菜单中选择“File”->“Load Program”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。

c.在下拉菜单中选择“View”->“CPU Registers”->“CPU Register”,可以看见在CCS 界面下部份会出现CPU 中的相关寄存器;选择“View”->“Memory…”,在弹出的“Memory Window Options”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个Data Memory 窗口,其中显示了从0x80h 开始的.bss 区。

d.在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop 的位置都可以加一个断点。

e.在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

f.当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0 以浮点数的格式放在内存区0x08a-0x08b 中,其值为4140h 和0000h。加数12.0 放在内存区0x08c-0x08d 中,其值也为4140h 和0000h。g.再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量op1hm、op1lm 和op1se 的值在内存区0x084-0x086 中,分别为00c0h、0000h 和0082h。同样加数被格式转换后的变量op2se、op2hm 和op2lm的值在内存区0x087-0x089 中,分别为0082h、00c0h 和0000h。

h.再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign 和rltexp 的值在内存区0x080-0x083 中,其值分别为0040h、0000h、0180h 和0083h。

i.这时可以看到 A 寄存器中的值为AH=41c0h,AL=0000h 这就是最后的以浮点数的格式表示的结果值24(=12+12)。加法运算到此结束。

j.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的13.0 与12.0 进行减法运算的结果:AH=3f80h,AL=0000h。这是用浮点数格式表示的数1(=13-12)。减法运算的程序到此结束。

k.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与12.0 进行乘法运算的结果:AH=4310h,AL=0000h。这是用浮点数格式表示的数144(=12*12)。乘法运算的程序到此结束。

l.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与4.0 进行除法运算的结果:AH=4040h,AL=0000h。这是用浮点数格式表示的数3(=12/4)。至此加、减、乘、除四种运算都运行完毕。

m.如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在 CCS 的C54xx simulator 上调试观察实验结果

浮点加法断点一: 浮点加法断点二:

浮点加法断点三: 浮点减法

浮点数乘法 浮点数除法

四 心得体会

通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。实验四用定时器实现数字振荡器 实验四 用定时器实现数字振荡器

4.1 实验目的

在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。

4.2 实验要求

本实验利用定时器产生一个 2kHz 的正弦信号。定时器被设置成每25uS 产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS 的图形显示功能查看波形。

4.3 实验原理

1)数字振荡器原理

设一个传递函数为正弦序列 sinkωT,其z 变换为 H(z)=

其中,A=2cosωT, B=-1, C=sinωT。设初始条件为0,求出上式的反Z 变换得:

y[k]=Ay[k-1]+By[k-2]+Cx[k-1] 2)C54X 的定时器操作

C54X 的片内定时器利用CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2 中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402 的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。

3)C54X 中断的使用

在 C54X 中用户可以通过中断屏蔽寄存器IMR 来决定开放或关闭一个中断请求。图4-1 给出了C5402 的IMR 寄存器的各个比特位的定义。

图 4-1 ‘C5402 的IMR 寄存器

其中,HPINT 表示HPI 接口中断,INT3-INT0 为外部引脚产生的中断,TXINT 和TRINT 为TDM 串口的发送和接收中断,BXINT0 和BRINT0 为BSP 串口的发送和接收中断,TINT0 为定时器0 中断。在中断屏蔽寄存器IMR 中,1 表示允许CPU 响应对应的中断,0 表示禁止。当然要CPU 响应中断,ST1 寄存器中的INTM 还应该为0(允许所有的中断)。

本实验的初始化程序读取中断向量表的启始地址,然后设置PMST 的高9 位,以便DSP 能正确响应中断,代码如下:

ld #0,dp ;设置DP 页指针 ssbx intm ;关闭所有中断 ld #vector, a ;读出中断向(地址vector 在中断向量表程序中定义)and #0FF80h, a ;保留高9 位(IPTR)andm #007Fh, pmst ;保留PMST 的低7 位 or pmst, a ;

stlm a, pmst ;设置PMST(其中包括IPTR)

4.4 实验内容

本实验需要使用 C54X 汇编语言或C 语言实现数字振荡器,并通过CCS 提供的图形显示窗口观察出信号波形以及频谱。实验分下面几步完成:

1)根据确定数字振荡器的频率,确定系数。2)启动 CCS,新建工程文件。

3)选择 Project 菜单中的Options 选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择build options 项来修改或添加编译、连接中使用的参数。选择Linker 窗口,在“Output Filename”栏中写入输出OUT 文件的名字,如sine.out,你还可以设置生成的MAP 文件名。

4)完成编译、连接,正确生成OUT 文件。

5)选 View→Graph→Time/Frequency„打开图形显示设置窗口。6)在汇编源程序的中断服务程序(_tint)中的“nop”语句处设置断点。7)用右键单击图形显示窗口,并选择“Proporties”项以便修改显示属性。8)清除所有断点,关闭除波形显示窗口外的所有窗口,并关闭工程文件。9)完成编译、连接,正确生成OUT 文件。

10)打开 C 源程序(timer.c)窗口,在中断服务程序(函数tint())的“con_buf=0;”语句处增加一个断点。同样打开图形显示窗口,并将“Start Address”改为buf;“Acquisition Buffer Size”改为“Display Data Size”改为128,“DSP DataType”为“32-bit floating point”

11)选择 Debug→Animate,运行程序,观察输出波形。

第四篇:dsp报告

第一章、基本算术运算.....................................1 1.1、实验目的和要求...................................1 1.2、实验原理.........................................1 1.3、实验内容.........................................2 第二章、C54X的汇编语言程序设计...........................7 2.1、实验目的和要求...................................7 2.2、实验原理.........................................7 2.3、实验内容.........................................8 第三章、FFT算法的实现..................................13 3.1、实验目的和要求..................................13 3.2、实验原理........................................13 3.3、实验内容........................................14 第四章、ASK、PSK、FSK调制的实现........................16 4.1、实验目的........................................16 4.2、实验原理........................................16 4.3、实验内容........................................16 心得体会................................................20

0

第一章、基本算术运算

1.1、实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来 实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法 和编程技巧。

1.2、实验原理

(1)、定点 DSP 中的数据表示方法

54X 是16 位的定点DSP。一个16 位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示2,D1 位表示2,次高位(D14)表示2。如果表示一个有符号数时,最高位(D15)为符号位,0 表示正数,1 表示负 数。例如,07FFFH 表示最大的正数32767(十进制),而0FFFFH 表示最大的负数-1(负

数用2 的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位D15)表示符号位。这样次高位(D14)表示2,然后是2,最低位(D0)表示2301141215。所以 04000H 表示小数 0.5,01000H 表示小数2 = 0.125,而0001H 表示16 位定点(DSP 能表示的最小的小数(有符号)215 =0.***。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X 中,将一个小数用16 位定点格式来表示的方法是用2乘以该小数,然后取整。

从上面的分析可以看出,在DSP 中一个16 进制的数可以表示不同的十进制数,或 者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘 除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。(2)实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加 法),而ADDM 专用于立即数的加法。(3)实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。SUB 指令与ADD 指令一样,有许多的寻址方式。

(4)实现 16 位定点整数乘法 15 1

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器 中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B 寄存器的高16 位。有关乘法指令的详细使用说明请参考《TMS320C54X 实用教程》。在C54X 中,一般对数据的处理都当做有符号数,如果是无符号数乘时,要使用MPYU 指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。5)实现 16 位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意 整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可 得到16 位的结果。

(6)实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法 来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于 除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。下 面我们以temp1/temp2 为例,说明如何使用SUBC 指令实现整数除法。其中变量temp1为被除数,temp2 为除数,结果即商存放在变量temp3 中。在完成整数除法时,先判断

结果的符号。方法是将两数相乘,保存A 或B 的高16 位以便判断结果的符号。然后只 做两个正数的除法,最后修正结果的符号。为了实现两个数相除,先将被除数装入A 或 B 的低16 位,接着重复执行SUBC 指令,用除数重复减16 次后,除法运算的商在累加 器的低16 位,余数在高16 位。(7)实现 16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的 SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。这与整数除法正好相反。所以在执行SUBC 指令前,应将被 除数装入A 或B 寄存器的高16 位,而不是低16 位。其结果的格式与整数除法一样,A 或B 寄存器的高16 位为余数,低16 位为商。第二,与小数乘法一样,应考虑符号位对 结果小数点的影响。所以应对商右移一位,得到正确的有符号数。

1.3、实验内容

本实验需要使用C54X汇编语言实现加、减、乘、除的基本运算,并通过DES的存 贮器显示窗口观察结果。实验分两步完成:(1)编写实验程序代码

本实验的汇编源程序代码主要分为六个部分:加法、减法、整数乘法、小数乘法 整数除法和小数除法。每个部分后面都有一条需要加断点的标志语句:nop 当执行到这条加了断点的语句时,程序将自动暂停。这时你可以通过“存贮器窗口”检 查计算结果。当然你看到的结果都是十六进制的数。实验源程序请参见附录。(2)用ccs simulator调试运行并观察结果

在完成实验程序代码的输入,并使用ccs进行编译并连接,得到out文件后,就可 以在simulator 上调试运行。调试步骤如下:

a.启动ccs simulator。

b.点击file->load program,找到exer1.out(在产品光盘的codebase_operationdebug下)并装入。这时可在反汇编窗口看到程序代码。

c.打开“Memory”窗口,并在其中选择要查看的存贮器地址段:0x080-0x08e。

d.在反汇编窗口中在每个“nop”指令处都设一个断点,方法有两种:1.用鼠标双击该 指令将其点亮即可。2.在菜单栏中选择debugÆbreakpoint,然后在弹出的对话框中 键入欲加断点的地址即可(注意地址的格式)。e.单击Run快捷键(或者F5按钮),启动执行基本算术运算程序,程序在执行完加法 运算后自动暂停。通过register window窗口可以看到寄存器A的内容为0x46,这 正是加法运算的结果。(注意,若在硬件仿真器环境下调试,受DSP指令流水线的影响,断点处可能看不到A寄存器的变化。)同样,在Memory窗口中,可以看到0x81,0x82,0x88的内容为分别为0012,0034,0x46。执行加法运算后,将0x81和0x82的内容相加结果放在0x88单元。实验结果如下:

f.在Memory窗口中用鼠标左键双击0x81单元,这时可以修改该内存单元的内容。输 入新的数据0x0ffee(十进制的-18),编辑内容时请直接输入FFEE(十六进制),然 后回车确认,便完成对0x81单元的修改。

g.在register window窗口中修改PC值,方法也是鼠标左键双击PC寄存器的内容,输入新的PC值0x1085(编辑内容时直接输入1805),并用回车键确认。h.单击Run快捷键(或者F5按钮),程序从当前PC继续运行,重新计算0x81和0x82 的和,结果在0x88中。当程序再次暂停时,可以看到A寄存器和0x88的内容为0x22(十进制的34),这正是我们希望的结果:-18+52=34。实验结果如下:

i.单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成减法运算。当程 序再次暂停时(断点位于0x1093),可以看到0x83和0x84单元的内容分别为FFEE 和0012,B寄存器的内容为ffdc0000,而0x89的内容为0xffdc(十进制-36),这正

是我们希望的结果:-18-18=-36。注意,该减法操作使用了辅助寄存器寻址,所以计算结果在B寄存器的高16位。是实验结果如下:

j.单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成整数乘法运算。当程序再次暂时(断点位于0x109d),可以看到0x81和0x82单元的内容分别为0012和0034,A寄存器的内容为000003A8,这正是我们希望的结果:18*52=936(0x3a8)。这时我们可以用1个16位的内容单元来保存结果,如将A寄存器的低16位存入0x8b单元。实验结果如下:

但如果将0x81的内容修改为0x2000(十进制的8192),在register window中将PC修改为1098,然后继续运行,重新计算乘法。当程序完成乘法暂停时,可以看到A寄存器的内容为00068000,这也是一个正确的结果:8192*52=425984(0x68000)。此时将无法用一个16位的存贮单元来保存A寄存器中的结果。

实验结果如下:

k.单击Run快捷键或者(F5按钮),程序从当前PC继续运行,完成小数乘法运算。当程序再次暂停时(断点位于0x10A6),可以看到0x83和0x84单元的内容分别为4000和b548,A寄存器的内容为40000000,乘法的结果在B寄存器中为daa40000,这正是我们希望的结果:0.5*(-0.58374)=-0.29187(0x0daa4)。对于小数乘法,一般情况都可以用1个16位的内容单元将B寄存器的高16保存(如存入0x8c单元)。实验结果如下:

l.单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成整数除法运算。当程序再次暂时(断点位于0x10bb),可以看到0x81,0x82,0x8d和0x8e单元的内容分别为0034,0012,FFFE 和0010,这正是我们希望的结果:52 除以-18,商为-2(0xfffe),余数为16(0x10)。

m.单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成小数除法运算。当程序再次暂停时(断点位于0x10d2),可以看到0x81,0x82和0x8f单元的内容分别为4000,4ab8和6da3,这正是我们希望的结果:0.5/0.58374=0.8565457(0x6da3)。实验结果如下:

n.如果以上程序运行不正确,请检查代码是否输入正确,还可以在源代码中插入断点 调试,注意对中间结果的观察。思考题 :

(1)在减法操作中使用了辅助寄存器ar2,ar3,请说明在执行完减法计算后辅助寄存器 ar2和ar3的值为多少?

结果如下:

(2)在小数乘法中使用了置FRCT标志为1的指令。如果将该语句取消,那么B寄存器的结果是多少?想想什么时候应该设置FRCT标志? 结果如下:

取消之前:

取消之后:

(3)如何实现无符号数的乘法?

答:输入指令MPYU Smem,dst,输出结果为uns(T)*uns(Smem)(4)

请利用本实验程序计算以下算式的结果

①、0.25*0.58374

②、0.25/0.5

③、4653/345

④、0.789687/0.876

第二章、C54X的汇编语言程序设计

2.1、实验目的和要求

汇编语言程序设计是应用软件的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。本届实训我们将采用汇编语言指令、汇编伪指令、宏伪指令和规定的数字与字符来完成实验。通过实验帮助我们对汇编语言的理解和运用。

2.2、实验原理

1、汇编语言源程序由.asm为扩展名,可以用任意的编辑器编写源代码。源文件格式中助记符指令源语句的每行通常包含4个部分:标记区、助记符区、操作数区和注释区。

2、汇编语言中的常数与字符串

汇编器支持8种类型的常数:①二进制整数;②八进制整数;③十进制整数;④十六进制整数;⑤浮点数;⑥汇编时间常数;⑦字符常数;⑧字符串

3、汇编源程序中的符号用于标号、常数和替代字符。符号名最多可长达200个字符,由字母、数字以及下划线和美元符号等组成。

4、堆栈的使用方法

当程序调用中断服务程序或子程序时,需要将程序计数器PC的值和一些重要的寄存器值进行压栈保护,以便程序返回时能从间断处继续执行。

5、控制程序

TMS320C54x具有丰富的程序控制指令利用这些指令可以执行分支转移、子程序调用子程序返回、条件操作及循环操作等控制操作。控制程序包括:分支操作程序、循环操作程序。

6、算术运算程序

基本算术运算包括:加减法运算、乘法运算、除法运算、长字和并行运算。

7、实验中所需的“.cmd”文件如下: MEMORY { PAGE 0: EPROM: org=01000H len=01F80H VECS: org=0FF80H len=0004H PAGE 1: SPRAM: org=0060H len=0030H DARAM: org=0090H len=0200H } SECTIONS {.text :>EPROM PAGE 0.data :>EPROM PAGE 0.bss :>SPRAM PAGE 1 } 7

2.3、实验内容

1、计算z(xy)*8w

程序如下:

.title “mjj.asm”.mmregs STACK.usect “STACK”,10h.bss x,1.bss y,1.bss w,1.bss z,1.def _c_int00.data table:.word 6,7,9 _c_int00: 结果图如下:

start: STM #0,SWWSR

STM #STACK+10h,SP STM #x,AR1

MVPD table,*AR1+ LD @x,A ADD @y,A LD A,3 SUB @w,A STL A,@z.end

2、计算y

ax。iii14程序如下:

.title “jj.asm”.mmregs STACK.usect “STACK”,10h.bss a,4.bss x,4.bss y,1.def _c_int00.data table:.word 1,2,3,4.word 8,6,4,2.text _c_int00: start: STM #0,SWWSR 结果图如下:

STM #STACK+10h,SP STM #a,AR1 RPT #7

MVPD table,*AR1+ CALL SUM end: B end

SUM: STM #a,AR2 STM #x,AR3 RPTZ A,#3

MAC *AR2+,*AR3+,A STL A,@y RET.end

3、计算yax iii14程序如下:

.title “2xh.asm”.mmregs STACK.usect “STACK”,10H;a1=0.3 a2=0.2 a3=-0.4 a4=0.1;x1=0.6 x2=0.5 x3=-0.1 x4=-0.2.bss x,4.bss a,4.bss y,1.def _c_int00.data table:.word 3*32768/10.word 2*32768/10.word-4*32768/10

.word 1*32768/10

.word 6*32768/10

.word 5*32768/10 结果图如下:

.word-1*32768/10

.word-2*32768/10.text _c_int00:

start: SSBX FRCT STM #x,AR3

RPT #7

MVPD table,*AR3+

STM #x,AR4

STM #a,AR5 RPTZ A,#3

MAC *AR4+,*AR5+,A

STH A,@y end: B end.end

4、计算yx1*a1x2*a2 程序如下:

.title “cc.asm”.mmregs STACK.usect “STACK”,10h.bss x1,1.bss a1,1.bss x2,1.bss a2,1.bss y,1.def _c_int00.data table:.word 1,2,3,4 _c_int00: 结果图如下:

start: STM #0,SWWSR

STM #STACK+10h,SP STM #x1,AR1 MVPD table,*AR1+ LD @x1,T MPY @a1,B LD @x2,T MAC @a2,B STL B,@y STH B,@y+1.end 9

5、计算y

ax iii110.title “ cj.asm”.mmregs STACK.usect “STACK”,10h.bss a,10.bss x,10.bss y,1.def _c_int00.data table:.word 1,2,3,4,5,6,7,8,9,2.word 8,6,4,2,3,1,5,2,1,3.text _c_int00: start: STM #0,SWWSR

结果图如下:

STM #STACK+10h,SP STM #a,AR1 RPT #19

MVPD table,*AR1+ CALL SUM end: B end

SUM: STM #a,AR2 STM #x,AR3 RPTZ A,#9

MAC *AR2+,*AR3+,A STL A,@y RET.end

6、求一个数的绝对值 程序如下:

.title “jj.asm”.mmregs STACK.usect “STACK”,10h.bss x,1.def _c_int00.data table:.word-9.text _c_int00: start: STM #0,SWWSR 结果图如下:

STM #STACK+10h,SP STM #x,AR1 MVPD table,*AR1 LD *AR1,A BC end,AGT ABS A STL A,@x end: B end.end 10

7、aixi(i=1,2,3,4)找出最大值 程序如下:

.title “mm.asm”.mmregs STACK.usect “STACK”,10h.bss a,4.bss x,4.bss y,1.def _c_int00.data table:.word 1,2,3,4.word 6,4,5,3.text _c_int00: start: STM #0,SWWSR STM #STACK+10h,SP STM #2,AR4

结果图如下:

STM #a,AR1 RPT #7

MVPD table,*AR1+ STM #a,AR2 STM #x,AR3 LD *AR2+,T MPY *AR3+,A LOOP1: LD *AR2+,T MPY *AR3+,B MAX A STL A,@y

BANZ LOOP1,*AR4-end: B end.end

8、对一个数组进行初始化:x[8]={0,0,0,0,0,0,0,0}.程序如下:

.title “hh.asm” start: STM #0,SWWSR.mmregs STM #STACK+10h,SP STACK.usect “STACK”,10h STM #x,AR1.bss x,8 LD #0,A.def _c_int00 RPTZ A,#7.data STL A,*AR1+ table:.word 1,2,3,4,5,6,7,8 end: B end.text.end _c_int00: 结果图如下:

9、对数组X[8]中的每个元素加1.程序如下:

.title “hh.asm”.mmregs STACK.usect “STACK”,10h.bss x,8.def _c_int00.data table:.word 1,2,3,4,5,6,7,8.text _c_int00: start: STM #0,SWWSR STM #STACK+10h,SP STM #x,AR1 结果图如下:

RPT #7

MVPD table, *AR1+ LD #1,16,B STM #7,BRC STM #x,AR4 RPTB next-1

ADD *AR4,16,B,A STH A,*AR4+

next: LD #0,B end: B end.end

10、编写16348/512的程序段 程序如下:.title “mm.asm”.mmregs STACK.usect “STACK”,10h.bss num,1.bss den,1.bss quot,1.def _c_int00.def start.data table:.word 16384.word 512.text _c_int00: start: STM #0,SWWSR STM #STACK+10h,SP 结果图如下:

STM #num,AR1 RPT #1

MVPD table,*AR1+ LD @den,16,A MPYA @num ABS A

STH A,@den LD @num,A ABS A RPT #15 SUBC @den,A XC 1,BLT NEG A

STL A,@quot.end 12

第三章、FFT算法的实现

3.1、实验目的和要求

在数字信号处理系统中,FFT 作为一个非常重要的工具经常使用,甚至成为DSP 运 算能力的一个考核因素。FFT 是一种高效实现离散付氏变换的算法。离散付氏变换的目 的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由付氏逆 变换到时域。

本实验的目的在于学习FFT 算法,及其在TMS320C54X 上的实现,并通过编程掌握C54X的存储器管理、辅助寄存器的使用、位倒序寻址方式等技巧,同时练习使用CCS 的探针和图形工具。另外在BIOS 子目录下是一个使用DSP/BIOS 工具实现FFT 的程序。通过该程序,你可以使用DSP/BIOS 提供的分析工具评估FFT 代码执行情况。

3.2、实验原理

1、基 2 按时间抽取FFT 算法

对于有限长离散数字信号{x[n]},0 ≤ n ≤ N-1,其离散谱{x[k]}可以由离散付氏变换(DFT)求得。DFT 的定义为:X(K)N1n0x[n]en0nkNN1j(2)nkN K=0,1,.....N-1可以方便的把它改写为如下形式:X(K)x[n]W k=0,1,....,N-1不难看出,WN 是周期性(nmN)(kLN)nk的,且周期为N,即WN m,l=0,1,2....WN的周期性是DFT 的关WN键性质之一。为了强调起见,常用表达式WN取代W 以便明确其周期是N。

由 DFT 的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N 点DFT 需要(N1)2 次复数乘法和N(N-1)次加法。因此,对于一些相当大的N 值(如1024)来说,直接计算它的DFT 所作的计算量是很大的。FFT 的基本思想在于,将原有的N点序列分成两个较短的序列,这些序列的DFT 可以很简单的组合起来得到原序列的DFT。例如,若N 为偶数,将原有的N 点序列分成两个(N/2)点序列,那么计算N 点DFT 将只需要约

[(N/2)2 ·2]=N/2 次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT 所需要的乘法次数,而乘数2 代表必须完成两个DFT。

上述处理方法可以反复使用,即(N/2)点的DFT 计算也可以化成两个(N/4)点的DFT(假定N/2 为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT 运算的情况。

2、实数 FFT 运算

对于离散傅立叶变换(DFT)的数字计算,FFT 是一种有效的方法。一般假定输入序列是复数。当实际输入是实数时,利用对称性质可以使计算DFT 非常有效。一个优化的实数FFT 算法是一个组合以后的算法。原始的2N 个点的实输入序列组合成一个N 点的复序列,之后对复序列进行N 点的FFT 运算,最后再由N 点的复数输出拆散成2N 点的复数序列,这2N 点的复数序列与原始的2N 点的实数输入序列的DFT输出一致。使用这种方法,在组合输入和拆散输出的操作中,FFT 运算量减半。这样利用实数FFT算法来计算实输入序列的DFT 的速度几乎是一般复FFT 算法的两倍。本实验就用这种方法实现了一个256 点实数FFT(2N = 256)运算。

a.实数 FFT 运算序列的存储分配

如何利用有限的 DSP 系统资源,合理的安排好算法使用的存储器是一个比较重要的问题。b.基二实数 FFT 运算的算法

该算法主要分为四步:第一步,输入数据的组合和位倒序;第二步,N 点复数FFT;第三步,分离复数 FFT 的输出为奇部分和偶部分;第四步,产生最后的 N = 256 点的复数FFT 结果。

3、计算所求信号的功率

由于最后所得的 FFT 数据是一个复数,为了能够方便的在虚拟频谱仪上观察该信号的特征,我们通常对所得的FFT 数据进行处理取其实部和虚部的平方和,即求得该信号的功率。23.3、实验内容

本实验在CCS 下完成256 点的实数FFT,并通过CCS 的图形显示工具观察结果。

其主程序为初始化,并通过探针工具读入256 点方波数据(在文件fft.dat 中,该数据文 件可以通过程序fft_data.c 修改,但注意数据的绝对值不要超过0x23ff)。FFT 的实现由 四个子程序代码bit_rev、fft、unpack 和power 代码完成。实验可以分为以下几步:(1)启动 CCS,在Project 菜单选项中打开FFT 目录下的fft.pjt 文件。(2)用鼠标展开左面项目栏,打开 fft.asm 源程序。

(3)使用 Bulid 命令完成编译、连接,并使用Load Program 将生成的fft.out 装入5410 片内存储器。

(4)将光标移动到“call get_input”行,并设置一个探针点。将光标移动到下一行“nop”语句,使用工具设置一个断点。

(5)在 File 菜单中打开选项“File I/O”,使用“Add File”在FFT 目录下打开数据文件 fft.dat,然后修改“Address”参数为0x2300,修改“Length”参数为256。这表示程序执行到探针点时,将从fft.dat 文件中读出256 个数据,并将数据放入0x2300开始的存储器中。你可以选择“Wrap Around”,循环使用该数据文件。(6)选择“Add Probe Point”,将探针点与数据文件连接起来。选择探针点,然后在“Connect”选项中选择需要使用的数据文件名,再选择“Replace”,按确定键完成。可以看到“Probe”项被自动修改为“Connected”,表示探针已经与数据文件成功相连。

(7)完成探针设置后,可以使用F5 或“Run”命令启动程序运行。程序执行到探针点时

自动从数据文件读出256 个点的数据放入输入缓冲0x2300。(8)在“View”菜单项下选择“Graph-> Time/Frequency”,打开一个图形工具以便显示 输入数据波形。将“Start Address”改为0x2300,将“Acquisition Buffer Size”改为128,将“DSP Data Type”改为“16-bit signed integer”,这样即可显示128 个输入点波形。实验结果图如下:

(9)调整窗口显示大小,将光标移动到源程序的“b _c_int00”这行,使用Debug 中的 “Run to Cursor”项,程序将执行到这行并停下。这时FFT 程序已经计算完成。

再打开一个波形显示窗口,这次仅仅将“Start Address”改为0x2200,便可以显示计算 完成后的谱波形。

(10)选择“Debug”下的“Animate”运行程序,这时程序将循环运行,不断从数据文件 fft.dat 中读出数据,并计算其频谱。这时你可以看到连续的输入/输出波形。

(11)选择原始数据波形窗口,单击鼠标右键,进入“Properties”属性对话框。你可以将 “Display Type”改为“FFT Magnitude”,这时输入数据将显示其频谱。

思考题:

||SUB *AR2+0%,B

答:SACDD B,*AR2,#1

DST B,*AR1,LD *AR2+0%,16,B

SUB AR1,B(1)ST B,*AR3+

||LD *AR2,A 答:SACDD B,*AR3+,#1

LD *AR2,16,A

(2)ST B,*AR2(3)ST B,*PX+ ||MPY *QX+,A 答:SACCD B,*PX+,BNEQ

MPY *QX+,A

第四章、ASK、PSK、FSK调制的实现

4.1、实验目的

数字调制信号又称为键控信号,其调制过程是用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制。这种调制的最基本方法有三种:振幅键控(ASK)、相移键控(PSK)、频移键控(FSK)。本节实训将通过CCS软件来实现对ASK、PSK、FSK的调制,并掌握它们之间的联系与不同。

4.2、实验原理

1、FSK频移键控的基本原理:用数字基带信号来控制高频载波频率的变化,使载波的频率在f1和f2之间变化。二进制频移信号可以看成两个不同载波的二进制振幅键控信号的叠加。

2、PSK相移键控的基本原理:用数字调制信号的正负控制载波相位。当数字信号的振幅为正时载波起始相位取0;当数字信号的振幅为负时,载波起始相位取180度。相移键控抗干扰能力强,但在解调是需要有一个正确的参考相位,即需要相干解调。

3、ASK振幅键控的基本原理:是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程。

4.3、实验内容

1、FSK的实现

汇编语言程序:

.title“fsk_asm.asm”.global _fsk;定义为全局变量,提供给C调用.global _y1;C程序变量.global _y2;C程序变量.global _Pulse;C程序变量.global _FskSignal;C程序变量.mmregs.text _fsk: rsbx CPL stm #8-1,AR1;循环变量 256/32=8 stm #_y1, AR4

stm #_y2, AR2 stm #_Pulse, AR3 stm #_FskSignal, AR5 loop: ld *AR3, A bc freq500, AEQ;若原始数字信号为0,则调频信号为频率为500Hz的正弦波 sub #1, A bc freq1000, AEQ;若原始数字信号为1,则调频信号为频率为1000Hz的正弦波 fskend: addm #32, AR3 banz loop, *AR1-ret freq500: rpt #32-1 freq1000: rpt #32-1 mvdd *AR4+, *AR5+ mvdd *AR2+, *AR5+ addm #-32,AR4 addm #-32,AR2 b fskend b fskend.end C语言程序:

extern void fsk();// fc=(0x2000/0x10000)*fs=1000Hz, fs#include “C54MATH.H” 固定在8000 DATA x[256];} DATA y1[256];//正弦信号1 sine(x, y2, N);DATA y2[256];//正弦信号2 //原始信号 DATA Pulse[256];//被调信号 for(i=0;iGraph->Time/Frequency Graph,号

//按照当前文件夹内给出的图 for(i=0;i

{ for(;;){};x[i]=i*0x2000;} 结果图如下:

2、PSK的实现 程序如下:

extern void fsk();

#include “C54MATH.H” DATA x[256];DATA y1[256];

//正弦信号1 DATA y2[256];

//正弦信号2 DATA Pulse[256];//被调信号

DATA FskSignal[256];//2FSK调制信号 #define N 256 void main(){

int i,j;

//产生一个500Hz的正弦信号作为调制信号

for(i=0;i

x[i]=i*0x1000;

// fc=(0x1000/0x10000)*fs=500Hz, fs固定在8000

} sine(x, y1, N);//产生一个1000Hz的正弦信号作为调制信号

for(i=0;i

x[i]=-i*0x1000;

// fc=(0x2000/0x10000)*fs=1000Hz, fs固定在8000

实验结果图如下:

} sine(x, y2, N);//原始信号

for(i=0;i

{

j=i/32;

switch(j%2)

{

case 0:

Pulse[i]=0;

break;

case 1:

Pulse[i]=1;

break;

}

} fsk();//运行到此处后,打开View->Graph->Time/Frequency Graph,//按照当前文件夹内给出的图形属性设置,即可显示2FSK信号

for(;;){};

} 18

3、ASK的实现

extern void fsk();#include “C54MATH.H” DATA x[256];DATA y1[256];//正弦信号1 DATA y2[256];//正弦信号2 DATA Pulse[256];//被调信号

DATA FskSignal[256];//2FSK调制信号 #define N 256 void main(){ int i,j;//产生一个500Hz的正弦信号作为调制信号

for(i=0;i

case 0: y1[i]=0;break;}

} //产生一个1000Hz的正弦信号作为调制信号

for(i=0;i

实验结果图如下:

// fc=(0x2000/0x10000)*fs=1000Hz, fs固定在8000 }

sine(x, y2, N);//原始信号

for(i=0;i

j=i/32;

switch(j%2){

case 0: Pulse[i]=0;break;

case 1: Pulse[i]=1;break;} }

fsk();//运行到此处后,打开View->Graph->Time/Frequency Graph,//按照当前文件夹内给出的图形属性设置,即可显示2FSK信号

for(;;){};} 19

心得体会

为期两个星期的实训结束了,这两个周的实训让我收获颇多。在实训中我深深体会到了DSP技术及应用这门课的博大精深,里面包含的知识很多,紧靠平时的理论课程来理解是远远不够的。在理论课程中我们主要学习了TMS320C54x的硬件结构、它的指令系统,汇编语言程序的开发工具、汇编语言的程序设计还有应用程序设计等内容。这次实训的内容主要是基本算术运算、C54X算法的汇编语言程序设计、FFT算法的实现以及ASK、FSK、PSK调制的实现。

这次的实训课程说难也不是很难但说简单它也绝对不简单,看似简单是东西做起来就不一定了,在实验的过程中也出现不少的问题。因为之前没有接触过这个软件,所以在开始实验前我们是先对CCS软件进行了了解,再通过实际操作熟悉软件,然后再做实训内容。在这次实训中我学到了如何使用CCS软件来进行简单的运算,并且能通过该软件来查看实验结果和修改结果。我们还做了FFT算法的实现并且对ASK、FSK、PSK进行了简单的调制,调制过程中遇到了很多麻烦,比如图形出不来或是出现不规则图形等等的问题。但经过我们不懈的努力、重复的实验,在实验结果出来并且正确的时候我的心情是激动的。在实训过程中我们遇到了不少困难。因为对软件的不熟悉,导致不知道从什么地方查看结果,查看结果不正确也不知道该从哪修改,不过在老师耐心的讲解和同学的热心帮助下,我们还是顺利的完成了实训。

通过这次实训我收获了很多,也成长了很多,明白了理论联系实际的重要性,还知道了“团结就是力量”的真理,希望在以后的学习工作中我能将我所学到的知识发挥得淋漓尽致。最后感谢老师的谆谆教诲,没有您耐心的教导我们不可能这么顺利就完成任务。

第五篇:dsp作业

.c图

实验二

#define UINT unsigned int UINT i,*p,*n;void main(void){

p=(UINT *)0x0300;

for(i=0;i<20;i++)

{

if(*p==0x8888)

n=p;

p++;

} }.cmd图

MEMORY {

PAGE 0: PROG:

origin = 1a00h, length = 2580h

vectors: origin = 3f80h, length = 80h

PAGE 1: DATA:

origin = 0200h, length = 1800h }

SECTIONS {

.text

> PROG PAGE 0

.cinit > PROG PAGE 0

//.switch > PROG PAGE 0

vect

> vectors PAGE 0

.data

> DATA PAGE 1

.bss

> DATA PAGE 1

.const > DATA PAGE 1

.sysmem > DATA PAGE 1

.stack > DATA PAGE 1 } xf高低电平等时间循环变化截图如下所示:

找出由地址0x0300~0x0320中存储数据为0x8888的地址截图如下所示:

心得体会:

经过这次实验,理解了对地址0x0300~0x0320中存储数据为0x8888的寻找和设置。

下载DSP简介word格式文档
下载DSP简介.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    DSP课程设计

    TMS320C54x与PC通信系统的设计(单号) 一、设计目的 本次课程设计的目的是为了进一步提高学生的自我开发能力,培养学生的查阅资料,独立分析问题、解决问题以及实际动手的能力。也......

    dsp学习心得

    一. 我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开......

    DSP学习心得

    数字信号处理—DSP课程学习的认识 今年学习了DSP这门课程后,有了一些自己的认识和见解,并且体会到了它强大的功能和作用,它不但在高端的技术领域有很重要的地位,如通信、雷达、......

    DSP实验5

    实验五 FIR数字滤波器的设计(设计性实验) 实验名称:FIR数字滤波器的设计 实验项目性质:编程设计 所属课程名称:数字信号处理 计划学时:4 一、 实验目的 1. 掌握用窗函数法、频率采......

    正弦信号DSP(★)

    基于DSP的正弦信号发生器的设计 1、绪论 1.1 课题背景 数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年......

    DSP大作业

    无限冲激响应滤波器(IIR)算法 姓名:张晓 指导老师:陈恩庆 专业名称:通信 学号:20102460434 2014年3月18日 无限冲激响应滤波器(IIR)算法 摘要:21世纪是数字化的时代,随着信息处理技......

    dsp 期末作业

    Yibin University DSP期末学科设计报告 题 目 第五章5-18、5-19 院 别 物理与电子工程学院 专 业 电子信息科学与技术 学生姓名 梁 杰 学 号 110303038 班级 11 级 3 班 年1......

    DSP理论课总结

    GX_Joe 第一次课-----DSP概念 Q1:DSP的概念: DSP可以代表数字信号处理技术( Digital Signal Processing) ,也可以代表数字信号处理器( Digital Signal Processor)。 前者是理论和......