欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [毕业设计精品]并行fft频谱分析仪设计.doc

    • 资源ID:4070243       资源大小:184.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [毕业设计精品]并行fft频谱分析仪设计.doc

    并行fft频谱分析仪设计一、 设计目标本组旨在实现fft在51单片机上的并行运算。虽然现在频谱分析仪一般基于快速傅里叶变换(即fft),大大减少了运算量,提高了运算速度,但仍显很慢。N点fft需要进行N2/2次复数乘法和N2/2次复数加法运算,而每次复数运算又有特定的复数函数实现,运算量相当可观。于是本组决定此系统由4个运算器并行进行运算,令有一个控制器控制如对扩展存储器存取等动作实现,旨在节省运算时间,提高效率。二、 完成情况简述本组对于此命题并没有完全完成,软件设计,仿真等均基本完成,但结果并不尽如人意。首先,由于89c52片内存储空间的限制,没有按照原定计划做1024点,即每个片子256点的fft。由于为实现并行运算,不能对变量用“即取即用”,而需每次单片机对外部存储器读取时,读足所需256点8位原始数据,和128点复数w值,w值实部虚部各8位,这显然已经超出了片内256B变量定义空间限制,因此转而做256点,即每个片子64点。其次,由于硬件情况限制和时间仓促,在硬件上,没有完成原定5个最小系统电路的焊接,只焊接了两个最小系统,即一个控制器,一个运算器用来模拟结果,单个运算器内64个点的运算结果尚且正常,然终究看不到最终4个运算器结合的效果。最后,本组成功得通过电路和软件结合的手段,解决了四个运算器对于外部扩展存储器的轮流存取、fft核心算法、数据存取与运算同时进行、片内存储和扩展存储统一编址等关键问题,颇有获益。三、 系统总体描述和系统框图运算器189c52FFT频谱分析仪系统框图控制器89c52Pc输出电路ADC外存储器6264运算器489c52运算器389c52运算器289c52系统框图如上所示,由五个51单片机最小系统组成,其中四个用于fft的具体运算,一个用于控制。控制器两个专门输出端接于运算器1的两个中断管脚,运算器1的两个输出端接于运算器2的两个中断管脚,以此类推,最终运算器4的输出端接到控制器的某个输入端,作为反馈信号,当某一动作完成时通知控制器。四、 调试流程系统运行流程大致如下图所示:五、 遇到的问题及解决方法1. 每一步蝶形所需数据不同,若每一层蝶形运算都重新取值的话则大大浪费时间。解决:若使用“先倒序后计算”方法,则前4步蝶形是单独一个片内64点本身的运算,后两步则才需要其他几个片子的运算结果。所以为解决每一步存取浪费时间的问题,在前4步中,用各自的倒序代替存取,便可以大大节省时间,最后两步则将所有数据集合到扩展存储器中,重新分配给每个运算器。这样也可以使控制器后期的程序设计更加连贯,控制器在完成了最后一步倒序后,直接组织输出2. 控制器对四个运算器控制的实现。解决:51单片机外部中断引脚有两个int0和int1,这样,每个运算器中只允许两个中断服务程序,而每个运算器又要完成“读、写、计算”几个动作。在程序设计的过程中,我们将“读”和“计算”合并,即读数过后直接进算,只在读数结束后输出一个信号,通知下一个片子开始读数。这样的话,后面的片子还在取值过程中的时候,前面的片子已经开始了计算,一定程度上节省了时间,同时解决了控制的问题。3. W值的获得解决:由于c51编程中,允许变量定义的空间并不多。在程序调试过程中:auto segment too large的问题出现了多次。经过我们粗略计算,发现对于256点fft,每个片中128点的w值是占空间的首要。所以,我们将w值定义为常量,由扩展存储器中取出,放在每个片子的程序中去,而每个片子放程序的rom又足够大,这样,既节省了计算w值所需要的时间,又节省了空间。4. 几个片子对于一个扩展存储器的共享实际上,这个问题我们在硬件实现上遇到的麻烦远比软件上麻烦很多,5个片子都要共享同一些地址/数据管脚,会遇到诸如“电流串扰“等等问题,这可能也成为了我们最终结果不尽如人意的原因之一。在软件方面,考虑到硬件实现中的延迟等问题,同步问题不好解决,对存储器的存取操作采用时分的方式进行,虽然地址指针改变等问题实现起来较为繁琐,但具有很高的可操作性,可实现性。六、 原理图总体图单个最小系统图控制器与扩展存储器Adc七、 程序流程图和原代码Fft核心算法流程结束写值T = A(k) + A(k + B)WNpA(k + B) = A(k) A(k + B) WNpA(k) = T倒序读入x(n) 64点 128点w值开始源代码:Ic1:#include <reg52.h> /51芯片管脚定义头文件#include <intrins.h> /内部包含延时函数_nop_();#include <absacc.h> /绝对地址访问的头文件#define uchar unsigned char#define uint unsigned intuint RAMADDR=0x6000;#define RAM_6264 XBYTERAMADDR /6264地址范围H-7FFFHsbit st=P30;sbit ce=P26;sbit oe=P25;sbit in=P31;uchar n;/*延时t毫秒11.0592MHz时钟,延时约ms*/void delayms(uint t)uchar k;while(t-)for(k=0; k<125; k+);/*主函数*/void main()uchar val;n=0;EA=1;EX0=1;IT0=1;val=0;P0=0xff;P1=0xff;P2=0xff;P3=0xff;RAMADDR=0x6000; /6264首地址 oe=0; ce=0;st=1;delayms(100);st=0;delayms(500);val=P1;RAM_6264=val; /数据写入RAMADDR+;for(n=0;n<256;n+) /写个数据入st=1;delayms(50);st=0;delayms(50);val=P1;RAM_6264=val; /数据写入RAMADDR+; /修改地址delayms(1);while(1)RAMADDR=0x6000; /6264首地址for(n=0;n<256;n+)temp=RAM_6264; /从中读取数据RAMADDR+; /修改地址temp=temp; /输出为低电平动作P1=temp; /送P0口显示delayms(200);delayms(10); oe=1;ce=1;RAM_6264=0x01;RAMADDR+;RAM_6264=0x02;delayms(10);ce=0;oe=0;in=0;while(1);void ic1in() interrupt 0oe=1;ce=1;n+;RAMADDR+;RAM_6264=n;delayms(10);ce=0;oe=0;in=1;delayms(10);in=0;Ic2:#include <reg52.h> /51芯片管脚定义头文件#include <intrins.h> /内部包含延时函数_nop_();#include <absacc.h> /绝对地址访问的头文件#include <math.h> /数学函数struct compx /*定義一個複數結構*/char real;char imag;struct compx idata dat65; /FFT輸入輸出均從是s1開始存入struct compx EE(struct compx,struct compx); /定義複數相乘結構void FFT(struct compx xin,int N); /*定義FFT函數*/struct compx EE(struct compx a1,struct compx b2) /兩複數相乘的程序struct compx b3; /b3保存兩複數間的結果b3.real=a1.real*b2.real-a1.imag*b2.imag; /兩複數間的運算b3.imag=a1.real*b2.imag+a1.imag*b2.real;return(b3); /*返回結果*/#define uchar unsigned char#define uint unsigned intuint RAMADDR=0x6000;#define RAM_6264 XBYTERAMADDR /6264地址范围H-7FFFHsbit st=P30;sbit ce=P26;sbit oe=P25;sbit in=P31;sbit rw=P35;sbit fin=P10;sbit enwrite=P17;uchar vol=0;uchar enread=0;uchar calfin=0;/*延时t毫秒11.0592MHz时钟,延时约ms*/void delayms(uint t)uchar k;while(t-)for(k=0; k<125; k+);void write();void read();void cal();/*FFT*/void fft(struct compx xin,int N) /*FFT函數體*/int f,m,nv2,nm1,i,k,j=1,l; /*定義變量*/struct compx v,w,t; /*定義結構變量*/nv2=N/2; /*最高位值的權值*/f=N; /*f為中間變量*/for(m=1;(f=f/2)!=1;m+); /*求級數m*/nm1=N-1; /*nm1為數組長度*/for(i=1;i<=nm1;i+) /*倒序*/if(i<j) t=xinj;xinj=xini;xini=t; /*i<j則換位*/k=nv2; /*k為倒序中相應位置的權值*/while(k<j) j=j-k;k=k/2; /*k<j時最高為變為*/j=j+k; /* j為數組中的位數,是一個十進制數*/int le,lei,ip; /變量初始化,le為序列長度 float pi; for(l=1;l<=m;l+) /*l控制級數*/ le=pow(2,l); /*le等於的l次方*/ lei=le/2; /*蝶形兩節點間的距離*/ pi=3.14159265; v.real=1.0; / 此次的v運於複數的初始化 v.imag=0.0; w.real=cos(pi/lei); /*旋轉因子*/ w.imag=-sin(pi/lei); for(j=1;j<=lei;j+) /外循環控制蝶行運算的級數 for(i=j;i<=N;i=i+le) /內循環控制每級間的運算次數 ip=i+lei; /*蝶形運算的下一個節點*/ t=EE(xin ip ,v); /*第一個旋轉因子*/ xin ip .real=xin i .real-t.real; /*蝶形計算*/. xin ip .imag=xin i .imag-t.imag; xin i .real=xin i .real+t.real; xin i .imag=xin i .imag+t.imag; v=EE(v,w); /調用EE複數相乘程序,結果給下次的循環 /*写*/void write()uchar i;oe=1;ce=1;rw=1;RAMADDR=0x6000;for (i=0;i<64;i+)RAM_6264=(uchar)sqrt(dati+1.real*dati+1.real+dati+1.imag*dati+1.imag);RAMADDR+;oe=0;ce=0;fin=0;/*算*/void cal()fft(dat,64);calfin=1;/*读*/void read()uchar i;enread=0;oe=1;ce=1;rw=0;for (i=0;i<64;i+)dati+1.real=RAM_6264;RAMADDR+;rw=1;oe=0;ce=0;in=1;delayms(10);in=0;cal();/*主函数*/void main()RAMADDR=0x6000;P0=0xff;P1=0xff;P2=0xff;P3=0xff;ce=0;oe=0;EA=1;EX0=1;IT0=1; /6264首地址while(enread=0);read();while(calfin=0);while(enwrite=1);write();while(1);void icin() interrupt 0 enread=1;注:上程序中乃是其中一个运算器的程序,其中包含w值计算,实际最终并没有用这一个。

    注意事项

    本文([毕业设计精品]并行fft频谱分析仪设计.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开