您现在的位置是:首页 > 家电

可编程语音压缩专用处理器设计

2023-07-20 02:06:07

关键词: 可编程 , 语音压缩

为了提高通信系统的保密性,降低制造成本,需要进行专用处理器的设计。基于正弦激励线性预测(SELP)算法模型,设计了一款多速率语音专用处理器。芯片使用可重构体系结构和超长指令字(VLIw),优化了高复杂度函数。仿真结果表明:该处理器对O.6 kb/s速率SELP算法的执行效率明显优于通用数字信号处理器(DSP)。处理器内部程序数据外部不可见,指令并行度显著提高,常用函数可被修改,从而达到高保密性、低复杂度、易开发性。

为了适应多种通信应用,需要使用不同的语音压缩编码算法。用数字信号处理器(DSP)实现存在编程难、保密性差、成本高等缺点。专用芯片(ASIC)只能实现单一算法,很难扩展,难以进行二次开发。

可重构体系结构,是指某一计算系统能够利用可重用的硬件资源,根据不同的应用需求,灵活地改变自身结构,以便提供与之相匹配的功能。已有可重构体系实现了语音算法的某些特定部分,如自适应多速率算法中的代数码本搜索、原型编码器中的小波变换以及有限脉冲响应滤波器等,但使用协处理器使硬件规模仍然偏大,且只能对一类语音算法适用。

使用可重构体系结构设计了一种可编程专用语音编解码芯片TRl00,指令系统使用超长指令字(VLIW),使语音编码算法中常用的并行操作可以在该芯片上产生比通用DSP更高的执行效率。高复杂度子程序能够被多种类型的语音算法使用,避免引入协处理器,降低了二次开发编程的工作量。片内存储器在外部不能读取,提高了系统的保密性。

1 SELP算法

算法采用自行开发的基于正弦激励线性预测(SELP)模型的多帧联合编码算法,在线性预测正弦激励模型的基础上,引入多帧参数联合矢量量化方法,进一步压缩帧间冗余,使语音谱包络信息得到较好表示,在O.6 kb/s的极低速率下,可懂度达到90%以上。

O.6 kb/s速率采用多帧联合量化编码技术,将相邻3帧预测系数均转为线谱对系数(LSP),采用基于模式的余量分裂多级矩阵量化(P-RS-MSMQ)算法。根据不同的信道状况与质量要求,算法还包括0.8 kb/s、 1.2 kb/s和2.4 kb/s另3种速率压缩方式,流程与O.6 kb/s算法基本相同,仅增加对余量信号的编码过程,其中需要进行512点快速Fourier变换(FFT)运算。

2 TR100芯片体系结构设计

芯片工作主频为20 MHz,采用取指译码执行3级流水线设汁,内部结构如图1所示。


可编程语音压缩专用处理器设计






TRl00芯片采用粗粒度可重构体系结构,基本的可重构硬件单元包括存储系统、运算单元、程序调度控制、寄存器、数据通路等。

存储系统包括闪存存储器(FLASH)和随机存储器(RAM)两部分。芯片内部包含2个32 kB数据FLASH、5个4 kB数据RAM。6个地址寄存器与3个地址运算单元可以分别独立存储器的地址控制与选择。

运算单元包括2个32 b增强型算术逻辑单元,可完成以加减运算为中心、包括规格化、算术移位、四舍五入等辅助逻辑的复杂运算功能;1个32 b乘法器;1个40 b乘累加器;1个16 b除法器。

程序调度控制有2级硬循环、比较跳转、比较设置、调用/返回等单元。两个可被同时访问的寄存器组各包含19个32 b寄存器,支持分层窗口式访问;6个32 b选通器作为数据通路将存储系统与运算部件进行互联。

3 超长指令字格式设计

在针对语音编码算法的专用处理器设计中,VLIW指令设计方法是非常适用的,它能在低复杂度的控制逻辑水平上产生较高指令并行性,使芯片在低主频下即可实现语音压缩算法。由于对资源并行度要求较高的程序模块数量不大,因此可以通过遍历所有运算量较大的模块,提取可用的指令并行模式,在硬件控制逻辑复杂度增加很小的前提下实现超长指令译码。

设计的VLIW指令系统包括基本指令形态和专用指令形态。基本指令形态包括1 6b、32b、48b、64 b等4种指令长度,并行程度低,用于设计对资源并行性要求不高的子程序。专用指令形态包括128 b、192 b、256 b等3种指令长度,并行程度高,用于设计算法中复杂度较高、要求资源高并行度的子程序。两类指令形态格式相同,从而可以使用相同的译码器进行译码,简化了电路设计。基本指令模块和专用指令模块分别从程序FLASH与程序RAM中取指,均能做到单周期取指单周期译码一单周期执行。指令格式包括4个字段:Length确定指令长度;SF确定本长度下选用的指令子格式;CF进行算子选择;OP进行算子编码。

4 算法程序向芯片的移植

使用软硬件协同设计,利用现有硬件的支持,可以编出高效率的代码。表1是在TRl00上实现常用程序模块的执行周期数与通用DSP对比结果,其中l表示滤波长度,p表示内积点数。


可编程语音压缩专用处理器设计



可以看到,压缩算法中运算量较大的模块,如滤波器、点积、矢量量化等,TR100的运行效率均明显高于DSP,甚至达到两倍以上。这是由于对于运算、存储单元访问密集的模块,硬件体系结构中各个独立单元可以用相应的指令格式并行访问。而对线性预测系数(LPC)计算与转换、数学函数等运算量不大、但各种语音算法都要使用的模块,芯片的运行效率也与DSP基本相当。这就保证了在移植其他算法时,受程序执行效率的限制较小,而可以专注于算法功能的开发。注入功能可对基本指令与专用指令进行修改,便于开发者对现有程序进行扩充。

以加权矢量量化为例,说明芯片的运算效率。线谱对系数使用多帧联合矢量量化,搜索运算量非常巨大。在SELP算法中,0.6 kb/s速率使用30维多级LSP码本,容量为7.68 kB,搜索时需要计算每一码本矢量bi与当前系数矢量x的加权距离di,权重为对角矩阵W,之后再找到最小的加权距离所对应的码本矢量标号进行编码。

使用一条256bit专用指令即可实现循环体内部操作:

与通用DSP的实现相比,本芯片可以在循环体内减少5次运算,本芯片对矢量搜索模块的优化可减少近4MI/s的运算量。其中I为指令数。

5 芯片性能

数据FLASH宽度为16 b,存储4个速率的不同码本,码本容量为199g kB,最大临时数据变量使用19.8 kB,与C54xDSP所需的存储空间相当。全部程序共5.7 k I,其中专用指令程序为2 kI。

0.6 kb/s速率算法各子模块的运算量如表2。


可编程语音压缩专用处理器设计




在TRl00芯片上完成编解码的运算复杂度为12.5 MI/s,明显低于C54xDSP所需的40 MI/s。

表3对比了浮点C语言程序、定点C语言程序以及芯片仿真3种情况下各个参数的重建误差,使用91280帧中国军标语音测试数据。

可以看出,海量数据测试出的定点C程序的各个重建参数误差与芯片仿真的结果完全相同,由此可以说明芯片获得的编码码流与重建语音与C程序的结果相同。

6 结 论

使用VLIW设计的可重构处理器能够在相同硬件结构下实现不同的语音压缩算法,由于针对算法中常用的运算密集模块在体系结构和指令形态上进行了优化,该处理器对语音算法中计算、存储密集度高的函数具备更高的指令并行性,从而获得了更高的运行效率与更低的主频,使功耗降低。算法程序外部完全不可见,提高了保密性。常用函数可以通过注入方式进行修改,避免了引入协处理器导致的难以扩充的缺点,并有效减小了芯片规模。