哈工大DSP课程报告.docx

上传人:b****2 文档编号:11624990 上传时间:2023-06-01 格式:DOCX 页数:17 大小:24.03KB
下载 相关 举报
哈工大DSP课程报告.docx_第1页
第1页 / 共17页
哈工大DSP课程报告.docx_第2页
第2页 / 共17页
哈工大DSP课程报告.docx_第3页
第3页 / 共17页
哈工大DSP课程报告.docx_第4页
第4页 / 共17页
哈工大DSP课程报告.docx_第5页
第5页 / 共17页
哈工大DSP课程报告.docx_第6页
第6页 / 共17页
哈工大DSP课程报告.docx_第7页
第7页 / 共17页
哈工大DSP课程报告.docx_第8页
第8页 / 共17页
哈工大DSP课程报告.docx_第9页
第9页 / 共17页
哈工大DSP课程报告.docx_第10页
第10页 / 共17页
哈工大DSP课程报告.docx_第11页
第11页 / 共17页
哈工大DSP课程报告.docx_第12页
第12页 / 共17页
哈工大DSP课程报告.docx_第13页
第13页 / 共17页
哈工大DSP课程报告.docx_第14页
第14页 / 共17页
哈工大DSP课程报告.docx_第15页
第15页 / 共17页
哈工大DSP课程报告.docx_第16页
第16页 / 共17页
哈工大DSP课程报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

哈工大DSP课程报告.docx

《哈工大DSP课程报告.docx》由会员分享,可在线阅读,更多相关《哈工大DSP课程报告.docx(17页珍藏版)》请在冰点文库上搜索。

哈工大DSP课程报告.docx

哈工大DSP课程报告

哈工大DSP课程报告

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

 

2015年秋季学期

《DSP原理及应用》课程

课程设计报告

 

院系:

航天工程与力学系

班号:

_____

学号:

1122110326___

姓名:

高小宁______

 

2016年1月13日

审阅教师:

考核成绩:

________________

题目一:

结合学习过的DSP基本知识,试论述如果采用DSP为核心器件设计系统,需要考虑哪些性能指标、遵循哪些设计原则?

1、运算速度:

首先我们要确定数字信号处理的算法,算法确定以后其运算量和完成时间也就大体确定了,根据运算量及其时间要求就可以估算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.GPDDIR.all=0x0;

GpioMuxRegs.GPEDIR.all=0x0;

GpioMuxRegs.GPFDIR.all=0x00FF;

GpioMuxRegs.GPGDIR.all=0x0;

GpioMuxRegs.GPAQUAL.all=0x0;//设置所有GPIO输入的量化值等于0

GpioMuxRegs.GPBQUAL.all=0x0;

GpioMuxRegs.GPDQUAL.all=0x0;

GpioMuxRegs.GPEQUAL.all=0x0;

EDIS;

}

voidInitSystem(void)

{

EALLOW;

SysCtrlRegs.WDCR=0x00AF;//配置看门狗

//0x00E8禁止看门狗,预定标系数Prescaler=1

//0x00AF不禁止看门狗,预定标系数Prescaler=64

SysCtrlRegs.SCSR=0;//看门狗产生复位

SysCtrlRegs.PLLCR.bit.DIV=10;//配置处理器锁相环,倍频系数为5

SysCtrlRegs.HISPCP.all=0x1;//配置高速外设时钟分频系数:

2

SysCtrlRegs.LOSPCP.all=0x2;//配置低速外设时钟分频系数:

4

//使用的外设时钟时钟设置:

//一般不使用的外设的时钟禁止,降低系统功耗

SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;

SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;

SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;//使能SCI模块的时钟

SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;

SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;

SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;

SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;

SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;

EDIS;

}

voidSCI_Init(void)

{

SciaRegs.SCICCR.all=0x13;//2bit停止位无循环模式

//无极性,字符长度:

8bits,

//异步模式,空闲线协议

SciaRegs.SCICTL1.all=0x0003;//使能TX,RX,内部SCICLK,

//禁止RXERR,SLEEP,TXWAKE

SciaRegs.SCIHBAUD=0;//波特率:

19200(LSPCLK=37.5MHz);

SciaRegs.SCILBAUD=0xf3;

SciaRegs.SCICTL2.bit.TXINTENA=1;//使能SCI发送中断

SciaRegs.SCICTL1.all=0x0023;//使SCI退出复位

}

interruptvoidcpu_timer0_isr(void)

{

CpuTimer0.InterruptCount++;

//每个定时器中断清除一次看门狗计数器

//响应中断并允许系统接收更多的中断

PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;

}

//===========================================================================

//SCI_A发送中断服务程序

//发送字符串message[]

//===========================================================================

interruptvoidSCI_TX_isr(void)

{

if(index<26)SciaRegs.SCITXBUF=message[index++];

//重新初始化PIE为下一次SCI-ATX准备接收下一次中断

PieCtrlRegs.PIEACK.all=0x0100;//响应中断

}

题目五:

采用查询方式实现题目四中功能,SCI配置要求相同,使用发送移位寄存器空标志位TXEMPTY触发发送数据,软件延时方法控制间隔时间3秒,试给出相关程序代码。

 

#include"DSP281x_Device.h"

//使用的函数声明

voidGpio_select(void);

voidInitSystem(void);

voidSCI_Init(void);

voidmain(void)

{

charmessage[]={"TheF2812-UARTisfine!

\n\r"};

intindex=0;//字符指针定义

longi;

InitSystem();//初始化DSP内核寄存器

Gpio_select();//配置GPIO复用功能寄存器

SCI_Init();//SCI接口初始化

while

(1)

{

SciaRegs.SCITXBUF=message[index++];

while(SciaRegs.SCICTL2.bit.TXEMPTY==0);

//状态检测模式:

//状态检测,等待发送标识为空:

TXEMPTY=0

EALLOW;

SysCtrlRegs.WDKEY=0x55;//看门狗控制

SysCtrlRegs.WDKEY=0xAA;

EDIS;

if(index>26)

{

index=0;

for(i=0;i<15000000;i++)//软件延时,近似2秒.

{

EALLOW;

SysCtrlRegs.WDKEY=0x55;//看门狗控制

SysCtrlRegs.WDKEY=0xAA;//看门狗控制

EDIS;

}

}

}

}

 

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.GPDDIR.all=0x0;

GpioMuxRegs.GPEDIR.all=0x0;

GpioMuxRegs.GPFDIR.all=0x0;

GpioMuxRegs.GPGDIR.all=0x0;

GpioMuxRegs.GPAQUAL.all=0x0;//设置所有GPIO输入的量化值等于0

GpioMuxRegs.GPBQUAL.all=0x0;

GpioMuxRegs.GPDQUAL.all=0x0;

GpioMuxRegs.GPEQUAL.all=0x0;

EDIS;

}

voidInitSystem(void)

{

EALLOW;

SysCtrlRegs.WDCR=0x00AF;//配置看门狗

//0x00E8禁止看门狗,预定标系数Prescaler=1

//0x00AF不禁止看门狗,预定标系数Prescaler=64

SysCtrlRegs.SCSR=0;//看门狗产生复位

SysCtrlRegs.PLLCR.bit.DIV=10;//配置处理器锁相环,倍频系数为5

SysCtrlRegs.HISPCP.all=0x1;//配置高速外设时钟分频系数:

2

SysCtrlRegs.LOSPCP.all=0x2;//配置低速外设时钟分频系数:

4

//使用的外设时钟时钟设置:

//一般不使用的外设的时钟禁止,降低系统功耗

SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;

SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;

SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;//使能SCI模块的时钟

SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;

SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;

SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;

SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;

SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;

EDIS;

}

voidSCI_Init(void)

{

SciaRegs.SCICCR.all=0x13;//2bit停止位无循环模式

//无极性,字符长度:

8bits,

//异步模式,空闲线协议

SciaRegs.SCICTL1.all=0x0003;//使能TX,RX,内部SCICLK,

//禁止RXERR,SLEEP,TXWAKE

SciaRegs.SCIHBAUD=0;//波特率:

19200(LSPCLK=37.5MHz);

SciaRegs.SCILBAUD=0xf3;

SciaRegs.SCICTL1.all=0x0023;//使SCI退出复位

}

题目六:

0

2

1

3

4

5

7

6

应用DSP处理器的SPI接口,以查询方式实现低电平点亮LED循环显示16进制字符“0~F”功能(LED定义如左图所示),SPI配置为上升沿无延时发送,数据长度为8位,波特率最小值,试设计给出相关程序代码。

 

#include"DSP28_Device.h"

Uint16table[15]={0xc000,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF800,0x8000,0x9000,0x8800,0x8300,0xc600,0xa100,0x8600,0x8e00};

voidspi_intial()//SPI初始化子程序

{

EALLOW;

SpiaRegs.SPICCR.all=0x0047;//使SPI处于复位模式,下降沿,8位数据

SpiaRegs.SPICTL.all=0x0006;//主控模式,一般时钟模式,使能talk,关闭SPI中断

SpiaRegs.SPIBRR=0x007F;//配置波特率

SpiaRegs.SPICCR.all=SpiaRegs.SPICCR.all|0x00C7;//退出复位状态

EALLOW;

GpioMuxRegs.GPFMUX.all=0x000F;//设置通用引脚为SPI引脚

EDIS;

}

voidgpio_init()

{

EALLOW;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2