北邮数字信号处理实验报告(特选借鉴)

合集下载

数字信号处理实验报告

数字信号处理实验报告

实验一 信号、系统及系统响应一、实验目的1、熟悉理想采样的性质,了解信号采样前后的频谱变化,加深对时域采样定理的理解。

2、熟悉离散信号和系统的时域特性。

3、熟悉线性卷积的计算编程方法:利用卷积的方法,观察、分析系统响应的时域特性。

4、掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号、系统及其系统响应进行频域分析。

二、 实验原理1.理想采样序列:对信号x a (t)=A e −αt sin(Ω0t )u(t)进行理想采样,可以得到一个理想的采样信号序列x a (t)=A e −αt sin(Ω0nT ),0≤n ≤50,其中A 为幅度因子,α是衰减因子,Ω0是频率,T 是采样周期。

2.对一个连续时间信号x a (t)进行理想采样可以表示为该信号与一个周期冲激脉冲的乘积,即x ̂a (t)= x a (t)M(t),其中x ̂a (t)是连续信号x a (t)的理想采样;M(t)是周期冲激M(t)=∑δ+∞−∞(t-nT)=1T ∑e jm Ωs t +∞−∞,其中T 为采样周期,Ωs =2π/T 是采样角频率。

信号理想采样的傅里叶变换为X ̂a (j Ω)=1T ∑X a +∞−∞[j(Ω−k Ωs )],由此式可知:信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期为Ωs =2π/T 。

根据时域采样定理,如果原信号是带限信号,且采样频率高于原信号最高频率分量的2倍,则采样以后不会发生频率混叠现象。

三、简明步骤产生理想采样信号序列x a (n),使A=444.128,α=50√2π,Ω0=50√2π。

(1) 首先选用采样频率为1000HZ ,T=1/1000,观察所得理想采样信号的幅频特性,在折叠频率以内和给定的理想幅频特性无明显差异,并做记录;(2) 改变采样频率为300HZ ,T=1/300,观察所得到的频谱特性曲线的变化,并做记录;(3) 进一步减小采样频率为200HZ ,T=1/200,观察频谱混淆现象是否明显存在,说明原因,并记录这时候的幅频特性曲线。

北邮-DSP数字信号处理 实验-实验报告

北邮-DSP数字信号处理 实验-实验报告

北京邮电大学电子工程学院电子实验中心<数字信号处理实验>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx 实验时间: xxx评定成绩:目录一、常规实验 (3)实验一常用指令实验 (3)1.试验现象 (3)2.程序代码 (3)3.工作原理 (3)实验二数据储存实验 (4)1.试验现象 (4)2.程序代码 (4)3.工作原理 (4)实验三I/O实验 (5)1.试验现象 (5)2.程序代码 (5)3.工作原理 (5)实验四定时器实验 (5)1.试验现象 (5)2.程序代码 (6)3.工作原理 (9)实验五INT2中断实验 (9)1.试验现象 (9)2.程序代码 (9)3.工作原理 (13)实验六A/D转换实验 (13)1.试验现象 (13)2.程序代码 (14)3.工作原理 (18)实验七D/A转换实验 (19)1.试验现象 (19)2.程序代码 (19)3.工作原理 (37)二、算法实验 (38)实验一快速傅里叶变换(FFT)算法实验 (38)1.试验现象 (38)2.程序代码 (38)3.工作原理 (42)实验二有限冲击响应滤波器(FIR)算法实验 (42)1.试验现象 (42)2.程序代码 (42)3.工作原理 (49)实验三无限冲击响应滤波器(IIR)算法实验 (49)1.试验现象 (49)2.程序代码 (49)3.工作原理 (56)作业设计高通滤波器 (56)1.设计思路 (56)2.程序代码 (57)3.试验现象 (64)一、常规实验实验一常用指令实验1.试验现象可以观察到实验箱CPLD右上方的D3按一定频率闪烁。

2.程序代码.mmregs.global _main_main:stm #3000h,spssbx xf ;将XF置1,D3熄灭call delay ;调用延时子程序,延时rsbx xf ;将XF置0,D3点亮call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nopnop;延时子程序delay:stm 270fh,ar3 ;将0x270f(9999)存入ar3loop1:stm 0f9h,ar4 ;将0x0f9(249)存入ar4loop2:banz loop2,*ar4- ;*ar4自减1,不为0时跳到loop2的位置banz loop1,*ar3- ;*ar3自减1,不为0时跳到loop1的位置ret ;可选择延迟的返回nopnop.end3.工作原理主程序循环执行:D3熄灭→延时→D3点亮→延时。

北京邮电大学_dsp_matlab实验报告

北京邮电大学_dsp_matlab实验报告

数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号:1.实验要求假设信号x(n) 由下述信号组成:请选择合适的长度N 和窗函数,用DFT 分析其频谱,得到清楚的三根谱线。

2.实验代码和实验结果N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。

北邮 DSP 实验二实验报告

北邮 DSP 实验二实验报告

实验二:数字信号的 FFT 分析题目1假设信号 x(n) 由下述信号组成:()0.001*cos(0.45)sin(0.3)cos(0.302)4x n n n n ππππ=+-- 这个信号有两根主谱线 0.3pi 和 0.302pi 靠的非常近,而另一根谱线 0.45pi 的幅度很小,请选择合适的长度 N 和窗函数,用 DFT 分析其频谱,得到清楚的三根谱线。

步骤:1.编写离散傅里叶变换DFT 函数:function [Xk] = dft(xn,N)% Computes Discrete Fourier Transform Coefficients% [Xk] = dft(xn,N)% Xk = DFT coeff. array over 0 <= k <= N-1% xn = input signal% N = length of DFTn = [0:1:N-1]; % row vector for nk = [0:1:N-1]; % row vecor for kWN = exp(-j*2*pi/N); % Wn factornk = n'*k; % creates a N by N matrix of nk valuesWNnk = WN .^ nk; % DFT matrixXk = xn * WNnk; % row vector for DFT coefficients2.代码实现:n=0:1:999;x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-0.25*pi);stem(n,x);title('signal x(n), 0<=n<=999');xlabel('n');X=dft(x,1000);% 计算1000点DFT magX=abs(X(1:1:501));% 镜像对称,只画出一半 k=0:1:500;w=2*pi*k/1000;stem(w/pi,magX);title('DTFT Magnitude');xlabel('frequency in pi units');axis([0.29,0.31,0,500]);xlabel('frequency between 0.29pi and 0.31pi');axis([0.44,0.46,0,0.5]);xlabel('frequency between 0.44pi and 0.46pi');3.图片:4.分析:x(n)由3个正弦函数叠加而成,周期分别是40, 20, 1000。

数字信号处理实验报告

数字信号处理实验报告

数字信号处理实验报告引言数字信号处理(Digital Signal Processing,DSP)是一门研究数字信号的获取、分析、处理和控制的学科。

在现代科技发展中,数字信号处理在通信、图像处理、音频处理等领域起着重要的作用。

本次实验旨在通过实际操作,深入了解数字信号处理的基本原理和实践技巧。

实验一:离散时间信号的生成与显示在实验开始之前,我们首先需要了解信号的生成与显示方法。

通过数字信号处理器(Digital Signal Processor,DSP)可以轻松生成和显示各种类型的离散时间信号。

实验设置如下:1. 设置采样频率为8kHz。

2. 生成一个正弦信号:频率为1kHz,振幅为1。

3. 生成一个方波信号:频率为1kHz,振幅为1。

4. 将生成的信号通过DAC(Digital-to-Analog Converter)输出到示波器上进行显示。

实验结果如下图所示:(插入示波器显示的正弦信号和方波信号的图片)实验分析:通过示波器的显示结果可以看出,正弦信号在时域上呈现周期性的波形,而方波信号则具有稳定的上下跳变。

这体现了正弦信号和方波信号在时域上的不同特征。

实验二:信号的采样和重构在数字信号处理中,信号的采样是将连续时间信号转化为离散时间信号的过程,信号的重构则是将离散时间信号还原为连续时间信号的过程。

在实际应用中,信号的采样和重构对信号处理的准确性至关重要。

实验设置如下:1. 生成一个正弦信号:频率为1kHz,振幅为1。

2. 设置采样频率为8kHz。

3. 对正弦信号进行采样,得到离散时间信号。

4. 对离散时间信号进行重构,得到连续时间信号。

5. 将重构的信号通过DAC输出到示波器上进行显示。

实验结果如下图所示:(插入示波器显示的连续时间信号和重构信号的图片)实验分析:通过示波器的显示结果可以看出,重构的信号与原信号非常接近,并且能够还原出原信号的形状和特征。

这说明信号的采样和重构方法对于信号处理的准确性有着重要影响。

北邮信号与信息处理DSP实验二

北邮信号与信息处理DSP实验二

北邮信号与信息处理DSP实验二信号与信息综合处理实验报告学院:班级:姓名:学号:实验二 FFT 实现1. 实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT 的过程。

2. 实验原理2.1FFT 变换(1) FFT 算法:[]122()()(/2)0,1,...,1()()(/2)N n Nx n x n x n N n x n x n x n N W =++⎧⎪=-⎨=-+⎪⎩,/2111/20/2122/20()(2)()()(21)()N nr N n N nr N n X k X r x n W X k X r x n W -=-=⎧==⎪⎪⎨⎪=+=⎪⎩∑∑(2) 蝶形运算图:(3) 实现函数:DSP_fft(w, N, x, y)。

2.2IFFT变换(1)算法实现:(2)实现流程:2.3SDRAM(1)EMIFA_Config:在csl_emifa.h中声明了一个结构体EMIFA_Config,用来配置EMIFA。

结构体中声明的12个32位无符号整形变量为EMIFA总线的12个接口寄存器;(2)指定SDRAM数据空间:#pragmaDATA_SECTION(sdram_data,".off_ram");unsigned int sdram_data[0x10000];上述代码含义为定义一个全局变量sdram_data[0x10000],将它指定到自定义的数据空间段off_ram中,其中函数具体用法为#pragma DATA_SECTION(函数名或全局变量名,"用户自定义在数据空间的段名";(3)CMD文件:DSP系统中存在大量的存储器,CMD文件描述物理存储器的管理、分配和使用情况,用于DSP 代码的定位。

3.程序功能3.1FFT变换通过给定的旋转因子,利用DSP_fft (w, N, x, y ) 函数,对给定64点序列进行FFT变换,其中N 为变换点数,具体说明如下:(1)w[64]为64点FFT的旋转因子,由tw_fft16x16.exe生成;(2)x[128]内存放原序列,即输入时域信号的实部虚部按顺序排列;(3)y[128]内存放FFT变换后的序列,实部虚部按顺序排列;(4)m[64]内存放FFT变换后64点模值的平方。

北邮 数字信号处理硬件实验实验报告

北邮 数字信号处理硬件实验实验报告

数字信号处理硬件实验实验报告学院:电子工程学院一、5416常规实验(一)实验一常用指令实验1.代码及注释2.代码实现过程首先,为堆栈分配地址,然后输出端口置为1,灯亮,延时,累加器对此累加,如此循环。

(二)实验二数据存储实验1.代码及注释2.代码实现过程首先设定辅助寄存器ar1的地址,然后将数据存储到ar1中,每次完成操作后ar1指向下一地址,重复8次后结束。

3.相关截图(1)查看内存单元,将之修改为“0x0000”(2)run后,内存单元全部变成了“0xAAAA”3)查看CPU Registers单元(三)实验三I/O实验1.代码及注释2.代码实现过程开始后,读入I/O数据,写出I/O数据,结束。

3.实验结果图拨动开关前拨动开关后(四)实验四定时器实验1.代码及注释exp04.c2.代码实现过程开始后,系统初始化,计时器初始化。

随后输出端口赋值,LED灯开始闪烁。

定时器中断,跳到C程序中断子函数,依次计数,判断是否达到设定的时间,若达到,灯亮灭状态相反,若没有,继续亮灭,并且再次判断。

直到达到设定时间后,重新计数,定时器中断,跳到C程序中断子函数,依次计数,如此反复。

3.实验结果图交替闪烁:(五)实验五INT2中断实验1.代码及注释int2.cPORT.ASMVECTORS.ASMINITIAL.ASM2. 代码实现过程开始后,系统初始化,并中断子程序,八个LED灯在S5的控制下亮灭。

3.实验结果图反复按S5键,灯亮灭变化(六)实验六A/D转换实验1.代码及注释2.代码实现过程开始后,系统初始化并中断子程序。

将采样数据存入数组,并读取出来。

3.相关截图断点处停止A/D转化后的数据波形变化频率调节幅度调节观察memory点击animate,数据变成红色(七)实验七D/A转换实验1.代码及注释DA7303.C/*;***********************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息 --------------- ;*;* 文件名称 : DA7303.C;* 文件功能 : 该文件为测试AD7303的测试程序,CPU=TMS320VC5402LF2407;* 接口说明: CS = SPISTE(IOPC5)-- 配置成IO模式CLK = SPICLK -- 配置成SPI模式DATA = SPIMOSI -- 配置成SPI模式;*-------------------------------------------- 最新版本信息 ------------;* 文件作者 : 迟利刚;* 创建日期 : 2005/01/19;* 版本声明 : v1.0.0;*-----------------------------------------------------------------------//------------------头文件--------------------------------------/*******************************************************************/#include "lf2407.h"#include "math.h"/*******************************************************************///----------------------------------------------------------// --------------- 宏定义 ---------------------------------///----------------------------------------------------------#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0#define pi 3.1415926#define LEN 1024//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/************************************************************************************** 所使用的函数原型 ****************************************************************************************/void cpu_init(void); //初始化CPUvoid xint1_init(void); //外部中断1初始化子程序void iopc_init(void); //初始化IOPC设置寄存器void spi_init(void); //初始化SPI设置寄存器interrupt void PHANTOM(void); //伪中断程序interrupt void int1(void); //中断1中断子程序void delay_3us(void); //3us延迟void Delay(UINT16 numbers); //长延迟//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(){asm(" nop ");asm(" nop ");asm(" nop ");asm(" setc INTM"); //禁止所有中断 ST0.9=INTMasm(" clrc SXM"); //抑制符号位扩展asm(" clrc OVM"); //累加器中结果正常溢出asm(" clrc CNF"); //配置 B0为数据储存器/*** Configure the System Control and Status registers ***/* SCSR1=0x00FD; //配置时钟锁相为4倍频CLKOUT=4*10MHZ=40MHZ,MAX CPU freq/*bit 15 0: reservedbit 14 0: CLKOUT = CPUCLKbit 13-12 00: IDLE1 selected for low-power mode when execute IDLE instructionbit 11-9 000: PLL x1 modebit 8 0: reservedbit 7 1: 1 = enable ADC module clockbit 6 1: 1 = enable SCI module clockbit 5 1: 1 = enable SPI module clockbit 4 1: 1 = enable CAN module clockbit 3 1: 1 = enable EVB module clockbit 2 1: 1 = enable EVA module clockbit 1 0: reservedbit 0 1: clear the ILLADR bit*/*SCSR2 = (*SCSR2 | 0x000B) & 0x000F;/*bit 15-7 0's: reservedbit 6 0: Input Qualifier Clocks=5 clockbit 5 0: D'ont write this bit.allows user to disable WD through the WDDIS bit in the WDCR.bit 4 0: XMIF_HI-Z, 0=normal mode, 1=Hi-Z'dbit 3 1: disable the boot ROM, enable the FLASHbit 2 no change MP/MC* bit reflects state of MP/MC* pin bit 1-0 11: 11 = SARAM mapped to prog and data*//*** Disable the watchdog timer ***/* WDCR=0x00EF; //禁止看门狗/*bits 15-8 0's: reservedbit 7 1: clear WD flagbit 6 1: disable the dogbit 5-3 101: must be written as 101bit 2-0 111: WDCLK divider = 64 WDCLK= CLKOUT/512*//*** Setup external memory interface for LF2407 ***/WSGR = 0x001F;/*bit 15-11 0's: reservedbit 10-9 00: bus visibility offbit 8-6 111: 7 wait-state for I/O spacebit 5-3 111: 7 wait-state for data spacebit 2-0 111: 7 wait state for program space*//*** Setup shared I/O pins ***/*MCRA = 0x0000; /* group A pins *//*bit 15 0: 0=IOPB7, 1=TCLKINAbit 14 0: 0=IOPB6, 1=TDIRAbit 13 0: 0=IOPB5, 1=T2PWM/T2CMPbit 12 0: 0=IOPB4, 1=T1PWM/T1CMPbit 11 0: 0=IOPB3, 1=PWM6bit 10 0: 0=IOPB2, 1=PWM5bit 9 0: 0=IOPB1, 1=PWM4bit 8 0: 0=IOPB0, 1=PWM3bit 7 0: 0=IOPA7, 1=PWM2bit 6 0: 0=IOPA6, 1=PWM1bit 5 0: 0=IOPA5, 1=CAP3bit 4 0: 0=IOPA4, 1=CAP2/QEP2bit 3 0: 0=IOPA3, 1=CAP1/QEP1bit 2 0: 0=IOPA2, 1=XINT1bit 1 0: 0=IOPA1, 1=SCIRXDbit 0 0: 0=IOPA0, 1=SCITXD*/*MCRB = 0xFE03; /* group B pins *//*bit 15 1: 0=reserved, 1=TMS2 (always write as 1) bit 14 1: 0=reserved, 1=TMS (always write as 1) bit 13 1: 0=reserved, 1=TD0 (always write as 1) bit 12 1: 0=reserved, 1=TDI (always write as 1) bit 11 1: 0=reserved, 1=TCK (always write as 1) bit 10 1: 0=reserved, 1=EMU1 (always write as 1) bit 9 1: 0=reserved, 1=EMU0 (always write as 1) bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*MCRC = 0x0001; /* group C pins *//*bit 15 0: reservedbit 14 0: 0=IOPF6, 1=IOPF6bit 13 0: 0=IOPF5, 1=TCLKINBbit 12 0: 0=IOPF4, 1=TDIRBbit 11 0: 0=IOPF3, 1=T4PWM/T4CMPbit 10 0: 0=IOPF2, 1=T3PWM/T3CMPbit 9 0: 0=IOPF1, 1=CAP6bit 8 0: 0=IOPF0, 1=CAP5/QEP4bit 7 0: 0=IOPE7, 1=CAP4/QEP3bit 6 0: 0=IOPE6, 1=PWM12bit 5 0: 0=IOPE5, 1=PWM11bit 4 0: 0=IOPE4, 1=PWM10bit 3 0: 0=IOPE3, 1=PWM9bit 2 0: 0=IOPE2, 1=PWM8bit 1 0: 0=IOPE1, 1=PWM7bit 0 1: 0=IOPE0, 1=CLKOUT*//*** Configure IOPA pin as an INPUT ***/*PADATDIR = *PADATDIR & 0x00FF;/*** Configure IOPB pin as an INPUT ***/*PBDATDIR = *PBDATDIR & 0x00FF;/*** Configure IOPC pin as an INPUT ***/*PCDATDIR = *PCDATDIR & 0x00FF;/*** Configure IOPD pin as an INPUT ***/*PDDATDIR = *PDDATDIR & 0xFEFF;/*** Configure IOPE pin as an INPUT ***/*PEDATDIR = *PEDATDIR & 0x00FF;/*** Configure IOPF pin as an INPUT ***/*PFDATDIR = *PFDATDIR & 0x7FFF;/*** Setup timers 1 and 2, and the PWM configuration ***/*T1CON = 0x0000; /* disable timer 1 */*T2CON = 0x0000; /* disable timer 2 */*GPTCONA = 0x0000; /* configure GPTCONA */*GPTCONB = 0x0000; /* configure GPTCONB *//*bit 15 0: reservedbit 14 0: T2STAT, read-onlybit 13 0: T1STAT, read-onlybit 12-11 00: reservedbit 10-9 00: T2TOADC, 00 = no timerX event starts ADCbit 8-7 00: T1TOADC, 00 = no timerX event starts ADCbit 6 0: TCOMPOE, 0 = Hi-z all timer compare outputs bit 5-4 00: reservedbit 3-2 00: TXPIN, 00 = forced lowbit 1-0 00: TXPIN, 00 = forced low*/* IMR=0x0000;/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/* IFR=0xFFFF; //清除所有中断标志,"写1清0"}//--------------------------------------------------------------------// 函数名称 : void xint1_init(void)// 函数说明 : 初始化XINT1// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void xint1_init() //外部中断1初始化子程序{* IMR=0x0001; //使能int1中断 --SPI Peripheral Interrupt Vector 0005h //when SPI INT IS high-priority mode/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/asm(" clrc INTM"); //开总中断}//--------------------------------------------------------------------// 函数名称 : void iopc_init(void)// 函数说明 : 初始化IOPC设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void iopc_init(){// *MCRB = *MCRB | 0x003C; // 配置SPISTE为IO,SPICLK、SPISOMI、SPISIMO为SPI口 *MCRB = *MCRB | 0x001C;/*bit 15 1: 0=reserved, 1=TMS2 (always write as 1)bit 14 1: 0=reserved, 1=TMS (always write as 1)bit 13 1: 0=reserved, 1=TD0 (always write as 1)bit 12 1: 0=reserved, 1=TDI (always write as 1)bit 11 1: 0=reserved, 1=TCK (always write as 1)bit 10 1: 0=reserved, 1=EMU1 (always write as 1)bit 9 1: 0=reserved, 1=EMU0 (always write as 1)bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*PCDATDIR = *PCDATDIR | 0x2020; /*** ConfigureSPISTE as an OUTPUT ***//****output high ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*/}//--------------------------------------------------------------------// 函数名称 : void spi_init(void)// 函数说明 : 初始化SPI设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void spi_init(){* SPICCR = * SPICCR & 0xFF7F; //复位SPI/*bit 7 0: reset SPI*/* SPICCR = 0x004f;/*bit 15-8 0: reservedbit 7 0: reset SPIbit 6 1: Data is output on falling edge and input on rising edge bit 5-4 0: reservedbit 3-0 1: Character Length 16bit*/* SPICTL = 0x000e;/*bit 15-5 0: reservedbit 4 0: Disable RECEIVER OVERRUN Flag bitbit 3 1: SPICLK signal delayed by one half-cycle;bit 2 1: SPI configured as a master.bit 1 1: Enables transmissionbit 0 0: Disables interrupt*/* SPIBRR = 0x0003;/*bit 15-7 0: reservedbit 6-0 3: 10MHZ Baud-Rate*/* SPIPRI = 0x0000;/*bit 15-7 0: reservedbit 6 0: Interrupts are high-priority requestsbit 5-4 0: Immediate stop on suspendbit 3-0 0: Reserved.*/* SPICCR=* SPICCR | 0x0080; //启动spi工作/*bit 7 1: start SPI}//-------------------------------------------------------------------- // 函数名称 : void int1(void)// 函数说明 : 中断1的子程序// 输入参数 : 无// 输出参数 : 无//-------------------------------------------------------------------- interrupt void int1() //中断1中断子程序{UINT16 temp;temp = *PVIR;* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<40000;i++);for(j=0;j<numbers;j++);}/************************************************************- 函数名称 : interrupt void PHANTOM(void)- 函数说明 : 伪中断子程序- 输入参数 : 无- 输出参数 : 无*********************************************************** */interrupt void PHANTOM(void){* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************* ****************** 主函数 ******************************************************************************* */void main(){UINT16 temp,i;//----------系统初始化-------------------------------asm(" nop ");cpu_init(); //初始化CPUasm(" nop ");iopc_init(); //初始化IOPE设置寄存器asm(" nop ");xint1_init(); //外部中断1初始化子程序asm(" nop ");spi_init(); //初始化SPI设置寄存器asm(" nop ");//----------产生正弦波的数据------------------------for(i=0; i<LEN;i++){data_buff[i] = 127 + (int)(127.0*sin(2*pi*i/(LEN-1)));data_buff[i] = data_buff[i] & 0x00ff;}asm(" nop ");//---------发送给AD7303-----------------------------for(;;){for(i=0; i<LEN;i++){*PCDATDIR = *PCDATDIR & 0xffdf; /*** ConfigureSPISTE as an OUTPUT ***//****output low ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*///----------------------------------------------------------------* SPITXBUF = data_buff[i] & 0x00ff; //发送控制字、数据给AD7303//AD7303的控制字高8位// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 0 0 0 0 0 0 0 0//内部参考电压源,DAC-A、B DAC-A、B工作//----------------------------------------------------------------while((* SPISTS & 0x0040) == 0x0); //判断 SPISTS.6(SPI Interrupt Flag) //等于 1 ,说明SPITXBUF中数据发送完 //可以写入数据//等于0,不能再写入数据*PCDATDIR = *PCDATDIR | 0x0020; /*** ConfigureSPISTE as an an OUTPUT ***/ temp = *SPIRXBUF; // 读接收缓冲寄存器,清除SPI Interrupt Flagdelay_3us(); //延迟等待DA转换结束/****output high ******************/}} //----------- 等待SPI中断----------------------------------------while(1){port8001 = show;}}DA7303_54.c/*************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*************************************************************//*;* 文件名称 : da7303_54.c;* 适用平台 : EXPIII+实验系统;* CPU类型 : DSP TMS320VC54X;* 软件环境 : CCS3.1 (5000系列);* 试验接线 : 1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54x CPU板的跳线J2的1、2短接;* (HPI 8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;;* CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);;* 试验现象 : 用示波器检测D/A转换单元的2号孔接口"输出1"输出一个正弦波;;*************************************************************///------------------头文件--------------------------------------#include "DspRegDefine.h" //VC5402 寄存器定义#include "math.h"//---------------------------------------------------------------/* ****************** 宏定义 ****************************************************************************/#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0#define pi 3.1415926#define LEN 256//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/*********************************************************************** *************** 所使用的函数原型 *************************************************************************************** */void cpu_init(void); //初始化CPUvoid Delay(UINT16 numbers); //延迟extern void delay_3us(void); //3us延迟void mcbsp0_write_rdy(UINT16 out_data);//MCBSP0发送一个数据void mcbsp0_init_SPI(void);//MCBSP0设置为SPI模式void mcbsp0_close(void);//MCBSP0关闭//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(void){asm(" nop ");asm(" nop ");asm(" nop ");//-------------------------------------------------------------------//CLKMD DEFINITIONS:// PLLMUL (bit 15-12) - 0000 PLL multiplier = 0 (mult by 1)// PLLDIV (bit 11) - 0 PLL divider = 0 (div by 1)// PLLCOUNT (bit 10-3)- 11111111 PLL counter set to max// PLLONOFF (bit 2) - 1 PLL on// PLLNDIV (bit 1) - 1 Select PLL mode// PLLSTATUS (bit 1) - x PLL Status (read only)// ------------------// 0000011111111111 = 0x07ff CLKMD=1 X CLKIN//--------------------------------------------------------------------*(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkinwhile(((*(unsigned int*)CLKMD)&01)!=0);*(unsigned int*)CLKMD=0x37ff; //switch to PLL X 4 mode//--------------------------------------------------------------------// ST0 DEFINITIONS:// ARP (bit 15-13) - 000 Auxiliary register pointer// TC (bit 12) - 1 Test/control flag// C (bit 11) - 1 Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the// result of a subtraction generates a borrow.// OVA (bit 10) - 0 Overflow flag for accumulator A// OVB (bit 9) - 0 Overflow flag for accumulator B// DP (bit 8-0) - 00000000 Data-memory page pointer// --------------------// 0001 1000 0000 0000 =0x1800 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST0=0x1800;//--------------------------------------------------------------------// ST1 DEFINITIONS:// BRAF (bit 15) - 0 Block-repeat active flag// CPL (bit 14) - 1 Compiler mode CPL=0 DP;CPL=1 SP// XF (bit 13) - 1 XF status// HM (bit 12) - 0 Hold mode// INTM (bit 11) - 1 Interrupt mode INTM=0,All unmasked interrupts are enabled// Reser (bit 10) - 0 Always read as 0// OVM (bit 9) - 0 Overflow mode// SXM (bit 8) - 1 Sign-extension mode// C16 (bit 7) - 0 Dual 16-Bit/double-precision arithmetic mode// FRCT (bit 6) - 0 Fractional mode// CMPT (bit 5) - 0 Compatibility mode// ASM (bit 4-0) - 00000 Accumulator shift mode// --------------------// 0110 1001 0000 0000 =0x2900 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST1=0x6900;//--------------------------------------------------------------------//IPTR DEFINITIONS?// IPTR (bit 15-7) - 001111111 Run-time Interrupt vector location = 0x3f80 (for now)// MP/~MC (bit 6) - 1 Turn off internal Instruction ROM (use RAM)// OVLY (bit 5) - 1 Turn on internal RAM// AVIS (bit 4) - 1 Address visibility on// DROM (bit 3) - 0 Data ROM of FF00~FFFF is external// CLKOFF (bit 2) - 0 Clockout enabled,only for use clkout=cpu clock// SMUL (bit 1) - 1 Saturate before multiply on MAC// SST (bit 0) - 0 Do not saturate before store// -----------------// 0011 1111 1111 0010 = 0x3ff2/*---------------------------------------------------------------------*/*(unsigned int*)PMST=0x3FF2;//---------------------------------------------------------------------// SWWSR DEFINITIONS?// XPA (bit 15) - 0 Extended program address control bit. XPA is used in conjunctionwith the program space fields// (bits 0 through 5) to select the address range for program spacewait states// I/O (bits 14-12) - 111 set to max wait states for seven// Data1 (bits 11-9) - 111 Seven Wait state for Upper data space(0x8000-0xFFFF)// Data2 (bits 8-6) - 111 Seven Wait states for Lower data space (0x0000 - 0x7FFF)// Prog1 (bits 5-3) - 111 Seven Wait state for Upper program space. (xx8000-xxFFFF)// Prog2 (bits 2-0) - 111 Seven Wait states for Program space. (xx0000-xx7FFF)// -----------------// 1 111 111 111 111 111 - 0x7fff/*--------------------------------------------------------------------*/*(unsigned int*)SWWSR=0x7fff;//--------------------------------------------------------------------//SWCR DEFINITIONS?// Reserved (bits 15-1)// SWSM (bit 0) - 1 wait-state base values are mulitplied by 2// for a maximum of 14 wait states.// --------------------------// 0000 0000 0000 0001//--------------------------------------------------------------------*(unsigned int*)SWCR=0x0001;//--------------------------------------------------------------------//BSCR DEFINITIONS?// BNKCMP (bit 15-12) - 1111 Bank compare. Determines the external memory-bank size. BNKCMP is used to maskthe four MSBs of// an address.// 1111 4k// 1110 8k// 1100 16k// 1000 32k// 0000 64k// PS-DS (bit 11) - 1 One extra cycle is inserted between consecutive data and program reads. // Reserved (bits 10-3) - 00000000// HBH (bit 2) - 0 The hpi bus holder is disabled// BH (bit 1) - 0 The data bus holder is disabled// EXIO (bit 0) - 0 The external bus interface functions as usual// ------------------------------------// 1111 1000 0000 0000//--------------------------------------------------------------------*(unsigned int*)BSCR=0xf800;//--------------------------------------------------------------------asm(" ssbx intm "); //Disable all mask interrupts//--------------------------------------------------------------------// IMR DEFINITIONS// Writing a 1 to any IMR bit position enables the corresponding interrupt (when INTM = 0)// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 0 DMA channel 5 interrupt mask bit// DMAC4 (bit 12) - 0 DMA channel 4 interrupt mask bit// BXINT1/DMAC3 (bit 11) - 0 McBSP1 transmit interrupt mask bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 0 McBSP1 receive interrupt mask bit, or the DMA channel 2// HPINT (bit 9) - 0 Host to ’54x interrup /mask// INT3 (bit 8) - 0 External interrupt 3 mask// TINT1/DMAC1 (bit 7) - 0 timer1 interrupt mask bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 0 reserved, or the DMA channel 0 interrupt mask bit// BXINT0 (bit 5) - 0 McBSP0 transmit interrupt mask bit// BRINT0 (bit 4) - 0 McBSP0 receive interrupt mask bit// TINT0 (bit 3) - 0 Timer 0 interrupt mask bit// INT2 (bit 2) - 0 External interrupt 2 mask bit// INT1 (bit 1) - 0 External interrupt 1 mask bit// INT0 (bit 0) - 0 External interrupt 0 mask bit// ------------------------------// 0000 0000 0000 0000//--------------------------------------------------------------------*(unsigned int*)IMR=0x0;//--------------------------------------------------------------------// IFR DEFINITIONS// Writing a 1 to any IFR bit position clear the corresponding interrupt mask ,when corresponding interrupt occur IFR corresponding bit=1// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 1 DMA channel 5 interrupt flag bit// DMAC4 (bit 12) - 1 DMA channel 4 interrupt flag bit// BXINT1/DMAC3 (bit 11) - 1 McBSP1 transmit interrupt flag bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 1 McBSP1 receive interrupt flag bit, or the DMA channel 2// HPINT (bit 9) - 1 Host to ’54x interrutpflak// INT3 (bit 8) - 1 External interrupt 3 flag// TINT1/DMAC1 (bit 7) - 1 timer1 interrupt flag bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 1 reserved, or the DMA channel 0 interrupt flag bit// BXINT0 (bit 5) - 1 McBSP0 transmit interrupt flag bit// BRINT0 (bit 4) - 1 McBSP0 receive interrupt flag bit// TINT0 (bit 3) - 1 Timer 0 interrupt flag bit// INT2 (bit 2) - 1 External interrupt 2 flag bit// INT1 (bit 1) - 1 External interrupt 1 flag bit// INT0 (bit 0) - 1 External interrupt 0 flag bit// ------------------------------// 1111 1111 1111 1111/*--------------------------------------------------------------------*/ *(unsigned int*)IFR=0xffff;//--------------------------------------------------------------------asm(" nop ");asm(" nop ");asm(" nop ");}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<4000;i++)for(j=0;j<numbers;j++);}/************************************************************************** - 函数名称 : void mcbsp0_write_rdy(UINT16 out_data);- 函数说明 : MCBSP0发送一个数据- 输入参数 : data- 输出参数 : 无- 补充说明 : 内部带是否发送完成的判断************************************************************************** */void mcbsp0_write_rdy(UINT16 out_data){UINT16 j;*(unsigned int*)McBSP0_SPSA=0x0001; //McBSP0_SPSA 指向 SPCR2while ((*(unsigned int *)McBSP0_SPSD&0x0002)==0);//mask XRDY bit,XRDY = 1 Transmitter is ready for new data in DXR[1,2].for(j=0;j<20;j++); //delay*(unsigned int *)McBSP0_DXR1= out_data;}/**************************************************************************- 函数名称 : void mcbsp0_init_SPI(void);- 函数说明 : MCBSP0设置为SPI模式- 输入参数 : 无- 输出参数 : 无- 补充说明 :***************************************************************************/void mcbsp0_init_SPI(void){//--------------------------------------------------------//复位 McBSP0*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(RRST=0)*(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(XRST=0)//---------------------------------------------------------//延迟Delay(0); //延迟 4000*CPU 时钟周期//等待复位稳定//--------------------------------------------------------- //配置 McBSP0为 SPI 模式*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x1800;//DLB (bit 15) 0 Digital loop back mode disabled//RJUST (bit 14-13) 00 Right-justify and zero-fill MSBs in DRR[1,2] //CLKSTP (bit 12-11) 11//X (bit 10-8) 000 Reserved//DXENA (bit 7) 0 data transmit delay bit.DX enabler is off//ABIS (bit 6) 0 A-bis mode is disabled//RINTM (bit 5-4) 00 RINT driven by RRDY。

数字信号处理实验报告

数字信号处理实验报告

一、实验目的1. 理解数字信号处理的基本概念和原理。

2. 掌握离散时间信号的基本运算和变换方法。

3. 熟悉数字滤波器的设计和实现。

4. 培养实验操作能力和数据分析能力。

二、实验原理数字信号处理(Digital Signal Processing,DSP)是利用计算机对信号进行采样、量化、处理和分析的一种技术。

本实验主要涉及以下内容:1. 离散时间信号:离散时间信号是指时间上离散的信号,通常用序列表示。

2. 离散时间系统的时域分析:分析离散时间系统的时域特性,如稳定性、因果性、线性等。

3. 离散时间信号的变换:包括离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)和快速傅里叶变换(FFT)等。

4. 数字滤波器:设计、实现和分析数字滤波器,如低通、高通、带通、带阻滤波器等。

三、实验内容1. 离散时间信号的时域运算(1)实验目的:掌握离散时间信号的时域运算方法。

(2)实验步骤:a. 使用MATLAB生成两个离散时间信号;b. 进行时域运算,如加、减、乘、除等;c. 绘制运算结果的时域波形图。

2. 离散时间信号的变换(1)实验目的:掌握离散时间信号的变换方法。

(2)实验步骤:a. 使用MATLAB生成一个离散时间信号;b. 进行DTFT、DFT和FFT变换;c. 绘制变换结果的频域波形图。

3. 数字滤波器的设计和实现(1)实验目的:掌握数字滤波器的设计和实现方法。

(2)实验步骤:a. 设计一个低通滤波器,如巴特沃斯滤波器、切比雪夫滤波器等;b. 使用MATLAB实现滤波器;c. 使用MATLAB对滤波器进行时域和频域分析。

4. 数字滤波器的应用(1)实验目的:掌握数字滤波器的应用。

(2)实验步骤:a. 采集一段语音信号;b. 使用数字滤波器对语音信号进行降噪处理;c. 比较降噪前后的语音信号,分析滤波器的效果。

四、实验结果与分析1. 离散时间信号的时域运算实验结果显示,通过MATLAB可以方便地进行离散时间信号的时域运算,并绘制出运算结果的时域波形图。

数字信号处理实验报告

数字信号处理实验报告

数字信号处理实验报告
数字信号处理是指利用数字技术对模拟信号进行采样、量化、编码等处理后,再通过数字信号处理器进行数字化处理的技术。

在数字信号处理实验中,我们通过对数字信号进行滤波、变换、解调等处理,来实现信号的处理和分析。

在实验中,我们首先进行了数字信号采集和处理的基础实验,采集了包括正弦信号、方波信号、三角波信号等在内的多种信号,并进行了采样、量化、编码等处理。

通过这些处理,我们可以将模拟信号转换为数字信号,并对其进行后续处理。

接着,我们进行了数字信号滤波的实验。

滤波是指通过滤波器对数字信号进行处理,去除其中的噪声、干扰信号等不需要的部分,使其更加纯净、准确。

在实验中,我们使用了低通滤波器、高通滤波器、带通滤波器等多种滤波器进行数字信号滤波处理,得到了更加干净、准确的信号。

除了滤波,我们还进行了数字信号变换的实验。

数字信号变换是指将数字信号转换为另一种表示形式的技术,可以将信号从时域转换到频域,或者从离散域转换到连续域。

在实验中,我们使用了傅里叶变换、离散傅里叶变换等多种变换方式,对数字信号进行了变换处理,得到了信号的频谱信息和其他相关参数。

我们进行了数字信号解调的实验。

数字信号解调是指将数字信号转换为模拟信号的技术,可以将数字信号还原为原始信号,并进行后续处理。

在实验中,我们使用了频率解调、相干解调等多种解调方式,将数字信号转换为模拟信号,并对其进行了分析和处理。

总的来说,数字信号处理实验是一项非常重要的实验,可以帮助我们更好地理解数字信号处理的原理和方法,为我们今后从事相关领域的研究和工作打下坚实的基础。

北邮dsp实验报告

北邮dsp实验报告

北邮dsp实验报告北邮DSP实验报告一、引言数字信号处理(Digital Signal Processing,简称DSP)是一门研究如何对数字信号进行分析、处理和合成的学科。

作为一门重要的电子信息科学与技术专业的实验课程,北邮DSP实验旨在让学生通过实践掌握DSP的基本理论和实际应用。

本实验报告将对北邮DSP实验进行详细介绍和总结。

二、实验目的北邮DSP实验的主要目的是让学生通过实际操作,深入理解数字信号处理的基本概念和方法,并掌握DSP实验的基本流程和技巧。

具体目标包括:1. 熟悉DSP实验平台的硬件结构和软件环境;2. 掌握数字信号的采样、量化和编码方法;3. 学习常见的数字滤波器设计和实现方法;4. 理解信号频谱分析和频域滤波的原理和应用;5. 实现音频信号的处理和效果增强。

三、实验内容北邮DSP实验主要包括以下内容:1. DSP实验平台的介绍:包括硬件结构和软件环境的说明,学生需要了解DSP实验平台的基本构成和使用方法。

2. 数字信号的采样与重构:学生需要通过实际操作,了解采样定理的原理和应用,以及数字信号的重构方法。

3. 数字信号的量化与编码:学生需要学习数字信号的量化误差和编码方法,并通过实验验证量化误差的影响。

4. FIR数字滤波器设计与实现:学生需要学习FIR滤波器的设计原理和方法,并通过实验实现低通、高通和带通滤波器。

5. IIR数字滤波器设计与实现:学生需要学习IIR滤波器的设计原理和方法,并通过实验实现巴特沃斯和切比雪夫滤波器。

6. 音频信号的处理与效果增强:学生需要学习音频信号的基本特性和处理方法,包括均衡器、混响器和压缩器等效果器的实现。

四、实验过程北邮DSP实验的具体过程如下:1. 实验准备:学生需要提前熟悉实验平台的硬件结构和软件环境,并准备好实验所需的音频信号和滤波器设计参数。

2. 实验操作:学生按照实验指导书的步骤进行实验操作,包括采样与重构、量化与编码、滤波器设计与实现等。

北邮《数字信号处理》Matlab实验——梳状滤波器的应用

北邮《数字信号处理》Matlab实验——梳状滤波器的应用

实验题目3:梳状滤波器的应用实验目的:录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。

试验内容:1、对试验原理的说明回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。

x(n)表示原始声音信号,a为衰减系数,T为延迟周期,回声信号Y(n)=X(n)+a*x(n‐T)+a^2*x(n‐2T)+……+a^k*x(n‐kT)。

Z变换后的系统函数H(z)可由梳状滤波器实现。

本实验用MATLAB中的filter(b,a,x)函数可用来仿真差分方程a(1)*y(n)=b(1)*x(n)+b(2)*x(n‐1)+...+b(nb+1)*x(n‐nb)‐a(2)*y(n‐1)‐...‐a(na+1)*y(n‐na)。

2、在同一张图上,绘制原声音序列x(n)、加入一次反射后的声音序列x1(n)、加入三次反射后的声音序列x3(n)和加入无穷多次反射后的声音序列x I(n)。

[x, fs] = wavread('a.wav');% sound(x, fs);a = 0.6; T = 0.2;y1 = filter([1, zeros(1,T*fs-1), a], 1, x);% sound(y1, fs); wavwrite(y1, fs, 'echo1.wav');y2 = filter([1, zeros(1,T*fs-1), a, zeros(1,T*fs-1), a^2, zeros(1,T*fs-1), a^3], 1, x);% sound(y2, fs); wavwrite(y2, fs, 'echo2.wav');y3 = filter(1, [1, zeros(1,T*fs-1), a], x);% sound(y3, fs); wavwrite(y3, fs, 'echo3.wav');plot(y3, 'm');hold on; plot(y2, 'r');hold on; plot(y1, 'g');hold on; plot(x, 'b');其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列x1(n),绿色为加入三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列x I(n)。

北邮数字信号处理实验报告

北邮数字信号处理实验报告

2011级数字信号处理实验报告实验名称:实验一数字信号的产生和基本运算1.实验要求因为现实世界里存在的是模拟信号,因此数字信号处理的第一个问题是将信号离散化,得到一个数字信号,然后再进行数字处理。

(1) 常用数字信号序列的产生:熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。

请用Matlab 画出下列序列的波形(-10<n<10):a) δ(n)b) 单位阶跃序列2 u(n-5)c) 矩形序列R(n)d) y(n)=2sin(0.3πn)+ 0.5cos(0.6πn)(2) 数字信号的基本运算:a) 加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。

b) 请用您的计算机声卡采用一段您自己的声音x(n),长度为45秒,单声道,取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n) 按下式叠加为一个声音信号z(n):z(n) = 0.7x(n) + 0.3y(n)要求:在同一个Figure 中,画出采集声音x(n)、背景音乐y(n)和混音z(n) 的时域波形;提交实验报告时,请把声音文件转换为mp3 格式,图像转换为JPEG 格式,以节省存储空间。

通过本次实验,掌握Matlab 中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下基础。

2. 程序分析第一部分:1、δ(n)函数实现% create impulse functionfunction[x,n]=impseq(n0,n1,n2)%This function should be used to create a impseq array%It return 1 at n0 ,and return 0 at other place%You should set the arguments as: n1<n0<n2if((n0<n1)|(n0>n2)|(n1>n2))error('Arguments must satisfy n1<=n0<=n2')endn=[n1:n2];x=[(n-n0)==0];2、阶跃函数u(n)的实现%create u(n)function [x,n]=stepseq(n0,n1,n2)%This function should be used to create a u(n) array%It return 1 when n>=n0 ,and return 0 at other place%You should set the arguments as: n1<n0<n2if((n0<n1)|(n0>n2)|(n1>n2))error('Arguments must satisfy n1<=n0<=n2')endn=[n1:n2];x=[(n-n0)>=0];3, 窗函数R(n)的实现%create R(n)function [y,n]=R(n1,left,right,n2)%This function should be used to create a R(n) array%It return 1 when left<=n<right ,and return 0 at other place %You should set the arguments as: n1<=left<=right<=n2 if(n1>left||left>right||right>n2)error('Arguments must satisfy ns<=left<=right<=nf') endn=[n1:n2];y=[n>=left]-[n>=right];4、程序主代码<<cleary1=impseq(0,-10,10);y2=stepseq(5,-10,10)*2;y3=R(-10,-5,5,10);n=-10:1:10;temp=-10:0.1:10;y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);y5=2*sin(0.3*pi*temp)+0.5*cos(0.6*pi*temp); subplot(2,2,1),stem(n,y1),title('δ(n)');subplot(2,2,2),stem(n,y2),title('u(n)');subplot(2,2,3),stem(n,y3),title('R(n)');subplot(2,2,4),stem(n,y4),hold on,plot(temp,y5,':'),title('2sin(0.3pi*n)+0.5cos(0.6pi*n)');5、运行结果第二部分:1、各个函数求和>>cleary1=impseq(0,-10,10);y2=stepseq(5,-10,10)*2;y3=R(-10,-5,5,10);n=-10:1:10;y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);z1=y1+y2;z2=y3+y4;z3=y1*2;subplot(3,1,1),stem(n,z1),title('δ(n)+2u(n-5)'); subplot(3,1,2),stem(n,z2),title('2sin(0.3pi*n)+0.5cos(0.6pi*n)+R(n)'); subplot(3,1,3),stem(n,z3),title('2*δ(n) ');运行结果2、音频处理clear[record,fs,bits]=wavread('record.wav'); [background,fs,bits]=wavread('background.wav'); x=record((fs*0+1:fs*45),:);%录音y=background((fs*0+1:fs*45),:);z=0.1*x+0.9*y;subplot(3,1,1),plot(x),title('record');subplot(3,1,2),plot(y),title('background'); subplot(3,1,3),plot(z),title('music');wavwrite(z,fs,bits,'music.wav');运行结果3. 总结通过本次实验,熟悉了matlab7.0的使用方法,以及函数的建立和绘图。

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)信息与通信工程学院信号与信息处理综合实验报告(DSP部分)班级:姓名:学号:序号:日期:信号与信息处理综合实验报告实验二 FFT实现一、实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT的过程。

二、程序功能1、基本功能本程序的基本要求是:将FFT结果写入SDRAM后,并读取出来。

2、拓展功能(1)其他点数的FFT;(2)FFT后再进行IFFT,验证是否与原数据一致。

三、程序基本信息(一)、程序模块描述:1、FFT程序(实现基本功能):(1)FFT部分:1?主函数(main):初始化输入序列、旋转因子、FFT点数,负责其它功能函数的调用,并完成一些基本操作。

2?void DSP_radix2(int n, short *restrict xy, const short *restrict w):完成FFT运算(基2频域抽选)。

参数说明:n是输入序列的长度,short xy是输入序列(复数),const short w为旋转因子。

3? void bitrev_index(short *index, int n):计算得到重新排序表,n 为序列长度。

4? void DSP_bitrev_cplx(int *x, short *index, int nx):根据bitrev_index计算的排序表,把FFT输出的复数序列x重新排序为自然顺序。

DSP_bitrev_cplx:(2)SDRAM配置与写入部分:主函数(main):负责其它功能的调用,执行SDRAM写入、读取和检测,并点亮对应的LED。

EMIFA_config(&MyEmifaConfig):实现对EMIFA总线的12个接口寄存器的配置。

具体配置信息在MyEmifaConfig结构体中。

第1页信号与信息处理综合实验报告 #pragmaDATA_SECTION(sdram_data,".off_ram");数据段定义,定义要写入的数据位置,需要在CMD文件中建立对应的section。

北邮数字信号处理MATLAB实验报告

北邮数字信号处理MATLAB实验报告

数字信号处理软件实验——MatLab仿真实验报告学院:电子工程学院班级:2013211202姓名:学号:实验一:数字信号的 FFT 分析1、实验内容及要求(1) 离散信号的频谱分析:设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。

(2) DTMF 信号频谱分析用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。

2、实验目的通过本次实验,应该掌握:(a) 用傅立叶变换进行信号分析时基本参数的选择。

(b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT ) 后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。

(c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。

(d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。

(e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。

3.设计思路及实验步骤1)离散信号的频谱分析:该信号中要求能够清楚的观察到三根谱线。

由于频率0.3pi 和0.302pi 间隔非常小,要清楚的显示,必须采取足够大小的N ,使得分辨率足够好,至少到0.001单位级,而频率0.45pi 的幅度很小,要清楚的观察到它的谱线,必须采取幅度够大的窗函数,使得它的频谱幅度变大一些。

同时还要注意频谱泄漏的问题,三个正弦函数的周期(2pi/w )分别为20,40,1000,所以为了避免产生频谱泄漏(k=w/w0为整数),采样点数N 必须为1000的整数倍。

北航数字信号处理实验报告

北航数字信号处理实验报告

实验名称幅度调制和解调实验科目数字信号与处理院系名称专业名称学号学生姓名年月日实验三:幅度调制和解调一、实验目的了解几种基本的调制解调原理,掌握用数字信号处理的方法实现模拟电路中信号的调制与解调的方法。

通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机验证实现,从而加深理解,建立概念。

二、实验内容1.利用Matlab实现信号的调制,过调制,欠调制等状态。

2.用高频正弦信号分别实现对(1)低频周期方波信号,(2)低频正弦信号(3)低频周期三角波信号的调制,观察调制后频率分布状态,实现抑制载波的幅度调制。

3.设计实验,实现含有载波的幅度调制。

观察调制和解调的结果,与抑制载波的幅度调制有何不同。

4.设计实验,观察待调制波信号幅度变化对调幅系数的影响。

5.模拟峰值检测(包络检波)电路中的二极管的功能。

6.了解峰值检波(包络检波)的原理,并编程实现。

7.了解同步检波的原理,并编程实现。

三、实验原理1.幅度调制用一个信号(称为调制信号)去控制另一个信号(称为载波信号),让后者的某一特征参数如幅值、频率、相位,按前者变化的过程,就叫调制。

调制的作用是把消息置入消息载体,便于传输或处理。

调制是各种通信系统的重要基础,也广泛用于广播、电视、雷达、测量仪等电子设备。

在通信系统中为了适应不同的信道情况(如数字信道或模拟信道、单路信道或多路信道等),常常要在发信端对原始信号进行调制,得到便于信道传输的信号,然后在收信端完成调制的逆过程──解调,还原出原始信号。

用来传送消息的信号叫作载波或受调信号,代表所欲传送消息的信号叫作调制信号,调制后的信号叫作已调信号。

用调制信号控制载波的某些参数,使之随调制信号而变化,就可实现调制。

受调信号可以是正弦波或脉冲波,所欲传送的消息可以是话音、图像或其他物理量,也可以是数据、电报和编码等信号。

前者是模拟信号,后者是数字信号。

调制是一种非线性过程。

载波被调制后产生新的频率分量,通常它们分布在载频f C的两边,占有一定的频带,分别叫做上边带和下边带。

数字信号处理实验报告

数字信号处理实验报告

数字信号处理实验报告数字信号处理实验报告一、实验目的本实验旨在通过数字信号处理的方法,对给定的信号进行滤波、频域分析和采样率转换等操作,深入理解数字信号处理的基本原理和技术。

二、实验原理数字信号处理(DSP)是一种利用计算机、数字电路或其他数字设备对信号进行各种处理的技术。

其主要内容包括采样、量化、滤波、变换分析、重建等。

其中,滤波器是数字信号处理中最重要的元件之一,它可以用来提取信号的特征,抑制噪声,增强信号的清晰度。

频域分析是指将时域信号转化为频域信号,从而更好地理解信号的频率特性。

采样率转换则是在不同采样率之间对信号进行转换,以满足不同应用的需求。

三、实验步骤1.信号采集:首先,我们使用实验室的信号采集设备对给定的信号进行采集。

采集的信号包括噪声信号、含有正弦波和方波的混合信号等。

2.数据量化:采集到的信号需要进行量化处理,即将连续的模拟信号转化为离散的数字信号。

这一步通常通过ADC(模数转换器)实现。

3.滤波处理:将量化后的数字信号输入到数字滤波器中。

我们使用不同的滤波器,如低通、高通、带通等,对信号进行滤波处理,以观察不同滤波器对信号的影响。

4.频域分析:将经过滤波处理的信号进行FFT(快速傅里叶变换)处理,将时域信号转化为频域信号,从而可以对其频率特性进行分析。

5.采样率转换:在进行上述处理后,我们还需要对信号进行采样率转换。

我们使用了不同的采样率对信号进行转换,并观察采样率对信号处理结果的影响。

四、实验结果及分析1.滤波处理:经过不同类型滤波器处理后,我们发现低通滤波器可以有效抑制噪声,高通滤波器可以突出高频信号的特征,带通滤波器则可以提取特定频率范围的信号。

这表明不同类型的滤波器在处理不同类型的信号时具有不同的效果。

2.频域分析:通过FFT处理,我们将时域信号转化为频域信号。

在频域分析中,我们可以更清楚地看到信号的频率特性。

例如,对于噪声信号,我们可以看到其频率分布较为均匀;对于含有正弦波和方波的混合信号,我们可以看到其包含了不同频率的分量。

北邮DSP数字信号处理硬件实验报告

北邮DSP数字信号处理硬件实验报告

一、常用指令实验一、实验目的熟悉DSP开发系统的连接,了解DSP开发系统的组成,结构和应用系统构成;熟悉常用C54X系列指令的用法。

二、实验设备计算机,CCS 3.3版软件,DSP仿真器,EXPIII+试验箱。

三、实验步骤与内容进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:观察实验现象实验结果:可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF 灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;四、名词解释及相关学习(1)、通用 I/O 引脚每一种C54x 芯片都有两个通用I/O 引脚,BIO 和XF。

BIO 是用来监测外部设备状态的输入引脚。

在对时间要求很严格的循环不能被外部中断所打断的时候,可以用BIO 脚来代替中断与外设相连。

根据BIO 输入的状态来执行一个转移。

XF 用于发信号给外部设备,通过软件进行控制。

(2)STM #1K,MMR [1.MMR=#1K 2.mmr(MMR) =#1K] 累加器的低端存放到存储器映射寄存器中(3)16 位直接寻址方式主要应用于程序的调用(CALL pmad)、跳转指令(GOTO pmad)和块重复指令((d)blockrepeat)中1)pmad 指的是16 位程序计数器PC 的内容,它代表的是程序存储空间的地址(program memoryaddress);2)CALL 指令和GOTO 指令包括无条件的CALL 和GOTO 与有条件的CALL 和GOTO。

(4)BANZ[D] pmad AR(ARP)不为0 时转移,可选择延迟。

(5)AR3 辅助寄存器3 ;AR4 辅助寄存器4五、实验代码及注释二、数据存储实验一、实验目的:掌握TMS320C54的程序空间的分配,掌握TMS320C54的数据空间的分配,熟悉其数据空间的指令二、实验设备计算机,CCS3.3,DSP仿真器,EXPIII+试验箱三、实验步骤与内容本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。

北京邮电大学数字信号处理实验二

北京邮电大学数字信号处理实验二

北京邮电⼤学数字信号处理实验⼆数字信号处理实验⼆XX 班 XX XX⼀.实验要求: (1) 假设信号 x(n) 由下述信号组成:这个信号有两根主谱线 0.3pi 和 0.302pi 靠的⾮常近,⽽另⼀根谱线0.45pi 的幅度很⼩,请选择合适的长度 N 和窗函数,⽤ DFT 分析其频谱,得到清楚的三根谱线。

(2) 已知: N=25。

这⾥ Q=0.9+j0.3。

可以推导出,⾸先根据这个式⼦计算 X(k) 的理论值,然后计算输⼊序列 x(n) 的 32 个值,再利⽤基 2 时间抽选的 FFT 算法,计算 x(n) 的 DFT X(k),与 X(k) 的理论值⽐较(要求计算结果最少 6 位有效数字)。

⼆.实验分析:(1)本实验可使⽤matlab 中⾃带的fft 函数求得x(n)的傅⾥叶变换,难点在于选择合适的N 值以及清楚的谱线。

a.对于N 值的选择,由于x (n )中包含的三个分量的周期分别为2*pi/0.45*pi=40/9,2*pi/0.3pi=20/3,2*pi/0.302pi=1000/151,x (n )的周期为1000,为得到清晰的谱线,选取N=1000,则Wk=2*pi*k/1000;所以三条谱线的k1=450,k2=300,k3=302;b.在使谱线清洗时,只需利⽤axis 选取合适的窗函数即可。

(2)本实验即为要求先利⽤25点DFT 的定义计算求得其25点DFT ,再利⽤基2-FFT 算法求得其DFT ,并且将两者进⾏⽐较。

三.实验内容的实现(1)A.代码:n=0:1:999; xn=0.001*cos(0.45*pi*n)+sin(0.3*pi*n)-cos(0.302*pi*n); yn=fft(xn,1000);%对xn 进⾏1000点DFTk1=0:1:499;wk=2*pi/1000*k1;y1=yn(1:1:500);%由于镜像对称只需看⼀半即可 subplot(3,1,1);stem(wk/pi,abs(y1));title('Samples of DTFT Magnitude');xlabel('frequency in pi units');axis([0,1,0,600]);subplot(3,1,2);stem(wk/pi,abs(y1));axis([0.25,0.35,0,600]);%观察300,302处的谱线subplot(3,1,3);stem(wk/pi,abs(y1));axis([0.4,0.5,0,1]);%观察450处谱线B.结果如图: 1()(N n X k x n -==∑00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--(2)A.代码:format longQ=0.9+0.3i;n=0:24;x=Q.^n;y1=(1-Q^25)./(1-Q.*exp(-j*2*pi*n/25)); %根据公式计算25点DFTx2=[x,0,0,0,0,0,0,0];y2=fft(x2);%使⽤基2FFT算法计算n2=0:1:31;for(m=1:25)y3(m)=y1(m)-y2(m);end;subplot(3,1,1);stem(n,abs(y1));axis([0,32,0,15]);title('N=25 DFT');xlabel('n');subplot(3,1,2);stem(n2,abs(y2));axis([0,32,0,15]);title('N=32 FFT');xlabel('n');subplot(3,1,3);stem(m,abs(y3));axis([0,25,0,15]);title('误差');xlabel('n');B.结果:a.误差序列:y3 =Columns 1 through 2-0.000000000000000 - 0.000000000000000i 5.817439454324326 -0.941040324114136iColumns 3 through 4-9.272989245757216 + 1.806567024126041i -1.055728571003527 + 0.006165567483396i Columns 5 through 60.109680274228142 + 0.312117411678918i -0.132227359831744 + 0.656545304970248i Columns 7 through 8-0.491115210532073 + 0.330164381661244i -0.302355254463930 - 0.104401629339881i Columns 9 through 100.071488794285995 - 0.066464473299359i 0.078075844225558 + 0.210934398903539i Columns 11 through 12-0.161974868948978 + 0.209654292048469i -0.176095334975308 - 0.034516239063079i Columns 13 through 140.060246199972530 - 0.092272809496693i 0.154494521140728 + 0.108487641370809i Columns 15 through 16-0.006434841285029 + 0.208660575204784i -0.095307033403866 + 0.059377350932753i Columns 17 through 180.068999600677699 - 0.043113757045075i 0.222166621724661 + 0.111157325552887i Columns 19 through 200.130789688425025 + 0.289360758130739i 0.001288211584027 + 0.236449*********i Columns 21 through 220.118110781165706 + 0.132488509392841i 0.344473749291525 + 0.292907236433923i Columns 23 through 240.363759326481941 + 0.632526704462872i 0.268854435642791 + 0.852006047941478i Column 250.501096763217777 + 1.111762593982078ib.DFT 基2-FFT 误差序列的频谱。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011级数字信号处理实验报告
实验名称:实验一数字信号的产生和基本运算
1.实验要求
因为现实世界里存在的是模拟信号,因此数字信号处理的第一个问题是将信号离散化,得到一个数字信号,然后再进行数字处理。

(1) 常用数字信号序列的产生:
熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。

请用Matlab 画出下列序列的波形(-10<n<10):
a) δ(n)
b) 单位阶跃序列2 u(n-5)
c) 矩形序列R(n)
d) y(n)=2sin(0.3πn)+ 0.5cos(0.6πn)
(2) 数字信号的基本运算:
a) 加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。

b) 请用您的计算机声卡采用一段您自己的声音x(n),长度为45秒,单声道,取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n) 按下式叠加为一个声音信号z(n):
z(n) = 0.7x(n) + 0.3y(n)
要求:
在同一个Figure 中,画出采集声音x(n)、背景音乐y(n)和混音z(n) 的时域波形;
提交实验报告时,请把声音文件转换为mp3 格式,图像转换为JPEG 格式,以节省存储空间。

通过本次实验,掌握Matlab 中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下基础。

2. 程序分析
第一部分:
1、δ(n)函数实现
% create impulse function
function[x,n]=impseq(n0,n1,n2)
%This function should be used to create a impseq array
%It return 1 at n0 ,and return 0 at other place
%You should set the arguments as: n1<n0<n2
if((n0<n1)|(n0>n2)|(n1>n2))
error('Arguments must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)==0];
2、阶跃函数u(n)的实现
%create u(n)
function [x,n]=stepseq(n0,n1,n2)
%This function should be used to create a u(n) array
%It return 1 when n>=n0 ,and return 0 at other place
%You should set the arguments as: n1<n0<n2
if((n0<n1)|(n0>n2)|(n1>n2))
error('Arguments must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)>=0];
3, 窗函数R(n)的实现
%create R(n)
function [y,n]=R(n1,left,right,n2)
%This function should be used to create a R(n) array
%It return 1 when left<=n<right ,and return 0 at other place %You should set the arguments as: n1<=left<=right<=n2 if(n1>left||left>right||right>n2)
error('Arguments must satisfy ns<=left<=right<=nf') end
n=[n1:n2];
y=[n>=left]-[n>=right];
4、程序主代码
<<clear
y1=impseq(0,-10,10);
y2=stepseq(5,-10,10)*2;
y3=R(-10,-5,5,10);
n=-10:1:10;temp=-10:0.1:10;
y4=2*sin(0.3*pi*n)+0.5*cos(0.6*pi*n);
y5=2*sin(0.3*pi*temp)+0.5*cos(0.6*pi*temp); subplot(2,2,1),stem(n,y1),title('δ(n)');。

相关文档
最新文档