开发板

K210开发板

基于K210开发板快速傅立叶变换加速器测试_i++

实验目的

本次测试主要学习 K210 芯片中快速傅立叶变换加速器的功能。

实验准备

实验元件

K210 芯片中的快速傅立叶变换加速器

元件特性

K210 内置快速傅立叶变换加速器 FFT Accelerater。FFT 加速器是用硬件的方式来实现 FFT 的基 2 时分运算。

  • 支持多种运算长度,即支持 64 点、128 点、256 点以及 512 点运算
  • 支持两种运算模式,即 FFT 以及 IFFT 运算
  • 支持可配的输入数据位宽,即支持 32 位及 64 位输入
  • 支持可配的输入数据排列方式,即支持虚部、实部交替,纯实部以及实部、虚部分离三种数据排列方式
  • 支持 DMA 传输

SDK 中对应 API 功能

以头文件 aes.h为例

• fft_complex_uint16_dma:FFT 运算。
  • 1.

实验原理

目前该模块可以支持 64 点、128 点、256 点以及 512 点的 FFT 以及 IFFT。在 FFT 内部有两块大小为 512*32bit 的 SRAM,在配置完成后 FFT 会向 DMA 发送TX 请求,将 DMA 送来的送据放到其中的一块 SRAM 中去,直到满足当前 FFT 运算所需要的数据量并开始 FFT 运算,蝶形运算单元从包含有有效数据的 SRAM 中读出数据,运算结束后将数据写到另外一块 SRAM 中去,下次蝶形运算再从刚写入的 SRAM 中读出数据,运算结束后并写入另外一块 SRAM,如此反复交替进行直到完成整个 FFT 运算。

实验过程

  1. 首先通过三角函数取得一组复数。
int32_t i;
    float tempf1[3];
    fft_data_t *output_data;
    fft_data_t *input_data;
    uint16_t bit1_num = get_bit1_num(FFT_FORWARD_SHIFT);
    complex_hard_t data_hard[FFT_N] = {0};
    complex data_soft[FFT_N] = {0};
    /* 取得一组复数 */
    for (i = 0; i < FFT_N; i++)
    {
        tempf1[0] = 0.3 * cosf(2 * PI * i / FFT_N + PI / 3) * 256;
        tempf1[1] = 0.1 * cosf(16 * 2 * PI * i / FFT_N - PI / 9) * 256;
        tempf1[2] = 0.5 * cosf((19 * 2 * PI * i / FF