first
This commit is contained in:
101
cpu/br28/audio_demo/audio_fft_demo.c
Normal file
101
cpu/br28/audio_demo/audio_fft_demo.c
Normal file
@ -0,0 +1,101 @@
|
||||
/*
|
||||
****************************************************************************
|
||||
* Audio FFT Demo
|
||||
*
|
||||
*Description : Audio FFT使用范例
|
||||
*Notes :
|
||||
*(1)本demo为开发测试范例,请不要修改该demo, 如有需求,请自行复制再修改
|
||||
*(2)FFT输入数据位宽
|
||||
*----------------------------------------------------------------------
|
||||
* FFT模式 FFT点数 最大输入位宽
|
||||
*----------------------------------------------------------------------
|
||||
* 复数 64 [21:0]
|
||||
* 128 [20:0]
|
||||
* 256 [19:0]
|
||||
* 512 [18:0]
|
||||
* 1024 [17:0]
|
||||
*----------------------------------------------------------------------
|
||||
* 实数 64 [20:0]
|
||||
* 128 [18:0]
|
||||
* 256 [17:0]
|
||||
* 512 [18:0]
|
||||
* 1024 [16:0]
|
||||
*----------------------------------------------------------------------
|
||||
*(3)IFFT输入位宽:[29:0]
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#include "audio_demo.h"
|
||||
#include "hw_fft.h"
|
||||
|
||||
// For 128 point Real_FFT test
|
||||
void hw_fft_demo_real()
|
||||
{
|
||||
|
||||
int tmpbuf[130]; // 130 = (128/2+1)*2
|
||||
unsigned int fft_config;
|
||||
|
||||
printf("********* test start **************\n");
|
||||
|
||||
for (int i = 0; i < 128; i++) {
|
||||
tmpbuf[i] = i + 1;
|
||||
printf("tmpbuf[%d]: %d \n", i, tmpbuf[i]);
|
||||
}
|
||||
|
||||
// Do 128 point FFT
|
||||
fft_config = hw_fft_config(128, 7, 1, 0, 1);
|
||||
|
||||
hw_fft_run(fft_config, tmpbuf, tmpbuf);
|
||||
|
||||
for (int i = 0; i < 130; i++) {
|
||||
printf("tmpbuf_[%d]: %d \n", i, tmpbuf[i]);
|
||||
}
|
||||
|
||||
// Do 128 point IFFT
|
||||
fft_config = hw_fft_config(128, 7, 1, 1, 1);
|
||||
|
||||
hw_fft_run(fft_config, tmpbuf, tmpbuf);
|
||||
|
||||
for (int i = 0; i < 128; i++) {
|
||||
printf("tmpbuf_[%d]: %d \n", i, tmpbuf[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// For 128 point Complex_FFT test
|
||||
void hw_fft_demo_complex()
|
||||
{
|
||||
|
||||
int tmpbuf[280]; // 280 = (128/2+1)*2*2
|
||||
unsigned int fft_config;
|
||||
|
||||
printf("********* test start **************\n");
|
||||
|
||||
for (int i = 0; i < 128; i++) {
|
||||
tmpbuf[2 * i] = i + 1;
|
||||
tmpbuf[2 * i + 1] = i + 1;
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i, tmpbuf[2 * i]);
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i + 1, tmpbuf[2 * i + 1]);
|
||||
}
|
||||
|
||||
// Do 128 point FFT
|
||||
|
||||
fft_config = hw_fft_config(128, 7, 1, 0, 0);
|
||||
|
||||
hw_fft_run(fft_config, tmpbuf, tmpbuf);
|
||||
|
||||
for (int i = 0; i < 128; i++) {
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i, tmpbuf[2 * i]);
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i + 1, tmpbuf[2 * i + 1]);
|
||||
}
|
||||
|
||||
// Do 128 point IFFT
|
||||
fft_config = hw_fft_config(128, 7, 1, 1, 0);
|
||||
|
||||
hw_fft_run(fft_config, tmpbuf, tmpbuf);
|
||||
|
||||
for (int i = 0; i < 128; i++) {
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i, tmpbuf[2 * i]);
|
||||
printf("tmpbuf[%d]: %d \n", 2 * i + 1, tmpbuf[2 * i + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user