DSP大作业修改过后

合集下载

哈工大DSP大作业

哈工大DSP大作业

DSP-F2812的最小系统设计姓名学号班级时间一、设计目的:TMS320F2812DSP是TI公司一款用于控制的高性能、多功能、高性价比的32位定点DSP。

它整合了DSP和微控制器的最佳特性,集成了事件管理器,A/D转换模块、SCI通信接口、SPI外设接口、eCAN 总线通信模块、看门狗电路、通用数字I/O口、多通道缓冲串口、外部中断接口等多个功能模块,为功能复杂的控制系统设计提供了方便,同时由于其性价比高,越来越多地被应用于数字马达控制、工业自动化、电力转换系统、医疗器械及通信设备中。

通过本课程的学习,我对DSP的各个模块有了较为深入的了解,希望可以通过对最小系统的设计,进一步加深对DSP的学习,能在实践中运用DSP,提高自己的动手实践能力。

二、设计思路所谓最小系统就是由主控芯片加上一些电容、电阻等外围器件构成,其能够独立运行,实现最基本的功能。

为了验证DSP的最基本的功能,我设计了如下单元:有源电路的设计、复位电路及JATG下载口电路的设计、外扩RAM的设计、串口电路的设计、外扩A/D模块电路的设计。

三、详细设计步骤和原理1、电源电路的设计TMS320F2812工作时所要求的电压分为两部分:3.3V的Flash电压和1.8V的内核电压。

TMS320F2812对电源很敏感,所以在此推荐选择电压精度较高的电源芯片TPS767D318。

TPS767D318芯片输入电压为+5V,芯片起振,正常工作之后,能够产生3.3V和1.8V两种电压电压供DSP使用。

如下图所示:2、复位电路及JATG下载口电路的设计考虑到TPS767D301芯片自身能够产生复位信号,此复位信号可以直接供DSP芯片使用,所以不用为DSP设置专门的复位芯片。

在实际设计过程中,考虑到JATG下载口的抗干扰性,在与DSP 相连接的接口均需要采用上拉设计。

3、外扩RAM的设计TMS320F2812芯片内部具有18K*16位RAM空间。

当程序代码长度小于18K*16位时,该芯片内部的RAM空间就能够满足用户的需求。

西电DSP大作业报告

西电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 ,即带宽与时宽是一种近似倒数的关系。

脉冲越宽,频域带宽越窄,距离分辨率越低。

脉冲压缩的主要目的是为了解决信号的作用距离和信号的距离分辨率之间的矛盾。

为了提高信号的作用距离,我们就需要提高信号的发射功率,因此,必须提高发射信号的脉冲宽度,而为了提高信号的距离分辨率,又要求降低信号的脉冲宽度。

11313121颜伟DSP大作业

11313121颜伟DSP大作业

序言DSP是Digital Signal Processing的缩写,表示数字信号处理器。

是以数字信号来处理大量信息的器件。

其工作原理是接收模拟信号,转换为0或1的数字信号。

再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。

信息化的基础是数字化,数字化的核心技术之一是数字信号处理,数字信号处理的任务在很大程度上需要由DSP器件来完成,DSP技术已成为人们日益关注的并得到迅速发展的前沿技术。

数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。

数字信号处理在理论上的发展推动了数字信号处理应用的发展。

反过来,数字信号处理的应用又促进了数字信号处理理论的提高。

而数字信号处理的实现则是理论和应用之间的桥梁。

DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。

它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

DSP微处理器(芯片)一般具有如下主要特点:(1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

当然,与通用微处理器相比,DSP微处理器(芯片)的其他通用功能相对较弱些。

主要有以下六个优点:(1)对元件值的容限不敏感,受温度、环境等外部参与影响小;(2)容易实现集成;(3)可以分时复用,共享处理器;(4)方便调整处理器的系数实现自适应滤波;(5)可实现模拟处理不能实现的功能:线性相位、多抽样率处理、级联、易于存储等;(6)可用于频率非常低的信号。

但是也存在一些缺点:(1)需要模数转换;(2)受采样频率的限制,处理频率范围有限;(3)数字系统由耗电的有源器件构成,没有无源设备可靠。

西电DSP大作业任务报告

西电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应用系统设计大作业解答(线性调频+你要地)

DSP应用系统设计大作业解答(线性调频+你要地)

DSP应用系统设计大作业专业:电子与通信工程姓名:赵多学号: 1302121285题目一一、线性调频(LFM)信号为了提高雷达的作用距离和距离分辨率,实际中通常采用宽脉冲发射以提高发射的平均功率,保证足够大的作用距离;而接收时采用相应的脉冲压缩算法获得窄脉冲,以提高距离分辨率,较好的解决了雷达作用距离与距离分辨率之间的矛盾。

而获得大的频带信号,采取LFM 信号调制,可以将信号频域展宽,同时也充分利用了雷达发射功率,扩大作用距离,接收时采用匹配滤波器(Matched Filter )压缩脉冲。

线性调频(Linear Frequency Modulation )信号是指频率随时间而线性改变(增加或减少)的信号。

线性调频信号s(t)可表示为:22()2()()c K j f t t t s t rect Te π+=-T/2<t<T/2 (1.1)式中c f 为中心频率,()trect T为矩形信号,⎪⎩⎪⎨⎧≤=othersT t )T t rect(,021,1 (1.2)K=B/T ,是调频斜率,可得信号的瞬时频率为Ktt K t dt d dt dw fffcci i+=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛+==2222121πππ-T/2<t<T/2 (1.3)T 为线性调频信号的时宽,B 为带宽。

可知瞬时频率呈线性变化,当K>0时,频率递增,K<0则递减。

将1.1式中的信号重写为:t f j c e t S t s π2)()(= (1.4)式中,2()()j Kt t S t rect e T π=(1.5)是信号s(t)的复包络,也即为零中频LFM 信号。

根据题目要求,可知波形数据采样频率MHZ f s 20=,取脉冲宽度s T μ120=,则可以得知采样数据长度2400==T f N s ,调制带宽为MHZ B 6=。

利用Matlab生成所需调频信号,并生.dat数据文件以便VisualDSP++软件仿真调用。

DSP设计报告大作业(10313226)

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技术大作业

DSP技术大作业

DSP技术大作业姓名:班级:学号:2014年12月第1部分概述1.1、DSP简介DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。

其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。

它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。

它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。

根据数字信号处理的要求,DSP芯片一般具有如下主要特点:(1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

1.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大作业

西工大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优化心得

dsp优化心得iPone的一句大家都耳熟能详的广告词:“一直被模仿,从未被超越”。

笔者认为主要是因为他们掌握着核心的算法和机器的优化策略。

因为一般的硬件我们都买的回来,但是能否将该硬件发挥到极致,就会公司之间的差别,因为同样的硬件,如果软件执行的速度不同,那结果就会有很大的差别,所以说:真正的技术是买不来的。

所以,我们进行嵌入式开发的时候,一旦选定了DSP6000系列的芯片,就不能把它当成单片机来用,必须发挥dp与众不同,独一无二的性能。

也就是说如何调整c语言才能够适应这么强悍的硬件就是我们考虑的重点内容,即我们应该按照哪种既定的原则去编写C代码才能够让dp真正作为dp在工作,发挥到dp的优势。

dp的优势在于:速度!所以,dp的优化成为一门专业。

所以,我们一定要使自己在dp上编写的c代码高效运行。

因为制约运行速度的因素是硬件和软件。

因为dp一旦选定,硬件也就确定了。

所以,我们首先要注意如何提升软件的效率。

对于软件来说,一般情况下有3个优化等级。

第一:算法上优化。

第二:程序结构上的优化。

第三:汇编级的优化。

我们需要的是研究前两个等级的优化。

所以,在这篇文章中,我们需要研究的重点有两个:dp的硬件结构和在dp上如何优化c代码。

1.1dp的硬件结构关于dp硬件结构的特色有几个:哈佛结构,流水线结构,带宽和运算方式的高效等。

1.1.1哈佛结构哈佛结构的本质属性是数据存储器(RAM:存储数据的存储器)和程序存储器(存储指令)分开。

Cpu可以一边取指令,一边取数据。

这样会极大的提高处理的速度,因为以前是冯诺依曼结构,总线是分时复用的,这样会降低处理的速度。

而且,dp6000系列是基于VLIW结构的,具体来讲就说CPU可以提取通过程序从程序存储器中一次提取256bit的指令,即CPU可以一次取8条指令放在处理中。

加上和8级流水线的配合,相当于8个传统的CPU一起工作。

1.1.2流水线结构流水线结构涉及的CPU单元包括取指令单元(fetch),分配指令单元(dipatch)和执行指令单元(e某ecutive)。

DSP大作业

DSP大作业

DSP大作业一.要求1.利用matlab软件对audio1211.wav音频信号进行数字信号采样,分别对采样后的信号进行时/频域分析,并提供仿真图和分析说明;(35)2.设计合理的数字滤波器,滤去音频信号中的蜂鸣音,给出详细设计流程,并提供频域仿真图和分析说明;(45)3.将数字滤波后的数字信号转换成wav格式音频文件,统一命名为audio1211proc.wav,作为附件上交。

(15)二.分析(1)通过播放所给音乐文件,很明显能听出wav文件中包含蜂鸣噪音,所以我们应该先分析频谱。

在matlab下可以用函数wavread/audioread读入语音信号进行采样,通过wavread得到声音数据变量x和采样频率fs、采样精度nbits,在读取声音信号之后,利用读出的采样频率作为参数,这段音频读出的采样精度为16,fs为44100hz,将此后采集时间、fft的参数设置为fs,也就是44100hz。

通过plot函数绘制出了音频信号与时间的关系图pic1,使用fft函数进行fft处理。

处理后的信号频谱pic2,如下所示图1.音频信号与时间的关系图从图1横坐标我们看到t在9-10s之间截止,与我们在音乐播放器中显示的时间一致。

图2.图2为运用fft后得到的处理结果,可以从中读取到,在293.7hz、4671hz 附近幅值突然增大,可以确定为噪声干扰。

所以我们应该针对频率附近进行滤波。

如果针对性进行滤波处理,应该使用低通滤波器进行处理,去除这部分的噪音。

之后需要选定滤波器并进行程序设计,在4671hz附近进行滤波,去除蜂鸣杂音。

(2)需要对蜂鸣音进行除去,自然需要用到滤波器。

所以第二步需要设计滤波器并给出详细流程。

在第一问的频谱分析中,通过FFT已经知道噪音所在,所以需要针对这个问题设计参数。

在这里选用巴特沃斯低通滤波器进行处理,需要设定好的参数有通带边界频率、阻带边界频率、通带最大衰减和通过阻带的最小分贝数(由buttord在matlab 定义得)。

DSP技术 大作业

DSP技术   大作业

DSP技术大作业姓名:赵艳花班级:电信111班学号:1104071012014年12月第1部分概述1.1 简介数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

数字信号处理是将信号以数字方式表示并处理的理论和技术。

数字信号处理与模拟信号处理是信号处理的子集。

数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波,因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现,而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。

数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。

数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。

1.2 概况数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。

数字信号处理在理论上的发展推动了数字信号处理应用的发展。

反过来,数字信号处理的应用又促进了数字信号处理理论的提高,而数字信号处理的实现则是理论和应用之间的桥梁。

数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。

例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。

近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。

可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。

1.3 实现方法(1) 在通用的计算机(如PC机)上用软件(如C语言)实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机(如MCS-51、96系列等)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等;(4) 用通用的可编程DSP实现。

DSP程序优化总结

DSP程序优化总结

DSP程序优化总结随着计算机应用的日益广泛,对于程序优化的需求也越来越迫切。

在数字信号处理(DSP)领域,程序优化是提高计算速度和减少资源占用的重要手段。

本文将对DSP程序优化进行总结,包括优化的目标、常用的优化技术以及实施优化的步骤等方面。

首先,我们需要明确DSP程序优化的目标。

通常,DSP程序的优化目标可以概括为提高程序的执行速度、减少资源占用和降低功耗。

在实际的优化过程中,需要根据具体的应用场景和需求来确定优化的重点。

例如,对于实时音频处理应用,优化的重点可能是降低延迟和减少功耗;而对于图像处理应用,优化的重点可能是提高处理速度和减少资源占用。

其次,我们需要了解常用的DSP程序优化技术。

下面列举了一些常见的优化技术:1.算法优化:选择合适的算法和数据结构可以显著提高程序的执行速度和资源利用率。

例如,使用FFT算法代替DFT算法可以加速频域信号处理;使用滑动窗口技术可以减少不必要的计算;使用稀疏矩阵表示可以减少存储空间占用等。

2.并行计算:利用并行计算的能力可以加速程序的执行速度。

可以通过使用多线程、多核、GPU等方式来实现并行计算。

需要注意的是,合理的任务划分和数据分配是并行计算的关键。

3. 数据对齐和访存优化:对于DSP程序来说,访存是一个重要的性能瓶颈。

通过调整数据结构和内存布局,使得数据可以以连续和对齐的方式访问,可以提高DRAM访问效率。

另外,合理使用高速缓存(Cache)和预取机制也可以加速程序的执行。

4.编译器优化:编译器的优化功能可以自动地对程序进行优化,例如实施循环展开、代码重排、指令调度等。

在进行编译器优化时,需要根据具体的硬件平台和编译器选项做相应的调整。

最后,我们需要了解实施DSP程序优化的步骤。

一般来说,可以按照以下几个步骤来进行优化:1.分析和测量:首先需要对程序进行分析和测量,找出存在的性能瓶颈和资源占用问题。

可以通过使用性能分析工具、调试工具、模拟器等来获取运行时信息和性能指标。

DSP大作业

DSP大作业

无限冲激响应滤波器〔IIR〕算法及实现姓名:徐旭日学号:20210700332专业班级:电子信息工程〔2〕班指导老师:王忠勇日期:2016/6/2摘要:21世纪是数字化的时代,随着信息处理技术的飞速开展,数字信号处理技术逐渐开展成为一门主流技术。

相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以到达很高,容易集成等。

这些优势决定数字滤波器的应用越来越广泛。

数字滤波器是数字信号处理中最重要的组成局部之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。

本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。

具体工作包括:对IIR数字滤波器的根本理论进行分析和探讨。

应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。

通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。

关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器〔IIR〕。

引言:随着数字化飞速开展,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计算机技术和微电子技术的开展得到飞速开展,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。

数字信号处理由于运算速度快,具有可编程的特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。

采用DSP芯片来实现数字信号处理系统是当前开展的趋势。

在数字信号处理中,数字滤波占有极其重要的地位。

滤波是信号处理中的一个重要概念。

滤波分经典滤波和现代滤波。

经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。

根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。

换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目温度采集分析系统设计学生姓名学号专业电子信息工程指导教师时间 2018.1.1摘要:本课题设计基于TMS320F28335型号DSP的高速度、宽范围、高精度的温度采集系统方案。

系统以TMS320F28335为控制核心,通过测温电路采集温度数据,经AD转换后给DSP 控制器,通过FIR滤波器计算出温度值,DSP通过RS232接口上传温度值到电脑上位机显示温度,通过LCD12864显示温度及时间,重点介绍AD转换接口电路以及系统控制软件的设计过程。

一、功能设计要求设计一个电池供电野外温度采集分析系统,功能包括:1.每小时采集环境温度10次,进行FIR滤波2.每天通过串口发送单天平均气温3.有三个按键:K1切换温度/时间显示。

K2、K3修改时间,K2=time+,K3=time-4.当电池电压低于安全值时,发送报警信息二、硬件设计1.系统方案:该系统包括温度采集电路模块、TMS320F28335芯片、A/D转换部分和LCD液晶显示,首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号进行处理,并通过低频率的FIR滤波后得到一天的温度输出,为确保转换精度要进行多次取值求平均,转换结果放在结果寄存器的高12位上,通过编程将处理后的温度值送到LCD上进行显示。

设计采用热敏电阻PT100组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系式,检测温度的变化;然后将采集的温度送入TMS320F28335的片上A/D,将电压转换为数字信号,并通过低频率的FIR滤波后得到一天的温度输出;最后通过LCD12864显示结果。

图1 系统方案2.主控方案:TMS320F28335主控芯片控制芯片32位TMS320F28335芯片,该DSP芯片专门用于控制领域,最高可在150 MHz主频下工作,可进行双16 ×16乘加和32 ×32乘加操作,运算与控制速度快,并带有18 K×16位片上SRAM和128 K×16位片上FLASH;并带有两个事件管理模块,可以同时产生多路PWM信号; 16路12位片上ADC,可以同时进行16路转换。

另外,该器件还有3个独立的32位CPU定时器以及多达56个独立编程的GP I O引脚和19根外部扩展地址总线。

TMS320F28335采用哈佛总线结构,具有密码保护机制,保护程序和数据不被盗取。

因此,该芯片片上资源丰富,功能多、性价比高,利于简化软硬件设计,非常适用于温度采集与显示系统化的设计。

在设计的初期,把它分成了五个模块。

其中复位采用电源复位的方式,由引脚PCRESET引起。

为了可靠复位,其中低电平的有效时间至少6个CPU时钟周期。

3.电源模块:采用TPS731HD301电源芯片。

TPS73系列电源芯片为线性稳压芯片,输入电压5V,输出电压有两组,一组为3.3V,另一组随芯片型号不同而不同。

在该采用电路中,输出电压为3.3V和1.6V。

TPS731HD301芯片为模数转换提供基准电压,且输入端接+5V电源后再并联一个去噪声的电容,利用热敏电阻进行温度采集,采集后的输出电压(不得大于3.3v)与DSP的P2端口23引脚相连。

4.A/D转换:当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器ADCRL2的ADCFIF01或ADCFIF02,以确定当前结果寄存器的状态,保证读取的结果是正确。

另外,要注意12位的转换结果放在结果寄存器中的高12位上,该12位数据与外部模拟输入电压的关系为:12位数字结果=4095*(输入电压/基准电压)数模转换部分采TMS320F28335内部的PWM功能结合外部滤波电路完成转换。

TMS320F28335将内部计算的控制信号转换成占空比可变PWM信号输出,为保证TMS320F28335不受后级返回来的信号干扰,故经光电隔离,送入RC组成的滤波网络变换成平滑电压信号再送往后级信号转换电路,将信号转换成4~20 mA标准信号输出。

5.温度采集电路:当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器ADCRL2的ADCFIF01或ADCFIF02,以确定当前结果寄存器的状态,保证读取的结果是正确。

另外,要注意12位的转换结果放在结果寄存器中的高12位上,该12位数据与外部模拟输入电压的关系为:12位数字结果=4095*(输入电压/基准电压)数模转换部分采用TMS320F28335内部的PWM功能结合外部滤波电路完成转换,电路如图5所示。

TMS320F28335将内部计算的控制信号转换成占空比可变PWM信号输出,为保证TMS320F28335不受后级返回来的信号干扰,故经光电隔离,送入RC组成的滤波网络变换成平滑电压信号再送往后级信号转换电路,将信号转换成4~20 mA标准信号输出。

6.显示模块:此系统中显示器采用液晶显示方式,一款基于LCD12864控制器的图形液晶显示模块。

LCD12864内含7602个简体中文字型。

LCD12864有较强功能的I/0 缓冲器,可以随时准备接收TMS320F28335 的访问,并可在内部时序下及时地把TMS320F28335发来的指令和数据传输到位。

TMS320F28335与LCD12864的连接方式如图4示, LCD12864芯片的XA13: 18 及XZCS0 /1 经过译码确定LCM3202401 的片选信号, 其地址范围为0x003A00 ~0x003AFF,数据端口地址为: 0x002A00,命令端口地址为:0x002A01,这些地址映射被到TMS320F28335的外部区域0中,1D I R与读信号线连接用于控制数据的传输方向,通过调节电位器可以调整液晶的显示对比度。

7.按键电路:设计中还有3个按键,并通过这几个按键经外部中断将处理器唤醒,进行显示等任务,其他时间为节省功耗,处理器进入休眠状态。

8.电池选取:考虑到电池的充放电的便捷性与成熟性以及电池所需容量应该较大等因素,决定选择锂电池作为供电电池,工作电压3.7v-4.2v。

处理器功耗约0.18w,显示屏功耗0.06w,加上其他外部器件,工作时功耗按0.4w计,电流约0.4/3.7=108.11mA。

每天工作时长约1h,按30天计,所需容量需108.11*1*30=3243.2mA。

在考虑上冗余设计,最终选取电池容量为5000mA.三、软件设计1.设计思路:为满足低功耗的设计要求,处理器在上电进行了一系列初始化工作后便进入休眠状态。

同时定时器中断每隔6分钟将处理器唤醒进行温度采集任务,若外部有相应的按键中断发生,也进入相应的外部中断服务。

该程序主要包括主程序、延时、A/D转换,液晶屏相应汉字显示、温度计算与显示等子程序实现温度采集与显示的功能M1403芯片作为模数转换提供基准电压,利用热敏电阻进行采集,采集后的输出电压与DSP的P2口23引脚相连。

将采集到的电压送入A/D转换模块,编写程序实现A/D转换,转换结果放在结果寄存器的高12位上,编写函数获取A/D转换结果,将处理的温度值的各个对应显示到LCD上。

2. 2.程序流程图:MC1403 芯片Vin 端输入一个+5V的模拟电压值;在输入端接一个电容滤除其它频率分量;在Vout 端输出了一个稳定的电压值;GND端直接接模拟地;给试验箱供电,打开Setup CCS2(‘C2000), 在弹出的对话框中选择ICETEK-5100 USB Emulator for TMS320F28335 导入,进行配置设置然后进入CCS2(‘C2000),打开工程文件进行编译生成.out 文件下载到硬盘中然后调试,观察液晶显示屏,第一行显示“温度显示”,第二行显示“温度值℃”,当用手触摸时,温度显示不断变化,实现了温度的采集与现实。

四、总结此次的课程设计我做的设计是—温度采集与显示,在此次设计过程中我遇到的第一个比较难的问题就是编程序,因为之前没学的好,很多指令都不熟悉,通过几天的努力,从网上下载的资料和同学的帮助下还是完成了,设计的一开始我就着手准备设计资料,上网、图书馆查阅资料,我安排明确,因此工作进行得有条不紊。

在这次课程设计硬件设计我采用的是TMS320F28335芯片作为控制芯片,虽然老师在上实验课的时候已经简单的介绍过该芯片的特性与使用,但是在用它就出现了很多问题,在这里我遇到了很大的困难,虽然有书籍和网络上查找的辅导资料,但是由于硬件设计是灵活的东西,它不仅需要有过硬的理论知识,还必须有灵活的应用,因此在这方面的调试时花费了大量的时间。

首先,我们把系统想的过于简单,以为只是把每个模块的电路设计成功便可以,却忽视了模块与模块之间的相关性和衔接性,因此总出现错误。

其次,与组员沟通不够,硬件设计的参数与组员编程所用的不相符,导致出现硬件测试没问题,软件调试没问题,两者导入,就不行的状况,更由于各执己见坚持自己是对的一直没有发现问题所在,最后通过请教老师才得以解决。

附录:原理图:主程序:#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File#include "DSP2833x_Examples.h" // DSP2833x Examples Include File// Prototype statements for functions found within this file.interrupt void adc_isr(void);// Global variables used in this example:#define LCDDELAY 1#define LCDCMDTURNON 0x3f#define LCDCMDTURNOFF 0x3e#define LCDCMDSTARTLINE 0xc0#define LCDCMDPAGE 0xb8#define LCDCMDVERADDRESS 0x40#define ADC_usDELAY 8000L#define ADC_usDELAY2 20LUint16 ZhengshuT,XiaoshuT,Zhongjian1,Zhongjian2;float temp1=0;unsigned char lcdkey[5][32];unsigned char ledkey[12][8];Uint16 LoopCount;Uint16 ConversionCount;float temp;Uint16 i,j;Uint16 Voltage1[1024];Uint16 Voltage2[1024];void Delay(int nDelay);void TurnOnLCD();void LCDCLS();void LCDWrite(unsigned int x,unsigned int y,unsigned int LR,unsigned int n);void WriteNb(unsigned int x,unsigned int y,unsigned char *No,unsigned f,unsigned int LR); void Wendu(float c);void delay_loop();void delay_loop1();void error(void);//数字模块unsigned char ledkey[12][8]= //半角{{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00}, //0{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00}, //1{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00}, //2{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00}, //3{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00}, //4{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00}, //5{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00}, //6{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00}, //7{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00}, //8{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}, //9{0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00}, //:{0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00}, //.};void main(void){InitSysCtrl();EALLOW;GpioMuxRegs.GPFMUX.all=0x0000; //I/O:0 特殊功能:1GpioMuxRegs.GPFDIR.all=0x000f; // outputEDIS;DINT;InitPieCtrl();IER = 0x0000; //CPU中断允许寄存器IFR = 0x0000;//CPU中断标志寄存器InitPieVectTable();EALLOW;SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = SYSCLKOUT/6给AD转换时钟提供一个6分频EDIS;EALLOW; // This is needed to write to EALLOW protected registerPieVectTable.ADCINT = &adc_isr;EDIS; // This is needed to disable write to EALLOW protected registersInitAdc(); // 初始化ADPieCtrlRegs.PIEIER1.bit.INTx6 = 1;IER |= M_INT1; // Enable CPU Interrupt 1EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGMLoopCount = 0;ConversionCount = 0;// Configure ADCAdcRegs.ADCMAXCONV.all = 0x0001; // Setup 2 conv's on SEQ1AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA3 as 1st SEQ1 conv.AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup ADCINA2 as 2nd SEQ1 conv.AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // Enable EVASOC to start SEQ1AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS) // Configure EVA// Assumes EVA Clock is already enabled in InitSysCtrl();EvaRegs.T1CMPR = 0x0080; // Setup T1 compare valueEvaRegs.T1PR = 0x0fff; // Setup period registerEvaRegs.GPTCONA.bit.T1TOADC = 1; // Enable EVASOC in EVAEvaRegs.T1CON.all = 0x1042; // Enable timer 1 compare (up TurnOnLCD(); //打开显示LCDCLS(); //清除显示内存*(int *)0x108000=0x80; // 初始化ICETEK-CTRDelay(LCDDELAY);*(int *)0x108000=0x0;Delay(LCDDELAY);*(int *)0x108000=0x80;Delay(LCDDELAY);*(int *)0x108001=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for(;;){Wendu(temp);LCDWrite(2,0,0,0);LCDWrite(2,16,0,1);LCDWrite(2,32,1,2);LCDWrite(2,48,1,3);LCDWrite(6,48,1,4);//在液晶屏上显示相应的汉字及符号WriteNb(6,6,ledkey[ZhengshuT&0x000f],0,0);WriteNb(6,5,ledkey[(ZhengshuT&0x00f0)>>4],0,0);WriteNb(6,2,ledkey[XiaoshuT&0x000f],0,1);WriteNb(6,1,ledkey[(XiaoshuT&0x00f0)>>4],0,1);WriteNb(6,7,ledkey[11],0,0);//在液晶屏上显示温度值}}interrupt void adc_isr(void){Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;if(ConversionCount == 1023){ConversionCount = 0;}else ConversionCount++;if(ConversionCount==0){ temp=0;for(i=0;i<200;i++)temp=temp+Voltage1[i];temp=temp/200.0;//求平均值temp=temp*3.0/4095.0;}// Reinitialize for next ADC sequenceAdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE return;}//延时子程序void Delay( int nDelay){int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}//打开显示子程序void TurnOnLCD(){*(int *)0x108001=LCDCMDTURNON;Delay(LCDDELAY);*(int *)0x108002=0;Delay(2048);*(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}//清屏程序void LCDCLS(){int i,j;*(int *)0x108001=LCDCMDSTARTLINE;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( i=0;i<8;i++ ){*(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j<64;j++ ){*(int *)0x108003=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}*(int *)0x108001=LCDCMDPAGE+i;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);for ( j=0;j<64;j++ ){*(int *)0x108004=0;Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);}}}void LCDWrite(unsigned int x,unsigned int y,unsigned int LR,unsigned int n){unsigned char lcdkey[5][32]={{0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//温{0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度{0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0X00,0X00,0X00,0X00, 0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00},//显{0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00},//示{0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x18,0x00,0x00},//℃};if(LR==0)int j;int k=n;*(int *)0x108001=LCDCMDPAGE+x; Delay(1);*(int *)0x108002=0;Delay(1);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1);*(int *)0x108002=0;Delay(1);for(j=0;j<16;j++){*(int *)0x108003=lcdkey[k][j];Delay(10);*(int *)0x108002=0;Delay(10);}x++;*(int *)0x108001=LCDCMDPAGE+x;Delay(1);*(int *)0x108002=0;Delay(1);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1);*(int *)0x108002=0;Delay(1);for(j=16;j<32;j++){*(int *)0x108003=lcdkey[k][j];Delay(100);*(int *)0x108002=0;Delay(100);}}{int j;int k=n;*(int *)0x108001=LCDCMDPAGE+x; Delay(1);*(int *)0x108002=0;Delay(1);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1);*(int *)0x108002=0;Delay(1);for(j=0;j<16;j++){*(int *)0x108004=lcdkey[k][j];Delay(100);*(int *)0x108002=0;Delay(100);}x++;*(int *)0x108001=LCDCMDPAGE+x;Delay(1);*(int *)0x108002=0;Delay(1);*(int *)0x108001=LCDCMDVERADDRESS+y; Delay(1);*(int *)0x108002=0;Delay(1);for(j=16;j<32;j++){*(int *)0x108004=lcdkey[k][j];Delay(100);*(int *)0x108002=0;Delay(100);}}void WriteNb(unsigned int x,unsigned int y,unsigned char *No,unsigned f,unsigned int LR) {int i;y*=8;*(int *)0x108001=LCDCMDPAGE+x; // 设置操作页=1Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);*(int *)0x108001=LCDCMDVERADDRESS+y; // 起始列=8Delay(LCDDELAY);*(int *)0x108002=0;Delay(LCDDELAY);if(LR==1)for(i=0;i<8;i++){if(f==1)*(int*)0x108004=~No[i];else*(int*)0x108004=No[i];Delay(LCDDELAY);*(int*)0x108002=0;Delay(LCDDELAY);}elsefor(i=0;i<8;i++){if(f==1)*(int*)0x108003=~No[i];else*(int*)0x108003=No[i];Delay(LCDDELAY);*(int*)0x108002=0;Delay(LCDDELAY);}}//温度计算子程序void Wendu(float c){temp1=52-30*c;ZhengshuT=(int)temp1;XiaoshuT=(int)((temp1-ZhengshuT)*100); Zhongjian1=ZhengshuT/10;Zhongjian2=ZhengshuT%10; ZhengshuT=(Zhongjian1<<4)|Zhongjian2;Zhongjian1=XiaoshuT/10;Zhongjian2=XiaoshuT%10;XiaoshuT=(Zhongjian1<<4)|Zhongjian2; }。

相关文档
最新文档