数字化声音时,如果量化精度为64级别是64,那么样本精度是什么

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

在物联网和云计算成为生活一部汾在行业媒体大肆宣扬之际,通过采用最先进的技术和优化设计老式电子元件并未停止前进的步伐。其中一个例子是模数转换器该器件现在可以超过每秒一兆次采样(MSPS)的速率实现32位分辨率,轻松通过传统的计量基准测试

这些高精度转换器可以显示高于16位的分辨率,规萣可比静态和动态特性并且在仪表仪器和大型通用采集系统(测试、设备认证)、专业系统(医疗应用和光谱学数字成像)等专用领域鉯外,它们已经进入许多过程控制应用、可编程控制器、大型电机控制以及电能输配等领域目前,几种ADC架构在精度方面不相上下;根据鈈同需求具体的选择视模数转换原理、逐次逼近寄存器(SAR)以及Σ-Δ而定,在数MSPS速率下,这些架构分别支持最高24位或以上的分辨率为24位或哽多,在几百kSPS速率下支持32位分辨率当面对这些分辨率和精度水平时,这些转换器提供的有用动态范围很容易超过100 dBFS(满量程)的神奇屏障用户面临的真正挑战体现在为要数字化的信号设计模拟调理电路,以及相关抗混叠滤波器的设计两个方面在过去的二十年中,采样速率和滤波技术已经有了很大的发展现在我们可以结合运用模拟和数字滤波器,在性能和复杂性之间达到更好的平衡

图1所示为适用于数據采集系统的这类分区的一个典型示例。在调节差分或非差分信号(放大、缩放、自适应和电平转换等)之后在数字化之前对后者进行濾波以满足奈奎斯特准则。根据ADC的过采样速率要使用额外的数字滤波来达到采集系统的规格要求。

由于对超宽输入动态范围的需求增加许多上述应用采用了最先进的高分辨率ADC。随着动态范围的增加系统性能预计会提高,模拟调节链会减小拥堵、能耗,甚至是材料成夲都会下降

在超快高分辨率模数编码器出现之前,一般通过以下办法解决动态范围问题:使用快速可编程增益放大器、更快的比较器和/戓并联若干ADC最后加上合适的数字处理模块,以实现强信号的数字化区分接近噪声水平的小信号。在这些陈旧并且现已过时的架构中這样做会带来复杂的电路,很难开发并且在线性度、带宽和采样频率方面都受到限制。当今的替代方案是借助更经济的现代ADC的高采样速率,达到运用过采样技术的目的以高于奈奎斯特定理要求的最小值的 FSE 速率对信号进行采样,可以通过处理和增加编码器的信噪比来执荇增益运算并因此增加有效位的数量。实际上量化精度为64噪声和热噪声被同化为白噪声,该噪声在整个奈奎斯特频带及以外均匀分布过采样之后,通过滤波和严格以最小所需采样速率(或2 × BW)限制有用频带频带每降低一个倍频程,噪声能量将降低3 dB如图2所示。换句話说过采样因子为4时最为理想,在理论上使信噪比增加了6dB;即是说增加了一位,如等式1所示:

图1.典型测量信号链

图2.通过添加数字抽取滤波器比较频谱噪声密度。

总之过采样有两个优点,一是可以提升信噪比二是可以放宽对位于ADC之前的抗混叠模拟滤波器的要求。

抗混叠滤波器:分区困境

理想情况下与ADC相关的滤波器,特别是那些负责解决频谱混叠问题的滤波器相比其精度,其幅度响应带宽必须尽鈳能平坦同时其带外衰减还要能满足其动态范围要求。过渡带一般要尽可能陡因此,这些抗混叠低通滤波器在特性上有特定的要求必须能消除寄生镜像、噪声和其他杂散音。根据具体应用还要特别注意相位响应,也要补偿任何过大的相移虽然有许多建议被认为属於基础建议,但是如果要将这些建议与指定的24位或32位转换器的要求结合起来,并且这些转换器的积分非线性误差仅为几LSB再加上其他类姒的静态和动态参数,有些建议实现起来会极其困难

如前所述,过采样在此非常重要因为它不仅能提升信噪比,还能放宽对模拟抗混疊滤波器规格及其截止频率的要求如图3所示,过采样分布在-3 dB条件下截止频率与阻带起点之间的过渡带

图3.过采样分布在-3 dB条件下截止频率與阻带起点之间的过渡带。

最新的技术为近年来显著提升的高精度SAR ADC转换速率提供了可能目前在18位分辨率下,此等转换速率在1 MSPS与15 MSPS之间相仳之下,具有同等分辨率的宽带Σ-Δ ADC的速率几乎要低一个数量级存在突出的延迟问题,并且其通带纹波太高无法用于数据采集系统、其他测量仪器仪表等应用。基本而言总体计量精度决定着后者的特性,这与静态(dc)和动态(ac)参数都有关系因此这些系统中的转换器和附带嘚模拟调理电路在规格上必须达到顶级要求。

这些规格包括失调、增益和对应的漂移误差、积分非线性(INL)和差分(DNL)误差等常见特性还包括信噪比(SNR)、谐波失真和杂散音(无杂散动态范围(SFDR))。SAR ADC在部分这些参数以及瞬态响应、模拟输入过载和零延迟方面具有明显的竞争优势(INL)为单次模式下多路输入系统的运行或采集的触发提供了保障。

相反除LTC2512和LTC2500-32以外,大多数SAR ADC不包括数字滤波器因此其运行不受一些不可避免的数字低通滤波的阻碍或限制,否则就会在计算精度、带通纹波、衰减阻带抑制、传播时间和功耗之间进行平衡。在大多数情况下用户无法控制这些Σ-Δ转换器的内部滤波器系数值,不得不凑合了事。

在对性能的角逐中,2014年凌力尔特公司(现为ADI公司的一部分)向客户推出了具有20位分辨率和真正线性度的第一款逐次逼近型ADC,将竞争对手打了个措手不及LTC2378-20是一款出色的转换器,在接近MSPS的所有其他竞争产品中仍然保持着自己的优势

LTC2378曾经的友敌,AD4020是ADI公司首款能以1.8 MSPS速率数字化10 V峰峰值差分信号的20位SAR ADC它结合了低噪声、低功耗以及LTC2378的所有特性:动态压缩、钳位电路、电荷转移补偿,支持使用低功耗精密放大器(高阻抗模式)等采用1.8 V电源供电,1.8 MSPS速率下功耗仅为15 mW。350 ns的转换时间创下纪录使其在延长采集时间或读取数据方面游刃有余。其采用10引脚MSOP或10引脚QFN封装与AD40xx家族的其他16位至18位成员相同。在–40°C至125°C温度范围内其规格囷运行完全有保证。

LTC2378-20和AD4020的采样速率分别为1 MSPS和1.8 MSPS为过采样带来了具有重要意义的可能性,特别是音频频段或更高频段为此,必须在外部FPGA或DSPΦ搭载定制型抽取滤波器如前所述,可以绕过后者以在必要时将其延迟降至最低。基于这些初级采样速率值考虑到0 kHz至25 kHz频段,相应的過采样因子约为16或32处理增益为12 dB至18 dB,同时还严格按照奈奎斯特定理简化了常规操作条件下的抗混叠低通滤波器。

ADC至DSP链路:一切皆为串行

菦年来半导体行业及其设计师圈子明显倾向于减小元件尺寸,使外壳引脚真正瘦身并且还要调整需要与SPI总线、同步串口等连接的几乎所有串行数字输入或输出。问题是这些转换器却没有留下用于抽取样本和控制ADC的各功能选项的串行接口。根据其规格这些串行接口兼嫆SPI或DSP串口,但实际并非如此它们最多隐藏了负责设置时钟信号节奏的移位寄存器,用于从器件中提取数据或者在配置期间注入数据。僦如所有这些SAR ADC一样LTC2378-20和AD4020在频率上要求串行时钟(SCK)在额定采样速率下,以20位为单位恢复数据由于数据读取阶段严格限制在采集时间(约300 ns)范圍以内,因此在转换期间必须将外部访问时的数字活动减至完全静音;并且要以1 MSPS的采样速率,在分配的时间内从采样恢复所有位时钟頻率必须达到60MHz以上。无论是产生这样的时钟频率还是要在接收器端实现的时间规格,对于负责从ADC收集数据的控制器上的接口来说这都昰严格的限制。LTC2378-20要求最低SCK信号频率达到64 MHz这意味着,它不能连接任何通用微控制器或搭载最高频率略微超过50 MHz的同步串口(SPORT)的DSPBlackfin处理器?家族的一些成员除外,如ADSP-BF533、ADSP-BF561,其速率可以达到90 Mbps因此,有人担心需要使用搭载了低抖动时钟产生电路相关的大型CPLD或FPGA。串行输出SAR ADC的大多数数字接口或多或少具有相同的时序和逻辑信号模式如图4所示。对于SDI配置输入除了级联模式之外,还对它提出了低得多的频率要求ADC采样周期的等效全周期时间为

故定义最大采样频率,其构成为:

其本身由输出数据的读取速率调理其中,

幸运的是AD4020的转换时间超短,为325 ns采樣速率为1 MSPS,采样时间为675 ns基于此,其串行数据读取频率低于33 MHz与DSP同步串口(如SHARC? ADSP-21479)相当,功耗也非常低

一款超低功耗的多通道系统

出于能耗、精度和操作模式选择灵活性的原因,同时也是出于商业考虑在这些应用中不能考虑基于FPGA的解决方案。要处理来自这些20位ADC的串行输絀并实现最优抽取滤波器只能使用DSP浮点处理器。

如今有许多数据采集系统都能通过大量信道同时采样。这就导致许多ADC并行运行同时甴同一个控制器控制,该控制器还要负责收集数据并将其存储在存储器中以供后续分析

ADC构建的系统不但现实可行,而且在性能、开发时間、能耗和紧凑性等方面也是可圈可点这些处理器具有支持8个模数数字化通道所需要的全部功能和外设,包括同步串行接口、不同时钟信号的发生以及触发转换等在所有SHARC处理器中,ADSP-21479是唯一一款采用低泄漏65纳米CMOS工艺制造的32/40位浮点DSP其优势是能大幅降低泄漏或静态电流,并苴其结温几乎呈指数级演进作为处理器及其外设频率和活动函数的动态电流也低于以标准或快速CMOS工艺制造的处理器。不足之处则在于楿比常规版本,其最大CPU频率下降了约30%-40%但仍然足以满足此类应用的需求。

ADSP-21479搭载了多种外设其中有一个特殊模块被称为串行输入端口(SIP),该模块能同时从同步运行的8个外部串口发射器接收信号流以及时钟和同步信号事实上,可以将与AD4020类似的8个ADC直接接入该接口从而接入处理器。如图5所示8个通道有自己的IDP_SCK时钟、IDP_FS同步和IDP_DAT输入信号,一旦解串行它们的数据会自动复用到32位、8字FIFO存储器中,然后通过64位DMA数据包或CPU执荇的读取操作传输到SHARC内部RAM。DMA传输操作中SIP由运行于自动乒乓模式下的双索引DMA通道伺服。此外ADSP-21479还搭载有四个精密时钟发生器(用于低抖動,缩写为PCG)能够从内部或外部源(TCXO)生成独立的时钟和同步信号对。通过编程20位内部分频器可取得这些激励的频率、周期、脉冲宽度和相位每个PCGx生成单元提供由一对AD4020转换器共享的一对CLK/FS信号,但在转换阶段时钟必须静音所以需要一个逻辑门,以便把IDP_FS信号和IDP_SCK信号结合起来形荿SCK时钟图5中的时序图显示,一旦转换时间tconv已经过去必须尽可能快地以33.3 MHz的速率,从当前样本中读取20位数据以在采样频率中维持1 MSPS的神奇屏障。大约600 ns后数据被传输到其中一个SIP缓冲器中,此时可以使用IDP_FS或CNV信号启动新的转换周期使AD4020进行新的转换操作。使后者的最大转换时间達到325 ns这对应于CNV信号的脉冲宽度,即12个IDP_SCK时钟周期或360 ns总之,如图5中的时序图所示一个完整的扫描周期需要32个IDP_SCK信号周期,总时间为960 ns因此其最大采样速率为1.040 MSPS。

同样ADC LTC2378-20可以与ADSP-21489相关联,因为它能够在高达50 MHz的外设时钟频率下工作在这种情况下,采样速率为900 kSPS如表1所示。遗憾的是静态电源电流(Iddint)或后者的泄漏电流远高于动态电流,使得该配置的总功耗超过可用功率达到不可接受的程度。

假设将这些转换器用于过采样模式如此,就有必要提供一个能满足上述要求且针对目标频带定制的抽取滤波器在所需计算能力和功耗方面尽量降低对DSP的影响。目前用于改变采样速率的程序已经成为一种标准的数字信号处理操作,可以用内插器和数字抽取器实现出于相位响应线性度考虑,低通抽取滤波器采用有限脉冲响应(FIR)拓扑结构可以根据效率要求采用不同的拓扑结构:

  • 抽取专用直接或优化FIR滤波器

  • 级联多速率FIR滤波器(1/2频段)

无论是FIR还是IIR类型的多相滤波器都是抽取或插值滤波器最有效的实现方案之一。然而传统数字处理方案要求在抽取之前进行滤波。在此假设下1/M抽取滤波器由低通滤波器和紧随其后的采样频率降级组成(图6a)。预先对信号滤波避免频谱混叠,然后以M-1的速率定期消除样本然而,常规FIR或其他结构针对这些抽取滤波器的直接实现方案存在资源浪费问题因为被拒样本是几十甚至几百次累乘(MAC)的结果。使用分解荿若干滤波器组的多相滤波器或是针对抽取进行优化的滤波器可以基于某些特点(如图6b所示)形成高效的滤波器。

凭借FIR滤波专用SIMD架构和硬件加速器以及针对数字信号处理而优化的指令集,SHARC ADSP-21479特别适合实现这些类型的滤波器每个SHARC处理单元都有一个32/40位乘法器累加器,能够在266 MHz嘚CPU频率下每秒实现533次定点或浮点MAC计算。然而对于一些存在显著延迟(房间均衡或音效)的应用,需要增加计算能力使内核从诸如FIR、IIR、FFT滤波等密集和持续乘法运算中解脱出来,用专门的硬件加速器去执行这些运算如此,用户就能完全自主决定将CPU用于计算需要执行复雜搜集的复杂算法。FIR滤波专用加速器有专门的本地存储器用于存储数据和系数,并具有以下特征:

图6a和6b.常规抽取滤波器和采用多相方案嘚抽取滤波器

支持IEEE-754定点或浮点32位算术格式

有四个并行运行的累乘单元

支持单速率和多速率处理模式(抽取或插值)

一次简单迭代可以处悝最多32个FIR滤波器,总共多达1024个系数

ADSP-21479的加速器的时钟速率与系统时钟或PCLK外设的速率相同为CPU CCLK时钟频率的一半;即133 MHz。基于此其总计算能力为533 MAC/秒。加速器不要求执行指令;其运算由特定寄存器的配置决定并且完全依靠DMA传输在内部和/或外部存储器之间移动数据。

显然该加速器能以最优方式执行多速率滤波器的实现方案(插值或抽取)。由于简单的抽取滤波器仅为M个输入信号提供一个输出结果因此,输出速率仳输入速率低1/M倍这种优化型FIR滤波器的实现方案没有采用复杂的多相滤波器组,因为后者需要大量的存储器指针实现起来非常复杂;相反,该方案只是把M-1个样本的输出搁置起来避免执行这些计算,并且只计算能产生有用样本的数据这就消除了浪费,结果运算次数以M-1嘚比率减少——在本例中为15——从而大大地节省了CPU周期。然而在这样的抽取速率和如此短的计算窗口下,加速器不如有两个计算单元的內核有效并且在信号从一个过滤器传到另一个过滤器的过程中,其DMA通道因被重新编程会造成不利影响如果在SISD模式下用一个计算单元实現,则这类滤波器在CCLK周期数方面的成本可表示为:

N为滤波器的系数的个数M为抽取速率。

对于这种抽取滤波器一次迭代的实现成本FIR滤波器条件下约为150个周期(源到汇编器21k),在0 kHz至24 kHz频段纹波规格为±0.00001 dB,在62,500 SPS采样速率下带外衰减为-130 dB。这款滤波器有97个系数(以32位FP IEEE-754格式量化精度為64)其响应如图7所示,该图是用MATLAB? Filter Designer制成的对于接入的SIP或ADC的每个活动通道,响应以该采样频率在DMA中断实例中重复出现

图7.抽取滤波器的濾波器响应。

对于实时和DSP负载滤波操作以62.5 kSPS的频率重复,代表9,375,053个CCLK周期而8个ADC转换通道的重复频率则略多于8倍,因为每个滤波器的存储器指針值都存储在SHARC数据地址生成器中可以实现快速保存和恢复。这相当于在SISD模式下,一个SHARC DSP为每秒8000万个执行周期(或80 MIPS)在SIMD模式下,由于两個处理单元并行运行则为该值的一半。在前述两种模式下这8个抽取器FIR滤波器在执行时,分别以30%和15%的速率以及266 MHz的时钟频率占用ADSP-21479

虽然转換器的功耗可以从其规格中轻松、准确地推算出来,但处理器的功耗则要困难得多因为处理器功耗的计算公式涉及多个参数,并且实时條件和工作模式会对其造成极大的影响这里虽然没有详细说明,但读者可以在相关技术笔记中轻松找到与ADSP-214xx和ADSP-21479处理器各组件功耗估算相關的说明,其中考虑了功能模块的活动、静态电流结温、电源电压值、使用的输入输出引脚数、各种外部频率和容性负载依据图5中的功能描述,针对DSP和ADC的若干组合给出了与DSP在这类抽取滤波应用中活动情况相对应的功耗。对于这些搭载四个或八个ADC的相关DSP变体需要根据功能容量、输入/输出的数量、处理器的计算能力以及ADC的整体性能确定其功耗。凭借超低的静态电流以ADSP-21479及其八个SAR ADC集群为核心构建的解决方案鈈但是功耗最低的解决方案,同时提供丰富的滤波算法选择和其他数字功能在整体性能方面也是出类拔萃。

这个多通道数据采集系统(DAQ)的唎子同时证明实施数字信号处理任务不一定要使用FPGA,浮点DSP更适合高精度SAR ADC尤其是在高度关注功耗的情况下。

试验次数: 20次/人

为了显示本系统設计性能的优越性我们选择 PC 机与之对比。 PC的配置性能如下:

表2 PC与DE2平台运行MFCC系数提前速度对比

表3 PC与DE2平台运行端点检测速度对比

语音识别的運行时间与端点检测后截取出来的语音帧长有关在本系统中,将语音信号以 256 个语音采样数据为一帧( 8Khz 采样率)以下运行时间对比是基於三段分别为 13  13  16 帧的语音数据进行的运行时间对比:

表4 PC与DE2平台对三段语言识别运行时间对比

 MFCC 系数提取中,包含大量的复杂运算: FFT 运算、取对数、浮点乘除法等等尽管 PC 机的主频很高,但其在这些复杂的数字信号处理中运算效率不够高计算一次需要几个时钟周期,而我們设计的基于 FPGA 的数字信号处理采用并行处理方式以较少的资源消耗换取了较大的性能提升。

而在端点检测中只有 Fir 滤波部分需要大量的塖法运算,其他部分大致都是加法和判断处理状态转移过程此时 PC 主频高的优势得以发挥,拉近了与硬件实现方法的差距

II 实现,并非全硬件实现所以最终两者性能差距大致在 6 倍左右,这已是一个非常好的成绩完全满足本系统设计的要求了。

我们选择了较为有说服力的:国家自然科学基金资助项目 (

表5 本方案与竞争方案对比

特征提取时间(模板形成时间)

分析两方案的异同本方案采用相对流行的 MFCC 语音特征提取办法,而对比方案采用 LPCC 语音特征提取办法就计算复杂程度而言, MFCC 的运算量较多本系统充分利用 Cyclone

在识别部分,两方案均采用 DTW 识别算法而竞争方案采用了硬件实现的方法,性能较我们好

就总体情况而言,若同为 10 个参考模板本方案模板形成与识别的总时间在 0.4s 左右,而竞争方案模板形成与识别的总时间在 0.7s 左右我们以合理的设计思路、较低的设计成本取得了良好的性能参数。

IDE 平台运算后提取出来的數据:

IDE 软件平台上采用 Nios 处理器从 AVALON总线上读取上述矩阵进行 MFCC 系数提取后的数据截图从图中的数据可以看到,两者间的绝对误差大约保持在 0.0001 咗右这个精度已经可以满足本系统的要求。

CORIC 对数运算是属于 MFCC 系数提取模块的一个部分尽管上文已经对 MFCC 特征提取误差范围做出了评价,泹由于在整个 MFCC系数提取中只有对数运算没有采用标准的直接求取法来求解(事实上也很难采用直接求解法在硬件平台上求解对数),所鉯对其做误差评价也是很有必要的

图中蓝线为标准对数运算的结果,而红线为我们在 FPGA 端设计的对数运算结果从图中可以看出,我们设計的 CORDIC 对数算法仅在约 2.97—3.03 的范围内产生误差其最大误差产生在输入值为 3的时候,此时: ln(3)

作人机友好交互同时系统利用DE2的外扩插槽扩展自巳设计的射频识别读卡器和CAN总线接收器。

在设计过程中充分考虑SOPC系统的特色,充分发挥了SOPC系统在数字信号处理中的并行运算优势和Nios自定義指令加快程序运行速度的优势下图为本系统的SOPC builder定制图:

RFID 识别模块采用的是ZLG500B系列的射频识别模块,而Mifare 卡则采用NXP公司的MF1S50系列射频卡该模塊基于NXP高集成度读卡芯片MFRB500。当读卡模块初始化工作完成后便开始监测 Mifare卡,Mifare卡一共有五种状态以下是Mifare卡的状态转移图。

ID  卡是客户身份卡装载客户的ID信息和自行设定的48bit密码,当客户刷卡成功蜂鸣器提示一重认证通过,开启语音识别认证确保门禁系统的安全。

本模块模擬监控实验室温度的过程由于在实际实验室中,各种干扰信号及通讯距离较远故本模块采用CAN总线进行通讯。CAN(Controller Area Net)是一种现场总线主要用於各种过程检测及控制,其具有抗干扰性强、通信距离较远等优点在本模块的设计框图如下:

图11  环境参数监控模块原理图

本模块采用SJA1000做為CAN总线控制器,CAN总线收发器则采用CTM1050T高速隔离收发器在实物设计中,我们选择对环境的温度进行实时监控如果要对其他的环境参数进行監控,只需更换传感器即可

环境参数实时采集卡的设计基于AT89S51单片机,单片机采集温度数据后将温度h数据通过CAN总线发送到Nios II。下图为环境參数采集卡CAN总线网络连接图:

本模块要实现的功能是采集语音信号并对其进行FIR滤波、语音数据归一化、语音的端点检测处理。

语音采集蔀分采用DE2板上的WM8731进行设计通过I2C总线设置后,WM8731就会一直工作在设定的模式中语音采集单元包含一个PLL,一个I2C总线控制器、一个左对齐模式丅的语音采集控制器

图13  语音采集控制器的采样图

从图中可见,左对齐语音采集过程一共有19个脉冲其中前16个脉冲为有效语音数据提取脉沖,后三个脉冲为将来处理扩展预留有效语音提取出来之后便存入SRAM中。本模块通过计数器从启动录音开始,自动录制4s的语音信号

语喑归一化处理典型的计算公式为:DATA/MAX(DATA),如果按照这种标准归一化处理则需要消耗2个硬件乘法器资源。本着节约片上资源的设计理念我们創新地提出了一种经过简化的归一化处理模型,该模型只需移位即可实现归一化运算流程如下:

第一步:先取语音数据的最大值MAX(DATA)。

第三步:将归一化运算由DATA/MAX(DATA)改为DATA/m在数字电路中除以2^n只需简单的移位即可实现。

鉴于我们这里将16位的原始语音归一化为8位的小数所以只要将每┅个语音数据右移(n-8)位即可。当n小于8时则无需再移位。

经过修改后的归一化运算运行速度更快,资源消耗更少其不足在于牺牲一點采样精度而已。

由于原始录入的语音高频部分的频谱比低频部分的成分少为此要在预处理中加入预加重处理,预加重的目的是提升高頻使得信号的频谱变得平坦。一般采用的是一阶高通滤波器系统函数为 。我们利用了DSP Builder设计了一阶FIR滤波器方法如下:
第一步:由系统函数得到差分表达式:

设计的FIR模型顶层文件如下:

从DSP builder的截图可以看出,Fir滤波器的输入是16位的Q8定点小数运算后输出也取16位Q8定点小数。下图為Fir在Quartus II的仿真图:

我们在MATLAB对该仿真结果进行验证:

由于原始数据中含有噪声和无声段以及静音段为了获取有效语音数据,必须从原始数据Φ截取有效的语音数据在端点检测中,我们把语音分为:静音段过渡段,语音段结束段。语音端点检测状态转移图如下所示:

图17  语喑的端点检测状态图

端点检测后的语音数据仍保存于SRAM中我们将DE2板上的512KB的SRAM划分为5个区:地址0——0x7fff为原始语音数据保存区,0x8000——0xffff为经端点检測后的第一段语音数据(在端点检测之前已对该段语音数据进行归一化处理与Fir滤波处理)保存区0x10000——0x17fff为经端点检测后的第二段语音数据保存区。0x18000——0x1ffff为经端点检测后的第三段语音数据保存区0x20000——0x3ffff(0x3ffff 是SRAM的最终地址)为将来扩展而预留。

下图为语音预处理模块处理我们录进詓的“大家好“效果图本图是通过DE2控制面板软件读取SRAM前256KB数据(地址:0——0x1ffff)在MATLAB软件上画出来的图形:

图18 语音的端点检测效果图

从图中可鉯看出语音预处理模块可以很好地完成Fir滤波、语音归一化、语音端点检测的任务。

在设计之初我们曾计划将MFCC模块做成一个Nios II的指令,以此加快其对语音数据的处理速度但是每次MFCC运算的输入数据为256Byte,如果将MFCC做成Nios II的指令这就意味着需要Nios II从SRAM读取(搬运)这大量的语音数据。此時Nios II的工作效率和最终系统的运行速度将会大大降低所以我们将MFCC模块做成了一个Avalon总线的从设备,使用DMA来为它搬运数据设计结构图如下:

圖19  识别部分整体设计结构图

在介绍MFCC中各运算单元实现步骤之前,有必要详细说明一下本系统的数据格式变换数据变换的原因下文会有讲解。在上文中提到语音经过归一化处理后,成为16位的Q8格式小数语音信号整个MFCC数据格式变化如下图所示:

MFCC 特征提取模块包含:FFT运算、数據取模运算、Mel滤波器运算、对数运算、DCT离散余弦变换、一阶倒谱提升。由于篇幅的关系在此仅选择其中最复杂的三个部分进行介绍。

在FFT運算单元设计之初我们有两个设计方案:浮点型FFT和定点型FFT。两者的区别在于:前者计算的值的范围大而后者所能计算的范围较小。在湔文我们提到在本系统中语音归一化处理后变为8位有效数据,如果采用浮点FFT则得将原来的八位数据扩展为32位,而采用定点的FFT则只需在原来数据位宽的基础上扩充一倍即可无论逻辑资源的消耗、乘法器资源的消耗还是FPGA内部存储资源的消耗都是定点型FFT比浮点型FFT来得少。基於上述原因本系统采用定点FFT。

定点FFT设计的关键就在于蝶形结单元的设计和地址产生逻辑的设计蝶形结是FFT处理器的基本运算单元,本模塊的蝶形结消耗了8个硬件乘法器一半用于数据的实部相乘,另一半用于数据的虚部相乘鉴于Cyclone II的乘法器均为9bit,因此我们在蝶形运算单元將原来的8位小数扩充为10位组成高8位为整数位,低10位为小数位的Q10格式数据这样即充分利用了现有资源又提高了FFT运算的精度。蝶形结采用鋶水线设计数据输入到输出有6个时钟周期的延迟,由于蝶形运算数据的连续输入所以每计算一次蝶形结只需一个时钟周期。

FFT 模块设计嘚难度主要在地址产生逻辑地址产生逻辑的设计直接影响FFT模块的性能和FFT运算结构。我们的FFT地址产生模块按照标准FFT地址跳变方式设计并满足蝶形运算单元流水线运算的需要为了得到高速的FFT处理速度,我们在FFT模块中开辟了两个RAM数据存储区以此组成典型的乒乓操作模式:在FFT苐一级运算中,数据从RAM1经蝶形单元计算存入RAM2在第二级中则正好相反,依次类推……下图为FFT整体设计框图:

在这种设计结构下计算一次蝶形运算只需要一个时钟,处理速度达到同类设计结构的最高极限经Quartus II综合后FFT模块的时钟可达162Mhz,消耗的逻辑资源约为700多在100Mhz时钟下,计算┅个256点FFT的时间不到11us达到了数据高速处理的目的。以下为FFT模块仿真图:

0.97911i两者相差不大,定点FFT运算模块与MATLAB计算的结果相比存在小小误差

為了更直观地验证FFT模块计算的正确性,对一帧实际语音数据进行FFT计算:下图中蓝色代表FFT 模块对一帧语音数据经过FFT 运算后的频谱图红色代表同样的语音数据是用MATLAB 指令fft(data)运行的仿真图,可以看到我们自行设计的模块能达到应用的要求并且与MATLAB软件有同样的效果。

图23  一帧语音数据嘚频谱图

MFCC (Mel-Frequency Cepstral Cofficients)的分析着眼于人耳的听觉特性因为,人耳所听到的声音的高低与声音的频率并不成线性正比关系而Mel频率尺度则更符合人聑的听觉特性。所谓Mel 频率尺度它的值大体上对应于实际频率的对数分布关系。Mel频率与实际频率的具体关系可用下式表示:

这里实际频率f 的单位是Hz。根据Zwicher 的工作临界频率带宽随着频率的变化而变化,并与Mel频率的增长一致在1000Hz 以下,大致呈线性分布带宽为100Hz左右;在1000Hz 以上呈对数增长。类似于临界频带的划分可以将语音频率划分成一系列海明窗滤波器序列,即Mel 滤波器组

在本系统中,此MEL滤波器组是一个24阶嘚海明窗滤波器此滤波器系数是一个24X128的矩阵,而在这个滤波器系数组中有许多的系数都是0,如下图示:

从图中可以清晰看到MEL滤波系數组大部分元素均为0。对该系数组在MATLAB下调用plot函数绘图可以看到Mel滤波器系数组的图形:

从上图可以发现Mel滤波系数组每一阶的非零数据是不相哃的也就是说想在FPGA上构造一个与C语音类似的稀疏矩阵,难度很大而如果将整个滤波系数矩阵的24*128个系数均存入FPGA的存储区中,又会造成非瑺大存储资源浪费

为了以最少的资源、最快的速度实现Mel滤波器,我们将Mel滤波系数组设计成单一状态转移结构即采用一个计数器,给予烸一级Mel滤波一个特定的值从Mel滤波计算开始,该计数器便开始计数利用该计数器便可决定Mel滤波器的计算状态。采用这种设计方式便可在FPGAΦ仅仅保存Mel滤波系数中的非零系数且综合后的运行速度可达180多Mhz。下图为Mel滤波器第一阶计算的结果:

图26  Mel滤波器第一阶计算仿真结果

MFCC  中语音信号的幅度谱在每一个滤波器组中累加将得到一个较大的加权值算法中需要对各个加权值取对数来达到压缩数据的目的。

(1)FPGA对数算法運算方案对比

通常情况下FPGA实现对数运算的方法一般采用一下三个:

方法一:采用查表的方式来实现

方法二:采用泰勒级数来近似这个函数也就是:

对比三个方法,其中方法一的实现最为简单但是方法一的计算精度与所制作的表的大小成正比,也就是说采用方法一实现较高精度的对数运算将要耗费巨大的存储器资源显然在本系统中并不适用。

而方法二和方法三在其收敛区间上均可以取得较好计算结果。在方法二中每一个级数的计算需要3到4个的硬件乘法器。如果采用各级共享乘法器的设计方法则计算一次对数需要较长的时间。而如果使用流水线结构设计又会消耗大量的乘法器资源。

采用方法三的CORDIC算法具有突出的优势:不需要硬件乘法器所有运算只有移位累加;鈳以使用流水线方法,以提高工作频率与效率;也可以使用循环迭代方法以节约硬件资源。其计算精度与运算迭代次数成正比(也就是邏辑资源)我们设计的15次流水线迭代的CORDIC对数运算单元消耗的LE约为1100左右。

对比方案二和方案三显然方案三在各个方面都具有突出的优势。故本系统采用CORDIC算法实现对数运算

(2)CORDIC对数运算实现方法

三角函数的CORDIC算法最初由Jack Volder提出,应用与实时导航的数字处理John Walther等人将CORDIC理论进行了擴展。现在CORDIC算法已经应用与众多领域

本文不涉及过多的理论,关于CORDIC的资料可以参考《A survey of CORDIC algorithms for FPGA based computers》一文要实现CORDIC对数运算的关键就是找到它的迭代哆项式。本系统采用的是利用CORDIC结构实现双曲线坐标变换而双曲线函数可以很方便转换为对数函数,在本系统中采用的迭代方程推导如下:

进一步分析这一迭代方程对该多项式迭代后的结果为:我们所需的ln(t)等于2* 。为了省去乘2这一步我们再将迭代多项式优化为:

在此迭代哆项式下,只需令x的初值等于t+1y的初值等于t-1,z的初值等于0经过n次迭代后,ln(t)= 

通过对后一个多项式的迭代运算,我们就可以得到所需的对數运算结果需要注意的是,在这个CORDIC迭代方程中无法满足整个自然域的实数运算此时可以通过简化公式进行化简:

可以发现, 正好是浮點格式数据也就是说,只要输入CORDIC对数运算的数据为浮点格式就可以轻松处理大范围的实数。

下图为对数运算在Quartus II仿真结果:

(3)定点小數转浮点格式小数的实现方法

上文提到在对数运算单元中,输入的数据为浮点制的格式但我们之前的数据一直都采用定点小数格式,所以必须在对数运算之前将定点格式的数据转换成浮点格式的数据

定点转浮点格式采用状态机的方法设计,下图是其状态转移图:

图28  定點转浮点格式状态转移图

按照这一流程便可将原来的32位Q16格式数据转换为CORDIC对数运算设计的浮点格式数据

下图为定点格式转浮点格式的Quartus II仿真結果:

图29  定点格式转浮点格式仿真结果

从图中可以看到,输入32位Q16格式0x.0625

随机密码产生模块采用伪随机序列(也称为m序列)的原理进行设计。伪随机序列在通信、雷达、导航以及密码学等重要的技术领域中获得了广泛的应用在本系统中,随机密码起到了非常重要的作用在烸次语音识别之前,系统通过随机序列得到随机数要求用户录入相对应的语音密码,这就相当于扩大了系统密码库即相当于将10个语音密码扩展为1000个语音密码。伪随机序列采用移位反馈寄存器设计下图为设计顶层结构图:

图30  随机密码产生顶层结构

在伪随机序列产生的这些移位寄存器中,不允许全零的状态出现所以我们设置了一个延时复位单元,在系统上电后一段微小的时间后图中的所有移位寄存器嘟会被置1。下图为随机密码模块仿真图:

在本系统中定制了基于Nios II的DTW计算指令,DTW的计算结果取值范围较大一般从几百到几十万,而用于計算DTW的MFCC系数的值大多从0到正负十几之间如果此时继续采用定点数据,显然已经无法满足系统要求所以,我们自己设计定制了计算DTW的浮點Nios指令

1 )定点Q16格式数据转浮点格式数据

3 )浮点欧式距离计算指令

4 )浮点数据大小比较指令

5 )浮点数相乘指令

通过这些指令的定制,使得夲系统在DTW识别算法的计算时间缩短了4.12倍:

表6  自定义指令运行时间对比

可见在Nios中自定义指令可以获得很好的性能提升幅度需要注意的是,茬Nios IDE中如果直接定义浮点型变量无法直接输入到自定义指令中进行运算,所以本系统采用alt_u32型变量来“装载”浮点变量当然,这样处理后就不能在Nios IDE中直接采用+-*/等运算符直接对这些变量进行运算了,只能采用自定义的指令来操作

本系统采用了两个Nios II处理器,一个负责识别算法实现另一个则负责与上位机的TCP/IP网络通信等。

系统上电复位后液晶屏上将显示系统初始化成功,将等待用户刷卡由串口接受合法用戶的ID号,非法用户将无法进入下一步语音识别并在液晶屏上显示非法ID,验证ID 合法后产生随机密码并液晶回显,并开始采集四秒钟语音數据进入语音识别验证。最后系统通过TCP/IP网络发送识别结果给远程监控中心下图为CPU_1的程序流程图:

在孤立词语音识别中,最为常用的方法就是DTW 动态时间规整算法它与其它识别算法如HMM算法在相同环境条件下,识别效果相差不大但HMM算法的实现要复杂得多,这主要体现在HMM 算法在训练阶段需要提供大量的语音数据通过反复计算才能得到模型参数,而DTW算法的训练中几乎不需要额外的计算在本系统中考虑到算法复杂程度以及对系统速度性能的要求,选择兼顾识别效果和低复杂度的高效算法DTW

(1)首先读取SD卡里面的语音模板库,客户的语音参数模板都是以经过特殊处理的二进制文件存放在SD卡内Nios II读入文件,作为语音特征矢量R

(2) 特征参数提取模块组件处理得到的实时采集的测试客戶模板,作为语音特征矢量T

(3) 比较T和R之间的相似度,即使计算累积距离距离越小则相似度越高。这一失真距离可采用动态规划的方法。下图是把测试模板的各个帧号在一个二维直角坐标系中的横轴标出把参考模板的各个帧号在纵轴标出,通过这些帧号的整数坐标画出┅些纵横线即可形成一个网络交叉点表示测试模式中某一帧与训练模式中某一帧的交汇点。DP算法可以归结为寻找一条通过此网格中若干格点的路径路径通过的格点即为测试和参考模板中进行距离计算的帧号。路径的选择必须从左下角出发在右上角结束,且生长点的斜率必须在1/2到1之间如下图所示。

FAT 是Microsoft推出的文件系统具有高度兼容性,目前仍然广泛应用FAT(File Allocation Table)是“文件分配表”的意思。顾名思义就是用來记录文件所在位置的表格,它对于存储盘的使用是非常重要的假若丢失文件分配表,那么存储盘上的数据就会因无法定位而不能使用叻

在本系统中,FAT文件系统在一张1G的SD卡中实现所以选择移植FAT16文件系统。FAT16使用了16位的空间来表示每个扇区(Sector)配置文件的情形故称之为FAT16。

要實现FAT16文件系统最关键就是对FAT16目录项32个字节的操作,下表为该目录项32个字节的定义:

在SD卡中进行读取二级目录文件的程序流程图:

如果要進行三级目录文件读写只需重复上述黄色部分的流程即可。而如果要进行根目录下文件读写则只需去掉黄色部分流程。由此可见其實文件夹在FAT16文件系统中将会占1个簇的存储空间。

CPU_0 负责的工作在实时操作系统下以多任务的形式是与电脑进行TCP/IP网络通信、收集实验室环境数據和门禁识别结果等程序整体框架如下图所示:

Altera 公司已经为用户移植好了uC/Os-II实时操作系统,并将其像外设驱动一样当作一个软件模块集成箌了Nios II IDE在Nios II IDE环境下,用户不用修改其源文件对uC/Os-II的配置只需通过图形界面就可以实现,使用起来非常方便正是这些原因,在Nios系统中使用uC/Os-II操莋系统非常方便

LWIP 全称为Lightweight IP TCP/IP stack,是一个轻量级的TCP/IP协议栈其主要特性是以最小的资源占用实现完整的TCP/IP协议,因此特别适用于嵌入式系统Altera公司巳经在Nios处理器上为用户移植好了LWIP,并内嵌到Nios IDE中所以在本系统的软件设计中,我们很方便地将uC/Os-II和LWIP结合到我们的系统中并大大减少了系统開发的时间。

网络通信采用DE2板载DM9000A以太网控制器芯片它集成了介质访问控制子层(MAC)和物理层的功能,它为嵌入式系统实现的以太网连接提供了良好、便捷的解决方案

DM9000A 与LWIP的衔接通过LWIP提供的几个重要的结构体实现,如下图所示:

例如:netif结构体作为LWIP中网络接口的基础数据类型描述了网络接口的基本属性以及输入、输出函数。alt_lwip_dev结构体描述了符合LWIP规范的网络端口设备alt_lwip_dev_list:设备链表。在LWIP定义的这些结构体类型的基礎上我们在主程序中定义了针对DM9000网络接口的一个结构体:alt_avalon_dm9k_if。有了这个结构体DM9000的寄存器读写操作开始与LWIP的工作机制发生了联系。

2 )网络應用程序的开发

移植成功LWIP后就能够利用socket API来完成应用程序的设计。本系统基于Nios IDE提供的simple_socket_server模板进行网络应用扩展这使得TCP/IP网络通信的实现更加簡单。

网络Socket通讯过程:先初始化Socket然后与端口绑定(bind),对端口进行监听(listen)调用accept阻塞,等待客户端连接在这时如果有个客户端初始化一个Socket,嘫后连接服务器(connect)如果连接成功,这时客户端与服务器端的连接就建立了

当连接建立后,我们就可以在sss_handle_receive()函数中建立自已在TCP/IP连接中所需的任务如下图所示:

当TCP/IP连接断开后,再把在TCP/IP连接中建立的任务删除即可

RFID 选择现在最为常见的MF1S50系列。系统上电复位读卡芯片装载正确的密钥到非易失性密匙存储器,等待有RFID卡的到来启动卡的验证 ,将验证命令发送到卡当从卡接收到第一个报文令牌后,微控制器必须检測通信状态标志如果通信到目前为止保持成功,则启动卡验证的第二部分卡将会以第二个报文令牌进行响应。然后微控制器必须检测通信状态标志如果验证已成功,则与MIFARE卡继续进行CRYPTO1加密下的通信读出ID,卡置为挂起状态蜂鸣器响,发送ID号 在RFID射频识别的设计中,需偠注意的是:RFID射频识别的流程如下图所示:

在实际设计中环境参数采集卡是安装在离主控板(DE2板)较远的地方,直接采用主控板进行数據采集显然不合理所以在此我选择低价、应用普遍的89S51单片机完成环境参数采集的任务。采集卡的任务就是通过相应的传感器采集环境参數再通过CAN总线将环境参数发送到主控模块中去。

其程序流程如下图所示:

图41  环境参数采集卡程序流程

本系统设计了一个简单的监控软件对门禁系统实时进行远程监控。监控软件上可以看到门禁监控系统采集的环境参数变量和门禁识别结果下图为软件运行截图:

图42  上位機监控软件运行截图

除了使用监控软件进行远程监控外,也可以使用Windows自带的远程登录命令登录到监控系统中下图为采用windows自带的telnet命令登录夲系统后的截图:

CPU1  和CPU2有各自的存储区,为了他们之间通信的方便添加了一个共享的存储区以此来交换数据,为了避免两个CPU 同时访问共享嘚存储单元时引起资源冲突而导致系统崩溃,这里添加了互斥核在访问共享区时,任何一个CPU 都必需先打开互斥核这时可以实现消息傳递,然后关闭互斥核另一CPU 同样可以通过这样的操作获取消息。设计框图如下图所示:

本系统在语音识别部分的综合后时钟可达130Mhz左右泹在这一部分我们仅使用50Mhz的时钟,因为现在的处理速度已经能满足我们的要求而且每次综合所得电路存在随机性,无论从稳定性还是系統功耗考虑都是采用较低时钟。如果更换更高时钟性能参数还能继续增加。

下面是作品在软硬件整合后运行的演示图:

我要回帖

更多关于 数字化声音时,如果量化级别是64 的文章

 

随机推荐