哈工大DSP课程报告Word文档格式.docx
- 文档编号:18569676
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:13
- 大小:24.10KB
哈工大DSP课程报告Word文档格式.docx
《哈工大DSP课程报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《哈工大DSP课程报告Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
注意的是,厂家提供的该指标一般是指峰值指标,因此,系统设计时应注意留有一定的裕量。
4、MBPS(MillionBitPerSecond),它是对总线和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->
CPUFreqlnMHz=Freq;
PeriodInUSec=Period;
temp=(long)(Freq*Period);
RegsAddr->
PRD.all=temp;
TPR.all=0;
Timer->
TPRH.all=0;
TCR.bit.POL=0;
TCR.bit.TOG=0;
TCR.bit.TSS=1;
TCR.bit.TRB=1;
TCR.bit.FRCEN=0;
TCR.bit.PWIDTH=7;
TCR.bit.SOFT=1;
TCR.bit.FREE=1;
TCR.bit.TIE=1;
lnterruptCount=0;
}
ConfigCpuTimer(&
CpuTimer0,150,10000);
如果采用DSP处理器的GPIO端口点亮小灯,试画出基本的电路原理图。
VDD33V|
当GPIO端为低电平时,小灯被点亮。
题目四:
设计DSP处理器SCI串口同计算机通信,采用中断方式收发数
据,间隔3秒发送一次字符"
TheTMS320F2812-UARTisfine!
"
;
要求SCI配置为波特率19200,数据长度8Bit,无极性,2位停止位;
使用TX缓冲寄存器空触发SCI-TXINT中断,CPU定时器0中断触发第一次传输,试给出相关程序代码。
#inelude"
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.TINTO=&
cpu_timerO_isr;
EDIS;
//使能寄存器保护
InitCpuTimers();
//配置CPU-Timer0周期50ms:
//150MHzCPU频率,50000微秒中断周期
ConfigCpuTimer(&
CpuTimer0,150,50000);
//使能PIE内的TINT0:
Group1interrupt7
PieCtrlRegs.PIEIER1.bit」NTx7=1;
//使能CPUINT1(连接到CPU-Timer0中断)
IER=1;
PieVectTable.TXAINT=&
SCI_TX_isr;
//使能PIE内的SCI_A_TX_INT中断PieCtrlRegs.PIEIER9.bit」NTx2=1;
//使能CPUINT9
IER|=0x100;
//全局中断使能和更高优先级的实时调试事件
EINT;
//全局中断使能INTM
ERTM;
//使能实时调试中断DBGM
CpuTimer0Regs.TCR.bit.TSS=0;
//启动定时器0
SCI_Init();
while
(1)
while(CpuTimer0.InterruptCount<
60)//等待
50ms*60
SysCtrIRegs.WDKEY二0x55;
SysCtrIRegs.WDKEY二0xAA;
//看门狗控制
CpuTimer0.InterruptCount=0;
//复位计数器
index=0;
SciaRegs.SCITXBUF二message[index++];
voidGpio_select(void)
置为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;
voidInitSystem(void)
SysCtrIRegs.WDCR二0x00AF;
//配置看门狗
//0x00E8禁止看门狗,预定
标系数Prescaler=1
//OxOOAF不禁止看门狗,预
定标系数Prescaler=64
SysCtrIRegs.SCSR=0;
//看门狗产生复位
SysCtrlRegs.PLLCR.bit.DIV=10;
//配置处理器锁相环,
倍频系数为5
SysCtrIRegs.HISPCPall=0x1;
//配置高速外设时钟分
频系数:
2
SysCtrlRegs丄OSPCP.all二0x2;
//配置低速外设时钟分
4
//使用的外设时钟时钟设置:
//一般不使用的外设的时钟禁止,降低系统功耗
SysCtrlRegs.PCLKCR.bit.EVAENCLK=O;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=O;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
//使能SCI模块的时钟
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=O;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=O;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;
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」nterruptCount++;
//每个定时器中断清除一次看门狗计数器
//响应中断并允许系统接收更多的中断
PieCtrIRegs.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秒,试给出相关程序代码。
//使用的函数声明
voidmain(void)
//字符指针定义
longi;
SCI_Init();
//SCI接口初始化
SciaRegs.SCITXBUF二message[index++];
while(SciaRegs.SCICTL2.bit.TXEMPTY==0);
//状态检测模式:
//状态检测,等待发送标识为空:
TXEMPTY=0
SysCtrIRegs.WDKEY二0x55;
SysCtrIRegs.WDKEY二0xAA;
if(index>
26)
index=0;
for(i=0;
i<
15000000;
i++)//软件延时,近似2秒.
SysCtrlRegs.WDKEY二0x55;
SysCtrlRegs.WDKEY二0xAA;
//看门狗控
制
GpioMuxRegs.GPAMUX.all=0x0;
//所有GPIO端口配
//配置
SCI-TX
IIGPIOPORT配置为输入
GpioMuxRegs.GPFDIR.all=0x0;
//0x00E8禁止看门狗,预定标系数Prescaler=1
//0x00AF不禁止看门狗,预定标系数Prescaler=64
SysCtrlRegs.SCSR=0;
//配置处理器锁相环,
SysCtrIRegs丄OSPCP.all二0x2;
SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;
〃无极性,字符长度:
//异步模式,空闲线协议
〃禁止RXERR,
SLEEP,TXWAKE
19200(LSPCLK=
题目六:
应用DSP处理器的SPI接口,以查询方式实现低电平点亮LED循环显示16进制字符“0~F”功能(LED定义如左图所示),SPI配置为上升沿无延时发送,数据长度为8位,波特率最小值,试设计给出相关程序代码。
DSP28_Device.h"
Uint16
table[15]={0xc000,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF8
00,0x8000,0x9000,0x8800,0x8300,0xc600,0xa100,0x8600,0x8e00};
voidspi」ntial()//SPI初始化子程序
SpiaRegs.SPICCR.all=0x0047;
//使SPI处于复位模式,下
降沿,8位数据
SpiaRegs.SPICTL.all=0x0006;
//主控模式,一般时钟模
式,使能talk,关闭SPI中断
SpiaRegs.SPIBRR=0x007F;
//配置波特率
SpiaRegs.SPICCR.all=SpiaRegs.SPICCR.all|0x00C7;
//退出复
位状态
GpioMuxRegs.GPFMUX.all=OxOOOF;
//设置
通用引脚为SPI引脚
voidgpio_init()
GpioMuxRegs.GPAMUX.bit.TDIRA_GPIOA11=0;
//GPIOA11
设置为一般I/O端口
GpioMuxRegs.GPADIR.bit.GPIOA1仁1;
//把GPIOA11设置
为输出
GpioDataRegs.GPADAT.bit.GPIOA1仁0;
端口为74HC595锁存信号
unsignedintk=0;
InitSysCtrl();
//系统初始化子程序,该程序包含在
DSP28_SysCtrl.C中
DINT;
//关闭总中断
IER=0x0000;
IFR=0x0000;
spi_intial();
//SPI初始化子程序
gpio_init();
//GPIO初始化子程序
//给LOCK
信号一个低电平
for(k=0;
k<
8;
k++)
SpiaRegs.SPITXBUF=table[k+1];
//给数码管
送数
while(SpiaRegs.SPISTS.bit」NT_FLAG!
=1){}
SpiaRegs.SPIRXBUF=SpiaRegs.SPIRXBUF;
//空读清中断标志
GpioDataRegs.GPADAT.bit.GPIOA11=1;
//给
LOCK信号一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 DSP 课程 报告