dsp实验5
- 格式:doc
- 大小:91.00 KB
- 文档页数:7
《DSP原理及应用》课程实验报告学生姓名:所在班级:电信1001指导教师:记分及评价:项目满分5分得分一、实验名称实验5:FFT快速傅立叶计算二、任务及要求【基本部分】3分把教材7-13FFT快速傅立叶计算的程序补充完整,进行仿真实验。
【发挥部分】2分把exam5-1中的sian1或sian2数据调用进来进行快速傅立叶计算。
三、实验程序(原理图)#include "fcomplex.h"void fft(complex *X, unsigned int M, complex *W, unsigned int SCALE){complex temp; /* 复变量临时存储器 */complex U; /* 旋转因子W^k */unsigned int i,j;unsigned int id; /* 蝶形运算中下位节点的序号 */unsigned int N=1<<M; /* FFT 的点数*/unsigned int L; /* FFT 的级序号 */unsigned int LE; /* L级子FFT的点数 */unsigned int LE1; /* L级子FFT蝶形运算的个数 */float scale;scale = 0.5;for (L=1; L<=M; L++){LE=1<<L;LE1=LE>>1;U.re = 1.0;U.im = 0.;for (j=0; j<LE1;j++){for(i=j; i<N; i+=LE) /* 进行蝶形计算 */{id=i+LE1;temp.re = (X[id].re* U.re - X[id].im* U.im)*scale; temp.im = (X[id].im* U.re + X[id].re* U.im)*scale;X[id].re = X[i].re*scale - temp.re;X[id].im = X[i].im*scale - temp.im;X[i].re = X[i].re*scale + temp.re;X[i].im = X[i].im*scale + temp.im;}/* 递推计算W^k */temp.re = U.re* W[L-1].re - U.im* W[L-1].im;U.im = U.re* W[L-1].im + U.im* W[L-1].re;U.re = temp.re;}}}/*fft_test.c - Example to test FFT*/#include <math.h>#include "fcomplex.h"extern void bit_rev(complex *, unsigned int); /*位反转函数声明*/ extern void fft(complex *, unsigned int, complex *, unsigned int); extern void generator(float *, unsigned int);/* fft函数声明 */#define N 128 /* FFT的数据个数 */#define M 7 /* M=log2(N) */#define PI 3.1415926complex X[N]; /* 说明输入信号数组,为复数 */complex W[M]; /* 说明旋转因子数组e^(-j2PI/N),为复数 */ complex temp; /* 说明临时复数变量 */float xin[N];float spectrum[N]; /* 说明功率谱信号数组,为实数 */float re1[N],im1[N]; /* 说明临时变量数组,为实数 */void main(){unsigned int i,L,LE,LE1;/* ------------------------------------------------------------- */ /* 产生旋转因子表 */for (L=1; L<=M; L++){LE=1<<L; /* 子FFT中的点数LE=2^L */LE1=LE>>1; /* 子FFT中的蝶形运算数目*/W[L-1].re = cos(PI/LE1);W[L-1].im = -sin(PI/LE1);}/* ------------------------------------------------------------- */ generator(xin,N);for (;;){/* --------------------------------------------------------- */for (i=0; i<N; i++){/* 构造输入信号样本 */X[i].re =xin[i];X[i].im = 0;/* 复制到参考缓冲器 */re1[i] = X[i].re;im1[i] = X[i].im;}/* 启动 FFT */bit_rev(X,M); /* 以倒位次序排列X[] */fft(X,M,W,1); /* 执行 FFT *//* 计算功率谱,验证FFT结果 */for (i=0; i<N; i++){temp.re = X[i].re*X[i].re;temp.im = X[i].im*X[i].im;spectrum[i] = (temp.re + temp.im)*4;}}}四、仿真及结果分析五、硬件验证无六、小结这次的实验使我理解FFT快速傅立叶计算,同时对傅里叶计算以及CCS应用有更加深的理解,在设计FFT快速傅立叶计算的初期我有很多问题都不太清楚,通过老师和同学的指导,最终使我明白了如何实现FFT快速傅立叶计算。
苏州职业大学实训报告科目:DSP应用技术实训项目:拨码开关控制实验一、实验目的:1.了解ICETEK–F2812-A 评估板在TMS320F2812DSP 外部扩展存储空间上的扩展。
2.了解ICETEK–F2812-A 评估板上拨码开关扩展原理。
3.熟悉在C 语言中使用扩展的控制寄存器的方法。
二、实验设备:计算机,ICETEK-F2812-A 实验箱(或ICETEK 仿真器+ICETEK–F2812-A 系统板+相关连线及电源)。
三、实验原理:1.TMS320F2812DSP 的存储器扩展接口存储器扩展接口是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
-ICETEK–F2812-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。
具体扩展地址如下:C0002-C0003h: D/A 转换控制寄存器C0001h:板上 DIP 开关控制寄存器C0000h:板上指示灯控制寄存器-与ICETEK–F2812-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备:108000-108004h:读-键盘扫描值,写-液晶控制寄存器108002-108002h:液晶辅助控制寄存器108003-108004h:液晶显示数据寄存器2.拨码开关扩展原理图 5.1指示灯扩展原理3.实验程序流程图四、实验步骤:1.实验准备关闭实验箱上扩展模块和信号源电源开关。
2.设置Code Composer Studio 3.3 在硬件仿真(Emulator)方式下运行3.启动Code Composer Studio 3.3选择菜单Debug→Reset CPU。
4.打开工程文件工程文件为:C:\ICETEK\F2812\DSP281x_examples\Lab0301-LED\LED.pjt打开源程序LED.c 阅读程序,理解程序内容。
北京邮电大学电子工程学院电子实验中心<数字信号处理实验>实验报告班级: 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点亮→延时。
姓名:班级:自动化15 学号:2015实验一数据存储实验一实验目的1。
掌握TMS320F2812程序空间的分配;2。
掌握TMS320F2812数据空间的分配;3。
能够熟练运用TMS320F2812数据空间的指令。
二实验步骤与内容实验步骤1.在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:2.F2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;其余OFF3.E300底板的开关SW4的第2位置ON,其余位置OFF.其余开关设置为OFF.4.上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的指示灯应点亮,否则DSP开发系统与计算机连接存在问题。
5.运行CCS程序1)待计算机启动成功后,实验箱220V电源置“ON",实验箱上电2)启动CCS5.5,工作环境的路径选择:E:\E300Program\E300TechV-2812\normal ;6.成功运行CCS5.5程序后,出现如下图所示界面:7.右键点击Project Explorer窗口下的工程文件“e300_01_mem”,选择“Open Project"命令打开该工程,如下图所示,可以双击才看左侧源文件;8.点击菜单栏Project/Build All命令编译整个工程,编译完成后点击按钮进入仿真模式,完全进入后如下图所示:9.用“View"下拉菜单中的“Memory/Browser”查看内存单元,参数设置如下图:注意:下面的参数设置都是以16进制。
此时可以观测到以0x003F9020为起始地址的存储单元内的数据;10.单击按钮,开始运行程序,一段时间后,单击按钮,停止程序运行,0x003F9020H~ 0x3F902FH单元的数据的变化,如下图所示:11.关闭Memory Browser窗口,点击按钮,退出仿真模式。
dsp⼩实验总结电⽓信息⼯程学院D S P技术与综合训练实验报告班级 09通信1W姓名陈学虎学号 09313112指导⽼师倪福银刘舒淇2012年9⽉27⽇⽬录实验1 :发光⼆极管阵列显⽰实验 (2)⼀.实验⽬的 (2)⼆.实验设备 (3)三.实验原理 (3)四.实验步骤 (4)五.实验结果 (7)实验2 :液晶显⽰器控制显⽰ (7)⼀.实验⽬的 (7)⼆.实验设备 (7)三.实验原理 (7)四.实验步骤 (9)五.实验结果与分析 (18)实验3 :⾳频信号发⽣实验 (19)⼀.实验⽬的 (19)⼆.实验设备 (19)三.实验原理 (19)四.实验步骤 (20)五.实验结果 (23)实验4:有限冲激响应滤波器(FIR)和(IIR)算法实验 (23)⼀.实验⽬的 (24)⼆.实验设备 (24)三.实验原理 (24)四.实验步骤 (26)五,实验结果 (31)FIR实验结果如下: (31)IIR实验结果如下: (31)实验1 :发光⼆极管阵列显⽰实验⼀.实验⽬的通过实验学习使⽤5509A DSP的扩展端⼝控制外围设备的⽅法,了解发光⼆极管阵列的控制编程⽅法。
⼆.实验设备计算机,ICETEK-VC5509-A实验箱(或ICETEK仿真器+ICETEK-VC5509-A系统板+相关连线及电源)。
三.实验原理1.EMIF接⼝:TMS320C5509DSP的扩展存储器接⼝(EMIF)⽤来与⼤多数外围设备进⾏连接,典型应⽤如连接⽚外扩展存储器等。
这⼀接⼝提供地址连线、数据连线和⼀组控制线。
ICETEK-VC5509-A将这些扩展线引到了板上的扩展插座上供扩展使⽤。
2.LED指⽰灯控制⽅法根据封装原理图可以看出:当芯⽚上的IO⼝置于0时,LED灯才会亮。
已知LED指⽰灯的控制寄存器CTRLED由DSP的扩展地址0x600802给出,这是⼀个只写的16位寄存器,低8位有效,它的0到7位分别控制指⽰灯LED1到LED8,每⼀个对应位置0就表⽰点亮该指⽰灯,置1表⽰熄灭该指⽰灯。
dsp实验心得体会范文3篇_dsp实习心得体会a;digital signal processor简称DSP,中文意思是数字信号处理,DSP就是用数值计算的方式对信号进行加工的理论和技术,现结合自身,谈谈一些心得体会。
本文是dsp实验的心得体会范文,仅供参考。
dsp实验心得体会范文篇一1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以不设置硬件,但是要为日后的实验做准备,还是要学习和熟悉硬件设置的过程。
2. 在设置硬件时,不是按实验书上的型号选择,而是应该按照实验设备上的型号去添加。
3. 不管是硬件还是软件的设置,都应该将之前设置好的删去,重新添加。
设置好的配置中只能有一项。
4. CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但是一般无法构造DSP中的外设,所以软件仿真通常用于调试纯软件算法和进行效率分析等。
5. 这次实验采用软件仿真,不需要打开电源箱的电源。
6. 在软件仿真工作时,无需连接板卡和仿真器等硬件。
7. 执行write_buffer一行时。
如果按F10执行程序,则程序在mian主函数中运行,如果按F11,则程序进入write_buffe函数内部的程序运行。
8. 把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,就可以看到结构体变量中的每个元素了。
9. 在实验时,显示图形出现问题,不能显示,后来在Graph Title 把Input的大写改为input,在对volume进行编译执行后,就可以看到显示的正弦波图形了。
10. 在修改了实验2-1的程序后,要重新编译、连接执行程序,并且必须对.OUT文件进行重新加载,因为此时.OUT文件已经改变了。
如果不重新加载,那么修改执行程序后,其结果将不会改变。
11. 再观察结果时,可将data和data1的窗口同时打开,这样可以便于比较,观察结果。
实验一数字IO应用实验—、实验目的1. 了解DSP开发系统的组成和结构2. 在实验设备上完成I/O硬件连接,编写I/O实验程序并运行验证。
3. 内存观察工具的使用二、实验设备计算机,CCS3.1版本软件,DSP仿真器,教学实验箱三、实验原理2.键值读取程序:该部分有两种方法进行键值的判断。
方法1:利用内存观察工具进行观察方法2:利用LED1-LED8的亮灭对应显示键值。
a)外部中断1的应用参照实验五;b)内存观察键值:程序中定义了三个变量“W”“row”和“col”。
“W”代表是CPLD中键盘的扫描数值,“row”和“col”分别代表键盘的行和列,由行和列可以判定按键的位置。
上述三个变量可以在观察窗口中观察的。
c)利用LED灯显示键值原理,参看实验一。
具体的LED灯显示值以查表的形式读出,请参看“”库文件。
本实验的CPLD地址译码说明:基地址:0x0000,当底板片选CS0为低时,分配有效。
CPU的IO空间:基地址+0x0200 LED灯output 8位外部中断用XINT1:由CPLD分配,中断信号由键盘按键产生。
中断下降沿触发。
KEY_DAT_REG(R):基地址+0x0004;四、实验步骤和内容1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;2.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW置OFF“DEBUG→Connect”)4.打开系统项目文件 \e300.test\ normal \05_key interface \;“\Debug\”文件“Debug\Go Main”跳到主程序的开始;7.指定位置设置断点;8.View--〉Watch Window打开变量观察窗口;9. 将变量“w”“row”和“col”添加到观察窗口中,改变变量观察窗口的显示方式为HEX显示。
“Debug--〉Animate”全速运行,然后点击E300板上键盘按键,观察窗口中变量变化,同时LED1-LED8灯也相应变化,指示键值。
电子科技大学电子工程学院标准实验报告(实验)课程名称DSP技术实验题目图像阈值化1.实验目的1)进一步掌握AZURE-BF609开发平台的使用;2)进一步掌握CCES调试方法;3)了解BF609 DSP在图像、视频处理领域的应用;4)了解图像直方图计算、阈值化方法及意义;5)掌握利用PVP进行图像阈值化的方法。
2.实验内容1)加载原始图片,并在液晶屏幕上显示;2)生成16阶灰值直方图,并在液晶屏幕上显示;3)手工设置二值化阈值,生成阈值化图片,并在液晶屏幕上显示(三组数据);4)设计自适应阈值计算程序,生成阈值化图片,并在液晶屏幕上显示;5)将各步骤生成结果图片以PGM格式保存到磁盘文件中。
3.实验环境1)预装开发环境Cross Core Embedded Studio 1.0.2的计算机;2)BF609开发板一套;AZURE-BF609开发板上带有一片BF609 DSP和一个4.3寸480*272点阵24bit的真彩液晶屏,本实验主要利用BF609的PVP模块进行图像阈值化的处理,并在液晶屏上显示处理前后的结果。
3)ADDS HPUSB-ICE仿真器一套。
4.实验原理1)图像二值化图像二值化是图像处理的基本技术,也是图像处理中一个非常活跃的分支,其应用领域非常广泛,特别是在图像信息压缩、边缘提取和形状分析等方面起着重要作用,成为其处理过程中的一个基本手段。
二值化的目的是将上步的图像增强结果转换成二值图像,从而能得到清晰的边缘轮廓线,更好地为边缘提取、图像分割、目标识别等后续处理服务。
选取合适的分割阈值可以说是图像二值化的重要步骤,过高的阈值会导致一些真实边缘的丢失,过低的阈值又会产生一些无谓的虚假边缘。
在一些简单的图像中,物体的灰度分布比较有规律,背景与各个目标在图像的直方图各自形成一个波峰,即区域与波峰一一对应,每两个波峰之间形成一个波谷。
那么,选择双峰之间的波谷所代表的灰度值T作为阈值,即可实现两个区域的分割。
MATLAB DSP实验报告介绍本实验报告将详细介绍在MATLAB环境下进行数字信号处理(DSP)的实验步骤和相关方法。
我们将通过逐步思考的方式,帮助读者理解和学习DSP的基本概念和技术。
实验环境和工具在进行DSP实验之前,我们需要准备以下环境和工具:1.MATLAB软件:确保已安装并配置好MATLAB软件,可以在MATLAB Command窗口中输入命令。
2.信号处理工具包:在MATLAB中,我们可以使用信号处理工具箱(Signal Processing Toolbox)来进行DSP实验和分析。
确保该工具箱已被安装并加载。
实验步骤下面是进行DSP实验的一般步骤:步骤一:加载信号首先,我们需要加载待处理的信号。
这可以通过在MATLAB中使用load命令加载一个音频文件或生成一个模拟信号实现。
例如,我们可以加载一个名为signal.wav的音频文件:load signal.wav步骤二:信号预处理在进行DSP之前,通常需要对信号进行预处理。
这可能包括去噪、滤波、均衡等操作。
例如,我们可以使用滤波器对信号进行降噪:filtered_signal = filter(filter_coefficients, signal);步骤三:信号分析一旦信号经过预处理,我们可以开始进行信号分析。
这可能涉及频域分析、时域分析、谱分析等。
例如,我们可以通过计算信号的快速傅里叶变换(FFT)获得其频谱:spectrum = fft(filtered_signal);步骤四:特征提取在信号分析之后,我们可以根据需要提取信号的特征。
这些特征可能包括幅度、频率、相位等。
例如,我们可以计算信号的能量:energy = sum(abs(filtered_signal).^2);步骤五:信号重构在完成信号分析和特征提取后,我们可以根据需要对信号进行重构。
这可能包括滤波、修复损坏的信号等。
例如,我们可以使用滤波器对信号进行重构:reconstructed_signal = filter(filter_coefficients, filtered_signal);步骤六:结果评估最后,我们需要评估重构后的信号和原始信号之间的差异。
我不应把我的作品全归功于自己的智慧,还应归功于我以外向我提供素材的成千成万的事情和人物!——采于网,整于己,用于民2021年5月12日dsp实验报告总结篇一:dsp课程设计实验报告总结DSP课程设计总结(XX-XX学年第2学期)题目:专业班级:电子1103 学生姓名:万蒙学号:指导教师:设计成绩:XX 年6 月目录一设计目的----------------------------------------------------------------------3 二系统分析----------------------------------------------------------------------3 三硬件设计3.1 硬件总体结构-----------------------------------------------------------3 3.2 DSP模块设计-----------------------------------------------------------4 3.3 电源模块设计----------------------------------------------------------4 3.4 时钟模块设计----------------------------------------------------------5 3.5 存储器模块设计--------------------------------------------------------6 3.6 复位模块设计----------------------------------------------------------6 3.7 JTAG模块设计--------------------------------------------------------7 四软件设计4.1 软件总体流程-----------------------------------------------------74.2 核心模块及实现代码---------------------------------------8五课程设计总结-----------------------------------------------------14一、设计目的设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。
思考题---对照参考程序,编写实现39阶低通、高通、带通、带阻FIR数字滤波器的DSP 程序,并仿真。
提示:滤波器系数一般通过MA TLAB仿真得到答:39阶低通:.title "fir.asm".mmregs.def start.bss y,1 ;保存滤波结果.bss indata,1 ;输入信号缓冲区(变量).bss outdata,1 ;输出信号缓冲区(变量)xn .usect "xn",40 ;xnh .usect "h",40 ;h;PA0.set 0002H ;D/A端口地址;PA1.set 0008H ;A/D端口地址.datatable:.word -7 , -22 , -44 , -74 , -114 , -157 , -191 , -202.word -169 , -75 , 96 , 351 , 689 , 1097 , 1551 , 2017.word 2457 , 2831 , 3103 , 3247 , 3247 , 3103 , 2831 , 2457.word 2017 , 1551 , 1097 , 689 , 351 , 96 , -75 , -169.word -202 , -191 , -157 , -114 , -74 , -44 , -22 , -7.textstart:SSBX FRCT ;小数乘法STM #xn,AR1RPT #39ST #0,*AR1+ ;把x(n)-x(n-79)赋始值0STM #h,AR1RPT #39MVPD #table,*AR1+ ;把参数表复制到数据存储区STM #xn+39,AR3 ;AR3-->x(n-79)STM #h+39,AR4 ;AR4-->h(n-79)STM #40,BK ;循环缓冲区大小80STM #-1,AR0 ;指针调整值-1LD #xn,DP ;DP指向xn所在页; PORTR PA1,@xn ;输入数据LD #y,DP ;DP指向y所在页FIR:NOPMVKD indata,*AR3+0% ;在这一行设置探针与断点用于从indata.dat文件中读输入数据RPTZ A,#39MAC *AR3+0%,*AR4+0%,ASTH A,@outdata ;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中NOP; STH A,@y ;保存计算结果; PORTW@y,PA0 ;硬件仿真时写D/AB FIR ;跳转; B FIR ;延迟跳转; PORTR PA1,*AR3+0% ;硬件仿真时读A/D,新数据覆盖最老的数据.end低通滤波后的结果:39阶高通:.title "fir_1.asm".mmregs.def start.bss y,1 ;保存滤波结果.bss indata,1 ;输入信号缓冲区(变量).bss outdata,1 ;输出信号缓冲区(变量)xn .usect "xn",40 ;xnh .usect "h",40 ;h;PA0.set 0002H ;D/A端口地址;PA1.set 0008H ;A/D端口地址.datatable:.word 0 , 38 , 57 , 25 , -64 , -149 , -118 , 82.word 329 , 359 , 0 , -574 , -846 , -345 , 829 , 1806.word 1399 , -1021 , -4851 , -8396 , 22952 , -8396 , -4851 , -1021.word 1399 , 1806 , 829 , -345 , -846 , -574 , 0 , 359.word 329 , 82 , -118 , -149 , -64 , 25 , 57 , 38.word 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.textstart:SSBX FRCT ;小数乘法STM #xn,AR1RPT #39ST #0,*AR1+ ;把x(n)-x(n-79)赋始值0STM #h,AR1RPT #39MVPD #table,*AR1+ ;把参数表复制到数据存储区STM #xn+39,AR3 ;AR3-->x(n-79)STM #h+39,AR4 ;AR4-->h(n-79)STM #40,BK ;循环缓冲区大小80STM #-1,AR0 ;指针调整值-1LD #xn,DP ;DP指向xn所在页; PORTR PA1,@xn ;输入数据LD #y,DP ;DP指向y所在页FIR:NOPMVKD indata,*AR3+0% ;在这一行设置探针与断点用于从indata.dat文件中读输入数据RPTZ A,#39MAC *AR3+0%,*AR4+0%,ASTH A,@outdata ;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中NOP; STH A,@y ;保存计算结果; PORTW@y,PA0 ;硬件仿真时写D/AB FIR ;跳转; B FIR ;延迟跳转; PORTR PA1,*AR3+0% ;硬件仿真时读A/D,新数据覆盖最老的数据.end高通运行后的波形:带通:.title "fir_1.asm".mmregs.def start.bss y,1 ;保存滤波结果.bss indata,1 ;输入信号缓冲区(变量).bss outdata,1 ;输出信号缓冲区(变量)xn .usect "xn",40 ;xnh .usect "h",40 ;h;PA0.set 0002H ;D/A端口地址;PA1.set 0008H ;A/D端口地址.datatable:.word -13 , -26 , 0 , 88 , 217 , 298 , 225 , 0.word -199 , -143 , 182 , 412 , 0 , -1289 , -2949 , -3835.word -2888 , 0 , 3647 , 6173 , 6173 , 3647 , 0 , -2888.word -3835 , -2949 , -1289 , 0 , 412 , 182 , -143 , -199.word 0 , 225 , 298 , 217 , 88 , 0 , -26 , -13.textstart:SSBX FRCT ;小数乘法STM #xn,AR1RPT #39ST #0,*AR1+ ;把x(n)-x(n-79)赋始值0STM #h,AR1RPT #39MVPD #table,*AR1+ ;把参数表复制到数据存储区STM #xn+39,AR3 ;AR3-->x(n-79)STM #h+39,AR4 ;AR4-->h(n-79)STM #40,BK ;循环缓冲区大小80STM #-1,AR0 ;指针调整值-1LD #xn,DP ;DP指向xn所在页; PORTR PA1,@xn ;输入数据LD #y,DP ;DP指向y所在页FIR:NOPMVKD indata,*AR3+0% ;在这一行设置探针与断点用于从indata.dat文件中读输入数据RPTZ A,#39MAC *AR3+0%,*AR4+0%,ASTH A,@outdata ;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中NOP; STH A,@y ;保存计算结果; PORTW@y,PA0 ;硬件仿真时写D/AB FIR ;跳转; B FIR ;延迟跳转; PORTR PA1,*AR3+0% ;硬件仿真时读A/D,新数据覆盖最老的数据.end带通运行后的结果:带阻:.title "fir_1.asm".mmregs.def start.bss y,1 ;保存滤波结果.bss indata,1 ;输入信号缓冲区(变量).bss outdata,1 ;输出信号缓冲区(变量)xn .usect "xn",40 ;xnh .usect "h",40 ;h;PA0.set 0002H ;D/A端口地址;PA1.set 0008H ;A/D端口地址.datatable:.word 0 , 23 , 21 , -40 , -167 , -297 , -307 , -132.word 125 , 221 , 0 , -352 , -321 , 555 , 2155 , 3588.word 3638 , 1641 , -1841 , -5155 , 26057 , -5155 , -1841 , 1641.word 3638 , 3588 , 2155 , 555 , -321 , -352 , 0 , 221.word 125 , -132 , -307 , -297 , -167 , -40 , 21 , 23.word 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0.textstart:SSBX FRCT ;小数乘法STM #xn,AR1RPT #39ST #0,*AR1+ ;把x(n)-x(n-79)赋始值0STM #h,AR1RPT #39MVPD #table,*AR1+ ;把参数表复制到数据存储区STM #xn+39,AR3 ;AR3-->x(n-79)STM #h+39,AR4 ;AR4-->h(n-79)STM #40,BK ;循环缓冲区大小80STM #-1,AR0 ;指针调整值-1LD #xn,DP ;DP指向xn所在页; PORTR PA1,@xn ;输入数据LD #y,DP ;DP指向y所在页FIR:NOPMVKD indata,*AR3+0% ;在这一行设置探针与断点用于从indata.dat文件中读输入数据RPTZ A,#39MAC *AR3+0%,*AR4+0%,ASTH A,@outdata ;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中NOP; STH A,@y ;保存计算结果; PORTW@y,PA0 ;硬件仿真时写D/AB FIR ;跳转; B FIR ;延迟跳转; PORTR PA1,*AR3+0% ;硬件仿真时读A/D,新数据覆盖最老的数据.end带阻运行后结果:。