哈工大DSP课程报告.doc
《哈工大DSP课程报告.doc》由会员分享,可在线阅读,更多相关《哈工大DSP课程报告.doc(17页珍藏版)》请在冰豆网上搜索。
2015年秋季学期
《DSP原理及应用》课程
课程设计报告
院系:
航天工程与力学系
班号:
1218201_____
学号:
1122110326___
姓名:
高小宁______
2016年1月13日
审阅教师:
考核成绩:
________________
题目一:
结合学习过的DSP基本知识,试论述如果采用DSP为核心器件设计系统,需要考虑哪些性能指标、遵循哪些设计原则?
一、运算速度:
首先我们要确定数字信号处理的算法,算法确定以后其运算量和完成时间也就大体确定了,根据运算量及其时间要求就可以估算DSP芯片运算速度的下限。
在选择DSP芯片时,各个芯片运算速度的衡量标准主要有:
1、MIPS(Millions of Instructions Per Second),百万条指令/秒,一般DSP为20~100MIPS,使用超长指令字的TMS320B2XX为2400MIPS。
必须指出的是这是定点 DSP芯片运算速度的衡量指标,应注意的是,厂家提供的该指标一般是指峰值指标,因此,系统设计时应留有一定的裕量。
2、MOPS(Millions of Operations Per Second),每秒执行百万操作。
这个指标的问题是什么是一次操作,通常操作包括CPU操作外,还包括地址计算、DMA访问数据传输、I/O操作等。
一般说MOPS越高意味着乘积-累加和运算速度越快。
MOPS可以对DSP芯片的性能进行综合描述。
3、MFLOPS(Million Floating Point Operations Per Second),百万次浮点操作/秒,这是衡量浮点DSP芯片的重要指标。
例如TMS320C31在主频为40MHz时,处理能力为40MFLOPS, TMS320C6701在指令周期为6ns时,单精度运算可达1GFLOPS。
浮点操作包括浮点乘法、加法、减法、存储等操作。
应注意的是,厂家提供的该指标一般是指峰值指标,因此,系统设计时应注意留有一定的裕量。
4、MBPS(Million Bit Per Second),它是对总线和I/O口数据吞吐率的度量,也就是某个总线或I/O的带宽。
例如对TMS320C6XXX、200MHz时钟、32bit总线时,总线数据吞吐率则为800Mbyte/s或6400MBPS。
5、指令周期,即执行一条指令所需的时间,通常以ns(纳秒)为单位,如TMS320LC549-80在主频为80MHz是的指令周期为12.5ns。
MAC时间,执行一次乘法和加法运算所花费的时间:
大多数DSP芯片可以在一个指令周期内完成一次MAC运算。
6、FFT/FIR执行时间,运行一个N点FFT或N点FIR程序的运算时间。
由于FFT运算/FIR运算是数字信号处理的一个典型算法,因此,该指标可以作为衡量芯片性能的综合指标。
二、运算精度:
一般情况下,浮点DSP芯片的运算精度要高于定点DSP芯片的运算精度,但是功耗和价格也随之上升。
三、字长的选择:
一般浮点DSP芯片都用32位的数据字,大多数定点DSP芯片是16位数据字。
四、存储器等片内硬件资源安排:
包括存储器的大小,片内存储器的数量,总线寻址空间等。
五、开发调试工具:
完善、方便的的开发工具和相关支持软件是开发大型、复杂DSP系统的必备条件,对缩短产品的开发周期有很重要的作用。
六、功耗与电源管理:
一般来说个人数字产品、便携设备和户外设备等对功耗有特殊要求,因此这也是一个该考虑的问题。
七、价格及厂家的售后服务因素:
价格包括DSP芯片的价格和开发工具的价格。
八、其他因素:
包括DSP芯片的封装形式、环境要求、供货周期、生命周期等。
题目二:
采用DSP处理器的CPU定时器进行10000次计数,写出定时器的设置程序代码。
voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod)
{
Uint32temp;///定时器计数值
Timer->CPUFreqInMHz=Freq;
Timer->PeriodInUSec=Period;
temp=(long)(Freq*Period);
Timer->RegsAddr->PRD.all=temp;
Timer->RegsAddr->TPR.all=0;
Timer->RegsAddr->TPRH.all=0;
Timer->RegsAddr->TCR.bit.POL=0;
Timer->RegsAddr->TCR.bit.TOG=0;
Timer->RegsAddr->TCR.bit.TSS=1;
Timer->RegsAddr->TCR.bit.TRB=1;
Timer->RegsAddr->TCR.bit.FRCEN=0;
Timer->RegsAddr->TCR.bit.PWIDTH=7;
Timer->RegsAddr->TCR.bit.SOFT=1;
Timer->RegsAddr->TCR.bit.FREE=1;
Timer->RegsAddr->TCR.bit.TIE=1;
Timer->InterruptCount=0;
}
ConfigCpuTimer(&CpuTimer0,150,10000);
题目三:
如果采用DSP处理器的GPIO端口点亮小灯,试画出基本的电路原理图。
当GPIO端为低电平时,小灯被点亮。
题目四:
设计DSP处理器SCI串口同计算机通信,采用中断方式收发数据,间隔3秒发送一次字符"TheTMS320F2812-UARTisfine!
";要求SCI配置为波特率19200,数据长度8Bit,无极性,2位停止位;使用TX缓冲寄存器空触发SCI-TXINT中断,CPU定时器0中断触发第一次传输,试给出相关程序代码。
#include"DSP281x_Device.h"
//使用的函数原型声明
voidGpio_select(void);
voidInitSystem(void);
voidSCI_Init(void);
interruptvoidcpu_timer0_isr(void);
interruptvoidSCI_TX_isr(void);
//全局变量
charmessage[]={"TheF2812-UARTisfine!
\n\r"};
intindex=0; //字符串指针
voidmain(void)
{
InitSystem(); //初始化DSP内核寄存器
Gpio_select(); //配置GPIO复用功能寄存器
InitPieCtrl(); //调用外设中断扩展初始化单元PIE-unit(代码:
DSP281x_PieCtrl.c)
InitPieVectTable();//初始化PIEvector向量表(代码:
DSP281x_PieVect.c)
//重新映射PIE-Timer0的中断
EALLOW;//解除寄存器保护
PieVectTable.TINT0=&cpu_timer0_isr;
EDIS;//使能寄存器保护
InitCpuTimers();
//配置CPU-Timer0周期50ms:
//150MHzCPU频率,50000微秒中断周期
ConfigCpuTimer(&CpuTimer0,150,50000);
//使能PIE内的TINT0:
Group1interrupt7
PieCtrlRegs.PIEIER1.bit.INTx7=1;
//使能CPUINT1(连接到CPU-Timer0中断)
IER=1;
EALLOW; //解除寄存器保护
PieVectTable.TXAINT=&SCI_TX_isr;
EDIS;//使能寄存器保护
//使能PIE内的SCI_A_TX_INT中断
PieCtrlRegs.PIEIER9.bit.INTx2=1;
//使能CPUINT9
IER|=0x100;
//全局中断使能和更高优先级的实时调试事件
EINT;//全局中断使能INTM
ERTM;//使能实时调试中断DBGM
CpuTimer0Regs.TCR.bit.TSS=0;//启动定时器0
SCI_Init();
while
(1)
{
while(CpuTimer0.InterruptCount<60)//等待50ms*60
{
EALLOW;
SysCtrlRegs.WDKEY=0x55;
SysCtrlRegs.WDKEY=0xAA; //看门狗控制
EDIS;
}
CpuTimer0.InterruptCount=0;//复位计数器
index=0;
SciaRegs.SCITXBUF=message[index++];
}
}
voidGpio_select(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all=0x0; //所有GPIO端口配置为I/O
GpioMuxRegs.GPBMUX.all=0x0;
GpioMuxRegs.GPDMUX.all=0x0;
GpioMuxRegs.GPFMUX.all=0x0;
GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5=1;//配置SCI-RX
GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1;//配置SCI-TX
GpioMuxRegs.GPEMUX.all=0x0;
GpioMuxRegs.GPGMUX.all=0x0;
GpioMuxRegs.GPADIR.all=0x0; //GPIOPORT配置为输入
GpioMuxRegs.GPBDIR.all=0x0;
GpioMuxRegs.GPDD