北邮数字信号处理实验报告
北邮-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实验报告

数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号: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 实验二实验报告

实验二:数字信号的 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。
北邮数字信号处理Matlab仿真实验-实验报告

北京邮电大学数字信号处理<MatLab仿真试验>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx实验时间: xxx评定成绩:目录实验一:数字信号的FFT 分析 (2)1、实验内容及要求 (2)(1)离散信号的频谱分析 (2)(2)DTMF信号频谱分析 (2)2、实验目的 (2)3、分析设计 (2)(1)离散信号的频谱分析 (2)(2)DTMF信号频谱分析 (3)4、设计结果 (4)(1)离散信号的频谱分析 (4)(2)DTMF信号频谱分析 (4)实验二:DTMF 信号的编码 (5)1、实验内容及要求 (5)2、实验目的 (6)3、分析设计 (6)4、设计结果 (7)实验三:FIR 数字滤波器的设计和实现 (8)1、实验内容及要求: (8)2、实验目的 (8)3、分析设计 (8)4、设计结果 (13)实验一:数字信号的 FFT 分析1、实验内容及要求(1)离散信号的频谱分析设信号00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--此信号的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时间抽选法),体会快速算法的效率。
北邮信号与信息处理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、计算机一台,安装有 MATLAB 软件。
2、数据采集卡。
三、实验原理1、数字信号的表示与采样数字信号是在时间和幅度上都离散的信号,可以用数字序列来表示。
在采样过程中,根据奈奎斯特采样定理,为了能够准确地恢复原始信号,采样频率必须大于信号最高频率的两倍。
2、离散傅里叶变换(DFT)DFT 是将时域离散信号变换到频域的一种方法。
通过 DFT,可以得到信号的频谱特性,从而分析信号的频率成分。
3、数字滤波器数字滤波器是对数字信号进行滤波处理的系统,分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。
FIR 滤波器具有线性相位特性,而 IIR 滤波器则在性能和实现复杂度上有一定的优势。
四、实验内容与步骤1、信号的采集与生成使用数据采集卡采集一段音频信号,或者在 MATLAB 中生成一个模拟信号,如正弦波、方波等。
2、信号的采样与重构对采集或生成的信号进行采样,然后通过插值算法重构原始信号,观察采样频率对重构信号质量的影响。
3、离散傅里叶变换对采样后的信号进行DFT 变换,得到其频谱,并分析频谱的特点。
4、数字滤波器的设计与实现(1)设计一个低通 FIR 滤波器,截止频率为给定值,观察滤波前后信号的频谱变化。
(2)设计一个高通 IIR 滤波器,截止频率为给定值,比较滤波前后信号的时域和频域特性。
五、实验结果与分析1、信号的采集与生成成功采集到一段音频信号,并在MATLAB 中生成了各种模拟信号,如正弦波、方波等。
通过观察这些信号的时域波形,对不同类型信号的特点有了直观的认识。
2、信号的采样与重构当采样频率足够高时,重构的信号能够较好地恢复原始信号的形状;当采样频率低于奈奎斯特频率时,重构信号出现了失真和混叠现象。
北邮现代通信技术实验报告

北邮现代通信技术实验报告实验名称:现代通信技术实验实验目的:1. 理解现代通信技术的基本理论和原理。
2. 掌握数字通信系统的基本组成和工作流程。
3. 熟悉通信系统中信号的调制与解调过程。
4. 学会使用通信系统实验设备,进行实验操作和数据分析。
实验原理:现代通信技术主要依赖于数字信号处理技术,通过数字信号的调制与解调实现信息的传输。
在本实验中,我们将学习数字通信系统中的信号调制方法,如幅度键控(ASK)、频率键控(FSK)和相位键控(PSK),以及相应的解调技术。
实验设备与材料:1. 计算机一台,安装有通信仿真软件。
2. 通信原理实验箱一套,包括调制解调模块、信号源模块等。
3. 通信信号发生器。
4. 示波器。
实验步骤:1. 打开通信仿真软件,设置实验参数,如信号频率、调制方式等。
2. 使用通信信号发生器产生模拟信号,输入到通信原理实验箱的信号源模块。
3. 通过实验箱的调制模块对信号进行调制,观察示波器上信号的变化。
4. 将调制后的信号传输至解调模块,观察解调后的信号波形。
5. 记录实验数据,包括调制前后的信号波形、频谱特性等。
实验结果:通过实验,我们得到了以下结果:1. 调制信号与原始信号的波形对比,展示了调制过程中信号的变化。
2. 解调后的信号与原始信号的对比,验证了调制解调技术的准确性。
3. 通过频谱分析,观察到调制信号的频谱特性,理解了调制对信号频谱的影响。
实验分析:在实验过程中,我们发现不同调制方式对信号的影响各有不同。
例如,ASK调制主要改变信号的幅度,而FSK和PSK调制则分别改变信号的频率和相位。
通过解调过程,我们能够从调制信号中恢复出原始信号,验证了通信系统的有效性。
实验结论:通过本次实验,我们深入理解了现代通信技术中的数字信号调制与解调过程。
实验结果表明,通过合理的调制解调技术,可以有效实现信息的传输和恢复。
同时,实验也加深了我们对通信系统基本原理的认识,为进一步学习通信技术打下了坚实的基础。
数字信号处理实验报告完整版[5篇模版]
![数字信号处理实验报告完整版[5篇模版]](https://img.taocdn.com/s3/m/7b21a71bb5daa58da0116c175f0e7cd184251866.png)
数字信号处理实验报告完整版[5篇模版]第一篇:数字信号处理实验报告完整版实验 1利用 T DFT 分析信号频谱一、实验目的1.加深对 DFT 原理的理解。
2.应用 DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境三、实验基础理论T 1.DFT 与与 T DTFT 的关系有限长序列的离散时间傅里叶变换在频率区间的N 个等间隔分布的点上的 N 个取样值可以由下式表示:212 /0()|()()0 1Nj knjNk NkX e x n e X k k Nπωωπ--====≤≤-∑由上式可知,序列的 N 点 DFT ,实际上就是序列的 DTFT 在 N 个等间隔频率点上样本。
2.利用 T DFT 求求 DTFT方法 1 1:由恢复出的方法如下:由图 2.1 所示流程可知:101()()()Nj j n kn j nNn n kX e x n e X k W eNωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑由上式可以得到:IDFT DTFT第二篇:数字信号处理实验报告JIANGSUUNIVERSITY OF TECHNOLOGY数字信号处理实验报告学院名称:电气信息工程学院专业:班级:姓名:学号:指导老师:张维玺(教授)2013年12月20日实验一离散时间信号的产生一、实验目的数字信号处理系统中的信号都是以离散时间形态存在的,所以对离散时间信号的研究是数字信号的基本所在。
而要研究离散时间信号,首先需要产生出各种离散时间信号。
使用MATLAB软件可以很方便地产生各种常见的离散时间信号,而且它还具有强大绘图功能,便于用户直观地处理输出结果。
通过本实验,学生将学习如何用MATLAB产生一些常见的离散时间信号,实现信号的卷积运算,并通过MATLAB中的绘图工具对产生的信号进行观察,加深对常用离散信号和信号卷积和运算的理解。
用MATLAB实现线性卷积运算北邮

信息及通信工程学院数字信号处理实验报告实验题目:用MATLAB实现线性卷积运算班级:2019211113姓名:学号:日期:2019年5月索引一、实验原理 (1)1、算法产生背景 (1)2、算法基本思想 (1)1)重叠相加法 (1)2)重叠保留法 (2)二、流程图设计 (3)1、重叠相加法 (3)2、重叠保留法 (3)三、MATLAB源代码 (3)1、重叠相加源码 (3)2、重叠保留源码 (4)四、实验结果与分析 (5)①调用CONV()计算 (5)②测试重叠相加算法 (5)③测试重叠保留算法 (5)五、讨论与总结 (6)1、算法效率分析: (6)A.重叠相加法 (6)B.重叠保留法 (7)C.调用conv() (8)D.综合对比分析 (8)2、故障和问题分析 (9)①分段问题 (9)②运算完整性问题 (9)③算法硬件实现 (10)一、实验原理1、算法产生背景DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的。
DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。
因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。
2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现原理如图2所示,建立缓存序列,每次输入N点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。
北邮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. 实验操作:学生按照实验指导书的步骤进行实验操作,包括采样与重构、量化与编码、滤波器设计与实现等。
北邮DSP第三次实验

北京邮电大学信号与信息处理综合实验报告(DSP部分)实验二报告学院:信息与通信工程学院班级:姓名:学号:联系方式:题目三 FIR滤波器实现一实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FIR滤波的过程。
二程序功能本程序的基本要求是:对所给工程进行优化,提高运行速度,输出结果。
三具体技术1.建立工程2.建立目标系统的配置3.程序运行和调试4.单步运行5.显示中间运行结果6.功能扩展除了基本功能,鼓励进行以下扩展或改进:有创意的设计采用改进程序性能的其他方法(如执行效率、内存占用量、灵活性、可移植性等)功能扩展如改变滤波器的系数、改变信源数据等;如自定义不同带宽的滤波器系数等;使用音频输入输出端口进行测试本次的实验我们的组的扩展功能为设计一个高通滤波器。
四程序基本信息void DSK6416_init()设置所有的CPLD寄存器到上电状态,初始化内部BSL数据结构,在使用任何BSL函数之前都必须调用。
DSK6416_AIC23_openCodec函数DSK6416_AIC23_CodecHandle DSK6416_AIC23_openCodec (int id,DSK6416_AIC23_Config *Config)id:指定使用哪个编码器,DSK6416上为id=0Config:指向包含编码器寄存器值的结构,该函数将以该结构中的值初始化寄存器。
调用成功:返回编码器句柄;失败:返回INV常数(-1)。
当McBSP在使用中,才会出现失败。
DSK6416_AIC23_write函数Int16 DSK6416_AIC23_write(DSK6416_AIC23_CodecHandle hCodec, Int32 val) hCodec, Val:编码器句柄,写入编码器的值返回TRUE:数据成功写入返回FALSE:数据端口忙DSK6416_AIC23_closeCodec 函数:关闭编码器DSK6416_AIC23_closeCodec(DSK6416_AIC23_CodecHandle hCodec)添加所需文件(1)头文件:csl 和dsk6416文件夹中的include(2) 添加所需库文件:csl6416.lib, dsk6416bsl.lib五 FIR 滤波器实现设计FIR 滤波器,在原工程的基础上添加滤波功能,新工程命名为tone_fir 。
北邮信息工程信号与信息处理综合实验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。
北邮现代通信技术实验报告

北邮现代通信技术实验报告1. 引言通信技术是现代社会中不可或缺的一部分,它不仅仅改变了我们的生活方式,还推动了科技的发展。
本文将介绍北邮现代通信技术实验的设计和实施过程。
2. 实验目标本实验的主要目标是让学生了解现代通信技术的基本原理和应用。
通过实践操作,学生将能够掌握以下内容:•了解通信系统的基本组成部分•掌握数字信号的调制和解调方法•学会使用软件模拟通信系统•了解信道编码和纠错技术3. 实验步骤步骤1:实验准备在实验开始之前,我们需要准备以下设备和软件:•一台个人计算机•MATLAB或其他模拟通信系统的软件步骤2:信号调制在这一步骤中,我们将学习数字信号的调制方法。
调制是将数字信号转换为模拟信号的过程,常见的调制方法包括调幅(AM)和调频(FM)。
我们将使用MATLAB软件进行信号调制的模拟。
步骤3:信号解调在这一步骤中,我们将学习如何从模拟信号中恢复出数字信号。
解调是调制的逆过程,常见的解调方法包括包络检测和相干解调。
我们将使用MATLAB软件进行信号解调的模拟。
步骤4:信道编码和纠错在实际通信中,信号会受到噪声的干扰,容易出现误码。
为了提高通信系统的可靠性,我们需要使用编码和纠错技术。
在这一步骤中,我们将学习如何对数字信号进行编码和纠错处理。
步骤5:实验总结实验结束后,我们将对实验结果进行总结和分析。
通过实验,我们可以对现代通信技术的原理和应用有更深入的了解,并加深对通信系统的认识。
4. 实验结果与分析在本实验中,我们成功地完成了信号调制、解调以及信道编码和纠错的实验。
通过对实验结果的分析,我们发现信道编码和纠错技术对于提高通信系统的可靠性和性能非常重要。
5. 结论通过本次实验,我们深入了解了现代通信技术的基本原理和应用。
通过实践操作,我们掌握了数字信号的调制和解调方法,并学会了使用软件模拟通信系统。
同时,我们也了解了信道编码和纠错技术的重要性。
6. 参考文献[1] 通信原理与系统仿真实验教程 [2] 现代通信技术导论以上是北邮现代通信技术实验报告的详细内容。
数字信号处理实训报告(3篇)

第1篇一、实训目的数字信号处理(Digital Signal Processing,DSP)是电子工程、通信工程等领域的重要基础学科。
本次实训旨在通过实际操作,使学生掌握数字信号处理的基本原理、常用算法和实现方法,提高学生在数字信号处理领域的实践能力和创新能力。
二、实训内容1. 数字信号处理基本概念(1)信号分类:模拟信号、数字信号(2)信号处理方法:模拟信号处理、数字信号处理(3)数字信号处理的特点:精度高、抗干扰能力强、易于存储和传输2. 数字信号处理基本算法(1)离散傅里叶变换(DFT)(2)快速傅里叶变换(FFT)(3)离散余弦变换(DCT)(4)小波变换3. 数字信号处理实现方法(1)MATLAB仿真(2)FPGA实现(3)C/C++编程实现4. 实训项目(1)信号采集与预处理(2)信号分析(3)信号处理(4)信号重构三、实训过程1. 信号采集与预处理(1)使用示波器采集信号(2)对采集到的信号进行滤波、去噪等预处理操作2. 信号分析(1)使用MATLAB进行信号频谱分析(2)分析信号的频率、幅度、相位等特性3. 信号处理(1)实现DFT、FFT、DCT等算法(2)对信号进行滤波、压缩、增强等处理4. 信号重构(1)使用MATLAB或C/C++编程实现信号重构(2)验证信号重构的正确性四、实训结果与分析1. 信号采集与预处理通过示波器采集到的信号,经过滤波、去噪等预处理操作后,信号质量得到了明显提高。
2. 信号分析通过MATLAB进行信号频谱分析,得到了信号的频率、幅度、相位等特性,为后续信号处理提供了重要依据。
3. 信号处理(1)DFT、FFT、DCT等算法的实现通过MATLAB编程,实现了DFT、FFT、DCT等算法,对信号进行了滤波、压缩、增强等处理。
(2)信号处理效果分析经过信号处理后,信号的频率、幅度、相位等特性得到了改善,信号质量得到了提升。
4. 信号重构通过MATLAB或C/C++编程实现信号重构,验证了信号重构的正确性。
北邮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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)');
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、各个函数求和
>>clear
y1=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的使用方法,以及函数的建立和绘图。
在声音采集时,学习了声音采集软件的实用,开阔了知识面。
同时学会了调试背景音乐和录音的相对大小,得到了更好的效果。
软件的学习,在于不断地实践,今后会更加全面的学习这款软件。