欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 心得体会>dsp心得体会

dsp心得体会

2023-01-09 08:11:42 收藏本文 下载本文

“年少有为”通过精心收集,向本站投稿了16篇dsp心得体会,下面是小编整理后的dsp心得体会,欢迎大家阅读分享借鉴,欢迎大家分享。

dsp心得体会

篇1:dsp心得体会

这个学期通过《对DSP芯片的原理与开发应用》课程的学习,对DSP芯片的概念、基本结构、开发工具、常用芯片的运用有了一定的了解和认识,下面分别谈谈自己的体会。

一,DSP芯片的概念

数字信号处理(Digital Signal Processing)是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、增强、滤波、估值、压缩、识别等处理,以得到符合人们需要的信号形式。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在通信、等诸多领域得到极为广泛的应用。

DSP(Digital Signal Process)芯片,即数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其应用主要是实时快速的实现各种数字信号处理算法。该芯片一般具有以下主要特点:

(1) 在一个指令周期内可完成一次乘法和一次加法;

(2) 程序与数据空间分开,可以同时访问指令和数据;

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

(4) 具有低开销或无开销循环及跳转的硬件支持;

(5) 快速的中断处理和硬件支持;

(6) 具有在单周期内操作的多个硬件地址产生器;

(7) 可以并行执行多个操作;

(8) 支持流水线操作,使取值、译码和执行等操作可以同时进行。

世界上第一个单片DSP芯片应当是1978年AMI公司发布的S2811,1979年美国INTEL

公司发布的商用可编程器件2920是DSP芯片的一个主要里程碑。这两种芯片内部都没有现代DSP芯片所必须有的单周期乘法器。1980年,日本NEC公司推出的uPD7720是第一个具有乘法器的商用DSP芯片。

当前,美国德州公司(TI),Motorola公司,模拟器件公司(AD),NEC公司,AT&T公司是DSP芯片主要生产商。

选择合适的DSP芯片,是设计DSP应用系统的一个非常重要的环节。一般来说,要综合考虑如下因素:(1),DSP芯片的运算速度;(2),DSP芯片的价格;

(3),DSP芯片的硬件资源;4),DSP芯片的运算精度;(5),DSP芯片的开发工具;(6),DSP芯片的功耗等等。

二,DSP芯片的基本结构。

TI公司的TMS320系列芯片的基本结构包括:

(1) 哈佛结构。哈佛结构是一种并行体系结构,主要特点是将程序和数

据存储在

不同的存储空间中,独立编址,独立访问。由于设立了程序总线和数据总线两条总线,从而使数据的吞吐量提高了一倍。为了进一步提高芯片性能,TMS320系列芯片允许数据存放在程序存储器中,并被算术运算指令直接使用;还把指令存储在高速缓冲器(Cache)中,减少从存储器中读取指令需要的时间。

(2) 流水线。DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。以三级流水线为例,取指,译码和执行操作可以独立的处理,在第N个指令取指时,前一个(N-1)个正在译码,而第N-2个指令则正在执行。

(3) 专用的硬件乘法器。TMS320系列芯片中,有专门的硬件乘法器,乘法可以在一个周期内完成。

(4) 特殊的DSP指令。比如LTD这条指令在一个指令周期内可以完成LT、DMOV和APAC三条指令。

(5) 快速的指令周期。DSP芯片的指令周期可以在200ns以下。TMS320系列芯片的指令周期已经降到了20ns以下。可以满足很多DSP应用的要求。

(三) 开发工具。

可编程DSP芯片的开发需要一整套完整的软硬件开发工具。通常开发工具可以分为代码生成工具和代码调试工具两类。代码生成工具是将用C或汇编语言编写的DSP程序编译汇编并链接成成可执行的DSP程序。代码调试程序是将DSP程序及系统进行调试,使之能达到设计目标。

就软件开发而言,用DSP芯片的汇编语言编写程序是一件比较繁杂的事情。因为不同公司不同类型的芯片的汇编语言都不尽相同。基于以上原因,各个公司都相继推出了高级语言(如C语言)编译器,使得DSP芯片的软件可以通过高级语言编写而成。

TI的优化C编译器能够产生可与手工编写的汇编语言相比的汇编语言程序,提供了简单的C执行时环境的程序接口,使得关键的DSP算法可用汇编语言实现建立了一定规模的工具库来方便使用。在C编译器中还提供了一个所谓的外壳程序(Shell),可以使C程序的编译、汇编和链接三个过程一次完成。

(四)关于TMS320C54X定点DSP芯片的设计使用。

TMS320C54X定点DSP芯片具有很高的性价比,体积小,功耗低,功能强,已在通信等许多领域得到广泛的应用。

该系列芯片大部分采用低电压供电方式,可以降低功耗,其电源分为两种,内核电源(CVdd)电源和I/O电源(DVdd)。与3.3V的供电相比,2.5V的内核电源可以降低44%的功耗;而I/O电源3.3V可以直接与外部低压器件接口,无需额外的电平转换电路。但是,由于现在很多外围芯片的工作电压都是5V,如EPROM、SRAM、模数转换芯片等,因此就要特别注意不同IC之间电平的转换。例如5V的TTL和3.3v的TTL器件之间只要耐压允许,电平可以通用;而5V的CMOS被3.3v的TTL驱动时,要加双电压(一边是3.3V供电,一边是5V供电)的驱动器。

TMS320C54X系列芯片有丰富的内部快速存储器,也可以扩展外部存储器。一般需要扩展EPROM/PROM,扩展时也要注意电平转换的问题。采用Flash存储器存储程序和固定数据是一种比较好的选择。

进行软件设计时,要注意以下一些问题:

(1) 流水线冲突。TMS320C54X采用了深度为6级的流水线操作,因此流水线冲突不可避免。一般在冲突发生时,由DSP自动插入延迟解决问题。但有些情况下DSP无法自动解决问题,需要程序员通过调整程序语句的次序或在程序中插入一定数量的NOP来解决。如果在调试程序中不能得到正确的结果,而又找不到程序错误时,就应该想到是否发生了流水线冲突,解决方法是在合适的位置插入一至几个NOP指令。

(2) 编译模式选择。在ST1状态寄存器中,有1位编译器模式控制位CPL。用于指示在相对直接寻址中采用哪种指针。为0是使用页指针DP,为1 时采用堆栈指针SP。注意模式切换时可能引起流水线冲突。

(3) 指令对存储器的要求。有些指令是对存储器是有特殊要求的,使用时要注意。

此外,在软件编程时还有一些技巧。比如要充分利用片内存储器,节省程序运行时从片外存储器读入程序或数据的时间;利用程序寻址空间,可以方便的寻址和执行更大规模的程序;利用两个内部累加器,可以有效的提高编程效率;利用ALU的分裂操作模式和CSSU单元可以加快运算速度;利用自动溢出保护功能和利用条件存储指令等等。

TMS320C54X系列芯片一般都在片内设置有BOOT程序,主要作用是在开机时将用户程序从外部装入到程序存储器。用户需要使用BOOT时,需要将DSP设置为微计算机工作方式。

除此之外,通过学习我还了解了如何用MATLAB进行DSP设计模拟,其他一些DSP芯片的大致结构和性能,以及具体的DSP应用开发方面的知识。在教员的悉心教导下,经过我的认真学习,对DSP应用方面的知识有了一个整体的了解,虽然还没有利用DSP芯片做过实际的东西,但我通过对该课的学习,为以后可能的设计应用打下了一定基础。

对于数字信号处理课程最初的料想是在学长和以前的任课老师那里听来的,据说这门课是跟随着信号系统的步伐,而且难度比较的大。

而至于滤波器就更加简单,只是根据频域的图像告诉我们,可以通过相乘得到这样的一部分我们所需要的频段。

对于连续型号我们可以很简单的从图像中看出来,那么数字信号呢?我们知道现实中模拟信号的传输是很麻烦的,而我们现在广泛采取的就是数字信号,那么同样的问题数字信号也是怎么解决的吗?

答案是显然的。那么既然不一样,我们可以做出数/模――模/数之间的转换是不是就可以了?转换之后,会不会添加或者减少了一些东西呢?

数字滤波器到底是怎么做出来的呢?实际的滤波器肯定不可能就是一个门函数,那么物理可实现的滤波器又是怎么样设计出来的呢?

还有关于调制解调严格的相干条件,如果频率有出路该怎么办,如果是倍频或是半频又该怎么办呢?

因为牵涉到离散的问题,原来很清晰的连续函数不再完全适用,那么我们应该怎么在信号系统后承接好数字信号处理这门课呢?

应该说这些问题是我在信号系统之后一直想的,也是在学习数字信号处理之前应该思考的。

让我释然的是李老师在第一节课时对这门课程作解释时的一句话,我到现在仍然记忆犹新。她说:很多学生看到这么多公式就感到害怕,但实际上我们不是要求大家单纯的去算这些式子。我们不是数学课,我们的要求其实是希望大家能够理解这些式子背后的物理含义。很多式子从数学推理上学很难,但是用物理的方法很简单的一看就明白了。而我们这门课大家就要学会从物理模型的角度去思考,很多问题就很容易就理解了。

从物理模型的角度去理解记忆这些公式,这是我对老师话的总结。在后续的课程中我也是这么做的。

但是我对这门课的心得还要再加上两句话:

(1) 拓展从信号系统中学到的知识,比较它与这门课的异同。

(2) 从物理模型的角度去理解记忆这些公式,或者是从自己的角度去理解,不要拘泥于老师和课本上的条条框框

(3) 重视matlab仿真实验,从图像中去加深理解。

对于这三句话我会在下面作解释。

首先,对于信号系统与数字信号处理的关系,只要是学过这两门课程的人都看的出来。我前面说过,在学习的开始就有人有意无意的提醒我这两门课程的关系。有先入为主的概念,几乎每个人在学习数字信号系统的时候都会有意无意的去比较这两门课程。

显然这是温故而知新,对这门课程是有帮助的。但是这种被动的比较,帮助很小,我们应该学会主动的去罗列他们的不同之处。比如说第三章Z 变换、Z 变换收敛域、Z 反变换、Z 变换的性质,虽然是离散的,在表示方式上与连续的有所不同,但是变换的实质是差不多的,所以很多性质往往可以与傅里叶变换性质一起记忆,甚至许多性质公式完全可以从傅里叶变换的性质中互推得到。又比如采样中,采样定理的原理是一样的,但是如连续时间信号的离散时间处理,或者离散时间信号的连续时间处理,将会导致一些不同,这归根结底在于离散信号与连续信号不同之处。

这些异同之处加以理解,甚至反过来,回头再看以前的课本,你会发现很多地方又加深了理解,以前的有些疑问也释然了。或许有人认为以前的课程已经结束了,过去的问题懂不懂无所谓。实际上,很多以前的东西是现在学习的基础,基础扎实了,在以后有可能就因为这个道理,触类旁通反而解决了后续的问题。

如此看来,不单单是信号系统,我们甚至可以与其他一些并行的课程一起理解,比如自动控制原理中的零极点图,和最小相位系统是一致的理论;通信原理中也有调制解调和编码的东西甚至滤波器的设计,虽然主要是考虑信噪比的计算,但是基本原理是一样的。

尽管这种比较可能对做题上没有什么很大的影响,但是了解整个过程,了解整个系统是怎么运作的就对整个系统由了深刻的理解。这样在物理模型层面上,就更明白这是为什么了。

这就为老师所说的,从物理模型的角度去理解记忆这些公式打下了基础。有很多章节,他的基础都是前几章的公式,或是正对后面章节实现的定义。刚开始看的时候,觉得没有道理,而且很简单的问题偏偏要用数学表达式去表示,很显然的推论,用数学语言描述之后就看不太明白了。

那么既然如此,我们也没必要一定要把那些数学表示方法背下来,完全可以通过其物理的现象去理解它。本来,你用什么语言去写,也不过是描述他罢了,没有必要舍本逐末,只要理解就好。比如全通系统,最小相位系统,线性相位系统,你可以用幅度和相角把每个都表示出来,也完全可以把图像记住了,那么一

切也都记住了。甚至如李老师上课说的,通过平面几何的方法,你可以得到和数学推理一样的结论,因为两者完全是一一对应的关系。你完全可以按照自己的理解来,只要言之有理,自圆其说就可以了。

如果你没有办法想出自己的方法,那么通过图像来理解是一种不错的选择。整门课程随时随地都充斥着各种图像,比起枯燥的数字,图像更具体的表达了它们的物理本质,也方便记忆。

篇2:dsp实习心得体会

如果说前几年DSP作为一个器件,一个处理器或一个事物是相对比较新的东西,那么现在DSP已经在我们电子设计开发中非常常见了。首先我们从定义上简单理解一下DSP。我们涉及到的DSP主要是只这里特指数字信号处理器芯片,这里我把我的一些学习经验和大家分享。希望对大家有帮助

了解DSP

我个人认为学习一个东西首先是了解它,比如DSP到底是什么?用在什么地方?怎么用?和这里我们传统的单片机特点有那些相同与不同?开发需要注意什么?怎么样完成一个最小系统等。我想了解清楚这些问题我们自然就清楚比较清楚的认识DSP了。下面我们就来对上面的问题我们在很多地方都可以找到答案,我把其中比较重要的简单的回答一下。

DSP大家注意和传统的概念区分一下,传统我们经常说的DSP(Digital Signal Processing(数字信号处理))的缩写也就是说是一些功能算法,这里的DSP是指(Digital Signal Process(数字信号处理器))的缩写,也就是说他是一个集成一些外设的一个芯片,类似我们的单片机。我们通过程序实现一些特定的功能。

和传统单片机比较的区别?

DSP功能比普通单片机高出很多,当然价格也比较高。所以直接用DSP和单片机比较是不合适的。我们这里比较不是从他的应用领域来比较,我们是从开发的角度来比较,为了是使那些熟练使用单片机的朋友可以很快上手。当然我的主要目的的大家可以比较学习,达到

熟悉一种CPU其他就可以很快上手。下面从几个方面比较一下

1,硬件上比较

从硬件上比较DSP和传统的单片机主要有几个方面不一样,很多DSP电源系统比传统的复杂,但是这个并不影响我们因为如TI的DSP都提供相关的测试电路。开始的时候大家可以完全按照他来设计。调试方式上有很大不同,DSP一般通过JTAG来进行仿真和烧写的,而单片机是通过直接仿真器来仿真的(这里讲的单片机是比较早的,现在的单片机也有很多采用JTAG调试方式)。其他设计比如重要的时序设计所以CPU系统是一样的只要满足时序就可以达到目标。

2,软件上比较

相比硬件软件应该是DSP差别比较大的DSP的软件需要CMD文件,一般的单片机编译器 编译以后就可以了不需要。并且CMD也是DSP学习过程中比较困难的一个方面。后面我们简单说明一下。

篇3:dsp实习心得体会

小系统的是任何DSP系统开发前必须要完成的,你可以从一下几个方面获得小系统。一、购买一个市场上比较成熟的小系统产品;二、自己动手设计一个小系统。我们这里主要告诉大家怎么自己设计一个最小系统。

首先我给最小系统一个定义,我按照我个人的习惯把最小系统分成2个方面

1,狭义的最小系统

所谓狭义最小系统是指就是能够完成一个独立功能,并且方便观察的一个系统。比如我们常见的通过DSP控制一个LCD灯让它闪起来。完成这个功能我们可以认为狭义的最小系统完成。

独立完成功能,我们很容易想到要一个系统能够独立完成功能必须需要的部分应该有电源电路、时钟电路、复位电路。这个和我们单片机基本一样只是在电路设计上注意看手册这个会少出错。其实对于一些DSP来说光是这样是不够的,我们必须要有存储器系统,如果是采用系统可以不需要扩展因为他内部自己有FLASH,但是对于5000系统来说就必须扩展非易失性的FLASH等存储器保证系统在掉电重新上电后可以正常工作,所以除了考虑通用单片机的3个方面我们还需要在存储器,BOOTLOADER方面了解DSP,这个也正是大家学习DSP比较困难的地方。

方便观察这个是我自己增加的一个方面,主要是让大家养成良好的习惯,比如我们在设计系统时加一个LED或者蜂鸣器这样在调试的时候会给我们带来很多好处。比如我们设计一个IO操作的程序通过IO输出一个方波,我们可以通过很多方法来观察我们的结果是对好是错。我们可以通过示波器,但是由于很多初学者不一定具备这个条件。如果我们有LED就可以通过他的状态来观察程序运行的结果.

2, 广义的最小系统

广义的最小系统除了具有上面狭义最小系统的功能外还必须具有一个功能可开展性。这个在系统设计中是非常重要的。如果说我们可以设计并完成一个狭义的最小系统就代表我们对DSP已经入门了。那么完成可扩展性功能就代表你可以使用DSP进行系统设计了。

可扩展性在这里我要主要讲的是时序,也就是我们设计的时候必须满足他的时序功能。经常在论坛里面看到大家问我的系统怎么扩展一个存储器或者其他外设。即使有一些参考电路我们怎么判断他的正确与否。这一点正好和我们的单片机系统重合。所以我常常说知道一个CPU怎么用要用一个新的就非常简单了。下面我们就谈谈时序设计需要注意的地方。

一、首先要熟悉主CPU的时序,也就是说你需要向外设写或者读取一个数据你是采用什么方法的。比如我们的DSP系统的数据手册就专门有一大段内容对外部程序空间、数据空间、IO空间访问的图和说明。

二、熟悉我们外设对时序的要求,这个很容易理解,你打算读写我总应该知道按照什么样的方法怎么读写吧。一般在手册上也是很清楚的。

三、当我们清楚DSP和外设的时序后我们来判断他们是不是匹配(简单点说就是可不可以实现数据的读写功能)如匹配电路设计就是正常的否则我们要想办法让他们匹配。其实这个过程就是电路设计和判断的过程。

关于时序的设计的详细说明几句话说不清楚我们可以在论坛上来一起讨论他是我们数字系统设计的核心。

四、软件最小系统,很多朋友在论坛上说没有一个具体的思路来写DSP程序或者直接是看不懂人家的。其实这些多少没有系统概念造成的。如果我们知道软件最小系统有那几个文件组成。他们主要完成什么功能我们在一个一个的理解和消化他这样不就可以很好的写出程序。比如我们DSP的一个软件系统主要有头文件、库函数、中断向量表、存储器分配文件(CMD)

篇4:dsp实验心得体会

1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。

2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。

3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中只能有一项。

4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。

5. 这次实验采用软件仿真,不需要打开电源箱的电源。

6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。

7. 执行write_buffer一行时。如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。

8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。

9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。

10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。

11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。

12. 通过这次实验,对TMS320F2812_ DSP软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对自身的提高更多吧。通过做实验,把学习的知识利用起来,也对这门课程更加有兴趣了。

dsp实验心得体会范文篇二

我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。

我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。由于方向所限对6_、8_系列没有接触。 我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。

其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-―系统功能划分―― 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。

其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281_不错但太贵,而且开发技术不成熟。

54__更像一个协处理器,其实高端产品5471就很好,功能完_,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。

现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB――C――ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。

最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。

dsp实验心得体会范文篇三

对DSP的真正深入是在公司工作以后。当初进公司,因为正有一个项目需要用5410要我接手。说实话,在学校期间我5000的书都没有看过一眼,可没办法,只能靠自己了。不过好的是我2000DSP的基础很好。接过项目后,我第一个星期就全部看的是5000的指令,DSP的结构倒没怎么看,因为项目硬件已成型,主要是算法。这样,花了一个星期熟悉指令与项目相关的程序,第二个星期也就开始编程了。

半个月以后我对5410也就用很熟了的,当然主要还是讲在算法方面。这个项目太概做了四个月吧,系统程序是我编写的,主要有如64位加减乘除乘方开方、及时域方面的一些算法。现在又做一个控制系统,用2407开发的,硬件主要有直交变频,并把2407的所有外设资源全部用到了。现在我可以这样自夸一句吧:TI的2000系列与5000系列的我都熟悉,要我去以此做个系统,没问题。上面是把我搞DSP的经历简单说了一下的吧,在这里我想对正在学及想学DSP的难兄们说一句的是,DSP并不是很难。

当然,这个前提是你的基础要好,我单片机,接口都还行,当初就是从单片机改成DSP的。有了单片机的基础再去学2000第列的DSP(下面的DSP单指2000系列,另有说明为止),你就可以把DSP看成一个super microcontroller了。相比之下,DSP除了比单片机多了更丰的外设接口(SPI,SCI、CAN、PWM、CAP、QEP等等),他就是一块单片机,只不过在单片机来说你要另加芯片的工作,DSP全部把它做在一块芯片去了,我现在看DSP也真就这么简单。前面有人提到DSP主要是做算法,这句话有一定的片面性: TI有很多系列的DSP,现在主流的DSP主要为2000系列、3000系列、4000系列、5000系列、6000系列。除了2000与5000系列是定点DSP外,其余的均为浮点系列。 TI的2000系列主要长处是在用于控制系统,因为它的资源非常丰富,前面提到,在控制系统中用到的一些外设2000系列均在片内集成了。 TI的5000系列主要长处是用于数字信号的算法处理,这里所讲算法处理主要是指在数字信号处理时的一些算法,如FIR、IIR、FFT等等。5000系列的DSP的速度比2000快,2407最快只能到40M,2800系列除外,5410的DSP可以达到160M,如现在我们主要用来做数字信号方面的处理以及简单的静态图像处理等这样一些在资源需要处于中等的一些算法。 TI的6000系列主要是用在实时图像处理,这个就更则重于算法处理。一般的硬件很少自制,我们是用TI的DSK板再加上自主板相结合。 三. 使用C/C++语言编写基于DSP程序的注意事项

1、不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进行绝对值运算,可以调用fabs或abs()函数,也可以使用if...else...判断语句来替代。

2、要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。

3、一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。其实中断向量表中的中断名是任意取定的,dsp是不认名字的,它只认地址!!中断向量表要重新定位。这一点很重要。

4、要明确dsp软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个dsp程序员的水平。对于dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。物理空间是dsp上可以存放数据和程序的实际空间(包括外部存储器),我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。我们要访问物理空间,必须借助于映射空间才行!!但是映射空间本身是个“虚”空间,是个不存在的空间。所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如io映射空间,它本身还代表了一种接口。只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。

5、尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。

6、如果ti公司或第三方软件合作商提供了dsplib或其他的合法子程序库供调用,应尽可能地调用使用。这些子程序均使用用汇编写成,更为重要之处是通过了tms320算法标准测试。而且,常用的数字信号处理算法均有包括!!

7、尽可能地采用内联函数!!而不用一般的函数!!可以提高代码的集成度。

8、编程风格力求简炼!!尽可能用c语言而不用c++语言。我个人感到虽然c++终代码长了一些,好象对执行速度没有影响。

9、因为在c5000中double型和float型均占有2个字,所以都可以使用,而且,可以直接将int型赋给float型或double型,但,尽可能地多使用int数据类型代替!这一点需要注意!!

10、程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。

11、大胆使用位运算符,非常好用!!

12、6月份从ti的网站上下到了关于tms320c67_系列dsp的快速算法库,于是,tms320c5000和c6000全系列的快速算法库都问世了,这些算法库均可供c/c++语言直接调用,优化程度100%,实际编程时尽可能地使用

篇5:dsp实验心得体会

1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。

2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。

3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。设置好的配置中只能有一项。

4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。

5. 这次实验采用软件仿真,不需要打开电源箱的电源。

6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。

7. 执行write_buffer一行时。如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。

8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。

9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。

10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。如果不重新加载,那么修改执行程序后,其结果将不会改变。

11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。

12. 通过这次实验,对TMS320F2812x DSP软件仿真及调试有了初步的了解与认识,因为做实验的时候都是按照实验指导书按部就班的,与真正的理解和掌握还是有些距离的。但是这也为我们日后运用这些知识打下了基础,我觉得实验中遇到的问题,不要急于问老师或者同学,先自己想办法分析原因,想办法解决,这样对自身的提高更多吧。通过做实验,把学习的知识利用起来,也对这门课程更加有兴趣了。

篇6:dsp实验心得体会

我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。

我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。由于方向所限对6X、8X系列没有接触。 我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。

其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-―系统功能划分―― 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。

其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP的选型要根据系统功能而定,是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。

54XX更像一个协处理器,其实高端产品5471就很好,功能完*,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。

现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB――C――ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。

最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。

篇7:大学dsp实验心得体会

实验报告

一、实验室名称:数字信号处理实验室

二、实验项目名称:多种离散时间信号的产生

三、实验原理:

1、基本离散时间信号

利用MATLAB强大的数值处理工具来实现信号的分析和处理,首先就是要学会应用MATLAB函数来构成信号。常见的基本信号可以简要归纳如下:

(1).单位采样序列

⎧1n=0δ(n)=⎨ 0⎩n≠0

在MATLAB中可以利用zeros函数实现。

x=zeros(1,N);

x(1)=1;

如果δ(n)在时间轴上延迟了k个单位,得到δ(n-k)即:

δ(n-k)=⎨

(2).单位阶跃序列 ⎧1n=k ⎩0n≠0

⎧1n≥0u(n)=⎨ 0n<0⎩

在MATLAB中可以利用ones()函数实现。

x=ones(1,N);

(3).正弦序列

x(n)=Asin(2πfn+ϕ)

采用MATLAB的实现方法,如:

n=0:N-1

x=A*sin(2*pi*f*n+ϕ)

(4).实指数序列

x(n)=A⋅an

其中,A、a为实数。采用MATLAB的实现方法,如:

n=0:N-1

x=a.^n

(5).复指数序列

x(n)=A⋅e n=0:N-1 采用MATLAB的实现方法,如: x=A*exp((σ+j*ω0)*n)

为了画出复数信号x[n],必须要分别画出实部和虚部,或者幅值和相角。MATLAB函数real、imag、abs和angle可以逐次计算出一个复数向量的这些函数。

2、基本数字调制信号

(1).二进制振幅键控(2ASK)

最简单的数字调制技术是振幅键控(ASK),即二进制信息信号直接调制模拟载波的振幅。二进制幅度键控信号的时域表达式:SASK(t)=[∑ang(t-nTs)]cosωct

其中,an为要调制的二进制信号,gn(t)是单极性脉冲信号的时间波形,Ts表示调制的信号间隔。 (σ+jω0)n 典型波形如下:

图1 – 1二进制振幅键控信号时间波形

(2).二进制频移键控(2FSK)

在二进制数字调制中,若正弦载波的频率随二进制基带信号在f1和f2两个频率点间变化,则产生

二进制移频键控信号(2FSK信号)。二进制频域键控已调信号的时域表达式为: ⎡⎤⎡⎤S2FSK(t)=⎢∑ang(t-nTS)⎥cosω1t+⎢∑ng(t-nTS)⎥cosω2t ⎣n⎦⎣n⎦这里,ω1=2πf1,ω2=2πf2,an是an的反码。

an

载波信号1 t 载波信号2 t

2FSK信号 t

(3).二进制相移键控(2PSK或BPSK)

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。通常用已调信号载波的0°和 180°分别表示二进制数字基带信号的 1 和 0。二进制移相键控信号的时域表达式为:

⎡⎤

S2PSK(t)=⎢∑ang(t-nTS)⎥cos(ωct+φi),φi=0或π

⎣n⎦

(3).二进制相移键控(2PSK或BPSK)

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。通常用已调信号载波的0°和 180°分别表示二进制数字基带信号的 1 和 0。二进制移相键控信号的时域表达式为:

⎡⎤

S2PSK(t)=⎢∑ang(t-nTS)⎥cos(ωct+φi),φi=0或π

⎣n⎦

因此,DTMF信号可以看作两个有限长度的正弦序列相加,正弦信号的频率由按键数字或字母符号对应的频率决定。如,数字“8”由行频852Hz和列频1336Hz决定。

四、实验目的:

1、掌握几种基本的离散时间信号(包括单位采样序列,单位阶跃序列,单频正弦序列,单频复指

数序列,实指数序列等)。

2、能够熟练利用MATLAB产生这些基本的离散时间信号。

3、理解双音多频DTMF信号、ASK、FSK、BPSK等信号的产生原理。

4、学习并运用MATLAB产生各种通信中的调制信号及双音多频信号。

五、实验内容:

1、对几种基本离散时间信号(包括单位采样序列,单位阶跃序列,正弦序列,复指数序列,实指数序列等)在MATLAB中编程产生。

2、(拓展要求)利用MATLAB编程产生2ASK,2FSK,2PSK等数字调制信号。

3、(拓展要求)利用MATLAB编程产生理解双音多频DTFM信号。

4、(拓展要求)利用MATLAB编程产生高斯白噪声序列。

5、(拓展要求)利用MATLAB中的谱分析函数对正弦信号的频谱进行分析。

6、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。

六、实验器材(设备、元器件):

安装MATLAB软件的PC机一台,DSP实验演示系统一套。

七、实验步骤:

1、在-20≤n≤20内,画出单位下列信号:

(a).单位采样序列x1[n]=δ[n]和单位阶跃序列x2[n]=u[n]的时域波形图。

(b).y1[n]=x1[n+5]、y2[n]=x2[n-8]的波形。说明x1[n]与y1[n]、x2[n]与y2[n]之间的关系。

2、画出下列信号在0≤n≤100内的波形。 ⎛πn⎫x3[n]=sin ⎪⎝16⎭

⎛n⎫x4[n]=sin ⎪⎝2⎭

⎛πn⎫⎛3πn⎫x5[n]=cos ⎪+cos ⎪⎝12⎭⎝8⎭

观察x3[n]、x4[n]、x5[n]是否周期信号。如果是周期信号,信号的基波周期是什么?如果不是

周期信号,说明原因。

3、在0≤n≤30内,画出下列信号: nx6[n]=0.2(0.8) (-1/12+jπ/6)nx7[n]=e对于复数序列,要求分别画出实部和虚部;幅值和相角。若把x6[n]中的底数0.8分别改为1.2、

-0.8,讨论产生的时域波形有何变化。总结指数序列的底数对序列变化的影响。

4、(拓展要求)设计产生数字二进制序列:1 0 1 0 1 0 的2ASK、2FSK、2PSK调制信号。已

知符号速率Fd=10Hz(即时间间隔Ts为0.1),输出信号的采样频率为20Hz。

(a).2ASK信号的载波频率Fc=5Hz,

(b).2FSK信号载波1频率F1=5Hz,载波2频率F2=1Hz。

(c).2PSK载波频率Fc=1Hz。

分别画出以上信号调制前后的时域波形图。

5、(拓展要求)利用MATLAB产生DTMF双音多频信号。画出数字“0”的时域波形图。

6、(拓展要求)MATLAB函数randn(1,N)可以产生均值为0,方差为1的高斯随机序列,也就是

白噪声序列。试利用randn函数产生均值为0.15,方差为0.1的高斯白噪声序列x8[n],要求序列时域范围为0≤n≤100。画出时域波形图。同时将实验步骤2中产生的信号x2[n]与x8[n]相加,将得到的波形与x2[n]的波形做比较。

7、(拓展要求)利用MATLAB中的谱分析函数画出x3[n]、x4[n]、x5[n]的频谱。与理论上根据傅

立叶变换的定义计算出的x3[n]、x4[n]、x5[n]的频谱进行比较。

8、通过硬件(DSP)实验箱演示上述信号的时域(示波器)波形与频域波形(计算结果)。

八、实验数据及结果分析:

程序:

(1)产生x1[n]、x2[n]、y1[n]、y2[n]、x3[n]、x4[n]、x5[n]、x6[n]、x7[n]序列的程序

(2)产生2ASK、2FSK、2PSK调制信号的程序(拓展要求)

(3)产生DTMF信号的程序(拓展要求)

(4)高斯白噪声序列的产生程序(扩展要求)

(4)正弦信号频谱分析的程序(扩展要求)

clear all;

clc;

n=101;

%单位采样序列

x1=zeros(1,n);

x1(1)=1;

x1=[zeros(1,100),x1];

%单位阶跃序列

x2=ones(1,n);

x2=[zeros(1,100),x2];

%

n1=0:n-1;

yn1=n1-5;

yn2=n1+8;

%100;

Fs=1000;

n2=0:100;

%正弦序列

x3=sin(2*pi*n2/32);

x4=sin(n2/2);

x5=sin(pi*n2/12)+cos(3*pi*n2/8);

%指数序列

n3=0:30;

x61=0.2*(0.8.^n3);%实指数序列

x62=0.2*(1.2.^n3);

x63=0.2*((-0.8).^n3);

x7=exp((-1/12+1i*pi/6)*n3);%复指数序列

%画出图形

figure(1)

subplot(2,2,1),stem(n1,x1),title('x1'),axis([-20,20,0,1]);

subplot(2,2,2),stem(n1,x2),title('x2'),axis([-20,20,0,1]);

subplot(2,2,3),stem(yn1,x1),title('y1'),axis([-20,20,0,1]);

subplot(2,2,4),stem(yn2,x2),title('y2'),axis([-20,20,0,1]);

figure(2)

subplot(3,1,1),stem(n2,x3),title('x3'),axis([0,100,-1,1]);

subplot(3,1,2),stem(n2,x4),title('x4'),axis([0,100,-1,1]);

subplot(3,1,3),stem(n2,x5),title('x5'),axis([0,100,min(x5),max(x5)]);

figure(3)

subplot(3,1,1),stem(n3,x61),title('x6 a=0.8'),axis([0,30,min(x61),max(x61)]);

subplot(3,1,2),stem(n3,x62),title('x6 a=1.2'),axis([0,30,min(x62),max(x62)]);

subplot(3,1,3),stem(n3,x63),title('x6 a=-0.8'),axis([0,30,min(x63),max(x63)]);

figure(4)

subplot(4,1,1),stem(n3,abs(x7)),title('x7幅值'),axis([0,30,min(abs(x7)),max(abs(x7))]);

subplot(4,1,2),stem(n3,angle(x7)),title('x7相角'),axis([0,30,min(angle(x7)),max(angle(x7))]); subplot(4,1,3),stem(n3,imag(x7)),title('x7虚部'),axis([0,30,min(imag(x7)),max(imag(x7))]); subplot(4,1,4),stem(n3,real(x7)),title('x7实部'),axis([0,30,min(real(x7)),max(real(x7))]); %调制

x_base=[1,0,1,0,1,0];

Fd=10000;

t=linspace(0,0.6,6*Fd);

if(x_base(1)==1)

m=ones(1,Fd);

elseif(x_base(1)==0)

m=zeros(1,Fd);

end

for i=2:6

if(x_base(i)==1)

m=[m,ones(1,Fd)];

elseif(x_base(i)==0)

m=[m,zeros(1,Fd)];

end

end

%2ASK

Fc_A=5;

S_ask=m.*cos(2*pi*Fc_A*t);

%

figure(5)

subplot(4,1,1),stem(0:0.1:0.5,x_base),title('序列An'),axis([0,0.6,0,1]),xlabel('s');

subplot(4,1,2),plot(t,m),title('mt'),axis([0,0.6,0,1.5]),title('mt'),xlabel('s');

subplot(4,1,3),plot(t,cos(2*pi*Fc_A*t)),title('mt'),axis([0,0.6,-1.2,1.2]),title('载波信号'),xlabel('s'); subplot(4,1,4),plot(t,S_ask),title('mt'),axis([0,0.6,-1.2,1.2]),title('2ASK调制信号'),xlabel('s'); %2FSK

F1=5;F2=1;

s1=m.*cos(2*pi*F1*t);

s2=(1-m).*cos(2*pi*F2*t);

S_fsk=s1+s2;

figure(6)

subplot(4,1,1),plot(t,m),axis([0,0.6,0,1.5]),title('mt'),xlabel('s');

subplot(4,1,2),plot(t,s1),axis([0,0.6,-1.2,1.2]),title('载波信号1 F=5Hz)'),xlabel('s');

subplot(4,1,3),plot(t,s2),axis([0,0.6,-1.2,1.2]),title('载波信号2 F=1Hz'),xlabel('s');

subplot(4,1,4),plot(t,S_fsk),axis([0,0.6,-1.2,1.2]),title('2FSK调制信号'),xlabel('s');

%2PSK

Fc_P=1;

S_psk=(2*m-1).*cos(2*pi*Fc_P*t+pi);

figure(7)

subplot(4,1,1),plot(t,2*m-1),axis([0,0.6,-1.5,1.5]),title('mt'),xlabel('s');

subplot(4,1,2),plot(t,cos(2*pi*Fc_P*t+pi)),axis([0,0.6,-1.2,1.2]),title('正相载波信号'),xlabel('s'); subplot(4,1,3),plot(t,-cos(2*pi*Fc_P*t+pi)),axis([0,0.6,-1.2,1.2]),title('反相载波信号'),xlabel('s'); subplot(4,1,4),plot(t,S_psk),axis([0,0.6,-1.2,1.2]),title('2PSK调制信号'),xlabel('s');

%DTFM

t_dt=linspace(0,0.02,10000);

x_dtfm=cos(2*pi*941*t_dt)+cos(2*pi*1366*t_dt);

plot(t_dt,x_dtfm);

%rand

N=201;

x8=sqrt(0.1)*randn(1,N)+0.15;

x_rnd=x2+x8;

figure(8)

subplot(3,1,1),stem(n1,x2),title('X2');

subplot(3,1,2),stem(n1,x8),title('高斯信号');

subplot(3,1,3),stem(n1,x_rnd),title('加噪声后X2');

%FFT

N_smp=length(n2);

fre=linspace(-1,1,N_smp)*Fs/2;

y3=abs(fftshift(fft(x3)));

y4=abs(fftshift(fft(x4)));

y5=abs(fftshift(fft(x5)));

figure(9)

subplot(3,1,1),plot(fre,y3),xlabel('Hz'),title('X3频谱'),xlabel('频率Hz'),axis([-100,100,1.2*min(y3),1.2*max(y3)]);

subplot(3,1,2),plot(fre,y4),xlabel('Hz'),title('X4频谱'),xlabel('频率Hz'),axis([-200,200,1.2*min(y4),1.2*max(y4)]);

subplot(3,1,3),plot(fre,y5),xlabel('Hz'),title('X5频谱'),xlabel('频率Hz'),axis([-300,300,1.2*min(y5),1.2*max(y5)]);

结果:

(1)x1[n]、x2[n]、y1[n]、y2[n]、x3[n]、x4[n]、x5[n]、x6[n]、x7[n]的时域波形

(2)信号的时移:x1[n]与y1[n]、x2[n]与y2[n]之间的关系。 答:y1[n]相当于x1[n]向左平移5个单位,y2[n]相当于将x2[n]向右平移8个单位

篇8:大学dsp实验心得体会

基础实验

一、实验目的

二、实验设备

三、实验原理

浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理1. 一台装有CCS软件的计算机; 2. DSP实验箱的TMS320F2812主控板; 3. DSP硬件仿真器。 1. 掌握CCS实验环境的使用; 2. 掌握用C语言编写DSP程序的方法。 中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。

四、实验步骤

1. 打开CCS 并熟悉其界面;

2. 在CCS环境中打开本实验的工程(Example_base.pjt),编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;

3. 把X0 , Y0 和Z0添加到Watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“Add Watch Window”命令);

4. 选择view->graph->time/frequency… 。 设置对话框中的参数: 其中“Start Address”

设为“sin_value”,“Acquisition buffer size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”,

设置好后观察信号序列的波形(sin函数,如图);

5. 单击运行;

6. 观察三个变量从初始化到运算结束整个过程中的变化;观察正弦波形从初始化到运算结束整个过程中的变化;

7. 修改输入序列的长度或初始值,重复上述过程。

五、实验心得体会

通过本次实验,加深了我对DSP的认识,使我对DSP实验的操作有了更进一步的理解。基本掌握了CCS实验环境的使用,并能够使用C语言进行简单的DSP程序设计。

从软件的安装到使用软件进行程序设计与仿真,锻炼了自己的动手能力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。

篇9:大学dsp实验心得体会

//EnablePWMpins;GpioMuxRegs.GPAMUX.all=0;GpioMuxRegs.GPBMUX.all=0;EDIS;;//Step3.Clearallinterrup;//DisableCPUinterrupts;DINT;;//InitializethePIEcontro;//ThedefaultstateisallPI;//ar

// Enable PWM pins

GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins

GpioMuxRegs.GPBMUX.all = 0x00FF; // EVB PWM 7-12 pins

EDIS;

// Step 3. Clear all interrupts and initialize PIE vector table:

// Disable CPU interrupts

DINT;

// Initialize the PIE control registers to their default state.

// The default state is all PIE interrupts disabled and flags

// are cleared.

// This function is found in the DSP281x_PieCtrl.c file.

InitPieCtrl;

// Disable CPU interrupts and clear all CPU interrupt flags:

IER = 0x0000;

IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt

// Service Routines (ISR).

// This will populate the entire table, even if the interrupt

// is not used in this example. This is useful for debug purposes.

// The shell ISR routines are found in DSP281x_DefaultIsr.c.

// This function is found in DSP281x_PieVect.c.

InitPieVectTable();

// Step 4. Initialize all the Device Peripherals:

// This function is found in DSP281x_InitPeripherals.c

// InitPeripherals(); // Not required for this example

InitXintf(); // For this example, init the Xintf

// Step 5. User specific code, enable interrupts:

init_eva();

//init_evb();

while(1)

{

for(i=0;i<65535;i+=1000)

{

Reg06=0;

EvbRegs.CMPR6 = i;

delay_loop();

}

}

}

void delay_loop()

{ short i,j;

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

{for (j = 0; j < 10; j++);}

}

void init_eva()

{

// EVA Configure T1PWM, T2PWM, PWM1-PWM6

// Initalize the timers

// Initalize EVA Timer1

EvaRegs.T1PR = 0xFFFF; // Timer1 period

EvaRegs.T1CMPR = 0x3C00; // Timer1 compare

EvaRegs.T1CNT = 0x0000; // Timer1 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvaRegs.T1CON.all = 0x1042;

// Initalize EVA Timer2

EvaRegs.T2PR = 0x0FFF; // Timer2 period

EvaRegs.T2CMPR = 0x03C0; // Timer2 compare

EvaRegs.T2CNT = 0x0000; // Timer2 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvaRegs.T2CON.all = 0x1042;

// Setup T1PWM and T2PWM

// Drive T1/T2 PWM by compare logic

EvaRegs.GPTCONA.bit.TCMPOE = 1;

// Polarity of GP Timer 1 Compare = Active low

EvaRegs.GPTCONA.bit.T1PIN = 1;

// Polarity of GP Timer 2 Compare = Active high

EvaRegs.GPTCONA.bit.T2PIN = 2;

// Enable compare for PWM1-PWM6

//EvaRegs.CMPR1 = 0x0C00;

//EvaRegs.CMPR2 = 0x3C00;

EvaRegs.CMPR3 = 0xFC00;

// Compare action control. Action that takes place

// on a cmpare event

// output pin 1 CMPR1 - active high

// output pin 2 CMPR1 - active low

// output pin 3 CMPR2 - active high

// output pin 4 CMPR2 - active low

// output pin 5 CMPR3 - active high

// output pin 6 CMPR3 - active low

EvaRegs.ACTRA.all = 0x0666;

EvaRegs.DBTCONA.all = 0x0000; // Disable deadband

EvaRegs.COMCONA.all = 0xA600;

}

void init_evb()

{

// EVB Configure T3PWM, T4PWM and PWM7-PWM12

// Step 1 - Initialize the Timers

// Initialize EVB Timer3

// Timer3 controls T3PWM and PWM7-12

EvbRegs.T3PR = 0xFFFF; // Timer3 period

EvbRegs.T3CMPR = 0x3C00; // Timer3 compare

EvbRegs.T3CNT = 0x0000; // Timer3 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvbRegs.T3CON.all = 0x1042;

// Initialize EVB Timer4

// Timer4 controls T4PWM

EvbRegs.T4PR = 0x00FF; // Timer4 period

EvbRegs.T4CMPR = 0x0030; // Timer4 compare

EvbRegs.T4CNT = 0x0000; // Timer4 counter

// TMODE = continuous up/down

// Timer enable

// Timer compare enable

EvbRegs.T4CON.all = 0x1042;

// Setup T3PWM and T4PWM

// Drive T3/T4 PWM by compare logic

EvbRegs.GPTCONB.bit.TCMPOE = 1;

// Polarity of GP Timer 3 Compare = Active low

EvbRegs.GPTCONB.bit.T3PIN = 1;

// Polarity of GP Timer 4 Compare = Active high

EvbRegs.GPTCONB.bit.T4PIN = 2;

// Enable compare for PWM7-PWM12

EvbRegs.CMPR4 = 0x0C00;

EvbRegs.CMPR5 = 0x3C00;

EvbRegs.CMPR6 = 0xFC00;

// Compare action control. Action that takes place

// on a cmpare event

// output pin 1 CMPR4 - active high

// output pin 2 CMPR4 - active low

// output pin 3 CMPR5 - active high

// output pin 4 CMPR5 - active low

// output pin 5 CMPR6 - active high

// output pin 6 CMPR6 - active low

EvbRegs.ACTRB.all = 0x0666;

EvbRegs.DBTCONB.all = 0x0000; // Disable deadband

EvbRegs.COMCONB.all = 0xA600;

}

龙 岩 学 院

实 验 报 告

班 级 07电本(1)班 学号 050344 姓 名 杨宝辉 同组人 独立 实验日期 -6-3 室温 大气压 成 绩

高速A/D转换实验

一、实验目的

1.了解高速 AD工作的基本原理。

2.了解如果通过软件正确的控制高速AD。

3.掌握对高速 AD正确操作的过程

二、实验设备

1. 一台装有CCS软件的计算机;

2. DSP实验箱;

3. DSP硬件仿真器;

三、实验原理

实验箱用的高速 AD 为 TLC5510,它是一个 CMOS 结构的、具有高达20MSPS 的8位模数转换器。TLC5510 采用单5V 供电,功耗仅为 130mW。TLC5510 内部包含有一个采样保持电路、具有高阻输出的并行接口以及内部参考电压等。

TLC5510 采用半 FlASh 结构,与 FlASh 结构相比,它不仅减少了功耗,而且提高了芯片的集成度。TLC5510 采用两步转换实现一次完整的转换,这样就大大减少了内部比较器的个数,其输出数据的延迟为2.5个时钟周期。TLC5510 采用 3 个内部参考电阻产生一个标准2V的参考电压,要实现内部参考电压仅需要通过外部的简单连线即可。

篇10:dsp期末考试复习题

dsp期末考试复习题

一、填空题(每空2分,共20分)

1、在C 语言和C55x 汇编语言的混合程序设计中,C 函数的参数和返回值传递到C55x 的寄存器中。在函数“long func(int *p1, int i2, int i3, int i4)”中,*p1传递到 AR0 寄存器,i2传递到 T0 寄存器,i4传递到 AR1 寄存器,返回值由 AC0 寄存器传递。

2、汇编语言“mov *AR0,AC0”使用的寻址方式是 间接寻址模式 ,“mov #0x3,DPH ”使用的寻址方式是 直接寻址模式 ,“mov *(#0x011234),T2”使用的寻址方式是 绝对寻址模式 。

3、指令执行前AC0的值是0012345678,那么汇编语句“AND #0x7f, AC0”,执行之后,AC0的值是 0000000078 。

4、C55x 的链接器命令文件中,SECTIONS 命令的主要作用是 告诉链接器如何将输入段组合成输出段,以及在存储器何处存放输出 。MEMORY 命令的主要作用是 定义目标系统的存储器配置图,包括对存储器各部分的命名,以及规定它们的起始地址和长度 。

二、简述题(共40分)

1、根据你的理解,试列举 DSP 芯片的特点?(5分)

答:哈佛结构;多总线结构;指令系统的流水线操作;专用的硬件乘法器;特殊的DSP指令;快速的指令周期;丰富的外设

2、TMS320C55x 芯片的总线结构有何特点,主要包括哪些总线?它们的功能是什么?(6分)

答:TMS320C55x DSP采用先进的.哈佛结构并具有十二组总线,其独立的程序总线和数据总线允许同时读取指令和操作数,实现高度的并行操作。

采用各自分开的数据总线分别用于读数据和写数据,允许CPU 在同一个机器周期内进行两次读操作数和一次写操作数。独立的程序总线和数据总线允许CPU 同时访问程序指令和数据。包括12条总线,分别是:PAB 和PB 、BAB 和BB 、CAB 和CB 、DAB 和DB 、EAB 和EB 、FAB 和FB 。

3、DSP 为了降低功耗采取了哪些措施?(6分)

答:双电压供电;多种工作模式

4、TMS320C55x 的总存储空间为多少?可分为哪 3 类,它们的大小是多少?存储器空间的各自作用是什么?(6分)

答:程序空间16M Byte;I/O空间64K Words;数据空间8M Words

5、TMS320C55x 有哪些寻址方式,它们是如何寻址的?试为每种寻址方式列举一条指令(6分)

答:直接寻址模式,mov #K16,DP ;间接寻址模式,mov *AR0,AC0;绝对寻址模式,mov *(#0x011234),T2;MMR 寻址模式,mov *abs16(#AR2), T2;寄存器位寻址模式,btstp @30, AC1;圆形寻址模式。

6、将C 源程序转换成可执行文件需要经过哪些步骤?(6分)

答:创建C 源文件;创建工程文件;创建连接器命令文件;编译整个工程文件;链接;生成可执行文件

7、常用的TMS320C55x 汇编命令有哪些,它们的作用是什么?(5分)

三、程序设计题(共40分)

1、用C55x 汇编语言实现计算 y =∑a i x i 的程序。(10分)

i =14

答:mpym *AR0+, *AR1+, AC0

mpym *AR0+, *AR1+, AC1

add AC1, AC0

mpym *AR0+, *AR1+, AC1

add AC1, AC0

mpym *AR0+, *AR1+, AC1

add AC1, AC0

或者:

mpym *AR0+, *AR1+, AC0

||rpt #2

macm *AR0+, *AR1+, AC0

2、用C55x 汇编语言实现计算 y 1=x 1*a 1-x 2*a 2的

答:mpym *AR0+, *AR1+, AC3

masm *AR0+, *AR1+, AC3 10分)

篇11:DSP放异彩

DSP放异彩

DSP(数字信号处理器)近几年闪亮市场,卖点十足.它是半导体工业中增长最快的市场.据SIA统计,世界半导体工业增长了18.9%,达1490亿美元.其中,许多部门包括微处理器和存储器增长迅速,尤其是DSP,在无线通信应用的牵引下,更获得傲人成长,比上年飚升26%,达44亿美元.

作 者:金中  作者单位: 刊 名:电子产品世界  ISTIC英文刊名:ELECTRONIC ENGINEERING & PRODUCT WORLD 年,卷(期): “”(7) 分类号:F4 关键词: 

篇12:基于DSP的网络通信程序设计

DSP芯片是专门为实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其卓越的性能、不断上升的性价比、日渐完善的开发方式使它的应用越来越广泛。将计算机网络技术引入以DSP为核心的嵌入式系统,使其成为数字化、网络化相结合,集通信、计算机和视听功能于一体的电子产品,必须大大提升DSP系统的应用价值和市场前景。将DSP技术与网络技术相结合,必须解决两个关键问题:一是实现DSP与网卡的硬件接口技术,二是基于DSP的网络通信程序设计。DSP与网卡的硬件接口技术参考文献[1]有比较详尽的论述,以下主要讨论基于DSP的网络通信程序设计。

1通信协议的制定

协议是用来管理通信的法规,是网络系统功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间的通信提供具体规范。因为以太网是当今最受欢迎的局域网之一,在以太网中,网卡用于实现802.3规程,其典型代表是Novell公司的NE2000和3COM公司的3C503等网卡,所以研究工作中的具体试验平台是以DSP为核心构成的以太局域网,主要用于语音的实时通信,所使用的网卡为Novell公司的NE2000网卡。NE2000网卡的基本组成请见参考文献[2],其核心器件是网络接口控制器(NIC)DP8390。该器件有三部分功能:第一是IEEE802.3MAC(媒体访问控制)子层协议逻辑,实现数据帧的封装和解封,CSMA/CA(带碰撞检测功能的载波侦听多址接入)协议以及CRC校验等功能;第二是寄存器堆,用户对NE2000网卡通信过程的控制主要通过对这些寄存器堆中各种命令寄存器编程实现;第三是对网卡上缓冲RAM的读写控制逻辑。DP8390发送和接收采用标准的IEEE802.3帧格式。IEEE802.3参考了以太网的协议和技术规范,但对数据包的基本结构进行了修改,主要是类型字段变成了长度字段。所以,以DSP为核心的局域网内通信数据包基本格式如图1所示。

DSP读出数据包和打包从目的地址开始。目的地址用来指明一个数据帧在网络中被传送的目的节点地址。NE2000支持3种目的地址:单地址、组地址及广播地址。单地址表示只有1个节点可以接收该帧信息;组地址表示最多可以有64个字节接收同一帧信息;而广播地址则表示它可以被同一网络中的所有节接收。源地址是发送帧节点的物理地址,它只能是单地址。目的地址和源地址指网卡的硬件地址,又称物理地址。

在源地址之后的2个字节表示该帧的数据长度,只表示数据部分的长度,由用户自己填入。数据字段由46~1500字节组成。大于1500字节的数据应分为多个帧来发送;小于46字节时,必须填充至46字节。原因有两个:一是保证从目的地址字段到帧校验字段长度为64字节的最短帧长,以便区分信道中的有效帧和无用信息;二是为了防止一个站发送短帧时,在第一个比特尚未到达总线的最远端时就完成帧发送,因而在可能发生碰撞时检测不到冲突信号。NE2000对接收到的从目的地址字段后小于64字节的帧均认为是“碎片”,并予以删除。在数据字段,根据系统的`具体功能要求,用户可以预留出若干个字节以规定相应的协议,以便通信双方依据这些字节中包含的信息实现不同的功能。

篇13:DSP编程的几个关键问题

DSP编程的几个关键问题

摘要:对DSP串口的DMA传输方式使用中可能遇到的疑难问题、汇编指令歧义及C语言混合编程容易犯的错误作了列举分析,对Bootload编程的疑难点做出了实例解释。

关键词:汇编指令的歧义 Bootload Bug McBSP Multi-Frame

DSP芯片凭其优异的性能在高速计算领域有着巨大的应用前景。但其应用所涉及的知识非常庞杂。本文以TI公司320C54X系列为蓝本进行提纯,所有认识都是笔者在实际工作中亲手实践所得。当程序调不通不知该从何处下手时,此文也许会有所帮助。这些关键点有些是TMS320C5409所触有而有些是与DSP所共有的。

1 McBSP(Multichannel Buffered Serial Port)串口利用DMA中的多帧(Multi-Frame)方式通信的中断处理

在实际通信应用中,一个突发之后,程序必须为下一个突发作准备。因此一般采用串口的DMA多帧方式但在串口以DMA方式传输数据时却有一些问题要讨论。首先DMA的传输同步事件应设McBSP的传输事件即XEVT,这样一字节传输后会自动准备另一字节(McBSP的READY上升沿触发DMA传输)。中断发生时意味着一个块已传完,这时DMA的使能自动关闭,McBSP的READY将一直保持高状态。但是在下一次突发传输直接使能DMA时却启动不了传输(相信会有许多我遇到此类问题)。这是因为无法产生McBSP触发启动所需的READY上升沿。解决办法是在中断程序中先关闭McBSP的发送,使READY=0,随后在程序中发送使能DMA,再打开McBSP的发送即可。如先打开McBSP的发送后打开DMA,也是不会工作的。因为McBSP的READY已经由0变到1了,无法再产生READY上升沿。

2 关闭DMA与关闭McBSP的区别

在通信领域,为了充分利用DSP的片上外设资源,常常利用DMA把从串口来的数据或要发的数据放入缓冲区,再处理。对DMA而言,只要其在数据缓冲区的指针指向了中断应发生的位置,就产生中断。但此时最后一个数据只是进入了McBSP而并未真正发出去,所以在传送结束的中断程序中只能关闭DMA不能关闭McBSP。因为此时McBSP的发寄存器DXR中还有一个字没有发出。

3 McBSP串口配置的关键时序

主要是寄存器SPCR2的配置:在保持RRST、XRST、FRST各位为0的前提下,配置好其它串口控制寄存器。等待至少2个CLKR/T时钟以确保DSP内部的同步。

(1)可以向DXR装载数据或使能DMA。

(2)使能GRST(GRST=1)(如果需要DSP内部产生采样时钟)。

(3)使能RRST或XRST,注意此时要保证SPCR中仅有此一位发生改变。

(4)使能FRST(FRST=1)(如果需要DSP内部产生帧同步)。

(5)等待2个R/T CLK时钟周期后,收或发端便会有效。

4 汇编语言程序中的变量

汇编语言程序中的公用变量应在文件中定义,如.def carry。汇编语言程序中使用的局部变量不需定义,可直接声明,例如trn_num .word 00h。如果在两个asm文件中有两个都没有定义的同名变量,则编译程序会认为分他们不是同一变量。在汇编程序的开头应有.mmregs宏语句。它一方面表示对默认定义的确认(ah,bh,trn等),另一方面可以对所用寄存器重新定义。如:

.mmregs

DMPREC .set 54h ;定义DMA优先和使能寄存器地址在54h

DMSA .set 55h

DMSDN .set 57h

DXR10 .set 23h ;定义串口1的'发送寄存器地睛在23h

5 ST1寄存器中CPL位的影响

CPL位是编译模式控制位,它表示在相对直接寻址时采用哪种指针。当CPL=0时,使用页指针DP;当CPL=1时,使用堆栈指针SP。实际使用中二者没有什么差别,但使用SP寻址的程序更易读。在程序中经常使用CPL=1。

6 指令的歧义

6.1 比较下面指令

STLM B,AR4 ;把bl内容送入寄存器AR4 (×)

STLM B,*AR4 ;把bl内容送入寄存器AR4 (√)

前者实际执行的是把bl内容送入一个系统用的缓冲区,后者也可用:

MVDM BL,AR4 ;把bl内容送入寄存器AR4 (√)

其他易导致歧义的语句还有:

LD AR5,A ;把AR5的内容送入寄存器A (×)

LDM AR5,A ;把AR5的内容送入寄存器A (√)

ANDM #0x107e,AR4;把#107e加到寄存器AR4 (×)

ANDN #0x107e,*AR4;把#107e加到寄存器AR4 (√)

仅对某些寄存器有效的指令:

MVDD * AR2+,*AR3+ ;把以AR2为地址的内容拷入AR3的地址中

此类指令用作数据块搬移特别有效,但仅对AR2、AR3、AR4、AR5有效。

易错语句中对程序运行危害最大的是:

ST #0,*(bsp0_out_sign) ;bsp0_out_sign是一个变量名(√)

STM #0,bsp0_out_sign ;此语句被编译为STM #0,PMST或STM #0,IMR (×)

这种语句会导致程序运行中的随机故障,且极难发现。

6.2 流水冲突

分析以下程序:

STM to_dce_buff,AR4

LDM AR4,B

ADD A,B ;B=AR4+AL

MVDM BL,AR4 ;AR4=to-dce-buff+AL

实际上,上段程序得不到AR4=to-dce-buff+AL的结果。这是因为DSP一般采用深度为3~6级的流水结构,产生了无法解决的冲突,所以它不能被正确执行。解决的办法是在赋值和引用之间插入一条或几条其他的指令,或NOP语句即可。

7 汇编与C语言混合编程的关键问题

7.1 C程序变量与汇编程序变量的共用

为了使程序更易于接口和维护,可以在汇编程序中引用与C程序共享的变量:

.ref_to_dce_num,_to_dte_num,_to_dce_buff,_to_dte_buff

在汇编程序中引用而在C程序可直接定义的变量:

unsigned char to_dte_buff[BUFF_SIZE]; //DSP发向PC机的数据

int to_dte_num; //缓冲区中存放的有效字节数

int to_dte_store: //缓冲区的存放指针

int to_dte_read; //缓冲区的读取指针

这样经过链接就可完成对应。

7.2 程序入口问题

在C程序中,程序的入口是main函数。而在汇编程序中其入口由*.cmd文件中的命令决定,如:-emain_start;程序入口地址为main_start。这样,混合汇编出来的程序得不到正确结果。因为C到ASM的汇编有默认的入口c-int00,从这开始的一段程序为C程序的运行做准备工作。这些工作包括初始化变量、设置栈指针等,相当于系统壳不能耐跨越。这时可在*.cmd文件中去掉语句:-e main_start。如仍想执行某些汇编程序,可以C函数的形式执行,如:

main_start; //其中含有其他汇编程序

但前提是在汇编程序中把_main_start作为首地址,程序以rete结尾(作为可调用的函数)的程序段,并在汇编程序中引用_main_start,即.ref _main_start。

7.3 移位问题

在C语言中把变量设为char型时,它是8位的,但在DSP汇编中此变量仍被作为16位处理。所以会出现在C程序中的移位结果与汇编程序移位结果不同的问题。解决的办法是在C程序中,把移位结果再用0X00FF去“与”一下即可。

7.4 堆栈问题

在汇编程序中对堆栈的依赖很小,但在C程序中分配局部变量、变量初始化、传递函数变量、保存函数返回地址、保护临时结果功能都是靠堆栈完成。而C编译器无法检查程序运行时堆栈能否溢出。所以应尽量多给堆栈分配空间。C编译器的默认大小为1KB。在程序不正常跑飞时应注意检查是否堆栈溢出。

7.5 程序跑飞问题

编译后的C程序跑飞一般是对不存在的存储区访问造成的。首先要查.MAP文件并与memery map图对比,看是否超出范围。如果在有中断的程序中跑飞,应重点查在中断程序中是否对所用到的寄存器进行了压栈保护。如果在中断程序中调用了C程序,则要查汇编后的C程序中是否用到了没有被保护的寄存器并提供保护(在C程序的编译中是不对A、B等寄存器进行保护的)。

8 命令文件的编写

在编辑*.cmd文件时编译连接器默认:page 0就是ROM区,page 1就是RAM区。下列段必须放在ROM区。

.text load=PROG PAGE 0 ;程序段

.const load=data PAGE 0 ;常数段

.cinit load=data PAGE 0 ;初始化段

.switch load=data PAGE 0 ;switch指令常数表

值得注意的是尽量不要用FILL选项,一旦进行填充会使生成的.out文件增大甚至超过内部的存储空间而无法Bootload。

9 BOOtload问题

一般都采用从EPROM引导,但通常很费脑筋。下面介绍一下可为54X系列DSP内部引导程序识别的EPROM存储结构,如表1所示。

表1

EPROM内容地    址08AAh或10AAh

SWWSR(等待状态产生寄存器)值16

BSCR(页切换控制寄存器)值16

人口点XPC(外部存储器映射寄存器)值7

人口点PC(程序地址寄存器)值16

第一块的大小16

第一块的人口点XPC(外部存储器映射寄存器)值7

第一块的人口点PC(程序地址寄存器)值16

代码(1)16

……

代码(N)16

最后一块的大小16

最后一块的人口点XPC(外部存储器映射寄存器)值7

最后一块的人口点PC(程序地址寄存器)值16

代码(1)16

……

代码(N)16

0000h(标志引导表结束)

……

……

……

EPROM的启始地址(如8000h)

首地址

FFFFh

假使已经生成了*.out文件,生成时必须带有芯片,此处为MS320VC5409,版本参数如:asm500 init_54x-v548)。

.hex文件与EPROM的存储空间相对应,其生成的参数由.cmd文件决定。下面以实例介绍.cmd文件中的参数编写及意义。

cdpd.out ;将cdpd.out文件转换成.hex文件

-SWWSR 7fffh ;将外部设备的等待时间设为7个等待状态

-BSCR 0f800h ;设置4K为一页,页面切换时插入1个等待状态

-o cdpd.hex ;转换成cdpd.hex文件

-i ;intel格式

-boot ;把所有的程序块装入EPROM

-bootorg 8000h ;从EPROM存储器的8000h处开始写入程序内容

-memwidth 8 ;系统数据宽度转为8位,以避免生成2个文件

-romwidth 8 ;EPROM数据宽度为8位

-e 0840h ;从8040h开始执行程序

-map wfcdpd.mxp ;生成EPROM存储器占用映射

这时生成的cdpd.hex可以直接写入EPROM。需要说明320C5409的外部RAM范围从8000h~FFFFh,所以设首地址为8000h。但是对C54x系列而言,其转换有个BUG,即它总是不能在0XFFFF处写入从外部EPROM存储器装载的开始地址,只好自己填入。对本例而言在0XFFFE处写0X80,在0XFFFF处写0X00。

篇14:基于 DSP 的网络通信程序设计

摘要:通过分析网卡基本通信过程控制和数字信号处理器(DSP)对网卡直接编程方法,成功设计基于DSP的网络通信程序,从而最终实现DSP系统数字化和网络化的融合。

关键词:DSP 网络通信程序 通信协议 网卡

DSP芯片是专门为实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,其卓越的性能、不断上升的性价比、日渐完善的开发方式使它的应用越来越广泛。将计算机网络技术引入以DSP为核心的嵌入式系统,使其成为数字化、网络化相结合,集通信、计算机和视听功能于一体的电子产品,必须大大提升DSP系统的应用价值和市场前景。将DSP技术与网络技术相结合,必须解决两个关键问题:一是实现DSP与网卡的硬件接口技术,二是基于DSP的网络通信程序设计。DSP与网卡的硬件接口技术参考文献[1]有比较详尽的论述,以下主要讨论基于DSP的网络通信程序设计。

1 通信协议的制定

协议是用来管理通信的法规,是网络系统功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间的通信提供具体规范。因为以太网是当今最受欢迎的局域网之一,在以太网中,网卡用于实现802.3规程,其典型代表是Novell公司的NE和3COM公司的3C503等网卡,所以研究工作中的具体试验平台是以DSP为核心构成的以太局域网,主要用于语音的实时通信,所使用的网卡为Novell公司的NE2000网卡。NE2000网卡的基本组成请见参考文献[2],其核心器件是网络接口控制器(NIC)DP8390。该器件有三部分功能:第一是IEEE802.3MAC(媒体访问控制)子层协议逻辑,实现数据帧的封装和解封,CSMA/CA(带碰撞检测功能的载波侦听多址接入)协议以及CRC校验等功能;第二是寄存器堆,用户对NE2000网卡通信过程的控制主要通过对这些寄存器堆中各种命令寄存器编程实现;第三是对网卡上缓冲RAM的读写控制逻辑。DP8390发送和接收采用标准的IEEE802.3帧格式。IEEE802.3参考了以太网的协议和技术规范,但对数据包的基本结构进行了修改,主要是类型字段变成了长度字段。所以,以DSP为核心的局域网内通信数据包基本格式如图1所示。(本网网收集整理)

DSP读出数据包和打包从目的地址开始。目的地址用来指明一个数据帧在网络中被传送的目的节点地址。NE2000支持3种目的地址:单地址、组地址及广播地址。单地址表示只有1个节点可以接收该帧信息;组地址表示最多可以有64个字节接收同一帧信息;而广播地址则表示它可以被同一网络中的所有节接收。源地址是发送帧节点的物理地址,它只能是单地址。目的地址和源地址指网卡的硬件地址,又称物理地址。

在源地址之后的2个字节表示该帧的数据长度,只表示数据部分的长度,由用户自己填入。数据字段由46~1500字节组成。大于1500字节的数据应分为多个帧来发送;小于46字节时,必须填充至46字节。原因有两个:一是保证从目的地址字段到帧校验字段长度为64字节的最短帧长,以便区分信道中的有效帧和无用信息;二是为了防止一个站发送短帧时,在第一个比特尚未到达总线的最远端时就完成帧发送,因而在可能发生碰撞时检测不到冲突信号。NE2000对接收到的从目的地址字段后小于64字节的帧均认为是“碎片”,并予以删除。在数据字段,根据系统的具体功能要求,用户可以预留出若干个字节以规定相应的协议,以便通信双方依据这些字节中包含的信息实现不同的功能。

篇15:基于 DSP 的网络通信程序设计

如果基于网络操作系统,用户可以利用一些软件对网络操作系统的支持,很容易地编写出优秀的网络通信程序,但这些程序必须依附于网络操作系统。而在DSP环境下,必须深入了解网络接口控制器(NIC)的工作原理[2],通过对网络直接编程,实现局域网内任意站点之间的通信而完全抛开网络操作系统。

DSP对网卡的通信过程控制就是DSP对DP8390中各种寄存器进行编程控制,完成数据分组的正确发送和接收。DP8390的'所有内部寄存器都是8位,映像到4个页面。每个页面有16个可供读写的寄存器地址(RA=00H~0fH)。页面的选择由命令寄存器CA控制。第0页寄存器用于收发过程,第1页寄存器主要用于DP8390的初始化,第2页寄存器则用于环路诊断。DSP对寄存器的操作是将寄存器作为DSP的端口设备,其实际物理端口地址(PPA)为网卡基本I/O端口地址(BIOA)与寄存器地址(RA)之和(即PPA=BIOA+RA)。应注意的是,PPA与寄存器间并不存在一一对应关系,对PPA的读操作与写操作并不一定是对同一寄存器进行的,这种情况在第0页尤其明显。用户数据分组在DSP和网卡交互是通过网卡的数据端口实现的,既可以用DMA方式也可以用PIO方式读入数据分组或将数据分组送至网卡RAM缓冲区。在本系统中,DSP采用DMA方式对网卡进行数据读写。网卡的数据端口地址(NDPA)为网卡基本I/O地址(BIOA)加偏移地址10H(即NDPA=BIOA+10H)。

网卡通信过程控制可分为网卡初始化、接收控制和发送控制。下面分别予以讨论。

2.1 网卡初始化

网卡初始化的主要任务是设置所需的寄存器状态,确定发送和接收条件,并对网卡缓冲区RAM进行划分,建立接收和发送缓冲

环。具体过程请参阅参考文献[2]。需要说明的是,每一块网卡被赋予一个物理地址,以便通信站点的标识。这个物理地址存在网卡的PROM(存储地址为0000~0005H)六个单元中,在网卡初始化时,通过远程DMA读入DSP内存中,并送入网卡物理地址寄存器。在一步的意义在于:一方面,如果能正确读出网卡的物理地址,则说明网卡硬件基本没有问题,网卡的上电复位和DSP对网卡的初始化顺利通过;另一方面,这个物理地址可以用于DSP网络系统中的点名、包的过滤丢弃等服务,也就是说,在链路层根据数据帧携带的源地址和目的地址确定数据报从哪里来,是否接收或丢弃。网卡初始化时另一个重要的工作就是接收缓冲环的设置,为了有效利用缓冲区,NIC将接收缓冲区RAM构成环形缓冲结构,如图2所示。

接收缓冲区RAM分成多个256字节的缓冲区,N个(N最大为256)这样的缓冲区通过指针控制链接成一条逻辑上的缓冲环。缓冲环的开始页面地址存入PSTART寄存器,环页面结束地址存入PSTOP寄存器。PSTART和PSTOP确定了接收缓冲环的大小和边界。为便于缓冲环读写操作,还需要2个指针:当前页面指针CURR和边界指针BNRY。CURR确定下一包放在何处,起着缓冲环写页面指针作用;BNRY指向未经DSP取走处理最早到达的数据包起始页面,新接收的数据包不可将其覆盖,起着缓冲环读页面指针的作用。也就是说,CURR可以告诉用户网卡接收的数据分组当前放到了什么位置,而BNRY则用于确定DSP读缓冲环到了什么地方。由于接收缓冲区为环形结构,BNRY和CURR相等时,环缓冲区可能满也可能空。为了使NIC能辨别这两种状态,规定当BNRY等于CURR时,才认为环缓冲区满;当缓冲区空时,CURR比BNRY指针值大1。因此,初始化时设置:BNRY=PSTART,CURR=PSTART+1。这时读写指针不一致,为了保证正确的读写操作,引入一软件指针NEXTPK指示下一包起始页面。显然,初始化时NEXTPK=CURR。这时,缓冲环的读指针对NEXTPK,而BNRY只是存储分组缓冲区的起始页面边界指示,其值为NEXTPK-1。

2.2 接收控制过程

DSP完成对DP8390的初始化后,网卡就处于接收状态,一旦收到分组,就自动执行本地DMA,将NIC中FIFO数据送入接收缓冲环,然后向主机申请“数据分组接收到”中断请求。DSP如果响应中断,则启动网卡远程DMA读,将网卡缓冲区中的数据分组读入学生机存储区,然后对接收缓冲环CURR、NEXTPK、BNRY指针内容进行修改,以便网卡能从网上正确接收后续分组。DSP响应网卡接收中断后,接收控制过程如下:

①设置远程DMA的起始地址;RSAR0=00H,RSAR1=Nextpk。

②设置远程DMA操作的字节数,这个长度在46~1500字节范围内根据具体要求自己确定。

③0AH送命令寄存器CR,启动远程DMA读。

④从网卡数据端口依序读入数据分组,注意,最先读入的4字节非数据分组内容,第1字节为接收状态,第2字节为下一包页地址指针,3与4字节为接收字节数。第2字节内容应该送入Nextpk,其它字节根据用户要求处理。

⑤修改边界指针BNRY=Nextpk-1。

⑥清除远程DMA字节数寄存器RBCR0和RBCR1。

2.3 发送控制过程

DSP先执行远程DMA写操作,将内存中的数据分组传至网卡发送缓冲区,然后启动发送命令进行数据分组发送。发送控制过程如下:

①设置远程DMA的起始地址为网卡发送缓冲区起始地址;

②设置远程DMA操作的字节数;

③12H送命令寄存器CR,启动远程DMA写;

④依序送出数据分组至网卡发送缓冲区;

⑤清除远程DMA字节数寄存器;

⑥设置发送字节数寄存器TBCR0和TBCR1;

⑦12H送命令寄存器CR,启动数据分组发送。

3 发送方发送频率的控制

发送方发送频率的正确控制主要保护两点:一是有一个最小发送时间间隔,否则会因为接收方不能及时接收而导致系统瘫痪;二是发送频率能够足具体的功能实现要求。譬如在语音的实时通信中,发送频率就取决于声卡的采样频率。在8kHz采样频率时,声卡每秒钟采样8000字节,采用1024字节需用时128ms,如果通信协议规定发送1次传送1024字节有效数据,则必须每128ms发送一次才能保证缓冲区有新数据待发送,也才能保证接收方有新数据播放。128ms是一个理论计算数值,在实际的操作中采样速度和发送频率之间总是不能完全匹配,而存放数据的缓冲区大小是有限的,如果没有良好的控制技巧来实现正确发送,就会造成声音抖动和延时。解决的办法是双缓冲技术和双指针控制,并且根据采样速度和发送频率之间的匹配情况送入不同的发送通信进行处理后发送。正确发送的含义有两方面,一是每次发送的都是新数据,二是能满足接收方总在播放新数据的需求。

4 接收方防止数据包的丢失

由于D

SP通过中断请求判断是否有数据分组到来,如果中断繁忙而两个数据包到来时间相差非常短,DSP有可能只响应一次中断,从而导致丢包的发生。分析网卡接收数据过程,当网卡收到数据分组时,首先执行本地DMA,将NIC中FIFO数据送入接收缓冲环,并将本地DMA操作的起始地址存放在当前页寄存器(CURR)和当前本地DMA寄存器(CLDA0、CLDA1)中,DSP从网卡接收缓冲环读出数据到存储器则称远程DMA操作,用软件指针Nextpk来指示远程DMA的起始页面。因此通过比较网卡本地DMA和远程DMA的当前地址,即在中断服务子程序中比较CURR和Nextpk指针,或比较CLDA0、CLDA1和Nextpk指针,就可以保证当前数据分组放到了哪里就读出到哪里,从而防止丢包的发生。

5 结论

DSP对网卡通信过程控制的实现解决了DSP网络中任意站点之间,DSP网络与PC机之间准确、高速的实时通信问题,是将网络技术应用到DSP数字化系统中的关键,从而最终实现了以DSP为核心的处理系统数字化和网络化的融合。

篇16:基于DSP整流器设计论文

基于DSP整流器设计论文

摘要:随着我国经济的发展,同时也伴随着绿色能源的产生,电力电子技术在我国蒸蒸日上,不断拓展。基于DSP的整流器技术已经成为电力电子技术研究的热点话题。整流器技术凭借其自身强大的特点,可以实现电网无污染以及电能的双向传输,它成为现代人最理想的用电设备。当今,经过技术变换处理后再供用户使用的电能在全国供电总量的比值,直线上升,并且这也代表了我国技术水平的突飞猛进。本论文主要介绍了DSP、整流器的工作原理,以及PWM整流器的发展现状、技术研究方向和控制领域设计,最后表明整流器的应用领域。

【广而告之】

1、“十度百科”属于本站旗下微信公众号,致力于分享生活百科知识和经验。

2、去广告和限制请找到公众号菜单常用网址-公众号服务-网站授权,在打开的网页中获取授权码或免费验证码,之后点击此处进行授权验证。

3、网友可向本公众号投稿,稿费从优。稿件内容须符合公众号主题,即属于生活知识和经验之谈,能帮助人们解决问题、解答疑惑、增长见闻之类。

关键词:DSP整流器发展现状研究方向控制领域设计

在现代工业、交通、经济、政治、国防飞速发展的今天,我们生活的各个领域都需要大量的各种类型的交流装置,这些具有高技术的交流装置将一种特定频率或幅值的电能运用其自身的技术完美的转化成另一种频率、幅值的电能,从而使我们的用电设备达到我们理想的状态;同时,满足我们用电负载的各种需求,达到我国的经济效益最大化。本文对三相电压器PWM整流器的设计做出研究,为其为潜力开发做好铺垫,并且开发无污染能源是电子电力设备的主要任务之一。整流器设备为其提供途径,并且加快其进程,因此我们要将基于DSP的整流器设备做出概述,证明其应用的可能性以及现实性,明白其国内外的发展现状,了解PWM整流器控制技术的研究方向,更好的将电能在最小代价下转化成最有效,最符合人们用电标准的电能。

1、工作原理

1.1 DSP的工作原理

DSP(digital signal processor)是一种比较特殊的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转化为0或1的数字信号,再对数字信号进行修改、强化、删除等,它还可以再其他系统芯片中进行解译,例如把数字数据解译成模拟数据或者实际环境各种格式。DSP具有可编性,并且其实际运行速度快的惊人,可达每秒数千万条复杂指令的程序,这远远超出一般普通的微处理器。DSP具有强大的数据处理能力以及高速度的运行,这就是DSP成为数字化电子世界的宠儿,在电子界有重要的地位,是新生代的.佼佼者。具有无穷的潜力和发掘的价值。

1.2整流器的工作原理

整流器是将电流(AC)转化成直流的一种转化设备。其具有强大的转化能力,可将电能转化为人们生活或者工作所能接受的最好的状态。随着工业和经济的飞速发展,整流器在其中的作用越来越明显,其不仅可以将工业的发展推到专业化,技术化水平,还可能开发绿色能源,倡导文明绿色的经济发展方式。整流器使经济的能源利用达到最大化,经济效益得到最大化,使我国的技术水平越来越先进,不断突破。整流器的转化原理充分体现了这种转化装置有很大的发展空间。

2、整流器国内外发展现状

2.1整流器的概况

变频器、高频开关电源以及各种交流器等等设备很大一部分都需要整流这一重要环节,从而获得直流电压,如果经常采取不控整流电路,这将对电网造成严重的“污染”,由此可见,只有对整流器做出研究,就可以有效的控制污染源的出现。

2.2 PWM整流器的发展现状

20世纪80年代,随着全控器件的日趋成熟,推动了三相PWM整流器的应用和研究。外国科学家提出了三相PWM整流器拓扑结构和电流等的控制策略,并实现了电流型PWM整流器单位功率的有效控制,这就是早期电压型PWM整流器的设计思想。后来,随着离散动态模型和控制策略的发展PWM整流器又发展到新的高度。

随着PWM整流器的发展,其相关领域也不断拓展,同时,PWM整流器以及控制技术也得到不断发展完善,它们相互促进彼此发展,相辅相成。PWM整流器已经有半控型器件桥路过渡偶倒全控件桥路;PWM整流器的开关控制由单纯的硬开关控制完善到软开关调制;更重要的是,其功率等级由千瓦级别飞跃到兆瓦级别;并且其在主电路的类型上也有所变化,电流型整流器与电压型整流器并存,有广阔的使用空间,为人们生活提供了便利,也为国家的发展有重要的推动作用。

3、整流器控制技术的研究方向

控制技术是整流器发展的关键技术,所以,有关PWM整流器控制技术的研究应该非常有针对性,要切中要害,一针见血,研究其核心有价值的议题。一是努力降低整流器对电网的负面影响,一定要适当减少交流侧输入电流的畸变率,通常我们经过方法的研究一般要求在整个负载波动的范围之内,一定程度上会减少对我国电网的不利影响。二是运用技术提高功率因数,从而减少整流器的非线性行为,使其对电网而言是纯电阻的负载。三是提高整个整流器系统的动态响应能力,从而减少动态响应时间,减少对电网影响。四是降低整个系统的开关能源消耗,提高装备效率。五是减少直流侧纹波的系数,缩小整流器其体积,达到减轻重量。

4 、总结

DSP虽然作为微处理器,可是却有极大的潜能,其超大规模集成电路的工艺和高性能的数字信息处理器技术的稳步发展,为将来DSP使各种复杂的语音编解码的同步实现奠定了坚实额基础。整流器作为一种新型的媒介出现在大众的生活和社会中,为我们带来了极大的便利,使资源得到了综合的利用,而且有效地节约的资源,倡导我们做绿色能源的实践者。

【dsp心得体会】相关文章:

1.DSP—数字化音频领域的未来

2.DSP/BIOS环境下的数据通信

3.单片机与DSP结合的dsPIC芯片

4.基于DSP控制的数字式双向DC/DC变换器的实现

5.TM1300?DSP系统的以太网通信接口的设计与实现

6.心得体会

7.文化教育心得体会

8.销售心得体会

9.实习心得体会

10.辩论赛心得体会

下载word文档
《dsp心得体会.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部