全球旧事资料 分类
,这里不再重复。
开始
初始化变量及相关库函数
根据点数初始化输入序列,计算旋转因子(任意点数FFT)
计算FFT
计算重新排序表
根据排序表重新排列结果序列FFT结果输出
计算IFFT(IFFT)
结束
第3页
f信号与信息处理综合实验报告
(2)SDRAM配置、写入与检测
开始
初始化EMIFA总线的12个接口寄存器配置值
指定数据段空间(DATA_SECTION)为SDRAM
写入EMIFA寄存器配置
执行FFT程序以获得要写入的结果
把FFT结果写入到SDRAM中
读取刚才写入的值并与要写入的值(FFT结果)比较,根据结果显示LED灯
结束
四、功能测试记录
1、FFT:第4页
f信号与信息处理综合实验报告任意点数的FFT由于变化较多,这里无法给出执行结果。输入序列:00100200100001002001000010020010000100200100FFT结果(序列):
FFT结果(图象):
第5页
f信号与信息处理综合实验报告
IFFT结果:
由上图可见,和原始输入序列相比,IFFT的结果略有误差。2、SDRAM:正确执行的结果:
第6页
f信号与信息处理综合实验报告
检测错误时的结果(如把写入的结果与全0数组比较):
五、调试过程中的主要问题及难点
1、FFT无法得到正确结果。解决:原先的输入数据可能产生溢出,更换新数据后解决。2、编译SDRAM程序时出错。为了实现把FFT结果写入SDRAM中,FFT程序必须嵌入到SDRAM程序中,否则执行后获得的FFT结果会丢失。但是由于FFT程序中包含了对C64xDSPLIB的函数调用,因此需要在属性窗口中添加库文件dsp64xlib。3、执行IFFT时,结果出错。
第7页
f信号与信息处理综合实验报告出现这一错误的原因是选择了错误的IFFT函数,因为许多DSP库函数对输入都是有限制的,如果事先没有对输入参数进行转换以符合库函数的要求,结果就会出错。4、调试IFFT程序时,提示“不支持该芯片,程序没有加载”。开始设计IFFT程序时,由于C64x的DSP函数库中没有合适的IFFT函数,因此我打算采用C64xDSPLIB中的函数DSP_ifft16x16t实现IFFT,结果就出现了以上错误。虽然在基于C64x内核的DSP芯片上执行为基于C64x的DSP设计的库函数或许不会出错,但这种行为是CCS不允许的。
六、实验总结
和第一次DSP部分的实验相比,这次实验相对来说要复杂一些。实现基本功能时,就要把两个程序组合到一起,而实现拓展功能时,更需要自己设计相应的算法。然而,这也是第一次真正利用DSP芯片DSP方面的强大优势实现一些真正的数字信号处理操作,让我见识到了DSP芯片在某些运算上的功能强大。在这次r
好听全球资料 返回顶部