首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

采用软硬件协同设计方法实现语音识别SoC方案

采用软硬件协同设计方法实现语音识别SoC方案

我们过去设计的一个原型系统采用了内置语音识别功能的语音激活控制器,并采用了新型的全硬连线(fully hardwired)ST专利算法。该系统采用0.25微米ASIC工艺,并用外部非易失存储器来存储单词模板和特征参数。虽然这个原型系统功耗很低,并且具有优越的识别性能,但要把它集成进一个系统级芯片(SoC)还是相当困难,主要原因在于它缺乏灵活性, 其控制状态机和数据路径完全通过硬连线实现的。


在新的设计中,我们在保留前面的功能特性基础上,对功能进行了参数化处理,不再采用单一用途的硬连接,因此新设计具有很大的灵活性。新设计中的一部分功能用硬件实现,另一部分用软件实现。为了提高语音识别系统的灵活性,主要处理功能是用硬件协处理器加上周边的ARM7TDMI 32位处理器和2M位的嵌入式闪存实现的。这款最新的SoC还包含有一条Amba-APB总线(高级外围设备总线)和大量的外围器件、定时器、中断控制器和其它相关功能模块。


从系统设计到RTL设计花费了2位工程师6个月的时间,整个软件开发流程也花了2位软件工程师6个月的时间,因此总的工作量是2人年。这款语音识别SoC顺利通过生产,并且所有功能首次测试就全部通过,它包含30万个逻辑门,约相当于500万个晶体管。




语音识别器的结构


设计中我们特别注重语音识别器的结构,如图1所示,该识别器具有一个预处理器,用来为终点检测(EPD)流程和自相关函数(ACF)计算滤波器提供数据。EPD串接于ACF和线性预测倒谱(LPC)模块中间,主要用来进行静音/语音判断,并将每个输入的单词作为语音样本序列翻译成长度可变的倒谱特征向量序列。


压缩器模块随即用合适的存储器结构转换所得到的倒谱向量,然后再存储于单词RAM中。紧靠动态时间偏移(DTW)距离计算协处理器的是一个片上闪存,它用来存储识别阶段使用的数据库。DTW引擎由2个模块组成,分别是DTW输出环和DTW输入环,用来将识别结果传送给标准选举规则(norm-and-voting-rule)模块。接下来标准选举规则模块开始计算接收单词和存储于识别数据库中的所有单词之间的标准化距离。然后根据所定的选举规则将接收单词与存储单词之间的最佳距离提供给应用程序。


采用SoC进行设计可以实现以下目的:


1. 通过开发软硬件协同设计和结构选择来研究自顶向下的设计方法;


2. 利用可指令校正的软硬件接口综合设计方法取得首次设计成功经验;
3. 设计可复用高度参数化功能模块(功能和真实循环封装);
4. 开发用于驱动嵌入式闪存参数化的结构,以便用于信号处理;
5. 开展软硬件协同验证,并评估RTL验证所用硬件仿真的最终用途。


新的设计方案


最大的设计挑战莫过于保证操作的实时性。当我们设置好一系列能完成高性能语音识别的系统参数后,必须确保软硬件交互任务能工作于理想的频率。另外,由于SoC设计的目标是低功耗应用,尽量降低工作频率就非常重要。


因此要借用过去的一些优秀设计,包括对系统功能的完整的C/C++描述、测试平台和大量复杂的用VHDL-RTL描述的IP模块。同时,重新设计主要的语音处理IP模块,使之成为高度参数化的IP,便于编译或运行结构化参数设计。参数化设计定义了该IP模块的功能性、结构性和微结构化特征。


此外,要用C/C++语言从原始代码开始开发语音识别设备的功能化模型。新项目的这一阶段包括了系统的功能化模块创建,因为原来的参数规格是在完全硬连线实现原则下完成的,此时不再适用。这次创建意在使识别性能调整到最终设备时具有更好的灵活性,而且具备全结构化开发的能力。


其中最主要的工作是用CoWare-C语言对已有的VHDL IP模块进行功能性建模,并同时提供纯功能(未定时的)C模型和VHDL封装模型。为了完全分离功能与通信,在功能模型中去除了通信细节。正因为如此,利用接口综合快速评估系统的不同硬件/软件部分才成为可能。


利用仿真来评估可执行参数规格


在一次多级仿真中,通过自顶向下的模型微调,可以评估系统可执行参数规格。首先,我们采用不定时的仿真去验证系统参数是否适合设备的测试平台,并验证所实现的通信机制与工具通信语义间的一致性。由于这部分设计,包括硬件和软件都是用CoWare-C(在N2C环境中仿真)设计的,软硬件之间在开始时不需要区别,因而所有模块都通过通信基元相连,并允许对系统行为仿真。


在该不定时C模型的基础上,为了更好地理解系统瓶颈我们又做了更深层的拆分。很明显,有些功能所需的高性能软件实现非常困难。例如,在自相关函数以及动态时间偏移输入环中就必须用到硬件加速。


下面一个设计步骤是将主硬件模块与系统的其余部分集成起来。在这次设计中我们决定将Levinson-Durbin递归算法(LPC分析具有一个不规则的执行流程)和EPD留给软件实现,希望能较好地平衡灵活性和硬件性能。CoWare在本阶段是非常有用的,能够帮助实现许多芯片功能,如软件/硬件、硬件/软件之间的通信、中断管理和其它。


为了判断执行软件路径的时间有多长,我们分别评估了不同的系统硬件和软件功能。这种中间层仿真(BCASH)对于软件执行来说是真实循环,对硬件来说则是不定时的。它能用来较早地评估候选系统硬件/软件部分的性能。


虽然BCASH在软件路径中循环,但是可以通过硬件路径提取。人们可以假设所有的硬件处在零延时执行状态,软件路径花费了最终实现中才具有的实际时钟周期数。从C描述的未定时仿真到BCASH的时间延迟很短,因此这是一种推动结构化开发的理想途径。利用从纯C描述到提供实际软件执行定时数部分的快速移动,人们可以在很短的时间内完成大量子单元的评估和选择。软件和硬件交互作用的实例



以下是验证期间软件(SW)与硬件(HW)之间交互的一个例子。首先由本设计(HW)中的协处理器计算样本能量并把结果通过中断方式发送给ARM7内核,如图2所示。中断唤醒终点检测例程(SW),该例程执行相关算法以判断接收的样本中有无单词。当检测到一个单词时,软件例程就开始启动捕获控制逻辑(HW),该逻辑电路再以固定的时序读取样本并把它们存入缓冲区。


自相关器(HW)接着读取缓冲的每个帧(用户定义的语音段)并在另外一个缓冲区存储自相关向量。在每个帧持续时间内,从自相关器内部逻辑电路中产生的中断会给内核发信号表示新的自相关值已准备好。这时,中断处理器(SW)再读取这个缓存,并把读到的值送给LPC函数。


下面再利用详细的总线循环精确(BCA)仿真来验证最终系统配置的性能。BCA能确保对硬件和软件路径的所有仿真在时钟周期数方面的精确度。在这一开发阶段,细化属于硬件部分的功能模块相当于进行VHDL/Verilog编码。主要语音处理模块以参数化VHDL IP的形式存在,无需用专用CoWare语言即寄存器转移C(RTC)重新进行编码。


在这一阶段对子单元的任何修改都是非常痛苦的,这是因为大量已完成的VHDL程序必须重复修改,会浪费很多有用的设计时间,也就意味着BCASH仿真必须产生最终的子单元。




测试环境的创建


设计大型复杂系统的一个重要任务是分解代码编写工作以及验证功能模块的实现,因此要创建用来验证每个功能模块的测试平台。N2C方法的优点之一在于系统仿真能包含映射进硬件子单元的不同层抽象模块,因而才能有选择地工作于每个单HW块实现,一个接着一个有步骤的进行,并将系统级仿真作为模块自身用的测试平台使用。这样在开始系统验证前就无需在RT级定义整个系统。


为了避免使用专门的RTC语言,在N2C环境中没有对所有的系统模块进行调整,也意味着需要与商用VHDL仿真器一起做混合仿真,这样就会花费很长的仿真时间。


我们的CPU采用了一种指令集仿真器(ISS)。CoWare在N2C工具提供的BCA仿真器中包含有一个ISS,它可与VHDL仿真器(如ModelSim)相连。不过混合的N2C、ISS和VHDL仿真不能用来扩展仿真功能,因为整体速度有所下降。相反,我们利用N2C生成的VHDL代码集成了芯片的全VHDL RTL描述,另外我们还采用硬件模拟进行RTL验证。


N2C为整个系统,包括处理器、总线、标准模块和新设计模块,创建了一份VHDL网表。这份整体网表连接了所有的功能块,因此工程师可以通过传统的RTL将它输出给外部流程使用。此外,我们还利用网表验证手段证明了由CoWare N2C工具产生的VHDL的正确性。


参考文献


1. Bolsens, De Man, Lin, Van Rompaey, Vercauteren and Verkest, "Hardware/software co-design of digital telecommunication systems," Proceedings of the IEEE, Vol. 85, No. 3, March 1997.


2. Clement, Hersemeule, Lantreibecq, Ramanadin, Coulomb and Pogodalla, "Fast prototyping: a system-design flow applied to a complex system-on-chip multiprocessor design," Proceedings Of 36th Design Automation Conference, 1999.


3. ISD Magazine, Alcatel story (www.isdmag.com/editorial/2000/design0008.html), Fujitsu story (www.isdmag.com/editorial/1999/coverstory9907.html).


4. J.W. Picone, "Signal-modeling techniques in speech recognition," Proceedings of the IEEE, Vol. 81, September 1993.


作者:


Michele Borgatti


NVM-SoC设计经理


STMicroelectronics中央研发所
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表