1. 实战数字音频处理——引子 认识Xtensa HIFI DSP

  1. DSP处理器和MCU处理器的差异
    一般而言,MCU一般是冯诺依曼总线结构,代码和数据使用同一条总线,这样总线往往成为处理的瓶颈。
    DSP处理器是采用哈佛总线结构,代码总线和数据总线分开,有的DSP处理器为了增加数据流量,数据的Load(可以理解为读)和Save(可以理解为写)也是分开的,甚至有多条Load/Save总线。另外,DSP有硬件乘法器和加法器甚至除法器,开方器等,‌这些硬件使得DSP处理数字信号处理任务如普通滤波,自适应滤波,FFT等,会远远高于一般的MCU处理器。

  2. Xtensa HIFI DSP
    DSP处理器比较常见的有TI公司的TMS系列处理器,有定点系列和浮点系列的,价格相对较贵。
    Tensilica公司(后被Cadence收购)的Xtensa HIFI系列DSP处理器,价格相对比较亲民。Xtensa也有更加高端的DSP处理器,不过都是授权核,通用的芯片不容易获得。而HIFI系列的DSP如HIFI2,HIFI3,HIFI4等可获得性很好,价格也非常舒适。
    例如我现在用的这一个DSP平台,50元上下就可以得到,而且不需要额外的加载器和调试器,一个火柴盒大小的设备,连接上电脑就可以使用,非常方便,用python完成加载和调试。包括4个16位的A/D,最多可以连接4路MIC,一个DAC输出,连接到一个3W的PA。通过USBHID连接到电脑,在电脑上显示为一个双声道的USBMIC。最高处理能力200多MIPs,用来开发声学方面的DSP项目是非常合适的,譬如语音增强/降噪,DOA定位/beamforming,AEC/AFC等等。有需要的可以私信我。这个平台还有完整的软件仿真环境,板上运行的二进制代码可以直接在仿真上运行,非常适合问题定位。

  3. 初识DSP的定点和浮点
    DSP一般都是定点的,例如我们会见到q31_t,q15_t,q7_t等数据类型定义,对应Q31,Q15,Q7的定点数据类型。通常,Qn的定点数据表示有n位数字表示小数部分,整数部分是0,数据表示范围用浮点表示是[-1.0,1.0)
    浮点f转定点i的公式:
    i=f*(2^Q)
    f=i/(2^Q)
    例如Q15,f=0.5,对应i=(2^15)*0.5=16384
    i=1,对应f=3.0517578125e-005,这也是Q15能得到的最高精度。
    当然,还可以用16bit表示超过1的值,如用Q2.13可以表示[-4,4)的数。
    如Qm.n可以表示范围是

c:/users/86178/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\86178\AppData\Local\Temp\arduino\cores\b5342b8f51c7a5f33a81df0845d289d9\core.a(core_esp8266_main.cpp.o): in function `__loop_end': C:\Users\86178\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/core_esp8266_main.cpp:168: undefined reference to `setup' c:/users/86178/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\86178\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/core_esp8266_main.cpp:168: undefined reference to `loop' c:/users/86178/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\86178\AppData\Local\Temp\arduino\cores\b5342b8f51c7a5f33a81df0845d289d9\core.a(core_esp8266_main.cpp.o): in function `loop_wrapper()': C:\Users\86178\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/core_esp8266_main.cpp:174: undefined reference to `setup' c:/users/86178/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\86178\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/core_esp8266_main.cpp:175: undefined reference to `loop' collect2.exe: error: ld returned 1 exit status exit status 1 Compilation error: exit status 1
07-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geastwind1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值