TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C28X FPU的问题 , benchmark 的 cycle count对应时间是什么?

是不是SYSCLKOUT? 即CPU 时钟数? 我的一个FFT程序如下

    rfft_adc.Tail = &rfft.OutBuf;        // Link the RFFT_ADC_F32_STRUCT to
                                                   // RFFT_F32_STRUCT. Tail pointer of
                                                   // RFFT_ADC_F32_STRUCT is passed to
                                                   //  the OutBuf pointer of RFFT_F32_STRUCT
    rfft.FFTSize   = nRFFT_SIZE;
    rfft.FFTStages = nRFFT_STAGES;
    rfft_adc.InBuf = Signal_In;                     // Input buffer
    //rfft.InBuf     = Signal_In;                // Input buffer
    rfft.OutBuf    = &RFFT_Out_Buf[0];           // Output buffer
    rfft.CosSinBuf = &RFFT_Coef_Buf[0];          // Twiddle factor buffer
    rfft.MagBuf    = Signal_Mag;                 // Magnitude buffer
    rfft.PhaseBuf =  Signal_Phase;

    RFFT_f32_sincostable(&rfft);        // Calculate twiddle factor
    RFFT_adc_f32(&rfft_adc);            // Calculate real FFT with 12-bit ADC input

这段程序的执行时间 TI 给出的benchmark是 29466 cycle count, 我的系统是28335, 运行时钟是150M, RAM 使用片外RAM,测量下来所需时间是2508380*6.67ns = 16.7ms, 为什么会相差这么大? 我想了想,除了使用 片外RAM外,差别在哪里? 怎么会这样慢? 我在程序中使用了c28x   fast 库的。

囧:

你是使用 哪种总线连接片外RAM的?如何测试FFT的运行时间的?片外的RAM会受到总线通信时间的限制。

是不是SYSCLKOUT? 即CPU 时钟数? 我的一个FFT程序如下

    rfft_adc.Tail = &rfft.OutBuf;        // Link the RFFT_ADC_F32_STRUCT to
                                                   // RFFT_F32_STRUCT. Tail pointer of
                                                   // RFFT_ADC_F32_STRUCT is passed to
                                                   //  the OutBuf pointer of RFFT_F32_STRUCT
    rfft.FFTSize   = nRFFT_SIZE;
    rfft.FFTStages = nRFFT_STAGES;
    rfft_adc.InBuf = Signal_In;                     // Input buffer
    //rfft.InBuf     = Signal_In;                // Input buffer
    rfft.OutBuf    = &RFFT_Out_Buf[0];           // Output buffer
    rfft.CosSinBuf = &RFFT_Coef_Buf[0];          // Twiddle factor buffer
    rfft.MagBuf    = Signal_Mag;                 // Magnitude buffer
    rfft.PhaseBuf =  Signal_Phase;

    RFFT_f32_sincostable(&rfft);        // Calculate twiddle factor
    RFFT_adc_f32(&rfft_adc);            // Calculate real FFT with 12-bit ADC input

这段程序的执行时间 TI 给出的benchmark是 29466 cycle count, 我的系统是28335, 运行时钟是150M, RAM 使用片外RAM,测量下来所需时间是2508380*6.67ns = 16.7ms, 为什么会相差这么大? 我想了想,除了使用 片外RAM外,差别在哪里? 怎么会这样慢? 我在程序中使用了c28x   fast 库的。

Yang tianxi:

回复 囧:

片外RAM使用XD0~XD15 连 ISSI 公司的 256 k 16 BIT RAM,测试是使用28335自身带的CPUTIMER0,进去时读一个CPUTIMER0的值,出来时再读一次CPUTIMER0的值,两个值相减,就认为是执行FFT所要的时间,同时,也用示波器观察28335 I/O翻转,两种方法的结果是一致的。

 

 

是不是SYSCLKOUT? 即CPU 时钟数? 我的一个FFT程序如下

    rfft_adc.Tail = &rfft.OutBuf;        // Link the RFFT_ADC_F32_STRUCT to
                                                   // RFFT_F32_STRUCT. Tail pointer of
                                                   // RFFT_ADC_F32_STRUCT is passed to
                                                   //  the OutBuf pointer of RFFT_F32_STRUCT
    rfft.FFTSize   = nRFFT_SIZE;
    rfft.FFTStages = nRFFT_STAGES;
    rfft_adc.InBuf = Signal_In;                     // Input buffer
    //rfft.InBuf     = Signal_In;                // Input buffer
    rfft.OutBuf    = &RFFT_Out_Buf[0];           // Output buffer
    rfft.CosSinBuf = &RFFT_Coef_Buf[0];          // Twiddle factor buffer
    rfft.MagBuf    = Signal_Mag;                 // Magnitude buffer
    rfft.PhaseBuf =  Signal_Phase;

    RFFT_f32_sincostable(&rfft);        // Calculate twiddle factor
    RFFT_adc_f32(&rfft_adc);            // Calculate real FFT with 12-bit ADC input

这段程序的执行时间 TI 给出的benchmark是 29466 cycle count, 我的系统是28335, 运行时钟是150M, RAM 使用片外RAM,测量下来所需时间是2508380*6.67ns = 16.7ms, 为什么会相差这么大? 我想了想,除了使用 片外RAM外,差别在哪里? 怎么会这样慢? 我在程序中使用了c28x   fast 库的。

Yang tianxi:

回复 囧:

16BIT数据总线连接到ISSI公司的256K RAM

FFT执行时间测量:1,用CPUTIMER0计数,进出FFT程序相减, 2,示波器观察I/O翻转,两者基本一致。

是不是SYSCLKOUT? 即CPU 时钟数? 我的一个FFT程序如下

    rfft_adc.Tail = &rfft.OutBuf;        // Link the RFFT_ADC_F32_STRUCT to
                                                   // RFFT_F32_STRUCT. Tail pointer of
                                                   // RFFT_ADC_F32_STRUCT is passed to
                                                   //  the OutBuf pointer of RFFT_F32_STRUCT
    rfft.FFTSize   = nRFFT_SIZE;
    rfft.FFTStages = nRFFT_STAGES;
    rfft_adc.InBuf = Signal_In;                     // Input buffer
    //rfft.InBuf     = Signal_In;                // Input buffer
    rfft.OutBuf    = &RFFT_Out_Buf[0];           // Output buffer
    rfft.CosSinBuf = &RFFT_Coef_Buf[0];          // Twiddle factor buffer
    rfft.MagBuf    = Signal_Mag;                 // Magnitude buffer
    rfft.PhaseBuf =  Signal_Phase;

    RFFT_f32_sincostable(&rfft);        // Calculate twiddle factor
    RFFT_adc_f32(&rfft_adc);            // Calculate real FFT with 12-bit ADC input

这段程序的执行时间 TI 给出的benchmark是 29466 cycle count, 我的系统是28335, 运行时钟是150M, RAM 使用片外RAM,测量下来所需时间是2508380*6.67ns = 16.7ms, 为什么会相差这么大? 我想了想,除了使用 片外RAM外,差别在哪里? 怎么会这样慢? 我在程序中使用了c28x   fast 库的。

Yang tianxi:

回复 囧:

16BIT数据总线连接到ISSI公司的256K RAM

FFT执行时间测量:1,用CPUTIMER0计数,进出FFT程序相减, 2,示波器观察I/O翻转,两者基本一致。

赞(0)
未经允许不得转载:TI中文支持网 » 关于C28X FPU的问题 , benchmark 的 cycle count对应时间是什么?
分享到: 更多 (0)