哈工大DSP课程报告
更新时间:2023-11-15 04:48:01 阅读量: 教育文库 文档下载
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次计数,写出定时器的设置程序代码。
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
{
Uint32 temp;///定时器计数值
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秒发送一次字符\;要求SCI配置为波特率19200,数据长度8Bit,无极性,2位停止位;使用TX缓冲寄存器空触发SCI-TX INT中断,CPU定时器0中断触发第一次传输,试给出相关程序代码。
#include \
// 使用的函数原型声明
void Gpio_select(void); void InitSystem(void); void SCI_Init(void);
interrupt void cpu_timer0_isr(void); interrupt void SCI_TX_isr(void);
// 全局变量
char message[]={\int index =0;
void main(void) {
// 字符串指针
InitSystem();
Gpio_select();
InitPieCtrl();
// 初始化DSP内核寄存器 // 配置GPIO复用功能寄存器
// 调用外设中断扩展初始化单元
PIE-unit ( 代码 : DSP281x_PieCtrl.c)
InitPieVectTable(); // 初始化 PIE vector向量表 ( 代码 : DSP281x_PieVect.c )
// 重新映射 PIE - Timer 0的中断 EALLOW; // 解除寄存器保护 PieVectTable.TINT0 = &cpu_timer0_isr; EDIS; // 使能寄存器保护
InitCpuTimers();
// 配置 CPU-Timer 0 周期50 ms:
// 150MHz CPU 频率, 50000 微秒中断周期 ConfigCpuTimer(&CpuTimer0, 150, 50000);
// 使能PIE内的 TINT0 : Group 1 interrupt 7 PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// 使能 CPU INT1 (连接到CPU-Timer 0中断) IER = 1;
EALLOW; // 解除寄存器保护 PieVectTable.TXAINT = &SCI_TX_isr; EDIS; // 使能寄存器保护
// 使能PIE内的 SCI_A_TX_INT中断 PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
// 使能 CPU INT 9 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++]; } }
void Gpio_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.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; }
void InitSystem(void) {
EALLOW;
SysCtrlRegs.WDCR= 0x00AF;
// 配置看门狗 // 0x00E8 禁止看门狗,预定
GpioMuxRegs.GPADIR.all = 0x0; // GPIO PORT 配置为
标系数Prescaler = 1
// 0x00AF 不禁止看门狗, 预
// 看门狗产生复位
定标系数Prescaler = 64
SysCtrlRegs.SCSR = 0; 倍频系数为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; }
void SCI_Init(void) {
SciaRegs.SCICCR.all =0x13; // 2bit 停止位 无循环模式 字符长度:8 bits,
// 异步模式, //
无极性,
SysCtrlRegs.PLLCR.bit.DIV = 10; // 配置处理器锁相环,
空闲线协议
SciaRegs.SCICTL1.all =0x0003; // 使能 TX, RX, 内部 SCICLK,
SLEEP, TXWAKE
SciaRegs.SCIHBAUD = 0; // 波特率:19200(LSPCLK = 37.5MHz) ;
SciaRegs.SCILBAUD = 0xf3;
SciaRegs.SCICTL2.bit.TXINTENA = 1; // 使能SCI发送中断
SciaRegs.SCICTL1.all =0x0023; // 使SCI退出复位 }
interrupt void cpu_timer0_isr(void) {
CpuTimer0.InterruptCount++;
// 每个定时器中断清除一次看门狗计数器
// 响应中断并允许系统接收更多的中断
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; }
//===========================================================================
// SCI_A 发送中断服务程序 // 发送字符串 message[]
//===========================================================================
interrupt void SCI_TX_isr(void) {
if (index < 26) SciaRegs.SCITXBUF=message[index++];
// 重新初始化PIE为下一次 SCI-A TX准备接收下一次中断 PieCtrlRegs.PIEACK.all = 0x0100; //响应中断
// 禁止 RX ERR,
} 题目五:
采用查询方式实现题目四中功能,SCI配置要求相同,使用发送移位寄存器空标志位TXEMPTY触发发送数据,软件延时方法控制间隔时间3秒,试给出相关程序代码。
#include \
// 使用的函数声明
void Gpio_select(void); void InitSystem(void); void SCI_Init(void);
void main(void) {
char message[]={\ int index =0; long i;
InitSystem();
Gpio_select();
SCI_Init(); // SCI接口初始化
while(1) {
SciaRegs.SCITXBUF=message[index++];
while ( SciaRegs.SCICTL2.bit.TXEMPTY == 0); //状态检测模式:
//状态检测,等待发送标识为空:TXEMPTY = 0
// 配置GPIO复用功能寄存器 // 初始化DSP内核寄存器
// 字符指针定义
EALLOW;
SysCtrlRegs.WDKEY = 0x55;
// 看门狗控制
SysCtrlRegs.WDKEY = 0xAA; EDIS;
if (index > 26) {
index =0; 制
EDIS; } } } }
void Gpio_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;
for(i=0;i<15000000;i++) // 软件延时,近似2秒. {
EALLOW;
SysCtrlRegs.WDKEY = 0x55; // 看门狗控制 SysCtrlRegs.WDKEY = 0xAA; // 看门狗控
GpioMuxRegs.GPGMUX.all = 0x0; 输入
GpioMuxRegs.GPADIR.all = 0x0; // GPIO PORT 配置为 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; }
void InitSystem(void) {
EALLOW;
SysCtrlRegs.WDCR= 0x00AF;
标系数Prescaler = 1
// 0x00AF 不禁止看门狗, 预
// 看门狗产生复位
定标系数Prescaler = 64
SysCtrlRegs.SCSR = 0; 倍频系数为5
SysCtrlRegs.HISPCP.all = 0x1; // 配置高速外设时钟分频系数: 2
SysCtrlRegs.PLLCR.bit.DIV = 10; // 配置处理器锁相环,
// 配置看门狗 // 0x00E8 禁止看门狗,预定
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; }
void SCI_Init(void) {
SciaRegs.SCICCR.all =0x13; // 2bit 停止位 无循环模式 字符长度:8 bits,
空闲线协议
SciaRegs.SCICTL1.all =0x0003; // 使能 TX, RX, 内部 SCICLK,
SLEEP, TXWAKE
SciaRegs.SCIHBAUD = 0; // 波特率:19200(LSPCLK = 37.5MHz) ;
SciaRegs.SCILBAUD = 0xf3;
SciaRegs.SCICTL1.all =0x0023; // 使SCI退出复位
// 禁止 RX ERR, // 异步模式, //
无极性,
} 题目六:
0
5
1
应用DSP处理器的SPI接口,以查询方式实现
6
7
低电平点亮LED循环显示16进制字符“0~F”功能(LED定义如左图所示),SPI配置为上升沿无延时发送,数据长度为8位,波特率最小值,试设计给出相关程序代码。
4
2
3
#include \Uint16
table[15]={0xc000,0xf900,0xA400,0xB000,0x9900,0x9200,0x8200,0xF800,0x8000,0x9000,0x8800,0x8300,0xc600,0xa100,0x8600,0x8e00}; void spi_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; }
void gpio_init() {
EALLOW;
GpioMuxRegs.GPAMUX.bit.TDIRA_GPIOA11=0; // GPIOA11
设置为一般I/O端口
GpioMuxRegs.GPADIR.bit.GPIOA11=1;
// 把GPIOA11设置
为输出 EDIS;
GpioDataRegs.GPADAT.bit.GPIOA11=0; // GPIOA11
端口为74HC595锁存信号 }
void main(void) {
unsigned int k=0;
InitSysCtrl(); // 系统初始化子程序,该程序包含在
DSP28_SysCtrl.C中
DINT; // 关闭总中断 IER = 0x0000;
IFR = 0x0000;
spi_intial(); // SPI初始化子程序 gpio_init(); while(1) {
GpioDataRegs.GPADAT.bit.GPIOA11=0; // 给LOCK
// GPIO初始化子程序
信号一个低电平
for(k=0;k<8;k++) {
SpiaRegs.SPITXBUF = table[k+1]; // 给数码管
送数
while(SpiaRegs.SPISTS.bit.INT_FLAG !=1){}
清中断标志
}
SpiaRegs.SPIRXBUF = SpiaRegs.SPIRXBUF; // 空读
GpioDataRegs.GPADAT.bit.GPIOA11=1; // 给
LOCK信号一个高电平为锁存74HC595 }
注意:纸质版课程设计报告1月14日提交到主楼608房间 }
for(k=0;k<15;k++){}
正在阅读:
哈工大DSP课程报告11-15
CPU进程与线程的关系和区别02-10
PEP小学英语三年级上下全册单词表08-27
写新闻报道的作文02-05
人口分布与人口合理容量 (文科班 )05-21
宾语从句106-13
《经济政治与社会》期末试题05-07
(人教版)2012届高三物理一轮复习同步测试:库仑定律、电场强度02-03
投标文件05-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 哈工大
- 课程
- 报告
- DSP
- 法律逻辑自测题(六)
- 全国压力容器厂名单
- 176系统精讲-生命发展保健-第六、七节 妇女保健、老年保健
- 湖北省医药公司 - 图文
- 华宁疑难的解答
- KUKA机器人外部自动配置方法
- 工程概预算期末复习材料
- 满堂支架专项方案
- Scratch趣味编程 - 大鱼吃小鱼
- 高考最新题型成语6选3练习2(教师版)
- 计算机练习3
- 关于转发中国铁路总公司《铁路建设项目标准化管理绩效考评实施办法》的通知
- 厨房承包经营责任协议书
- 双联齿轮机械加工工艺规程
- SMT程序编写步骤 - 图文
- 大学生合理利用网络资源的情况调查 - 图文
- 数学教育学复习材料(新编数学教学论 - 涂荣豹、王光明、宁连华)
- 高等传热思考题分析
- 计算机操作系统习题集
- 全国报关员考试资料第五章