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

张开发
2026/4/13 11:06:21 15 分钟阅读

分享文章

1. 实战数字音频处理——引子 认识Xtensa HIFI DSP
DSP处理器和MCU处理器的差异一般而言MCU一般是冯诺依曼总线结构代码和数据使用同一条总线这样总线往往成为处理的瓶颈。DSP处理器是采用哈佛总线结构代码总线和数据总线分开有的DSP处理器为了增加数据流量数据的Load可以理解为读和Save可以理解为写也是分开的甚至有多条Load/Save总线。另外DSP有硬件乘法器和加法器甚至除法器开方器等‌这些硬件使得DSP处理数字信号处理任务如普通滤波自适应滤波FFT等会远远高于一般的MCU处理器。Xtensa HIFI DSPDSP处理器比较常见的有TI公司的TMS系列处理器有定点系列和浮点系列的价格相对较贵。Tensilica公司后被Cadence收购的Xtensa HIFI系列DSP处理器价格相对比较亲民。Xtensa也有更加高端的DSP处理器不过都是授权核通用的芯片不容易获得。而HIFI系列的DSP如HIFI2HIFI3HIFI4等可获得性很好价格也非常舒适。例如我现在用的这一个DSP平台50元上下就可以得到而且不需要额外的加载器和调试器一个火柴盒大小的设备连接上电脑就可以使用非常方便用python完成加载和调试。包括4个16位的A/D最多可以连接4路MIC一个DAC输出连接到一个3W的PA。通过USBHID连接到电脑在电脑上显示为一个双声道的USBMIC。最高处理能力200多MIPs用来开发声学方面的DSP项目是非常合适的譬如语音增强/降噪DOA定位/beamformingAEC/AFC等等。有需要的可以私信我。这个平台还有完整的软件仿真环境板上运行的二进制代码可以直接在仿真上运行非常适合问题定位。初识DSP的定点和浮点DSP一般都是定点的例如我们会见到q31_t,q15_tq7_t等数据类型定义对应Q31Q15Q7的定点数据类型。通常Qn的定点数据表示有n位数字表示小数部分整数部分是0数据表示范围用浮点表示是[-1.0,1.0)浮点f转定点i的公式if*(2^Q)fi/(2^Q)例如Q15,f0.5,对应i(2^15)*0.516384i1对应f3.0517578125e-005这也是Q15能得到的最高精度。当然还可以用16bit表示超过1的值如用Q2.13可以表示[-4,4)的数。如Qm.n可以表示范围是[ − 2 m , 2 m ) 的数精度还是 1 / 2 n 。 [-2^m, 2^m)的数精度还是1/2^n。[−2m,2m)的数精度还是1/2n。定点数占用的空间Q31 4字节Q15 2字节Q7 1字节。浮点数分为单精度和双精度浮点分别占用4字节和8字节。我们一般用单精度浮点就够了不仅省空间也节省运算量。不过单精度浮点也比Q15和Q7占用的空间大很多。所以我们在满足精度的要求下尽量用定点。不仅占用空间小而且计算更快。因为浮点计算单元如果DSP有浮点加速单元的话比较复杂处理的时钟拍数要比定点大很多。Hifi DSP的定点类型和运算HIFI3和HIFI4上后面简化叫HIFI内置有Q17.47Q15Q31,Q63等定点类型。有专门用于Q31Q31Q31Q15Q15Q15的指令可以同时进行2路Q31Q31,Q31Q154路Q15Q15的乘法(MUL)或者乘累加(MAC)。当然你也可以自己指定小数点位置用于适合你自己的数据输入输出范围。只要注意控制加法减法的饱和避免操作加法减法时溢出。我们展示一段代码一睹dsp定点算法实现的细节体会其高效性。 下面这一段代码实现了对一个2*N的数组求方差的操作(没有除2*N),同时得到均方差 注均值已经算好存放在mean中 2*N个输入的数据在xin2*N个输出到out。 out(xin-mean)^2varΣout / (2*N)ae_f32x2*py(ae_f32x2*)xin;ae_f32x2*pz(ae_f32x2*)out;ae_f16x4 div257AE_MOVF16X4_FROMF16((116)/N);varAE_ZERO64();for(i0;iN;i){ae_f32x2 deltaAE_SUB32S(*py,mean);ae_f32x2 squareAE_MULFP32X2RAS(delta,delta);AE_MULAAFD32X16_H1_L0(var,square,div257);*pzdelta;}循环中4条指令基本上也就是4个指令周期完成了2个Q31格式的数据的求方差并对均方差做累加的操作非常高效。Hifi DSP的浮点类型和运算HIFI上有浮点单元可以并行计算2个浮点运算如浮点乘法浮点除法浮点开方浮点定点转换等。浮点类型xt_float一个单精度浮点xt_floatx2 两个单精度浮点浮点类型的使用相对较少这里就不展示代码了在后面的实战中会涉及到。DSP是技能树上的非常重要的一个技能熟悉dsp的话进大厂会有很高的加分。希望读者能够通过系列文章充实自己有所裨益。下一篇《2. 实战数字音频处理——HIFI DSP 的定点FFT/IFFT以及加窗和OLA操作实践1》

更多文章