搜索
bottom↓
回复: 16

如何利用TI提供的FFT的汇编算法?

[复制链接]

出0入0汤圆

发表于 2015-8-10 22:53:50 | 显示全部楼层 |阅读模式
小弟用ti提供的高度优化了的FFT汇编算法,一直用不好。
这样的:一个正弦函数,用数组离散化,256个点,通过黑匣子(汇编FFT算法,我不懂),用ccs自带的graph显示处理之后output数组,结果不正确。
而用网上提供的FFT算法,按同样的思路,最后得到的频谱和书中描述差不多,是对的。
现有如下资料:官方程序一份(改了数据来源:用数组离散化一个正弦函数)  英文解释手册一份
请指教,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2015-8-13 10:57:49 | 显示全部楼层
得把你的程序和CMD文件发上来,FFT库没问题。

出0入0汤圆

 楼主| 发表于 2015-8-14 09:52:23 | 显示全部楼层
本帖最后由 lofky 于 2015-8-14 10:01 编辑
siyeb 发表于 2015-8-13 10:57
得把你的程序和CMD文件发上来,FFT库没问题。

cmd是这个,程序就是上面那个,谢谢
再请问下,你怎么知道FFT库没问题?看得懂汇编吗?是不是我graph还是哪操作不对,感觉官方的程序不会有问题的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-14 10:06:52 | 显示全部楼层
本帖最后由 siyeb 于 2015-8-14 10:22 编辑
lofky 发表于 2015-8-14 09:52
cmd是这个,程序就是上面那个,谢谢
再请问下,你怎么知道FFT库没问题?看得懂汇编吗?是不是我graph还是 ...


能不能把程序粘出来?我一下载就报恶意软件。

这个库我用过,是没有问题的。

出0入0汤圆

 楼主| 发表于 2015-8-14 10:31:38 | 显示全部楼层
siyeb 发表于 2015-8-14 10:06
能不能把程序粘出来?我一下载就报恶意软件。

这个库我用过,是没有问题的。 ...


这是.c文件,你看还需要什么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-14 11:05:05 | 显示全部楼层
本帖最后由 siyeb 于 2015-8-14 11:13 编辑
lofky 发表于 2015-8-14 10:31
这是.c文件,你看还需要什么


你把NL改成1024 或者把RFFT_STATES 成7 再试一下~

啊,不对不对,等我方针一下啊

出0入0汤圆

 楼主| 发表于 2015-8-14 11:21:26 | 显示全部楼层
siyeb 发表于 2015-8-14 11:05
你把NL改成1024 或者把RFFT_STATES 成7 再试一下~

啊,不对不对,等我方针一下啊 ...

好 ,不急不急

出0入0汤圆

发表于 2015-8-14 11:47:51 | 显示全部楼层

你的频谱图是这样么?

这个谱图不对。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-14 12:48:26 | 显示全部楼层
本帖最后由 siyeb 于 2015-8-14 12:51 编辑


问题解决。你用他给的工程得把那堆asm文件包含进去,要不然无法完成计算。

就是下面这一堆。

你现在的工程,你把断点打在RFFT_adc_f32(&rfft_adc );        处,然后asm stepinto 你会发现找不到代码,所以这个计算根本就没进行。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-8-14 22:45:18 | 显示全部楼层
本帖最后由 lofky 于 2015-8-15 15:23 编辑
siyeb 发表于 2015-8-14 12:48
问题解决。你用他给的工程得把那堆asm文件包含进去,要不然无法完成计算。

就是下面这一堆。

我把那些asm加进去了,再asm step into,可以找得到函数了。但是,我的结果还是不对,我的图片属性是这样配置的,你看是不是这有问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-16 11:40:48 | 显示全部楼层
本帖最后由 siyeb 于 2015-8-16 11:42 编辑
lofky 发表于 2015-8-14 22:45
我把那些asm加进去了,再asm step into,可以找得到函数了。但是,我的结果还是不对,我的图片属性是这样 ...


不对,你的显示输出应该是RFFTmagBuff。outbuff里面存储的是实部虚部,不是频谱。

出0入0汤圆

 楼主| 发表于 2015-8-16 16:07:28 | 显示全部楼层
siyeb 发表于 2015-8-16 11:40
不对,你的显示输出应该是RFFTmagBuff。outbuff里面存储的是实部虚部,不是频谱。 ...


谢谢你的耐心解答,终于得到了结果,心中还有点点疑问:这个结果和matlab结果不太一样,不大懂这个程序,你当初是怎么利用这个fft库的,只要知道 rfft_adc.InBuf = &Input[0]是输入,RFFTmagBuff是输出就可以吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-16 17:51:54 | 显示全部楼层
本帖最后由 siyeb 于 2015-8-16 18:46 编辑
lofky 发表于 2015-8-16 16:07
谢谢你的耐心解答,终于得到了结果,心中还有点点疑问:这个结果和matlab结果不太一样,不大懂这个程序 ...


你这个怎么变成128点的FFT了?不是256的么?

FFT具体的应用一句两句说不清楚,建议研读参考手册。

它里面有好几个asm文件,除了phase和mag这两个asm,其他的都是做fft的。输出是fftoutbuf。这里面存储的是fft的结果,包含虚部和实部。

你要看频谱也就是幅度谱,得对fftout这里面的数据做处理,具体就是虚部实部的平方和开根号。从而得出幅度谱。

相位谱同理。

所以才会调用fft_f32.asm和mag。asm两个函数。

另,你的这个波形应该不是露出位的程序吧?是不是做了修改?

出0入0汤圆

 楼主| 发表于 2015-8-16 21:03:10 | 显示全部楼层
本帖最后由 lofky 于 2015-8-17 10:19 编辑
siyeb 发表于 2015-8-16 17:51
你这个怎么变成128点的FFT了?不是256的么?

FFT具体的应用一句两句说不清楚,建议研读参考手册。


非常感谢!让我懂了不少知识。这个波形是我用matlab里  y=fft(x,SAMPLE_NODES)的波形,我对fft还不是很了解,你问的问题(波形应该不是露出位的程序吧?)没看懂。。
fftoutbuf怎么一个排列呢  直流分量  基波 一次 二次 。。。
介意留个qq号么?我正在学28335和6748,我们相互学习交流下,如果你想要6748的什么资料,我找了挺多的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-8-17 13:52:35 | 显示全部楼层
lofky 发表于 2015-8-16 21:03
非常感谢!让我懂了不少知识。这个波形是我用matlab里  y=fft(x,SAMPLE_NODES)的波形,我对fft还不是很了 ...

从图上来看,你的SAMPLE_NODES应该是128.

fftoutbuf的排列是 实部在buf的前面正序排列,虚部从buf的最后一位逆序向前排列。

具体描述在fft_f32.asm文件中有描述。

你所说的基频、二次三次谐波是原信号的频率分量,不同波形的分量所在位置是不同的。fftoutbuf中所储存的是FFT的结果,并不能等同于频率。具体的频率值还和采样频率和采样点数有关。

我猜楼主还没理解FFT,建议谷歌《fft的物理意义》,相信楼主君会有所得。

另外楼主要有问题的话,可以发帖讨论,我们彼此学习,兴许别人也能有所借鉴。这也是本坛的原旨之所在呦~

出0入0汤圆

 楼主| 发表于 2015-8-17 14:35:02 | 显示全部楼层
本帖最后由 lofky 于 2015-8-17 21:54 编辑
siyeb 发表于 2015-8-17 13:52
从图上来看,你的SAMPLE_NODES应该是128.

fftoutbuf的排列是 实部在buf的前面正序排列,虚部从buf的最后 ...


太赞了,大概懂了
还有一点点,为什么计算2+3*sin(pi*20*x)时,必须在sin里面除以N,否则结果就不对呢?
  1. for(i=0; i < N; i++)
  2. {
  3.               RFFTin1Buff[i]=2+3*sin(pi*20*i/N);
  4. }
复制代码

出0入0汤圆

 楼主| 发表于 2015-8-18 15:43:47 | 显示全部楼层
lofky 发表于 2015-8-17 14:35
太赞了,大概懂了
还有一点点,为什么计算2+3*sin(pi*20*x)时,必须在sin里面除以N,否则结果就 ...


我把input显示出来了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 10:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表