找回密码
 立即注册
查看: 780|回复: 7

请问STC32F系列单片机能不能代替DSP作高阶数字滤波?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-3-20 11:35:35 | 显示全部楼层 |阅读模式
看了STC32F系列的单片机介绍,这款芯片主频高,
有32位硬件乘除单元和单精度浮点运算单元,看起来性能不错.
不知道跑高阶窄带数字滤波的话,中心频率最高能做到多少?
下面是用滤波器工具生成的一段滤波代码,
哪位大佬能不能测试下用STC32F测试下运行速度.

float DigFil(invar, setic)
float invar; int setic;
/******************************************************************************/
/* Filter Solutions Version 2015                 Nuhertz Technologies, L.L.C. */
/*                                                            www.nuhertz.com */
/*                                                            +1 602-279-2448 */
/* 20th Order Band Pass Butterworth                                           */
/* Matched Z Transformation                                                   */
/* Sample Frequency = 300.0 KHz                                               */
/* Standard Form                                                              */
/* Arithmetic Precision = 4 Digits                                            */
/*                                                                            */
/* Center Frequency = 100.0 KHz                                               */
/* Pass Band Width = 2.700 KHz                                                */
/* Pass Band Attenuation = 1.2 dB                                             */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Input Variable Definitions:                                                */
/* Inputs:                                                                    */
/*   invar    float       The input to the filter                             */
/*   setic    int         1 to initialize the filter to zero                  */
/*                                                                            */
/* Option Selections:                                                         */
/* Standard C;   Initializable;            Internal States;   Optimized;      */
/*                                                                            */
/* There is no requirement to ever initialize the filter.                     */
/* The default initialization is zero when the filter is first called         */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* This software is automatically generated by Filter Solutions               */
/* no restrictions from Nuhertz Technologies, L.L.C. regarding the use and    */
/* distributions of this software.                                            */
/*                                                                            */
/******************************************************************************/

{
    float sumnum=0.0, sumden=0.0;  int i=0;
    static float states[40] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
    static float znum[21] = {
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        1.304e-31
    };
    static float zden[40] = {
        .4763,
        9.703,
        103.8,
        765.0,
        4334.0,
        2.e+04,
        7.79e+04,
        2.624e+05,
        7.778e+05,
        2.055e+06,
        4.885e+06,
        1.053e+07,
        2.071e+07,
        3.736e+07,
        6.201e+07,
        9.504e+07,
        1.348e+08,
        1.773e+08,
        2.166e+08,
        2.46e+08,
        2.598e+08,
        2.553e+08,
        2.333e+08,
        1.982e+08,
        1.564e+08,
        1.144e+08,
        7.746e+07,
        4.843e+07,
        2.787e+07,
        1.47e+07,
        7.077e+06,
        3.089e+06,
        1.214e+06,
        4.25e+05,
        1.309e+05,
        3.488e+04,
        7845.0,
        1437.0,
        202.3,
        19.63
    };
    if (setic==1){
        for (i=0;i<40;i++) states = 4.156e-10*invar;
        return 0.0;
    }
    else{
        sumnum = sumden = 0.0;
        for (i=0;i<40;i++){
            sumden += states*zden;
            sumnum += states*znum[i<21?i:40-i];
            if (i<39) states = states[i+1];
        }
        states[39] = invar-sumden;
        sumnum += states[39]*znum[0];
        return sumnum;
    }
}




回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-02 05:31:55

16

主题

702

回帖

2474

积分

金牌会员

积分
2474
发表于 2024-3-21 08:17:39 | 显示全部楼层
应该可以,你可以用官方工具测试一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-3-21 09:53:33 | 显示全部楼层
马上 STC8051H 出来了,TFPU 是 108MHz
截图202403210953306370.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-3-23 00:13:13 | 显示全部楼层
DSP是有很多物理计算单元的,很多复杂计算只需要很少的几条指令即可完成,这是单片机无法替代的,术业有专攻,这也是为什么很多MCU开始集成DSP运算单元,很多DSP也开始内置MCU小核,之所以向异构核心发展,就是因为彼此都不能替代。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2024-3-23 08:16:11 | 显示全部楼层
术业有专攻吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-4-19 22:28:40 | 显示全部楼层
数字滤波器就是执行乘加运算,STC32F执行一次32位有符号整数乘加运算大约为0.5us @30MHz,二阶数字滤波执行5次乘加运算,即大约2.5us/二阶,比如计算8阶滤波就是10us。
回复 支持 反对

使用道具 举报 送花

0

主题

1

回帖

10

积分

新手上路

积分
10
发表于 2024-4-20 16:07:27 来自手机 | 显示全部楼层
只要单片机足够快!软件算法是可以实现数字滤波器的!但是现在有硬件dsp了!即使是168mhz速度也是可以计算fir和iir滤波器!而且同时驱动显示器
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:265
  • 最近打卡:2025-05-01 07:25:06

0

主题

206

回帖

1522

积分

金牌会员

积分
1522
发表于 2024-9-29 17:05:34 | 显示全部楼层
bi4*** 发表于 2024-4-20 16:07
只要单片机足够快!软件算法是可以实现数字滤波器的!但是现在有硬件dsp了!即使是168mhz速度也是可以计算f ...

对对对
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 18:11 , Processed in 0.239001 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表