微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 基于C语言的设计流优化语音识别芯片结构设计

基于C语言的设计流优化语音识别芯片结构设计

时间:09-17 来源:互联网 点击:
系统设计的考虑  

为了达到成本目标,单片SoC解决方案是唯一可行的方案。SoC必须将如下资源集成至不超过25,000门的芯片上:1. 语音识别与合成(SRS)识别核;2. 语音识别与合成(SRS)程序和欧元兑换器代码(最大30KB);3. 语音合成实例(最大30KB);4. 用于存储声纹(voice print)并用作中间结果存储器的RAM(最大30K字节);5. AD/DA转换器;6. 麦克风接口;7. 扬声器接口。  

功耗也是要考虑的重要问题,电池寿命至少应为1年半。要满足这些苛刻的功率要求,系统必须具备省电模式、在RAM中存储声纹、处理器具有较低的时钟频率以及高效率的音频放大器。  

SRS处理器结构  

要给定所必需的处理和低功耗约束条件,选择目标时钟频率是首要任务。根据对初始功耗和处理计算的估计,我们认为2到4MHz时钟频率足以满足要求。选择3.579 MHz是因为该频率是NTSC视频系统的基础,而石英成本低廉。  

该算法需要检测并去除背景噪声。为了从奔腾机的450MHz时钟得到3.5MHz时钟,并保持芯片核门数小于25,000,SRS要采用专用结构。

设计专用处理器费时费力,要用HDL语言重写算法以获得最佳方案。A|RT Designer工具综合了基于控制器的结构,并直接以高效能的C语言算法为基础。设计工程师通过分析和优化,然后转化为Verilog或VHDL代码。  

设计工程师使用A|RT Designer工具为语音识别算法合成适当的结构,之后进行RTL描述。该工具分配必需的数据通路资源(乘法器、加法器、ALU、I/O、RAM、ROM等),为这些资源分配算术运算,并对运算过程进行调度。同时将自动生成一个控制器、微代码(用来控制资源分配和调度)及寄存器、多路转换器和总线。  

将SRS算法映射到硬件结构的关键参数是:以3.5MHz目标时钟频率运行完整的SRS代码,且不超过最大25,000门的约束条件。使用A|RT Designer的“负载视图(load view)”,设计工程师识别出代表性能瓶颈的几个多周期运算(multiple cycle operation)。视图上出现瓶颈的位置将显示相关C代码,设计工程师因而能识别产生瓶颈的原因并试验备选解决方案。  

最明显的瓶颈是MEL运算中的密集FFT计算,它占据了实时处理周期80%的时间。通过增加一个二级加法器和专用地址计算单元ACU (address calculation unit),FFT就能优化到只占原始运算周期的10%。这虽然增加了硬件设备,但付出的代价只是4,000个门,正好在硬件预算以内。即便如此改进,所用周期的总数目实在太高,难以达到3.5MHz的时钟频率。

进一步分析表明,可以改进对数函数的计算。当在RISC DSP (NSC CR16B)上运行C语言算法时,该运算占用大约1,000个周期,约为实时运算需求的15%。添加专用的特定应用单元ASU (application specific unit)进一步将这些功能的循环周期降至3个周期,而只增加200个门。上述结构上的改变使最小时钟频率为1.5MHz,少于目标频率的一半。

对门电路数目和语音识别核功耗的优化可以降低寄存器触发器的数目。触发器的开销很大(每个需要10个门电路),并消耗很大的功率。A|RT Designer的“寿命视图(life-time view)”用来分析组成每个变量寿命的周期数目及变量被使用的频率。通过在RAM中存储不常使用但长期有效的变量,即可降低寄存器的总数,进一步减小所需的硅片面积和功率。该措施节约了50%的寄存器门电路,同时为运算周期预算留下充足的开销空间。  

RAM压缩的实现  

在设计初期,我们已经明确30KB的RAM空间太紧张。参考SRS C代码的每个声纹谱(约为1秒钟的语音)字占用大约1-2KB,相当于30条命令,这样几乎没给中间结果SRAM留下任何空间。由于30KB的RAM占用了硅片相当大的面积,因此在硅片预算中无法添加更多的RAM(图2)。   

整个芯片使用标准的0.35μm CMOS工艺制造,解决RAM空间问题的唯一解决方案是采用某些形式的语音压缩。  

声纹数据可用两种方法压缩:无损压缩或有损压缩。目前存在几种以现有的标准C代码源程序为基础,用C语言实现的无损压缩方法。声纹采样数据可用作参考,最佳的无损算法可得到30%的压缩率。采用有损压缩,还能再压缩20%,并且不明显降低识别质量。有损压缩完全可以缩放,从而获得依赖于实际声纹长度或词汇表大小的可变压缩率。由此得到的C代码算法共500行,并对声纹得到50%的压缩率。下一步就可以集成语音压缩和语音识别IP块了。  

然后只需将这500行代码与10,000行SRS代码合并,得到一个新功能子程序,在存储声纹或读取RAM中的声纹时调用。但程序的计算量相当大,初始计算后约需要150万个时钟周期,这与SRS处理所需的时间相当。幸运地是,有效时钟频率留出的近2.5 MHz能解决这个进程问题,而无需进一步优化。此压缩方案将RAM需求降低到20-25KB,留出至少5KB用于处理器的中间结果存储器之用。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top