第14章 TMS320LF2407上实现快速傅里叶变换(FFT).doc_第1页
第14章 TMS320LF2407上实现快速傅里叶变换(FFT).doc_第2页
第14章 TMS320LF2407上实现快速傅里叶变换(FFT).doc_第3页
第14章 TMS320LF2407上实现快速傅里叶变换(FFT).doc_第4页
第14章 TMS320LF2407上实现快速傅里叶变换(FFT).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第14章 TMS320LF2407上实现快速傅里叶变换(FFT)14.1 快速傅立叶变换(FFT)的原理FFT的程序代码(1)主程序#include f2407_c.h#include math.h#define N 32 / FFT变换的点数 extern void fft(void); extern void resave(void); interrupt void phantom(void); void sysinit(void);extern int input2*N; / 输入数据的存储数组 int indatiN=0; / -/ 128 点 FFT所需的数据/ 采样函数: x=1/4+1/4cos(3*2*pi*f*t)+1/4cos(6*2*pi*f*t)+1/4cos(9*2*pi*f*t);/ f=50Hz/ -/* int indatrN=16394,15871,14425,12398, 10276 ,8584 , 7767 , 8088 ,9557 , 11913 , 14660 ,17155 , 18724 , 18802 , 17044 , 13411 , 8197 , 1995 , -4389 ,-10071, -14231 , -16255 ,-15844, -13057 ,-8309 , -2296, 4125 , 10079, 14819, 17843 , 18969, 18342 , 16394 ,13739 , 11055 , 8950 , 7848, 7921 , 9070 , 10961, 13110 , 14992 , 16159 , 16334 ,5479 , 13792 , 11675 , 9640 , 8197 , 7741, 8457, 10264 , 12815 , 15554 , 17812 ,18939 , 18429 , 16034 , 11825 , 6203 , -156, -6405, -11662 , -15165 , -16394 , -15165 ,-11662 , -6405 , -156 , 6203 , 11825 , 16034, 18429, 18939 , 17812 , 15554 , 12815 ,10264 , 8457 , 7741 , 8197, 9640 , 11675, 13792, 15479 , 16334 , 16159, 14992 ,13110 , 10961 , 9070 ,7921 , 7848 , 8950 , 11055 , 13739 , 16393 , 18342 , 18969 ,17843 , 14819 , 10079 ,4125 , -2296 , -8309 , -13057 , -15844 , -16255 , -14231 , -10071 ,-4389 , 1995 , 8197 , 13411 , 17044 , 18802 , 18724 , 17155 , 14660 , 11913 , 9557 ,8088 , 7767, 8584 , 10276 , 12398 , 14425 , 15871 ,;*/ -/ 32点FFT所需的数据 / 采样函数: x=1/4+1/4cos(3*2*pi*f*t)+1/4cos(6*2*pi*f*t)+1/4cos(9*2*pi*f*t);/ f=50Hz ;pi=;/ -/* int indatrN=16384, 10270, 9551 , 18713 , 8192 , -14222 , -8304 , 14810 , 16384 ,7843 , 13102 ,15469, 8192 , 12807 , 18418 , -0156 ,-16384 , -0156 , 18418 , 12807 , 8192 , 15469,13102 , 7843 , 16383 , 14810 , -8304 , -14222 , 8192 , 18713 , 9551 , 10270 ,;*/int indatrN=0x07ff, 0x07ff, 0x07ff , 0x07ff , 0x07ff , 0x07ff , 0x07ff , 0x07ff , 0x07ff ,0x07ff , 0x07ff ,0x07ff, 0x07ff , 0x07ff , 0x07ff , 0x07ff ,0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801,0x0F801 , 0x0F801, 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 , 0x0F801 ,;/ -/ 64点 FFT所需的数据/ 采样函数: x=1/4+1/4cos(3*2*pi*f*t)+1/4cos(6*2*pi*f*t)+1/4cos(9*2*pi*f*t);/ f=50Hz/ -/* int indatrN=16384 , 14416, 10270, 7762, 9551 , 14651 , 18713, 17034, 8192 , -4387 , -14222,-15834 , -8304 , 4123 , 14810 , 18957 , 16384 , 11049 , 7843 , 9064 , 13102 , 16149 ,15469 , 11668 , 8192 , 8452 , 12807 , 17801 , 18418 , 11818, -0156 , -11655 , -16384 , -11655 , -0156 , 11818 , 18418 , 17801, 12807 , 8452 , 8192, 11668 , 15469 , 16149 ,13102 , 9064 , 7843 , 11049 , 16383 , 18957 , 14810 , 4123 , -8304 , -15834 , -14222 ,-4387 , 8192 , 17034 , 18713 , 14651 , 9551 , 7762 , 10270 , 14416 , ;*/ -/ 128 点 FFT的sin 和 cos值存储表/ -/* const int sintabN=0x07fff,0x0,0x07fd9,0x0f9b9,0x07f62,0x0f375,0x07e9d,0x0ed38,0x07d8a,0x0e708,0x07c2a,0x0e0e7,0x07a7d,0x0dad8,0x07885,0x0d4e1,0x07642,0x0cf05,0x073b6,0x0c946,0x070e3,0x0c3aa,0x06dca,0x0be32,0x06A6C,0x0B8E4,0x066CE,0x0B3C1,0x062F1,0x0AECD,0x05ED6,0x0AA0C,0x05A81,0x0A57F,0x055F4,0x0A12A,0x05133,0x09D0F,0x04C3F,0x09932,0x0471C,0x09594,0x041CD,0x09237,0x03C56,0x08F1F,0x036B9,0x08C4B,0x030FB,0x089C0,0x02B1E,0x0877D,0x02527,0x08584,0x01F19,0x083D7,0x018F8,0x08277,0x012C7,0x08164,0x00C8B,0x0809F,0x00647,0x08029,0x00000,0x08001,0x0F9B9,0x08029,0x0F375,0x0809F,0x0ED39,0x08164,0x0E708,0x08277,0x0E0E7,0x083D7,0x0DAD9,0x08584,0x0D4E2,0x0877D,0x0CF05,0x089C0,0x0C947,0x08C4B,0x0C3AA,0x08F1F,0x0BE33,0x09237,0x0B8E4,0x09594,0x0B3C1,0x09932,0x0AECD,0x09D0F,0x0AA0C,0x0A12A,0x0A57F,0x0A57F,0x0A12A,0x0AA0C,0x09D0F,0x0AECD,0x09932,0x0B3C1,0x09594,0x0B8E4,0x09237,0x0BE33,0x08F1F,0x0C3AA,0x08C4B,0x0C947,0x089C0,0x0CF05,0x0877D,0x0D4E2,0x08584,0x0DAD9,0x083D7,0x0E0E7,0x08277,0x0E708,0x08164,0x0ED39,0x0809F,0x0F375,0x08029,0x0F9B9;*/ -/ 64点 FFT的sin 和 cos值存储表/ -/* const int sintabN=0x7FFF,0x0000,0x7F61 ,0xF375, 0x7D89 , 0xE708 , 0x7A7C , 0xDAD9,0x7640, 0xCF05 ,0x70E1 ,0xC3AA ,0x6A6C , 0xB8E4 , 0x62F1 , 0xAECD ,0x5A81, 0xA57F, 0x5133, 0x9D0F, 0x471C , 0x9594, 0x3C56, 0x8F1F,0x30FB, 0x89C0 ,0x2527, 0x8584 ,0x18F8 , 0x8277 , 0x0C8B , 0x809F,0x0000 ,0x8001, 0xF375, 0x809F, 0xE708 , 0x8277 , 0xDAD9 , 0x8584,0xCF05 ,0x89C0 ,0xC3AA, 0x8F1F, 0xB8E4 , 0x9594 , 0xAECD , 0x9D0F,0xA57F, 0xA57F, 0x9D0F, 0xAECD, 0x9594 , 0xB8E4 , 0x8F1F , 0xC3AA,0x89C0, 0xCF05, 0x8584 ,0xDAD9 ,0x8277 , 0xE708 , 0x809F , 0xF375, ;*/ -/ 32 点 FFT的sin 和 cos值存储表/ -const int sintabN=0x7FFF,0x0000,0x7D89,0xE708,0x7640,0xCF05,0x6A6C,0xB8E4,0x5A81,0xA57F,0x471C,0x9594,0x30FB,0x89C0,0x18F8,0x8277,0x0000,0x8001,0xE708,0x8277,0xCF05,0x89C0,0xB8E4,0x9594,0xA57F,0xA57F,0x9594,0xB8E4,0x89C0,0xCF05,0x8277,0xE708,;extern int table128;extern int nom;/ 当nom=1时, FFT 需要归一化处理main()int i; double x=0,y;nom=1; / 需要归一化处理sysinit();for(i=0;iRi ,ARP:AR2, / AR2:ID, AR3:Y, AR5=M, AR6:input LACC*,1SACL *+/ ID=ID*2,ARP:AR2,AR2:IW,/ AR3:Y, AR5=M, AR6:input LACC*,15 SACH* / IW=IW/2 LACC*-,15,AR3 SACH*+,AR2 / C2=IW/2/ 堆栈分布情况:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/Y/ ARP:AR2, AR2:ID, AR3:Y, AR5=M, AR6:input LARAR0,* / AR0=IDLOOP2 LARAR4,#_sintab / AR4:sintab/ ARP:AR2,AR0=ID,AR2:ID, AR3:Y, AR4:sintab, AR5=M, AR6:input LACC *+,15,AR3 SACH *+,AR6 / C1=ID/2=1/ 堆栈分布情况:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/C1/Y/ ARP:AR6, AR0=ID, AR2:IW, AR3:Y, AR4:sintab, AR5=M, AR6:input MAR*0+,AR4/ ARP:AR4,AR0=ID,AR2:IW,AR3:Y,AR4:sintab,AR5=M,AR6=AR6+ID-RjLOOP1LACC #0LT*+,AR6 / TREG=COSlkMPY*+,AR4 / Rj* COSlk,ARP=AR4,AR4:SINlk,AR6:Ij LT*,AR6 MPYA *-,AR3 / ACC=ACC+Rj*COSlk, PREG=Ij*SINlk / ARP=AR3, AR4:SINlk, AR6: Rj SPAC / ACC=ACC-Ij*SINlk SACH *+,AR4 / XT=Rj*COSlk-Ij*SINlk/ 堆栈分布情况:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/C1/XT/Y/ ARP:AR4, AR0=ID, AR2:IW, AR3:Y, AR4:SINX, AR5=M, AR6:Q.X LACC#0 LT*-,AR6 MPY*+,AR4 / Rj*SINlk,ARP=AR4,AR4:COSlk,AR6:Ij LT*,AR6 MPYA*-,AR3 / ACC=ACC+Rj*SINlk, PREG=Ij*COSlk / ARP=AR3, AR4:COSlk, AR6:Rj APAC SACH*-,AR7 / YT=Rj*SINlk+Ij*COSlk/ 堆栈分布情况:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/C1/XT/YT/ ARP:AR7, AR0=ID, AR2:IW, AR3:XT, AR4:COSX, AR5=M, AR6:Q.X LACC*,AR6BCNDD2,NEQ / 当_nom不为0时,需要在运算过程中进/ 行归一化操作/ -/ 不进行归一化操作程序部分/ -MAR*0- / AR6=AR6-ID-Ri LACC*,AR3ADD*,AR6SACL*0+,AR3 / Ri=Ri+XT/ ARP:AR3, AR0=ID, AR2:IW, AR3:XT, AR4:COSlk, AR5=M, AR6:RjSUB*+,1,AR6SACL*+ / Rj= Ri+XT -XT*2=Ri-XT, AR6:Ij, AR3:YT/ ARP:AR6, AR0=ID, AR2:IW, AR3:YT, AR4:COSlk , AR5=M, AR6:IjMAR*0- / AR6:IiLACC*,AR3 ADD*-,AR6SACL*0+,AR3 / Ii= Ii +YT, AR6:Ij/ ARP:AR3, AR0=ID, AR2:IW, AR3:XT, AR4:COSlk, AR5=M, AR6:IjSUB*,1,AR6SACL*+,0,AR2 / Ij= Ii +YT -YT*2=Ii-YT / STACK:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/C1/XT/YT/ ARP:AR2,AR0=ID,AR2:IW,AR3:XT,AR4:COSlk,AR5=M,AR6:NEXT RjBD / AR6 指向下一个Rj/ -/ 归一化处理程序部分/ -D2MAR*0- / AR6-RiLAC*,15,AR3ADD*,15,AR6SACH*0+,AR3 / Ri =( Ri +XT)/2/ ARP:AR3, AR0=ID, AR2:IW, AR3:XT, AR4:COSlk, AR5=M, AR6:Rj SUB*+,16,AR6SACH*+ / Rj=Ri-XT, AR6:Ij, AR3:YT/ ARP:AR6, AR0=ID, AR2:IW, AR3:YT, AR4:COSlk, AR5=M, AR6:IjMAR*0- / AR6:IiLACC*,15,AR3ADD*,15,AR6SACH*0+,AR3 / Ii=(Ii+YT)/2, AR6:Ij/ ARP:AR3, AR0=ID, AR2:IW, AR3:YT, AR4:COSlk, AR5=M, AR6:IjSUB*-,16,AR6SACH*+,0,AR2 / Ij=Ii-YT/ STACK:ADDRESS/AR6/AR7/AR0/N/M/ID/IW/C2/C1/XT/YT/ ARP:AR2,AR0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论