并行fft频谱分析仪的设计

上传人:cn****1 文档编号:545269299 上传时间:2023-04-26 格式:DOCX 页数:12 大小:273.39KB
返回 下载 相关 举报
并行fft频谱分析仪的设计_第1页
第1页 / 共12页
并行fft频谱分析仪的设计_第2页
第2页 / 共12页
并行fft频谱分析仪的设计_第3页
第3页 / 共12页
并行fft频谱分析仪的设计_第4页
第4页 / 共12页
并行fft频谱分析仪的设计_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《并行fft频谱分析仪的设计》由会员分享,可在线阅读,更多相关《并行fft频谱分析仪的设计(12页珍藏版)》请在金锄头文库上搜索。

1、并行fft频谱分析仪设计小组成员:孔峰3007204154 王云飞 3007204163 张然 3007204173 组号:4c-2 07级电子信息工程2班一、设计目标本组旨在实现fft在51单片机上的并行运算。虽然现在频谱分析仪一般基于快速傅里叶变换(即fft),大大减少了运算 量,提高了运算速度,但仍显很慢。N点fft需要进行2/2次复数乘法和 2/2次复数加法运算,而每次复数运算又有特定的复数函数实现,运算量相 当可观。于是本组决定此系统由4个运算器并行进行运算,令有一个控制器 控制如对扩展存储器存取等动作实现,旨在节省运算时间,提咼效率。二、完成情况简述本组对于此命题并没有完全完成,软

2、件设计,仿真等均基本完成,但结果并 不尽如人意。首先,由于89c52片内存储空间的限制,没有按照原定计划做1024点,即 每个片子256点的fft。由于为实现并行运算,不能对变量用“即取即用” 而需每次单片机对外部存储器读取时,读足所需256点8位原始数据,和 128点复数w值,w值实部虚部各8位,这显然已经超出了片内256B变量定 义空间限制,因此转而做256点,即每个片子64点。其次,由于硬件情况限制和时间仓促,在硬件上,没有完成原定5个最小系 统电路的焊接,只焊接了两个最小系统,即一个控制器,一个运算器用来模 拟结果,单个运算器内64个点的运算结果尚且正常,然终究看不到最终4 个运算器结

3、合的效果。最后,本组成功得通过电路和软件结合的手段,解决了四个运算器对于外部 扩展存储器的轮流存取、fft核心算法、数据存取与运算同时进行、片内存 储和扩展存储统一编址等关键问题,颇有获益。三、系统总体描述和系统框图系统框图如上所示,由五个51单片机最小系统组成,其中四个用于fft的 具体运算,一个用于控制。控制器两个专门输出端接于运算器1的两个中断 管脚,运算器1的两个输出端接于运算器2的两个中断管脚,以此类推,最 终运算器4的输出端接到控制器的某个输入端,作为反馈信号,当某一动作 完成时通知控制器。四、调试流程系统运行流程大致如下图所示:预处理采样心DC将药丘个时立数据存入扩展存储器控制器

4、将预先存好的个w值存入扩展存储器取值控制器向运算器1发出开始读數指令,运算器1开始在外部存储器读 數,读取完所需64个原始數据以惡全部1朋个别值之后,傳止读數, 向运算器2岌出读数指令,开始运算。运算器殆完成运算器1动作运算器4完成上述动作,开始运算,笄向控制器岌送完成读数反谣丿、运算每个运算器完成各自64点fft运算前4层蝶形在每个片子完成一层蝶形运算后,在片内完成64点倒序,以使得 下一层蝶形运算符合原有循坏运算器4完成运算后,向控制器发出运算结束反愦写值控制器向运算器1发出写值指令,各运算器依次将各自石4点运算结 果写入外部扩展存储器控嘟器完成外部扩展存储器中全部25E点倒序,以适应下一

5、步运算最终运算54个运算器按跟既定顺序取值,运算一步蝶形,倒序,写值4个运算器按昭既定顺序取值,运算最后一步蝶形,倒序,写值 控制器将最终结果站E点倒序输出。五、遇到的问题及解决方法1. 每一步蝶形所需数据不同,若每一层蝶形运算都重新取值的话则大大浪 费时间。解决:若使用“先倒序后计算”方法,则前4步蝶形是单独一个片内64 点本身的运算,后两步则才需要其他几个片子的运算结果。所以为解决 每一步存取浪费时间的问题,在前4步中,用各自的倒序代替存取,便 可以大大节省时间,最后两步则将所有数据集合到扩展存储器中,重新 分配给每个运算器。这样也可以使控制器后期的程序设计更加连贯,控 制器在完成了最后一

6、步倒序后,直接组织输出2. 控制器对四个运算器控制的实现。解决:51单片机外部中断引脚有两个intO和inti,这样,每个运算器 中只允许两个中断服务程序,而每个运算器又要完成“读、写、计算” 几个动作。在程序设计的过程中,我们将“读”和“计算”合并,即读 数过后直接进算,只在读数结束后输出一个信号,通知下一个片子开始 读数。这样的话,后面的片子还在取值过程中的时候,前面的片子已经 开始了计算,一定程度上节省了时间,同时解决了控制的问题。3. W值的获得解决:由于c51编程中,允许变量定义的空间并不多。在程序调试过程 中:auto segment too large的问题出现了多次。经过我们粗

7、略计算, 发现对于256点fft,每个片中128点的w值是占空间的首要。所以, 我们将w值定义为常量,由扩展存储器中取出,放在每个片子的程序中 去,而每个片子放程序的rom又足够大,这样,既节省了计算w值所需 要的时间,又节省了空间。4. 几个片子对于一个扩展存储器的共享实际上,这个问题我们在硬件实现上遇到的麻烦远比软件上麻烦很多,5 个片子都要共享同一些地址/数据管脚,会遇到诸如“电流串扰“等等问 题,这可能也成为了我们最终结果不尽如人意的原因之一。在软件方面, 考虑到硬件实现中的延迟等问题,同步问题不好解决,对存储器的存取 操作采用时分的方式进行,虽然地址指针改变等问题实现起来较为繁琐,

8、但具有很高的可操作性,可实现性。六、原理图总体图单个最小系统图U401:J1PLi.D/ArCiPLI.1/AD1PU.2/.AD2;:_2PLi.3/.An::PLl.4/Ar4PLi.5/ArePLI.6/.AE6RSTP0.7/AEI7P2.D/t:P2.1/.AyP2.2/A1LIPSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.D/T2P3.D/RXDP1.1/T2EKP3.1/TXDP1.2P3.2/IN1DP1.3P3.3/INT1P1.4P:j.4.TUP1.5P3.5.-T1P1.6P3.6/WRP1.7P3.7/RD34

9、A33Pd 4ti32j 4719188125ATS9S8252.U40274LS0474HC57318 DL17D WL4D415D:14D13&12Di11DA 46 y 西珥可513 OTTjD4i 2 aj 5Ti d 4?4凸迢圭凸45 7凸4ti yCE_ 凸助丽.74LS245-in- 74LSD4- 十 721314 n161739 .凸口牝4 B5 fi- 7 A- B BD1234567hh._/BA 闻A1A2A3対岛用A7CEA02 3D12: U401:B:4E74STUA LLJ 电1j5 盘2 6 7: -4 7 iJij j4: F: 49七、控制器与扩展存储器

10、-:xrJLixrjUJRrAdcrFtM.frnJINJfJllr.plplplplplplplpl.raiMazISA 丽 16A 15A 14A 13C 12VU iTRAMD 2:aj iTT a snf A SHF :AJ Uj .4 45 7匚IDQO 1Q1D2Q2D3Q34Q4D5Q56Q67Q7LE E19 Qi18 17 0:16Q:15Q14 Q:I;E-DE-lE-2E-9AE:E-BE-r如雲:slm MP2P2P2P2P2P2r*4_3-M r rurvBDIBEiAeBDr霊 I 29A & Br u:mlsFjswj;:;進箋 *BDIEEAraEDrFft核心

11、算法流程源代码:Ic1:#includereg52.h/51芯片管脚定义头文件#includeintrins.h/内部包含延时函数_nop_();#includeabsacc.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;/*x*x*x*x*/延时t毫秒11.0592MHz

12、时钟,延时约ms*x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x*x*x* /void delayms(uint t)uchar k;while(t一)for(k=0; k125; k+);/*x* *x

13、* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x*x*x*x*/主函数*x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x* *x*x*x* / /void main()uchar val;n=0;EA=1;EXO=1;ITO=1;val=0;P0=0xff;Pl=0xff;P2=0xff;P3=0xff;RAMADDR=0x6000; /6264首地址oe=0;ce=0;st=1;delayms(lOO);st=0;delayms(500);val=P1;RAM_6264=val; /数据写入

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号