DSP课设PWM.docx
《DSP课设PWM.docx》由会员分享,可在线阅读,更多相关《DSP课设PWM.docx(21页珍藏版)》请在冰豆网上搜索。
DSP课设PWM
一引言与概述
1.1DSP介绍
数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科
而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术
的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通
过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列
表示。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应
用。
德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。
DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号
来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或l的数字信
号。
再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解
译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可
达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界
中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道
的两大特色。
DSP微处理器(芯片)一般具有如下主要特点:
(1)在一个指令周期内可完成一玖乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件1/0支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以熏叠执行。
1.2DSP的应用:
语音处理:
语音编码、语音合成、语音识别、语音增强、语音邮件、语音
储存等。
图像/图形:
二维和三维图形处理、图像压缩与传输、图像识别、动画、机
器人视觉、多媒体、电子地图、图像增强等。
军事、保密通信、雷达处理、声呐处理、导航、全球定位、跳频电台、搜
索和反搜索等。
仪器仪表:
频谱分析、函数发生、数据采集、地震处理等。
自动控制:
控制、深空作业、自动驾驶、机器人控制、磁盘控制等。
医疗:
助听、超声设备、诊断工具、病人监护、心电图等。
家用电器:
数字音响、数字电视、可视电话、音乐合成、音调控制、玩具
与游戏等。
生物医学信号处理举例:
CT:
计算机X射线断层摄影装置。
(其中发明头颅CT英国EMI公司的豪斯
菲尔德获诺贝尔奖。
)
CAT:
计算机X射线空间重建装置。
出现全身扫描,心脏活动立体图形,脑
肿瘤异物,人体躯干图像重建。
1.3问题描述
输入输出端口(1/0)是DSP芯片内部电路与外部世界交换信息的通道。
输入端
口负责从外界接收检测信号.键盘信号等各种开关量信弓;输出端口负责向外界输送有
内部电路产生的处理结果.显示信息,控制命令.驱动信号。
使用中断和定时器延时循环程序,设计DSP的流水灯控制器,在事件管理器中应
用EV中断。
1.4DSP2407简介
2407开发板分为TI2000-011DSP2407增强型、DSP2407+CPLD开发板、
SHX-DSP2407A开发板。
引DSP2407+CPLD开发板套件是一套基TMS320LF2407A+EPM240
的DSP+CPLD的学习开发平台,充分发挥DSP2407和ALTERAMAXII的灵活性和功能强
大,用户手册详实易懂,大量源码轻松上手(分DSP和CPLD两部分),我们为用户提
供一个完整的IP核通过CPLD进行系统资源分配,用户可以根据需要进行裁剪或追加
功能。
由于我们的外设都是通过CPLD连接与DSP连接进行电平转换、隔离和总
线。
仲裁等先进技术,所以使用极为方便灵活、简洁、并且运行及其稳定。
这
种结构可以充分利用了CPLD的灵活性和功能强大的IP核进行功能更强的系统
应用。
是初学者和从事开发的科研工作者学习2407和CPLD的首选之品。
本
开发板供初学者学习使用,也可作为系统板嵌入到用户的产品供用户进行二次
开发以便缩短产品开发周期。
SHX-DSP2407A开发板是DSP2407系列产品中的重
要一员。
它的最大优点是直观简单明了,极为适于初学者。
此棋板采用统一的
系统结构、模块结构和机械结构,以多种典型DSP处理器构成的DSP基本系统、
标准总线和相同物理尺寸的DSP嵌入式控制模板,将2407的功能发挥的淋漓尽
致,为学习者提供了强大、有效的学习平台。
用户手册详实易懂,大量源码轻
松上手(分DSP和CPLD两部分),我们为用户提供一个完整的IP核通过CPLD
进行系统资源分配,用户可以根据需要进行裁剪或追加功能。
1.5事件管理器的引脚说明
1.6比较单元
1.7PWM基本原理
ØPWM控制基本原理
PWM(PulseWidthModulation)就是脉宽调制技术—矩形脉冲波形,可理解为占空比可调的方波。
即通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形(含形状和幅值)。
也就是说PWM信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列;宽度是根据预定值来决定和调制的。
1.PWM信号产生
用一定时器重复产生与PWM周期相同的计数周期,一个比较寄存器保持着调制值,在相应的输出上会产生一个转换。
输出脉冲的开关时间会与比较寄存器的值成比例。
2.死区
在许多的运动/电机控制和功率电子应用场合中,两个功率器件(上级和下级)被串联在一个功率支路中,为避免击穿失效,在一个三极管的关断和另一个三极管导通之间经常要插入一个死区,这段时间延迟允许一个三极管在别的三极管导通之前完全关断。
ØPWM的基本思想
所以据面积等效原理,正弦波等效为下图中所示的PWM波。
二系统总体设计与工作原理
2.1总体设计与分析
1.DSP直接可以输出PWM波,所以不需要额外的硬件连接。
但是DSP输出的驱动能力有限,驱动电机必须额外加放大驱动电路。
2.以DSP的EVA单元为例子,EVA的2个通用定时器可以产生2路独立的PWM波,3个比较单元能够产生6对带死区的PWM波。
1)T1CNT为连续计数模式产生不对称的PWM波,此时PWM的周期为(t1pr+1)/tclk,t1pr为周期寄存器值,TCLK为当前定时器每计数一次所需时间。
2)T1CNT为连续增减计数产生对称的PWM波。
周期为2T1PR/tclk.
为了产生一个PWM信号,DSP的定时器定时周期应该和PWM的周期相等。
另外需要对DSP的EVA/EVB模块中的比较单元的比较寄存器设定数值,这样该数值一直与定时器的计数器值相比较,按照一定的比较方式,PWM即产生跳变。
通过此种方式,DSP的PWM管脚就会产生一个宽度与比较寄存器数值成比例的脉冲信号。
在定时器重复定时的过程中就产生了PWM信号。
使用DSP比较单元产生PWM波形不需要硬件连接图,只需对DPS的相关寄存器进行配置就可以在输出端得到相应的PWM波形,其具体操作过程如下:
1.设置比较方式控制寄存器ACTRx
2.如有必要,使能死区功能,配置死区控制寄存器DBTCONx
3.对比较寄存器CMPRx赋值
4.设置定时器寄存器T1CON(T3CON)并启动定时
5.通过更新CMPRx的数值改变PWM占空比的大小2.2工作原理
EV模块中的每个比较单元均可产生非对称和对称的PWM波形。
另外这三个比较单元一起可产生三相对称空间向量PWM输出。
用GP定时器产生PWM输出已介绍,下面仅介绍用比较单元产生PWM。
(1)非对称PWM波形产生
用一个比较单元产生一个非对称的PWM波形。
见下图。
GP定时器1必须设置为连续递增计数模式,其周期寄存器必须载入一个与所需的PWM载波周期相对应的值。
(2)对称的PWM波形产生
对称的PWM波形是其调制脉冲在每个PWM周期是对称的。
如下图所示。
对称的与非对称PWM波形相比,优点在于在每个PWM周期的开始和结束它有两个相同长度的无效区,这种对称性表现为当正弦调制使用时,它在一个交流电机的相电流中比非对称的PWM信号引起更少的谐波。
2.2基本理论
指导实验的基本理论是DSP的数字I/O端口以及其寄存器的配置。
通过对这些理论的掌握和运用,达到了解和熟悉一般DSP数字I/O的知识。
(1)数字I/O端口
TMS320LF2407系列有多达41个通用、双向的数字I/O(GPIO)引脚,其中大多数是基本功能和一般I/O复用引脚,TMS320LF2407系列的大多数都可以用来实现其他功能。
数字I/O端口模块采用了一种灵活的方法,以控制专用I/O和复用I/O引脚的功能,所有I/O和复用引脚的功能可以通过9个16位控制寄存器来设置,这些寄存器可以分为两类:
●I/O口复用控制寄存器(MCRx):
用来控制选择I/O引脚作为基本功能或一般I/O引脚功能。
●数据和方向控制寄存器(PxDATDIR):
当I/O引脚作为一般I/O引脚功能时,用数据和方向控制寄存器可控制数据和I/O引脚的数据方向,这些寄存器直接和I/O引脚相连。
(2)数字I/O端口寄存器
图1给出了TMS320LF2407系列I/O端口复用引脚配置简图,从图上可以看出一些寄存器单元的配置对应于实际I/O引脚的内部结构之间的联系。
图1复用引脚配置图
表1中所列的是数字I/O模块可用的寄存器单元,和其他240xA外设一样,这些寄存器被存储器映射到数据空间,地址从7090h到709Fh。
寄存器单元中保留的位所是无效的,读时为0,写对它无影响。
表1数字数字I/O模块控制寄存器地址
地址
存储寄存器
说明
7090h
MCRA
I/O复用控制寄存器A
7092h
MCRB
I/O复用控制寄存器B
7094h
MCRC
I/O复用控制寄存器C
7098h
PADATDIR
I/O端口A数据和方向寄存器
709Ah
PBDATDIR
I/O端口B数据和方向寄存器
709Ch
PCDATDIR
I/O端口C数据和方向寄存器
709Eh
PDDATAIR
I/O端口D数据和方向寄存器
7095h
PEDATAIR
I/O端口E数据和方向寄存器
7096h
PEDATDIR
I/O端口F数据和方向寄存器
下面介绍I/O口复用输出控制寄存器。
下面描述了I/O口复用控制寄存器A(MCRA)I/O口复用控制寄存器B(MCRB),I/O口复用控制寄存器C(MCRC),其中表2是I/O口复用控制寄存器A(MCRA)的配置,对寄存器的每个位的值做了详细的描述;表3是I/O口复用控制寄存器B(MCRB)的配置,对寄存器的每个位的值做了详细的描述。
表4是I/O口复用控制寄存器C(MCRC)的配置,对寄存器的每个位的值做了详细的描述。
●I/O口复用控制寄存器A(MCRA)—地址7090h
注:
R=可读,W=可写,_0=复位后的值
表2I/O口复用控制寄存器A(MCRA)的配置
●I/O口复用控制寄存器B(MCRB——地址7092h)
注:
R=可读,W=可写,_0=复位后的值
表3I/O口复用控制寄存器B(MCRB)的配置
●I/O口复用控制寄存器C(MCRC——地址7094h)
注:
R=可读,W=可写,_0=复位后的值
表4I/O口复用控制寄存器C(MCRC)的配置
以下介绍DSP的I/O口数据和方向寄存器。
TMS320LF2407系列总共有6个数据和方向控制寄存器(PxDATADIR),当I/O口用作一般I/O引脚功能时,用数据和方向控制寄存器,可控制数据和到双向I/O引脚的数据方向。
这些寄存器直接和双向I/O引脚相连。
当I/O用作基本功能时,这些寄存器的设置对相应的引脚无影响。
●端口A数据和方向控制寄存器A(PADATADIR)—地址7098h
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
●端口B数据和方向控制寄存器(PBDATDIR)——地址709Ah
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
●端口C数据和方向控制键寄存器(PCDATDIR)——地址709Ch
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
●端口D数据和方向控制键寄存器(PDDATDIR)——地址709Eh
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
●端口E数据和方向控制键寄存器(PEDATDIR)——地址7094h
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
●端口F数据和方向控制键寄存器(PFDATDIR)——地址7096h
注:
_+复位后的值和相应引脚的状态有关,R=可读,W=可写,_0=复位后的值
三各单元硬件设计及工作原理
事件管理器A和B的引脚描述
四软件设计与说明
4.1程序文件说明
程序主要文件:
(1)vectors.asm:
包含了LF2407中断矢量的文件,中断向量表文件。
(2)pwm.c:
这是实验的主程序C源文件,包含了系统的初始化及对片外扩展的高32K数据控件的操作。
(3)2407CMD.cmd:
DSP的链接文件,声明了系统的存贮器配置与程序各段的连接关系,它的主要功能是将DSP的每段的程序链接到相应的DSP的存贮区中。
(4)rts2xx.lib是一个库文件,主要包含了有关C的运行环境与相应的函数的代码。
4.2主程序(pwm.c)
//该程序利用EVB模块的PWM7--PWM12引脚产生不同占空比的方波
#include"register.h"
voidinlinedisable()//屏蔽中断程序
{asm("setcINTM");
}
intinitial()//系统初始化子程序
{asm("setcSXM");//符号位扩展有效
asm("clrcOVM");//累加器中结果正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
*SCSR1=0x80FE;//CLKIN=10M,CLKOUT=4*CLKIN=40M
*WDCR=0x0E8;//不使能看门狗,因为SCSR2中的WDOVERRIDE
//即WD保护位复位后的缺省值为1,故可以
//用软件禁止看门狗
*IMR=0x0000;//禁止所有中断
*IFR=0x0FFFF;//清除全部中断标志,"写1清0"
WSGR=0X0FFFF;//禁止所有的等待状态
}
intpwminitial()//EVB模块的PWM初始化程序
{*MCRC=*MCRC|0X007E;//IOPE1-6被配置为基本功能方式,PWM7-12
*ACTRB=0X0666;//PWM12,10,8低有效,PWM11,9,7高有效
*DBTCONB=0xFFC;//不使能死区控制
*CMPR4=0X1000;
*CMPR5=0X3000;
*CMPR6=0X5000;
*T3PER=0X6000;//设置定时器3的周期寄存器,并设置CMPR4-6,
//以确定不同的输出占空比
*COMCONB=0X8200;//使能比较操作
*T3CON=0X1000;//定时器3为连续增计数模式
}
voidinterruptnothing()//该中断服务程序是为了防止干扰,不做任何其它操作
{return;//中断直接返回
}
main()//主程序
{disable();//总中断禁止
initial();//系统初始化
pwminitial();//PWM输出初始化
*T3CON=*T3CON|0x0040;//启动定时器3
while
(1){;}
}
4.3向量表程序(vectors.asm)
.ref_nothing;直接返回的中断服务程序符号
.ref_c_int0;复位向量符号
.sect".vectors"
RSVECTB_c_int0;PM0复位向量1
INT1B_nothing;PM2中断优先级14
INT2B_nothing;PM4中断优先级25
INT3B_nothing;PM6中断优先级36
INT4B_nothing;PM8中断优先级47
INT5B_nothing;PMA中断优先级58
INT6B_nothing;PMC中断优先级69
4.4存储器配置(2407CMD.cmd)
-w
-stack200
-heap200
-lrts2xx.lib
MEMORY
{PAGE0:
VECS:
ORIGIN=00000H,LENGTH=00040H/*中断向量存贮空间*/
PVECS:
ORIGIN=00044H,LENGTH=00100H/*外围中断向量*/
PM:
ORIGIN=00150H,LENGTH=07EAFH/*片内flash存储空间*/
PAGE1:
REGS:
ORIGIN=0H,LENGTH=60H/*存储器映射的寄存器和保留地址*/
BLK_B2:
ORIGIN=60H,LENGTH=20H/*块B2*/
BLK_B0:
ORIGIN=200H,LENGTH=100H/*块B0,如果CNF=0,则分配为片内ARAM*/
BLK_B1:
ORIGIN=300H,LENGTH=100H/*块B1*/
SARAM_D:
ORIGIN=800H,LENGTH=800H/*如果正确培植SCSR2寄存器,
则此为数据空间中的2KSARAM*/
PERIPH:
ORIGIN=7000H,LENGTH=1000H/*外围寄存器空间*/
EX2_DM:
ORIGIN=8000H,LENGTH=8000H/*外围数据RAM*/
PAGE2:
/*I/O存储空间*/
IO_EX:
ORIGIN=0000H,LENGTH=0FFF0H/*外部的I/O映射空间*/
IO_IN:
ORIGIN=0FFF0H,LENGTH=0FH/*片内的I/O映射空间*/
}
SECTIONS
{.reset:
>VECSPAGE0/*中断向量表*/
.vectors:
>VECSPAGE0
.pvecs:
>PVECSPAGE0
.text:
>PMPAGE0
.cinit:
>PMPAGE0
.bss:
>SARAM_DPAGE1
.usect:
>BLK_B0PAGE1
.data:
>BLK_B1PAGE1
.stack:
>SARAM_DPAGE1
}
五调试结果及其操作说明
5.1CCS集成开发环境
CCS提供了配置、建立、调试、跟踪和分析程序的工具,如图所示,它便于实时、嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下所示的开发周期的所有阶段。
CCS的开发过程
5.2CCS的调试操作
1.设置断点。
将光标放置在需要设置断点的程序行前,选择Debug→Breakpoints,即完成可一个断点的设置。
2.CCS提供3种方法复位目标板
1)ResetDSP:
Debug→ResetCPU,初始化所有的寄存器内容并暂停运行中的程序。
使用此命令后,要重新装载.out文件后,再执行程序。
2)Restart:
Debug→Restart,将PC值恢复到当前载入程序的入口地址。
3)Gomain:
Debug→Gomain,将程序运行到主程序的入口处暂停。
3.CCS提供4种执行操作
1)全速执行:
Debug→Run,程序运行直到遇到断点为止。
2)暂停执行:
Debug→Halt,程序停止运行。
3)动画执行:
Debug→Animate,用户反复运行程序,直到遇到断点为止。
4)自由执行:
Debug→RunFree,禁止所有断点运行程序。
4.CCS提供4种单步执行操作
1)单步进入:
Debug→stepinto,快捷键F8,当调试语句不是基本汇编指令时,此操作进入语句内部。
2)单步执行:
Debug→stepOver,此命令将函数或子函数当作一条语句执行,不进入内部调试。
3)单步跳出:
Debug→stepOut,此命令作用为从子程序中跳出
4)执行到光标处:
Debug→RuntoCursor,快捷键crtl+F10,此命令作用为将程序运行到光标处。
5.内存、寄存器与变量的操作
1)查看变量使用view→WatchWindow命令
2)查看寄存器使用view→Registers→CPURegisters命令,如图3.4所示。
3)查看内存使用view→memory命令
六参考文献
1.刘和平等编著《DSP原理及电机控制应用》北京航空航天大学
出版社2006年11月
2.刘和平等编著《TMS320LF240xDSPC语言开发应用》北京航空航天大学
出版社2003年1月
3.赵世廉编著《TMS320x240xDSP原理及应用开发指南》北京航空航天大学
出版社2007年7月