- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CCS和ICETEK5509實验箱FFT算法的C语言实现与验证
一 实验名称
基于CCS和ICETEK5509实验箱FFT算法的C语言实现与验证
二 实验目的
1、熟悉A/D转换的基本原理,FFT的基本原理
2、针对理论课、实验课中无时间和不方便提及内容和需强调重点进行补充与完善;
3、以原理算法的实现与验证体会DSP技术的系统性,并加深基本原理的体会。
三 实验要求
设计一个以ICETEK5509为硬件主体,FFT为核心算法的频谱分析系统方案;
2、用C语言编写系统软件的核心部分,熟悉CCS调试环境的使用方法,在CCS IDE中仿真实现方案功能;
3、在实验箱上由硬件实现频谱分析。
四实验原理
1、 DSP应用系统构成:
注:一般的输入信号首先进行带限滤波和抽样,然后进行模数(A/D)转换,将信号变成数字比特流。根据奈奎斯特抽样定理,对低通信号模拟,为保持信号的不丢失,抽样频率必须至少是输入带限信号的最高频率的2倍,工程上为带限信号最高频率的3-5倍。
A/D转换原理
A/D转换器是用来通过一定的电路将模拟量转变为数字量。
模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。
A/D转换后,输出的数字信号可以有8位、10位、12位和16位等。
3.快速傅立叶变换原理
频谱分析系统
A/D系统设置
FFT系统(DIT)
对于有限长离散数字{x[n]},0≤n≤N-1,其离散谱{x[k]}可以由离散傅氏变换(DFT)求得。
不难看出,是周期性的,且周期为N,即
,m,l=0,±1,±2….
FFT算法可以分为按时间抽取FFT和按频率抽取FFT两大类输入也有和复数之分,一般情况下,都假定输入序列为复数。FFT算法利用旋转因子的对称性和周期性,加快运算速度。
用定点DSP芯片实现FFT程序时,一个比较重要的问题就是防止中间结果的溢出,防止中间结果的溢出的方法就是对中间数值归一化,而不可能溢出的则不进行归一化。
定义可以看出,在x[n]为复数序列的情况下,完全直接运算N点的DFT需要(N-1)2次复数乘法和N(N-1)次加法。
N点的离散傅立叶变换需要同一个N*N点的W矩阵相运算,随着N值的增大,运算次数显著上升,当点数达到1024时,需要进行复数乘法运算1,048,576次,显然这种算法在实际运用中无法保证当点数较大时的运算速度,无法满足对信号的实时处理。根据W矩阵中W元素的周期性和对称性我们可以将一个N点的DFT运算分解为两组N/2点的DFT运算,然后取和即可,为进一步提高效率,将上述两个矩阵按奇偶顺序逐级分解下去。当采样点数为2的指数次方M时,可分解为M级子矩阵运算,全部工作量仅为: 复数乘法:M*N/2次 复数加法:N*M次 而直接DFT需要的运算量为: 复数乘法:N*N次 复数加法:N*(N-1)次 当点数N为几十个点时FFT的优势还不明显,而一旦达到几千、几百个点时优势是十分明显的: N=1024时:DFT需1048576次运算,FFT仅需5120次运算,改善比204.8。 N=2048时:DFT需4194304次运算,FFT仅需11264次运算,改善比达到372.4。
五实验过程
按照DSP应用系统设计的一般过程
这次课程设计分为三部分:
1、单路,多路模数转换(AD)
2、FFT算法C语言实现与验证
3、系统集成,实现硬件频谱分析
我按照这三部分进行操作,以下就是我课程设计的具体思路和步骤
第一部分:单路,多路模数转换(AD)(占第一次上机时间)
①回顾CCS的基本操作流程,尤其是开发环境的使用;
1、创建一个新工程
2、将文件添加到工程中去
3、生成和运行程序
4、更改Build选项并更正语法错误
5、添加断点从PC文件中读取数据
6、显示波形
②A/D的C语言基本控制流程;
③仔细阅读工程的源程序,做好注释,并进行运行
a)定义子程序
voidInitADC();
void wait( unsigned int cycles );
voidEnableAPLL( );
void HD_AD(); //定义0通道
void My_AD(); //定义1通道
b)主要程序:
while ( 1 )
{
for ( i=0;i256;i++ )
{
ADCCTL=0x8000; // 启动AD转换,通道0
do
{
uWork=ADCDATA; //ADCDATA为数据存放数组
} while ( uWork0x8000 );// uWork0x8000为假退出语句
nADC0[i]=uWork0x0fff; /*取十位精度
}
for ( i=
文档评论(0)