DSP大作业

DSP大作业
DSP大作业

无限冲激响应滤波器(IIR)算法及实现

姓名:徐旭日

学号:20130700332

专业班级:电子信息工程(2)班

指导老师:王忠勇

日期:2016/6/2

摘要:21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发

展成为一门主流技术。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。这些优势决定数字滤波器的应用越来越广泛。数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。具体工作包括:对IIR数字滤波器的基本理论进行分析和探讨。应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。

关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器(IIR)。

引言:随着数字化飞速发展,数字信号处理技术受到了人们的广泛关注,其理论及算法

随着计算机技术和微电子技术的发展得到飞速发展,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。数字信号处理由于运算速度快,具有可编程的特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。采用DSP芯片来实现数字信号处理系统是当前发展的趋势。

在数字信号处理中,数字滤波占有极其重要的地位。滤波是信号处理中的一个重要概念。滤波分经典滤波和现代滤波。经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。只允许一定频率范围内的信号成分正常通过,而阻止另一部分频率成分通过的电路,叫做经典滤波器或滤波电路。数字滤波是语音和图像处理、模式识别、谱分析等应用中的一个基本处理算法。在许多信号处理应用中用数字滤波器替代模拟滤波器具有许多优势。数字滤波器容易实现不同幅度和相位频率特性指标。用DSP芯片实现数字滤波除具有稳定性好、精度高、不受环境影响外,还具有灵活性好的特点。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便的改变滤波器的特性。

原理:

1.无限冲激响应数字滤波器的基础理论。

利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通滤波器是常用的方法。

H s,再按照一

设计过程是:按照数字滤波器技术指标要求一个过渡模拟低通滤波器()

a

H s转换成数字低通滤波器函数H(z)。由此可见,设计的关键问题就

定的转换关系将()

a

H s转换成z平面上的H(z)。

是要找到这种关系,将s平面的()

a

H s从s平面转换到z平面的方法有多种,但工程上常用的是脉冲响

将系统函数()

a

应不变法和双线性变换法。在课题中我们采用双线性变换法设计IIR数字低通滤波器。

通过采用非线性频率压缩的方法,将整个模拟频率轴压缩到±π/T之间,再用

Z=sT e 转换到z 平面上。设()a H s ,s=j Ω,经过非线性频率压缩后用1()a H s ,1S =j 1Ω表示,这里用正切变换实现频率压缩: 121

tan()2

T T Ω=

Ω 实现了s 平面上整个虚轴完全压缩到1S 平面上虚轴的±

π/T 之间的转换。由上式得到:

j Ω=1

1

211j T j T e T e -Ω-Ω-+

代人s=j Ω,1S =j 1Ω,得到:11211s T

s T

e S T e

---=+ 再通过z=1s T

e 从1S 平面转换到Z 平面得到1

1

211z S T z ---=+ ; 22s

T z s T

+=- 上面两式即称为双线性变换。

2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。 3.数字滤波器系数的确定方法。 4.根据要求设计低通 IIR 滤波器

要求:低通巴特沃斯滤波器在其通带边缘 1kHz 处的增益为-3dB ,12kHz 处的阻带衰减 为 30dB ,采样频率 25kHz 。设计: ① 确定数字低通滤波器的技术指标:

通带边缘频率 fp1Hz 、待求阻带边缘频率 fs1Hz 和待求阻带衰减-20log δsdB 。 模拟边缘频率为:fp1=1000Hz ,fs1=12000Hz 阻带边缘衰减为:-20log δs=30dB

②将数字低通滤波器的技术指标转换成响应的模拟低通滤波器的技术指标。

用Ω=2πf/fs 把由 Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和

Ω s1。

Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度 Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度 -计算预扭曲模拟频率以避免双线性变换带来的失真。 由 w=2fs tan(Ω/2)求得 wp1 和 ws1,单位为弧度/秒。

wp1=2fs tan(Ωp1/2)=6316.5 弧度/秒 ws1=2fs tan (Ωs1/2)=794727.2 弧度/秒

-由已给定的阻带衰减-20log δs 确定阻带边缘增益δs 。 因为-20log δs=30,所以log δs=-30/20,δs=0.03162 计算所需滤波器的阶数:

n ≥1

11log(

1)

2log()s s p δωω-=2

1

log(

1)(0.03162)794727.22log()

6316.5

-=0.714

因此,一阶巴特沃斯滤波器的传输函数为:H (s )=wp1/(s+wp1)=6316.5/(s+6316.5)

由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:

H(z)=

1

1 6316.50.1122(1)

110.7757 500006316.5

1

z

z z

z

-

-

+

=

--

+

+

因此差分方程为:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1] 软件流程图:

一、软件实现

1、实验准备

—设置软件仿真模式

—启动CCS

2、打开工程、浏览程序。

3、编译并下载程序

4、打开窗口:*选择菜单View—>Graph->Time/Frequency…,进行如下设置

出现窗口如下:

选择菜单View->Graph->Time/Frequency…,进行如下设置:

出现窗口:

5、清除显示:在以上打开的窗口中单击鼠标右键,选择弹出菜单中“Clear Display”功能。

6、设置断点:在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上设置软件断点

7、运行并观察结果

(1)选择“Debug”菜单中的“RUN”项,或按F5键运行程序。

(2)观察“IIR”窗口中时域图形:观察滤波效果。

实验结果:

本次调试过程中出现了不少问题,但在辅导老师的指导下顺利完成IIR数字滤波实验。软件调试结果如下图示:

输入波形为一个低频率的正弦波与一个高频率的余弦波叠加而成。如图:

通过观察频域和时域图,得知:输入信号为低频和高频叠加的信号,输入波形中的低频波形通过了滤波器,而高频部分则被衰减,从而达到了滤波的效果。但是可以看出滤波后还是存在微弱的高频部分,也就是高频部分没有完全虑去,这从时域图中也可以看出。

二、IIR算法硬件实现

原理:

1、AD原理(上面已论述)

2、模数转换工作过程

—模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。

—经过一个采样时间的延迟后,将采样结果放入AD数据寄存器中保存。

—等待下一个启动信号。

3、模数转换的程序控制

模数转换相对于计算机来说是一个比较缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择合适的触发转换的手段,也要能及时的保存结果。

4、混频波形的产生

将接收到的两路AD采样信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。实验中采用了同相位混频的方法,也可修改程序完成异相混频法。

5、IIR滤波器工作原理及参数的计算参见实验七

6、说明:本程序在AD中断中对AD进行连续采样。由于需要进行实时混频,所以交替转换通道0(ADCIN0)和通道1(ADCIN1)。混频的波形通过IIR滤波器,得到输出波形。

DSP开发板框图:

硬件框图:一个DSP系统可分为最小系统设计和外围接口设计,DSP在必要的工作环境下才能正常工作。DSP最小系统包括复位、时钟和电源电路。

程序流程图:

实验准备:

(1)连接实验设备

(2)准备信号源进行AD输入

①用信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCINO”插座注意插头要插牢、到底。这样,信号源波形输出A的输出波形即可送到ICETEK—F2812A 板的AD输入通道0。

②用同样方法连接实验箱左侧信号源的输出B端口和“A/D输入”的“ADCIN1”相连。

③设置波形输出A:

—向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。

—上下调节波形频率选择按钮,直到标有100—1KHZ的指示灯亮。

—调节幅值调整旋钮,将波形输出A的幅值调到适当位置。

④设置波形输出B:

—向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。

—上下调节波形频率选择按钮,直到标有1K-10KHZ的指示灯亮。

—调节幅值调整旋钮,将波形输出A的幅值调到适当位置。

注意:由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0-3V 之间。必须用示波器检测信号范围,保证最小值0V 最大值 3 V,否则容易损坏DSP 芯片的模数采集模块。

2、设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行请参看本书第三部分、第一章、四、2。

3、启动Code Composer Studio 2.21

选择菜单Debug->Reset CPU。

4、打开工程文件

5、编译、下载程序,选择菜单Debug->Go Main,使程序运行到main 函数入口位置。

6、观察窗口

-打开源程序IIR.c,查看源代码。

7、运行程序观察结果

按CTR 控制板的K6 键,实现滤波显示,K7 键实现混频显示,按K8 实现键A、B 两信号源分屏显示。

8、观察动态效果,调节信号源输出,观察滤波器输出

改变信号源输入的波形、频率参数,观察动态效果。

9、退出CCS。

程序算法分析:

①低通滤波器系数可滤掉1k以上的波形,保留1k一下的波形

Float Hn[IIRNUMBER]={ 0.126,0.085,0.000,-0.103,-0.189,-0.216,-0.155,-0.000,

0.233,0.504,0.756,0.935,1.000,0.935,0.756,0.504,0.233,-0.000,-0.155,-0.216,-0.189,-0.103, 0.000, 0.085, 0.126}

这里是滤波器窗函数的参数,窗函数的长度为25,所以这是25个参数。另外这里以1KHz作为分界点,如果需要滤出别的频率,就需要再计算参数了。

②float IIR()

{

float fSum;

fSum=0;

for ( j=0;j

{

fSum+=(fXn[j]*fHn[j]);

}

return(fSum);

}

这个是构造的IIR滤波器函数使用for循环输入波形与窗函数频域相乘,达到滤波效果。

硬件调试结果如下图(手机拍照):

按K8键:A、B两信号源分别显示

按K7键:混频显示

按K6键:滤波显示

根据实验要求,改变信号源的频率:这里高频信号为2KHz以上,所以需要选择相应的窗函数及滤波器。

按K8键:A、B两信号源分别显示

按K7键:混频显示

按K6键:滤波显示

结果分析:

K8图显示的是高频和低频两个信号的波形,K7是他们叠加在一起的波形,K6则是通过低通滤波器后的波形。通过无限冲激响应滤波器(IIR)算法的硬件实现与软件实现IIR算法相对比,所设计的IIR滤波器收到较好的效果,完成了设计要求。这是用手机拍的图片,不是很清晰,但大致可以看得出来效果。另外如果将软件实现结果与硬件实现结果相比较,基本是差不多的。

其实看起来实现起来简单,但还是费了些功夫的,首先是对信号发生器的调试,接着是对程序的修改,程序里面配有各种滤波器,所以需要找出我们需要的那个滤出1KHz以上的滤波器,由于我们对程序设计不是很专业,所以经过了多次修改调试,才对程序的大致框架有了一定的了解,最终才好不容易把程序调出来了。

学完《DSP原理与应用》课程的理论和实验后,自己的心得体会:

不觉间《DSP原理与应用》这门课程已经结束了,连实验也都上完了。授课老师给了我很深的印象还有影响。感觉老是上课很负责,也很会讲课,总能带着我们把握课程的主题框架,很多抽象难懂的知识老是都是很生动的给我们讲解,老是真的是用心良苦还记得第一节课老是就讲了DSP这门课是我们专业的中心,把很多的课程都联系在了一起,现在觉得特别的有道理。正是因为DSP涉及多门课程的相关知识,这就需要我们在课程的学习过程中,需要经常回顾一些基础理论知识,经过认真思考与分析,达到解决问题的目的。在这个过程中,老是不断地给我们布置了很多课外作业,这些作业难度很大,所以我们花费了很多心思来做这些题目,我们不仅复习了以前的一些知识,并通过理论联系实际,对相关知识点有了更深层次的认识。从课前复习相关实验内容、原理到课题论文的完成,此过程我收获特别多。比如老师让我们用中断设计一个定时器,本来我们之前在《微机原理》和《单片机》都学过中断产生定时,但这一次才是应用,一到应用我们就发现很难了,在这期间对中断定时有了更加深刻的理解,还有C语言设计FFT算法的题目,本来学过了FFT算法,但要自己编程就很困难了。老师这是在教我们要钻研知识,将知识学的活起来。

另外,在实验过程中,我们也深有体会。带实验课的老师也很负责,每次都是按座位点名,确保每个人都按时到。DSP开发板比单片机开发板复杂多了,用起来相对难些,实验过程中遇到很多问题老师都给我们耐心的解决了。要感谢指导老师们,这些实验是在他们认真负责的态度下完成的。他们在我们实验过程中给我们在软件操作和相关理论、算法上给了我们耐心的指导。

这门课结束了,确是我觉得大学所有课程中最精彩最重要的一门课程的,无论从课本还是从老师身上都学到了很多。课本交给我许多DSP的理论知识,实验交给我如何简单的使用DSP开发板进行实验,而老师教给了我做事严谨认真、勤于实践的工作态度,做什么事情都是开头难,坚持学习的认真态度,这是非常重要的。

程序附录:

/********本实验可以滤掉650hz以后的信号,根据提供的滤波器参数,可以设置滤掉其他频率的波形******/

#include "DSP281x_Device.h" // DSP281x Headerfile Include File

#include "DSP281x_Examples.h" // DSP281x Examples Include File

#include "f2812a.h"

#include "LCD.h"

#include "math.h"

#include "filter.h"

#define ADCNUMBER 256

// 定义指示灯寄存器地址和寄存器类型

#define LBDS (*((unsigned int *)0xc0000))

// Prototype statements for functions found within this file.

interrupt void adc_isr(void);

void Delay(unsigned int nDelay);

struct struLCDGraph struGraph,struGraph1;

unsigned int nScreenBuffer[30*128];

// Global variables used in this example:

Uint16 LoopCount;

Uint16 ConversionCount;

//Uint16 Voltage1[1024];

//Uint16 Voltage2[1024];

Uint16 Voltage_1,Voltage_2,flage=0;

Uint16 nGraphBuf1[ADCNUMBER],nGraphBuf2[ADCNUMBER];

int nGraphBuf3[ADCNUMBER];

int ci=0,keyflage,nAD;

Uint16 nMixing[1024];

// 液晶----------------------------------------------------------

#define CTRLED (*(unsigned int *)0x108004) // port8004

#define MCTRKEY (*(unsigned int *)0x108005) // port8005

#define CTRCLKEY (*(unsigned int *)0x108006) // port8006

#define CTRSTATUS (*(unsigned int *)0x108000) //port8000

#define pi 3.1415926

int nModeAD;

Uint16 ad1,ad2;

/*fir参数*/

#define PI 3.1415926

//#define FIRNUMBER 25

/*低通滤波器系数可滤掉1k以上的波形,保留1k一下的波形*/

/*float fHn[FIRNUMBER]={

0.126,0.085,0.000,-0.103,-0.189,-0.216,-0.155,

-0.000,0.233,0.504,0.756,0.935,1.000,0.935,0.756,

0.504,0.233,-0.000,-0.155,-0.216,-0.189,-0.103,

0.000, 0.085, 0.126

};*/

/*高通滤波器系数可滤掉1k以下的波形,保留1k以上的波形*/ /*float fLn[FIRNUMBER]={

-0.031,-0.021,-0.000,0.025, 0.047, 0.054,

0.038, 0.000,-0.058,-0.126,-0.189,-0.233,

1.000,-0.233,-0.189,-0.126,-0.058, 0.000,

0.038, 0.054, 0.047, 0.025,-0.000,

-0.021,-0.031

};*/

/*float fXn[FIRNUMBER]={ 0.0 };

float fInput,fOutput;

float fSignal1,fSignal2;

float fStepSignal1,fStepSignal2;

float f2PI;

float fIn[ADCNUMBER],fOut[ADCNUMBER];

int nIn,nOut;

float FIR();

float FIR1();

float InputWave();*/

int j=0,a=0;

/*低通滤波器系数,大约在2k以上的声音

被彻低率率调*/

#define FIRNUMBER 64

long fHn[FIRNUMBER]={

-26,

-26,

-24,

-18,

-8,

9,

33,

61,

91,

117,

132,

129,

99,

41,

-48,

-160,

-284,

-404,

-496,

-507, -382, -154, 180, 610, 1115, 1662, 2212, 2723, 3151, 3459, 3620, 3620, 3459, 3151, 2723, 2212, 1662, 1115, 610, 180, -154, -382, -507, -538, -496, -404, -284, -160, -48, 41, 99, 129, 132, 117, 91, 61, 33,

9, -8, -18, -24, -26,

};

//int fXn[FIRNUMBER]={ 0 };

int fInput,fOutput;

int fIn[256];

//,fOut[256];

#define FIR_ORDER 50 /* Filter Order */

/* Create an Instance of FIRFILT_GEN module and place the object in "firfilt" section */

#pragma DATA_SECTION(fir, "firfilt");

FIR16 fir= FIR16_DEFAULTS;

/* Define the Delay buffer for the 50th order filterfilter and place it in "firldb" section */

#pragma DATA_SECTION(dbuffer,"firldb");

long dbuffer[(FIR_ORDER+2)/2];

/* Define Constant Co-efficient Array and place the .econst/.const section in

non-volatile memory */

const long coeff[(FIR_ORDER+2)/2]= FIR16_LPF50;

void init(FIR16_handle);

void calc(FIR16_handle);

FIR16 lpf, hpf;

FIR16 lpf = FIR16_DEFAULTS;

FIR16 hpf = FIR16_DEFAULTS;

main()

{int j,uWork,uWork1;

unsigned int * pWork;

InitSysCtrl();//初始化cpu

//InitPll(0x5);

DINT;//关中断

LCDTurnOff();

LCDSetScreenBuffer(nScreenBuffer);

for ( uWork=0,pWork=nScreenBuffer;uWork<30*128;uWork++,pWork++ ) (*pWork)=0;

LCDSetDelay(0);

LCDTurnOn(); // 打开显示

LCDCLS(); // 清除显示内存

InitXintf();

InitPieCtrl();//初始化pie寄存器

IER = 0x0000;//禁止所有的中断

IFR = 0x0000;

InitPieVectTable();//初始化pie中断向量表

// Interrupts that are used in this example are re-mapped to

// ISR functions found within this file.

EALLOW; // This is needed to write to EALLOW protected register

PieVectTable.ADCINT = &adc_isr;

EDIS; // This is needed to disable write to EALLOW protected registers

AdcRegs.ADCTRL1.bit.RESET = 1; // Reset the ADC module

asm(" RPT #10 || NOP"); // Must wait 12-cycles (worst-case) for ADC reset to take effect

AdcRegs.ADCTRL3.all = 0x00C8; // first power-up ref and bandgap circuits

AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry

AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC

// Enable ADCINT in PIE

PieCtrlRegs.PIEIER1.bit.INTx6 = 1;

IER |= M_INT1; // Enable CPU Interrupt 1

EINT; // Enable Global interrupt INTM

ERTM; // Enable Global realtime interrupt DBGM

LoopCount = 0;

ConversionCount = 0;

// Configure ADC

AdcRegs.ADCMAXCONV.all = 0x0001; // Setup 2 conv's on SEQ1

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA3 as 1st SEQ1 conv.

AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup ADCINA2 as 2nd SEQ1 conv.

AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // Enable EVASOC to start SEQ1

AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)

// Configure EVA

// Assumes EVA Clock is already enabled in InitSysCtrl();

EvaRegs.T1CMPR = 0x0080; // Setup T1 compare value

EvaRegs.T1PR = 0x5000; // Setup period register

EvaRegs.GPTCONA.bit.T1TOADC = 1; // Enable EVASOC in EVA

EvaRegs.T1CON.all = 0x1042; // Enable timer 1 compare (upcount mode)

//struGraph.uLineMode=LINEMODE;

//LCDDrawGraph(struGraph);

keyflage=0;

lpf.dbuffer_ptr=dbuffer;

//lpf.coeff_ptr=fHn;

lpf.coeff_ptr=(long *)coeff;

lpf.order=FIR_ORDER;

lpf.init(&lpf);

/* fir.dbuffer_ptr=dbuffer;

fir.coeff_ptr=fHn;

fir.order=FIR_ORDER;

fir.init(&fir);*/

// Wait for ADC interrupt

for(;;)

{

if(flage==1)

{ flage=0;

LCDSetScreenBuffer(nScreenBuffer);

LCDCLS(); // 清除显示内存*/

if(keyflage==0)

{

struGraph.pData=nGraphBuf2;

struGraph.uDataMode=DATAUINTMODE;

struGraph.uDataLength=256;

struGraph.uMaxValue=2048;

struGraph.uWindowX0=0;

struGraph.uWindowY0=0;

struGraph.uWindowX1=240;

struGraph.uWindowY1=128;

struGraph.nOriginX=0;

struGraph.nOriginY=0;

struGraph.uLineMode=LINEMODE;

LCDGraph(&struGraph);

// struGraph.uLineMode=LINEMODE;

struGraph.pData=nGraphBuf1;

struGraph.uDataMode=DATAUINTMODE;

struGraph.uDataLength=256;

struGraph.uMaxValue=1024;

struGraph.uWindowX0=0;

struGraph.uWindowY0=0;

struGraph.uWindowX1=240;

struGraph.uWindowY1=128;

struGraph.nOriginX=0;

struGraph.nOriginY=64;

struGraph.uLineMode=LINEMODE;

LCDGraph(&struGraph);

for ( j=0;j<20;j++ ) _Delay(414);

LCDSetScreenBuffer(nScreenBuffer);

LCDCLS(); // 清除显示内存

}

if(keyflage==1)

{

struGraph.pData=nMixing; struGraph.uDataMode=DATAUINTMODE; struGraph.uDataLength=256; struGraph.uMaxValue=2500; struGraph.uWindowX0=0; struGraph.uWindowY0=0; struGraph.uWindowX1=240; struGraph.uWindowY1=128; struGraph.nOriginX=0;

struGraph.nOriginY=0;

struGraph.uLineMode=LINEMODE; LCDGraph(&struGraph);

for ( j=0;j<20;j++ ) _Delay(414); LCDSetScreenBuffer(nScreenBuffer); LCDCLS();

}

if(keyflage==2)

{

struGraph.pData=nGraphBuf3; struGraph.uDataMode=DATAUINTMODE; struGraph.uDataLength=220; struGraph.uMaxValue=2500; struGraph.uWindowX0=0; struGraph.uWindowY0=0; struGraph.uWindowX1=240; struGraph.uWindowY1=128; struGraph.nOriginX=0;

struGraph.nOriginY=0;

struGraph.uLineMode=LINEMODE; LCDGraph(&struGraph);

for ( j=0;j<20;j++ ) _Delay(414); LCDSetScreenBuffer(nScreenBuffer); LCDCLS();

}

uWork1=MCTRKEY;

uWork1 &=0xff;

CTRCLKEY=0;

if(uWork1==128)

{

keyflage=0;

DSP上机大作业

DSP上机实验报告

实验一: VISUAL DSP++的使用入门 1.实验一的目的 实验一的主要目的是熟悉VISUAL DSP++的开发环境。针对ADSP-21065L SHARC DSP,利用几个用C、C++和汇编语言写成的简单例子来描述VISUAL DSP+十编程环境和调试器(debugger)的主要特征和功能。 2.实验一的4个基本练习 练习一: 启动Visual DSP++,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能; 练习二: 创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能; 练习三: 利用调试器的绘图(plot)功能来图形显示一个卷积算法中的多个数据的波形; 练习四: 利用调试器的性能统计功能(Statistical profile来检查练习三中卷积算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。 3.实验步骤: (1)练习一实验步骤: Step l 进入Visual DSP+十并打开一个工程(Project) 进入Visual DSP++,显示Visual DSP++的集成开发和调试环境窗口(Integrated Development and Debugger Environment,简称IDDE)。 选择菜单File 中Open 打开文件: …DSP_exp\unit_1\dot_product_c \dotprodc.dpj。 Dotprodc工程由定义数组和计算数组点积和的两个C语言源文件dotprod_main.c(主程序)和dotprod.c(子程序)以及一个描述程序和数据存储位置的链接描述文件dotprodc.ldf。 Step 2 编译dotprodc工程 在菜单Project中选择Build Project来对工程进行编译。此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。这时可对源文件编辑、修改错误,再次进行编译。当编译不再有错时,输出窗口将显示“Build completed successfully”。

dsp大作业

一、简答题:(要求:手写,须写出各题必要的知识点,本大题共30分,每小题5分。) 1、可编程DSP芯片有那九大特点? 2、TMS320C54x芯片的流水线操作共有多少个操作阶段,每个阶段执行什么任务,完成一条指令需要那些操作周期? 3、DSP系统硬件设计过程都有那些步骤?

4、TMS320C54x的数据寻址方式各有什么特点,应该应用在什么场合场所? 5、链接器能完成什么工作?链接器命令文件中,MEMORY命令和SECTION命令的任务是什么? 6、什么是“自举”? 二、分析题:(要求:手写,结果需要有一定的分析计算过程,本大题共55分,每小题5分。)

1、已知:(80H)= 20H,(81H)= 30H。 LD #0, DP LD 80H, 16,B ADD 81H, B 运行以上程序后,DP、B分别等于多少? 2、回答标准串行口数据的发送和接收过程。 3、已知:A = FFFD876624, T = 0000,则运行EXP A指令后,A和T各为多少? 4、已知:B = 420D0D0D0D, T = FFF9,则运行NORM B指令后,B和T各为多少? 5、在不含循环的程序中,RPTZ #9语句和其前一句、后一句以及后第二句各运行几次? 6、说明语句: STM #0080H, IMR的功能?

7、已知中断向量TINT = 014H,中断向量地址指针IPTR = 0111H,求中断向量地址是多少? 8、已知(30H)=50H,AR2=40H,AR3=60H,AR4=80H MVKD 30H, *AR2 MVDD *AR2, *AR3 MVDM *AR3, *AR4 运行以上程序后,(30H),(40H)、*AR3,AR4的值分别是多少? 9、在堆栈操作中,PC当前地址为4020h,SP当前地址为0013h,运行PSHM AR7后,PC和SP的值分别是多少? 10、请仔细分析下列程序代码,并说明每句程序代码的作用。 sample.out -m sample.map -stack 100 sample.obj meminit.obj -l rts.lib MEMORY { PAGE 0: VECT: origin = 0xff80, length 0x80 PAGE 0: PROG: origin = 0x2000, length 0x400 PAGE 1: DATA: origin = 0x800, length 0x400 } SECTIONS {

14_DSP技术原理及应用教程_课后答案

1 .1 数字信号处理器与一般通用计算机和单片机的主要差别有哪些? 答:在通用的计算机上用软件实现该方法速度太慢, 适于算法仿真; 在通用计算机系统上加上专用的加速处理机实现该方法专用性较强,应用受限制,且不便于系统 的独立运行; 用通用的单片机实现这种方式多用于一些不太复杂的数字信号处理,如简单的PID控制算法; 用通用的可编程DSP芯片实现与单片机相比,DSP芯片具有更加适合于数字信号处理的软件及硬件资源,可用于复杂的数字信号处理算法; 用专用的DSP芯片实现在一些特殊场合, 要求信号处理速度极高, 用通用的DSP 芯片很难实现,而专用的DSP 芯片可以将相应的信号处理算法在芯片内部用硬件实现,不需要编程。 1 .4 什么是冯·诺埃曼结构计算机, 什么是哈佛结构计算机, 二者的特点是什么? 答:冯.诺曼结构:将指令、数据存储在同一个存储器中,统一编址,译稿指令计数器提供的地址来区分是指令还是数据。取指令和取数据都访问统一存储器,数据吞吐率低。 哈佛结构:程序和数据存储在不同的存储空间,程序存储空间和数据存储空间是两个相互独立的存储空间,每个存储空间独立编址,独立访问。 1 .8 DSP的工作电压越来越低,内核电压已低至1V,这样做有何意义?为什么DSP内核工作电压和I/O工作电压不一样? 答:集成电路速度越来越快,随之而来,功耗越来越大,这样散热就是很大的问题.在芯片走线尺寸不变的情况下,内部阻抗也不变,降低工作电压会降低功耗,这样能再较高频率下芯片发热较少。 内核不容易受到外部干扰,所以电压可以做的较低,但IO容易受外部信号干扰,保持较高电压容易是器件工作稳定,这是功耗和稳定性的折中。 1 .10 定点DSP和浮点DSP有什么区别?在具体应用中, 应如何选择? 答:在浮点DSP中,数据即可以表示成整数,也可以表示成浮点数。浮点数在运算中,表示数的范围由于其指数可自动调节,因此可避免数的规格化和溢出等问题。但浮点DSP 一般比定点DSP 复杂, 成本也较高。 在定点DSP中, 数据采用定点表示方法。它有两种基本表示方法:整数表示方法和小数表示方法。整数表示方法主要用于控制操作、地址计算和其他非信号处理的应用, 而小数表示方法则主要用于数字和各种信号处理算法的计算中 2 .4 当要使用硬中断INT3作为中断响应矢量时,请问可屏蔽中断寄存器IMR和中断标志寄存器IFR应如何设置? 答:IFR中INT3位=1,IMR中INT3位=1,使能中断。2 .5 若处理器方式寄存器PMST的值设为01A0H,而中断矢量为INT3,那么在中断响应时, 程序计数器指针PC的值为多少? 答:PMST中IPTR=(000000011)b,int3中断向量号为24H,做移量为后变为60H,则中断响应时程序计数器指针PC=01E0H. 2 .10 DSP如何与不同速度的片外存储器及其他外设进行数据交换? 答:软件可编程等待状态发生器可以将外部总线周期扩展到7个机器周期,以使’C54x能与低速外部设备接口。而需要多于7个等待周期的设备,可以用硬件READY线来接口。 2 .11 TMS320C54x可进行移位操作,它的移位范围是多少? 答:’C54x的移位操作最多可以左移31位,或右移16位。(-16~31) 2 .1 3 为什么说应尽量利用DSP的片内存储器? 答:与片外存储器相比,片内存储器不需要插入等待状态,因此成本低,功耗小。 2 .14 如何操作通用I/ O 引脚XF和BIO? 答:XF信号可以由软件控制。通过对STl中的XF位置1得到高电平,清除而得到低电平。对状态寄存器置位的指令SSBX和对状态寄存器复位的指令RSBX可以用来对XF置位和复位。同时XF引脚为高电平和低电平,亦即CPU向外部发出1和0信号。 程序可以根据BIO的输入状态有条件地跳转,可用于替代中断。条件执行指令(XC)是在流水线的译码阶段检测BIO的状态,其它条件指令(branch、call和return)是在流水线的读阶段检测BIO 的状态的。 4 .1 写出汇编语言指令的格式, 并说明应遵循怎样的规则? 答:助记符指令格式: [标号][:] 助记符[操作数列表] [;注释] 代数指令格式: [标号][:] 代数指令[;注释] 应遵循下列规则: ①语句的开头只能是标号、空格、星号或分号。 ②标号是可选项,如果使用,必须从第一列开始。 ③每个域之间必须由一个或多个空格来分开。制表符等同于空格的作用。

DSP大作业快速傅立叶变换实验与设计

DSP 原理及应用 大作业 ——快速傅立叶变换 专业:XXXX 姓名:XXX 学 号:08201081XX 指导老师: XX 时间:2XXXX 快速傅立叶变换(FFT )实验 一、设计目的 1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。 2.熟悉应用FFT对典型信号进行频谱分析的方法 3?了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。 4.掌握用窗函数法设计FFT快速傅里叶的原理和方法; 5 ?熟悉FFT快速傅里叶特性; 二、所需设备

PC 兼容机一台,操作系统为Windows2000(或Windows98 , WindowsXP,以下 默认为Windows2000),安装Code Composer Studio 2.0 软件。 三、设计内容 本试验要求使用FFT变换求一个时域信号的频域特性,并从这个频域特性求出该信号的频 率值。使用c语言实现对FFT算法的仿真,然后使用DSP汇编语言实现对FFT 的DSP 编程。本实验采用软件仿真,不需设置硬件。 四、设计原理 在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我 们可以使用离散Fouier变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT N 1 1 N-1 X(k)=》x(nW,n⑷x(n)=石送X(kW「n 定义为:心,W N =e反换为:N心有限长序 列的DFT是其Z变换在单位圆上的等距采样,或者是序列Fourier变换的等距采样,因此可以用于序列的谱分析。 FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度N=2L,它的效率高,程序简单使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。 在运用DFT进行频谱分析的过程中可能产生几种问题:⑴混叠 序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时, 就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。 避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。 ⑵泄漏 实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。 泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。 DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被尖桩的栅栏”所拦住,不能别我们观察到。 减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而 变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。

DSP原理及其应用技术_课程设计_报告

郑州航空工业管理学院 电子通信工程系 DSP原理及应用课程设计报告 设计题目:基于TMS320F2812 DSP微处理器的最小系统设计 学号:********** 专业:电子信息工程专业 设计日期:2012年6月14日 指导老师:赵成陈宇

设计任务 1、利用Protel软件绘制并添加TMS320F2812的原理图库; 2、利用Protel软件绘制TMS320F2812最小系统的电路原理图,包括时钟电路模块,电源模块、复位电路模块、JTAG接口模块; 3、安装最小系统电路,在CCS下建立工程,编译并将其下载到TMS320F2812最小系统中运行。 相关设备 PC机,CCS集成开发环境,最小系统电路板及元件,XDS510仿真调试器,外用表,示波器,稳压电源。 设计原理 TMS320F2812 DSP微处理器属于通用可编程微处理器,在应用时涉及硬件电路设计及软件设计,在理论课部分,主要是了解了F2812的体系架构及软件开发的相关知识,在具体使用时,需要绘制电路原理图及版图。 TMS320F2812 DSP微处理器运行的基本环境包括时钟电路、电源电路、复位电路及JTAG接口调试电路等,为了便于测试系统的运行情况,一般在其外围直接设计串口通信电路及相关的测试电路,这里即在外围配置了XF及串口通信电路。 可以使用Protel或其他电路版图设计软件绘图,其中需要用到学习过的F2812的封装、管脚分布、时钟电路、复位电路等知识。 可以参考教材附录部分的电路原理图。 通过F2812最小电路的设计,可以将理论与实践统一联系,更深入地理解F2812的开发方法。 应用基础 能使用Protel设计电路原理图; 了解F2812硬件的相关知识及电路设计; 能使用CCS建立并调试DSP工程。 设计报告 在课程设计的最后一次指导课上提交打印版。 目录 一、设计的目的和意义…………………………………………………………………3页 二、CCS软件概述………………………………………………………………………3页

DSP大作业修改过后

题目温度采集分析系统设计 学生姓名 学号 专业电子信息工程 指导教师 时间 2018.1.1

摘要:本课题设计基于TMS320F28335型号DSP的高速度、宽范围、高精度的温度采集系统方案。系统以TMS320F28335为控制核心,通过测温电路采集温度数据,经AD转换后给DSP 控制器,通过FIR滤波器计算出温度值,DSP通过RS232接口上传温度值到电脑上位机显示温度,通过LCD12864显示温度及时间,重点介绍AD转换接口电路以及系统控制软件的设计过程。 一、功能设计要求 设计一个电池供电野外温度采集分析系统,功能包括: 1.每小时采集环境温度10次,进行FIR滤波 2.每天通过串口发送单天平均气温 3.有三个按键:K1切换温度/时间显示。K2、K3修改时间,K2=time+,K3=time- 4.当电池电压低于安全值时,发送报警信息 二、硬件设计 1.系统方案: 该系统包括温度采集电路模块、TMS320F28335芯片、A/D转换部分和LCD液晶显示,首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号进行处理,并通过低频率的FIR滤波后得到一天的温度输出,为确保转换精度要进行多次取值求平均,转换结果放在结果寄存器的高12位上,通过编程将处理后的温度值送到LCD上进行显示。设计采用热敏电阻PT100组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系式,检测温度的变化;然后将采集的温度送入TMS320F28335的片上A/D,将电压转换为数字信号,并通过低频率的FIR滤波后得到一天的温度输出;最后通过LCD12864显示结果。 图1 系统方案 2.主控方案:TMS320F28335主控芯片 控制芯片32位TMS320F28335芯片,该DSP芯片专门用于控制领域,最高可在150 MHz主频下工作,可进行双16 ×16乘加和32 ×32乘加操作,运算与控制速度快,并带有18 K×16位片上SRAM和128 K×16位片上FLASH;并带有两个事件管理模块,可以同

DSP大作业

无限冲激响应滤波器(IIR)算法及实现 姓名:徐旭日 学号:20130700332 专业班级:电子信息工程(2)班 指导老师:王忠勇 日期:2016/6/2

摘要:21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发 展成为一门主流技术。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。这些优势决定数字滤波器的应用越来越广泛。数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。具体工作包括:对IIR数字滤波器的基本理论进行分析和探讨。应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。 关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器(IIR)。 引言:随着数字化飞速发展,数字信号处理技术受到了人们的广泛关注,其理论及算法 随着计算机技术和微电子技术的发展得到飞速发展,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。数字信号处理由于运算速度快,具有可编程的特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。采用DSP芯片来实现数字信号处理系统是当前发展的趋势。 在数字信号处理中,数字滤波占有极其重要的地位。滤波是信号处理中的一个重要概念。滤波分经典滤波和现代滤波。经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。只允许一定频率范围内的信号成分正常通过,而阻止另一部分频率成分通过的电路,叫做经典滤波器或滤波电路。数字滤波是语音和图像处理、模式识别、谱分析等应用中的一个基本处理算法。在许多信号处理应用中用数字滤波器替代模拟滤波器具有许多优势。数字滤波器容易实现不同幅度和相位频率特性指标。用DSP芯片实现数字滤波除具有稳定性好、精度高、不受环境影响外,还具有灵活性好的特点。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便的改变滤波器的特性。 原理: 1.无限冲激响应数字滤波器的基础理论。 利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通滤波器是常用的方法。 H s,再按照一 设计过程是:按照数字滤波器技术指标要求一个过渡模拟低通滤波器() a H s转换成数字低通滤波器函数H(z)。由此可见,设计的关键问题就 定的转换关系将() a H s转换成z平面上的H(z)。 是要找到这种关系,将s平面的() a H s从s平面转换到z平面的方法有多种,但工程上常用的是脉冲响 将系统函数() a 应不变法和双线性变换法。在课题中我们采用双线性变换法设计IIR数字低通滤波器。 通过采用非线性频率压缩的方法,将整个模拟频率轴压缩到±π/T之间,再用

DSP原理与应用技术-考试知识点总结

第一章 1、DSP系统的组成:由控制处理器、DSPs、输入/输出接口、存储器、数据传输网络构成。P2图1-1-1 2、TMS320系列DSPs芯片的基本特点:哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令、快速的指令周期。 3、哈佛结构:是一种将程序指令储存和数据储存分开的储存器结构。特点:并行结构体系,是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。系统中设置了程序和数据两条总线,使数据吞吐率提高一倍。 4、TMS320系列在哈佛结构之上DSPs芯片的改进:(1)允许数据存放在程序存储器中,并被算数运算指令直接使用,增强芯片灵活性(2)指令储存在高速缓冲器中,执行指令时,不需要再从存储器中读取指令,节约了一个指令周期的时间。 5、冯诺依曼结构:将指令、数据、地址存储在同一存储器中,统一编址,依靠指令计数器提供的地址来区分是指令、数据还是地址,取指令和去数据都访问同一存储器,数据吞吐率低。 6、流水线操作:TMS320F2812采用8级流水线,处理器可以并行处理2-8条指令,每条指令处于流水线的不同阶段。 解释:在4级流水线操作中。取 指令、指令译码、读操作数、执 行操作可独立地处理,执行完全 重叠。在每个指令周期内,4条 不同的指令都处于激活状态,每 条指令处于不同的操作阶段。 7、定点DSPs芯片:定点格式工作的DSPs芯片。 浮点DSPs芯片:浮点格式工作的DSPs芯片。 (定点DSPs可以浮点运算,但是要用软件。浮点DSPs用硬件就可以)8、DSPs芯片的运算速度衡量标准:指令周期(执行一条指令所需时

西工大DSP大作业

西工大DSRt作业

实验1基于CCS的简单的定点DSF程序 一、实验要求 1、自行安装CCS3.3版本,配置和运行CCS 2、熟悉CCS开发环境,访问读写DSP勺寄存器AC0-AC3 AR0-AR7, PC, T0-T3 3、结合C5510的存储器空间分配,访问DSR的内部RAM 4、编写一个最简单的定点DSP程序,计算下面式子 y=0.1*1.2+35*20+15*1.6 5、采用定点DSP进行计算,确定每个操作数的定点表示方法,最后结果的定点表示方法,并验证结果 6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件 二、实验原理 DSP芯片的定点运算---Q格式(转)2008-09-03 15:47 DSP 芯片的 定点运算 1. 数据的溢出: 1>溢出分类:上溢(oveflow ): 下溢(underflow ) 2>溢出的结果:Max Min Min Max un sig ned char 0 255 sig ned char -128 127 un sig ned int 0 65535 signed int -32768 32767

上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。 例:signed int : 32767+1 = —32768 ; -32768-1 = 32767 unsigned char : 255+1 = 0; 0-1 = 255 3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。当 发生溢出时,自动将结果设置为最大值或最小值。 2. 定点处理器对浮点数的处理: 1>定义变量为浮点型(float , double ),用C语言抹平定点处理器和浮点处理器 2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小 数的精度。Q0 :小数点在第0位的后面,即我们一般采用的方法Q15 小数点在第15位的后面,0~ 14位都是小数位。转化公式:Q= (int ) (F X pow(2, q)) F =(float ) (Qx pow (2,—q)) 3. Q格式的运算 1>定点加减法:须转换成相同的Q格式才能加减 2>定点乘法:不同Q格式的数据相乘,相当于Q值相加 3>定点除法:不同Q格式的数据相除,相当于Q值相减 4>定点左移:左移相当于Q值增加 5>定点右移:右移相当于Q减少 4. Q格式的应用格式 实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。 所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两 种方法:

DSP原理及应用-(修订版)--课后习题答案

第一章: 1、数字信号处理的实现方法一般有哪几种? 答:数字信号处理的实现是用硬件软件或软硬结合的方法来实现各种算法。(1) 在通用的计算机上用软件实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制;(4)用通用的可编程 DSP 芯片实现。与单片机相比,DSP 芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5) 用专用的 DSP 芯片实现。在一些特殊的场合,要求的信号处理速度极高,用通用 DSP 芯片很难实现( 6)用基于通用 dsp 核的asic 芯片实现。 2、简单的叙述一下 dsp 芯片的发展概况? 答:第一阶段, DSP 的雏形阶段( 1980 年前后)。代表产品: S2811。主要用途:军事或航空航天部门。第二阶段, DSP 的成熟阶段( 1990 年前后)。代表产品: TI 公司的 TMS320C20 主要用途:通信、计算机领域。第三阶段, DSP 的完善阶段( 2000 年以后)。代表产品:TI 公司的 TMS320C54 主要用途:各个行业领域。 3、可编程 dsp 芯片有哪些特点? 答: 1、采用哈佛结构( 1)冯。诺依曼结构,( 2)哈佛结构( 3)改进型哈佛结构2、采用多总线结构 3.采用流水线技术4、配有专用的硬件乘法-累加器5、具有特殊的 dsp 指令6、快速的指令周期7、硬件配置强8、支持多处理器结构9、省电管理和低功耗 4、什么是哈佛结构和冯。诺依曼结构?它们有什么区别? 答:哈佛结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。冯。诺依曼结构:该结构采用单存储空间,即程序指令和数据共 用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。 区别:哈佛:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。冯:当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。 5、什么是流水线技术? 答:每条指令可通过片内多功能单元完成取指、译码、取操作数和执行等多个步骤,实现多条指令的并行执行,从而在不提高系统时钟频率的条件下减少每条指令的执行时间。利用这种流水线结构,加上执行重复操作,就能保证在单指令周期内完成数字信号处理中用得最多的乘法 - 累加运算。(图)6、什么是定点 dsp 芯片和浮点 dsp 芯片?它们各有什么优缺点? 答:若数据以定点格式工作的称为定点 DSP 芯片。若数据以浮点格式工作的称为浮点 DSP芯片。

西工大DSP大作业

实验1 基于CCS的简单的定点DSP程序 一、实验要求 1、自行安装CCS3.3版本,配置和运行CCS 2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3,ARO-AR7, PC, T0-T3 3、结合C5510的存储器空间分配,访问DSP的内部RAM 4、编写一个最简单的定点DSP程序,计算下面式子y=0.1*1.2+35*20+15*1.6 5、采用定点DSP进行计算,确定每个操作数的定点表示方法, 最后结果的定点表示方法,并验证结果 6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件 二、实验原理 DSP芯片的定点运算---Q格式(转) 2008-09-03 15:47 DSP芯片的定点运算 1.数据的溢出: 1>溢出分类:上溢(overflow):下溢(underflow) 2>溢出的结果:Max Min Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767 上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。例:signed int :32767+1=-32768;-32768-1=32767

unsigned char:255+1=0;0-1=255 3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。当 发生溢出时,自动将结果设置为最大值或最小值。 2.定点处理器对浮点数的处理: 1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区 2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,运算 3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小 数的精度。Q0:小数点在第0位的后面,即我们一般采用的方法Q15 小数点在第15位的后面,0~14位都是小数位。转化公式:Q=(int) (F×pow(2,q))F=(float)(Q×pow(2,-q)) 3.Q格式的运算 1>定点加减法:须转换成相同的Q格式才能加减 2>定点乘法:不同Q格式的数据相乘,相当于Q值相加 3>定点除法:不同Q格式的数据相除,相当于Q值相减 4>定点左移:左移相当于Q值增加 5> 定点右移:右移相当于Q减少 4.Q格式的应用格式 实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。 所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两 种方法: 1>使用时使用适中的定标,既可以表示一定的整数复位也可以表示 小数复位,如对于2812的32位系统,使用Q15格式,可表示

DSP原理及应用教学大纲

《DSP原理及应用》实验教学大纲 学习DSP的目的是应用其进行研发及工程实践,故实验是《DSP原理及应用》课程学习中的重要环节。通过实验,可以对DSP器件的功能进行实际操作,并在实际操作中熟悉器件的使用特性。实验是DSP应用的基本内容,为学生今后从事相关工作打下基础。 本实验有以下任务:(1)掌握如何使用DSP仿真平台;(2)掌握DSP内部结构和工作原理;(3)熟悉DSP 的指令系统;(4)熟悉用DSP实现各种基本算法。通过实验使学生加深对DSP基本理论、硬件系统、指令系统的理解,学会用仿真器进行开发,使书本上枯燥的内容变得生动,增加学生学习本课程的兴趣。此外学生的实验技能、动手能力、分析问题、解决问题的能力都将得到培养,为进一步进行工程实践奠定良好的基础。 三、实验方式 1、实际操作—要求根据目的要求完成各实验项目,对实验结果进行分析整理并写出实验报告。 2、上机设计仿真—学生先根据实验要求设计出实验电路和实验步骤,后上机进行设计仿真,最后记录仿真结果并分析写出实验报告。 3、基本要求: (1)掌握DSP仿真开发系统的结构。掌握仿真器的连接和安装,熟悉开发软件Code Composer Studio 的界面和基本操作。 (2)掌握TMS320C54x芯片的硬件结构,了解CPU、寄存器和存储器中各数据的含义。 (3)了解TMS320C54x芯片外部设备的工作原理,熟悉数据的处理过程和中断。 (4)了解TMS320C54x芯片的指令系统,熟悉各种指令和基本算法。 (5)能够独立完成简单小程序的编写和调试。 通过实验,使学生基本具有DSP的开发能力。 四、实验项目设置、学时分配及基本要求

DSP技术与应用习题库及答案王忠勇讲解

一、填空题 第一章 1.数字信号处理特点大量的实时计算(FIR IIR FFT),数据具有高度重复(乘积和操作在滤波、卷积和FFT中等常见)。 2.信号处理的作用信号改善;信号检测、估计等 3.信号处理的方法信号波形分析/变换、滤波、现代谱估计/分析、自适应滤波等。 4.信息系统包括采集、传输、处理、等。5.数字信号处理常用算法有FIR 滤波、IIR 滤波、离散傅里叶变换、卷积、离散余弦变换等 6.处理器速度的提高得益于器件水平、处理器结构、并行技术等。7.DSP结构特点包括采用哈佛结构体系、采用流水线技术、硬件乘法器、多处理单元、特殊的DSP指令。 8.DSP芯片按用途分为通用型DSP 、专用型DSP 。9.DSP芯片按数据格式分为浮点型、定点型。 第二章 1.C28x芯片具有C27X、C28X、C2XLP操作模式。2.C28x芯片模式选择由ST1中的AMODE和OBJMODE位组合来选定模式。 3.CPU内核由CPU、仿真逻辑、接口组成。 4.CPU主要特性是保护流水线、独立寄存器空间算术逻辑单元(ALU)、地址寄存器算术单元(ARAU)、循环移位器乘法器。 5.CPU信号包括存储器接口信号、时钟和控制信号、复位和中断信号、仿真信号。 6.TMS320F2812组成特点是32位、定点、改进哈佛结构、循环的寻址方式。7.存储器接口有3组地址总线。 8.存储器接口有3组数据总线。 9.存储器接口地址总线有PAB、DRAB、DWAB、 10.CPU中断控制寄存器有IFR 、IER 、DBGIER。 11.ACC累加器是32位的,可表示为ACC、AH、AL。12.被乘数寄存器是32 位的,可表示为XT、T、TL 。13.乘数结果寄存器是32位的,可表示为P 、PH、PL。14.数据页指针寄存器16 位的,有65536 页,每页有64个存储单元。数据存储空间容量是4M字。 15.堆栈指针复位后SP指向地址是0x000400h 。 第三章 1.DSP芯片内部包含存储器类型有片内双访问存储器(DARAM)、片内单访问程序/数据RAM(SARAM)、掩膜型片内ROM存储器、闪速存储器(Flash)一次性可编程存储器(OTP)。 2.C28x具有32 位的数据地址和22位的程序地址,总地址空间可达4G字(每个字16位)的数据空间和4M字的程序空间。 3.在程序地址中保留了64个地址作为CPU的32个中断向量。

哈工大DSP大作业

DSP-F2812的最小系统设计 姓名 学号 班级 时间

一、设计目的: TMS320F2812DSP是TI公司一款用于控制的高性能、多功能、高性价比的32位定点DSP。它整合了DSP和微控制器的最佳特性,集成了事件管理器,A/D转换模块、SCI通信接口、SPI外设接口、eCAN 总线通信模块、看门狗电路、通用数字I/O口、多通道缓冲串口、外部中断接口等多个功能模块,为功能复杂的控制系统设计提供了方便,同时由于其性价比高,越来越多地被应用于数字马达控制、工业自动化、电力转换系统、医疗器械及通信设备中。 通过本课程的学习,我对DSP的各个模块有了较为深入的了解,希望可以通过对最小系统的设计,进一步加深对DSP的学习,能在实践中运用DSP,提高自己的动手实践能力。 二、设计思路 所谓最小系统就是由主控芯片加上一些电容、电阻等外围器件构成,其能够独立运行,实现最基本的功能。为了验证DSP的最基本的功能,我设计了如下单元:有源电路的设计、复位电路及JATG下载口电路的设计、外扩RAM的设计、串口电路的设计、外扩A/D模块电路的设计。 三、详细设计步骤和原理 1、电源电路的设计 TMS320F2812工作时所要求的电压分为两部分:3.3V的Flash电压和1.8V的内核电压。TMS320F2812对电源很敏感,所以在此推荐

选择电压精度较高的电源芯片TPS767D318。TPS767D318芯片输入电压为+5V,芯片起振,正常工作之后,能够产生3.3V和1.8V两种电压电压供DSP使用。如下图所示: 2、复位电路及JATG下载口电路的设计 考虑到TPS767D301芯片自身能够产生复位信号,此复位信号可以直接供DSP芯片使用,所以不用为DSP设置专门的复位芯片。 在实际设计过程中,考虑到JATG下载口的抗干扰性,在与DSP 相连接的接口均需要采用上拉设计。

DSP大作业报告

选课时间:___周二晚10、11、12 实验报告 课程名称: DSP与智能系统 实验名称: _____DSP大作业 指导老师: _______张珣 姓名:_____ 学号:____ 班级:____ 专业:__ 实验日期:___

一、实验要求 以DSP芯片TMS320C54为例,设计一个完整的硬件电路,要求包括: 1.电源电路; 2.复位电路; 3.振荡电路; 4.JTAG电路; 5.4X4矩阵按键; 6.一个LED指示灯; 7.外部8K RAM(地址:2000H – 3FFFH); 8.外部8K RAM(地址:4000H – 5FFFH);9.8位ADC(6000H – 6003H)。 二、实验原理 1.原理介绍 1.1 中断概念 中断响应过程:a.接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行;b.响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应;c.准备执行中断服务程序并保存寄存器的值;d.执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。 中断类别:可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽;不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。所有软件调用的中断都属于该类中断。 中断的优先级:如果多个中断被同时激发,将按照他们的中断优先级来提供服务。中断优先级是芯片内部已定义好的,不可修改。 1.2模数控制 模数模块介绍:ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和 B服务。两个独立的8通道模块可以级连组成16通道模块。虽然有多个输入通道和两个序列器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。 模数转换的程序控制:模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。关于TMS320F28335A DSP芯片内的A/D转换器的详细结构和控制方法。 1.3 电源设计 C55x数字信号处理器电源包括内核电源和外部接口电源,其外部接口电源为3.3V,内核则根据型号不同而采用了不同电压。由于C55x处理器大多应用于低功耗场合,因此,电源电路的设计应注意电源的转换效率和电路的复杂程度,而高效率的DC-DC转换电路则十分适合这种应用。 1.4 振荡电路概念 振荡电路分为自激振荡电路,RC振荡电路,LC振荡电路,而振荡电路在整个设计过程中起着至关重要的作用,为电路提供所需波形。

DSP控制器原理及技术实验报告

实验二定时器 一.实验目的 1. 熟悉如何编写 28335 的中断服务程序; 2. 掌握长时间间隔的定时器的处理。 3. 掌握片外设的设置方法。 二.实验容 1. 系统初始化; 2. DSP 的初始设置; 3. 定时中断的编写; 三.实验要求 1. 通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用; 2. 分析给定程序代码功能,并在实验报告中给出程序流程图和必要的注释; 3. 改变定时时间,下载运行,观察结果,在报告中计算出运行时间。 四.实验背景知识 TMS320F28335 片上有 3 个 32-位 CPU 定时器,分别被称为 CPU 定时器 0、1 和2。每个定时器中均有一个 32-位减计数器,当计数器减到 0 时,产生一个中断。其中,CPU 定时器 0 的中断 TINT0 为 PIE 中断,CPU 定时器 1 的中断 TINT1 直接连到 CPU中断的 INT13,CPU 定时器 2 的中断 TINT2 直接连到 CPU 中断的 INT14。如下图所示。 CPU 定时器 2 保留为实时操作系统(如 DSP BIOS)使用,而 CPU 定时器 0、 1 则可被用户使用,SEED-DEC28335 未使用 CPU 定时器 0,用户可以根据应用的需要灵活使

用。 CPU 定时器的原理框图和定时中断如下图所示。 定时器在工作过程中,首先用 32 位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)部的值。计数寄存器根据 SYSCLKOUT 时钟递减计数。当计数寄存器等于 0 时,定时器中断输出产生一个中断脉冲。 定时器计数器(TIMH: TIM): TIM 寄存器保存当前 32 位定时器计数值的低 16 位,TIMH 寄存器保存高 16 位。每隔(TDDRH:TDDR+1)个时钟周期 TIMH:TIM 减 1,当 TIMH:TIM 递减到 0 时,TIMH:TIM 寄存器重新装载 PRDH:PRD 寄存器保存的周期值,并产生定时器中断TINT信号。 定时器周期寄存器(PRDH:PRD):PRD 寄存器保存 32 位周期值的低 16 位,PRDH 保存高 16 位。当 TIMH: TIM 递减到零时,在下次定时周期开始之前 TIMH: TIM 寄存器重新装载 PRDH:PRD 寄存器保存的周期值;当用户将定时器控制寄存器(TCR)的定时器重新装载位(TRB)置位时, TIMH: TIM 也会重新装载 PRDH: PRD 寄存器保存的周期值。 五.实验准备 1 实验硬件准备 1. 将 DSP 仿真器与计算机连接好; 2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC28335 单元的 J18 相连接; 3. 启动计算机,当计算机启动后,打开SEED-DTK28335的电源。观察 SEED-DTK_MBoard 单元的+5V,+3.3V,+15V,-15V 的电源指示灯灯及 SEED-DEC28335 的电源指示灯 D2 是否均亮;若有不亮,断开电源,检查电源。 2 实验软件准备

西电DSP大作业报告

DSP实验课程序设计报告 学院:电子工程学院 学号:1202121013 :海霞 指导教师:苏涛

DSP 实验课大作业设计 一 实验目的 在DSP 上实现线性调频信号的脉冲压缩、动目标显示(MTI )和动目标检测(MTD),并将结果与MATLAB 上的结果进行误差仿真。 二 实验容 2.1 MATLAB 仿真 设定带宽、脉宽、采样率、脉冲重复频率,用MATLAB 产生16个脉冲的LFM ,每个脉冲有4个目标(静止,低速,高速),依次做 2.1.1 脉压 2.1.2 相邻2脉冲做MTI ,产生15个脉冲 2.1.3 16个脉冲到齐后,做MTD ,输出16个多普勒通道 2.2 DSP 实现 将MATLAB 产生的信号,在visual dsp 中做脉压,MTI 、MTD ,并将结果与MATLAB 作比较。 三 实验原理 3.1 线性调频 线性调频脉冲压缩体制的发射信号其载频在脉冲宽度按线性规律变化即用对载频进行调制(线性调频)的方法展宽发射信号的频谱,在大时宽的前提下扩展了信号的带宽。 若线性调频信号中心频率为0f ,脉宽为τ,带宽为B ,幅度为A ,μ为调频斜率,则其表达式如下: ]2 12cos[)()(20t t f t rect A t x μπτ+??=;)(为矩形函数rect 在相参雷达中,线性调频信号可以用复数形式表示,即 )]2 12(exp[)()(20t t f j t rect A t x μπτ+??= 在脉冲宽度,信号的角频率由220μτπ- f 变化到220μτπ+f 。 3.2 脉冲压缩原理 脉冲雷达信号发射时,脉冲宽度τ决定着雷达的发射能量,发射能量越大, 作用距离越远;在传统的脉冲雷达信号中,脉冲宽度同时还决定着信号的频率宽度B ,即带宽与时宽是一种近似倒数的关系。脉冲越宽,频域带宽越窄,距离分辨率越低。 脉冲压缩的主要目的是为了解决信号的作用距离和信号的距离分辨率之间的矛盾。为了提高信号的作用距离,我们就需要提高信号的发射功率,因此,必须提高发射信号的脉冲宽度,而为了提高信号的距离分辨率,又要求降低信号的脉冲宽度。

相关文档
最新文档