基于FPGA实现的MELP混合线性码激励的系统框架介绍
利用语音编码技术可有效降低信息存储量、提高信道利用率。混合激励线性预测(MELP)语音编码算法能在较低码率下提供较高的语音质量、自然度和清晰度,已成为美国国防部新的2.4 Kb/s的语音编码标准。语音编码技术在当今数字通信尤其在无线系统中发挥着越来越重要的作用。
Nios II处理器是Intel公司为Altera公司推出的32位精简指令处理器软核。在Altera公司推出的软件SOPC中加载Nios II软核和相应的外围接口以及与定义相应的自定义指令,对设计进行综合,下载到FPGA中就可以方便地实现一个具有高速DSP功能的嵌入式处理器[1]。
由硬件实现复杂的算法通常比软件实现更高效。利用Altera公司的Nios II嵌入式处理器的定制指令,可以把用户自定义的功能直接添加到Nios II CPU的算术逻辑单元(ALU)中,以加快专项任务的执行速度。自定义指令的优势就在于可以将程序代码中的瓶颈部分改用硬件指令支持,用自定义的指令使程序得到加速。
1 MELP的构成
MELP声码器的采样率为8 kHz,每个样点值用16 bit量化,每180个样点为1帧,帧长22.5 ms,每帧量化bit数为54 bit,总的速率为2.4 Kb/s。
MELP声码器是建立在传统的二元激励LPC模型基础上,采用了混合激励、非周期脉冲、自适应谱增强、脉冲整形滤波和傅氏级数幅度值等5项新技术,使得合成语音能更好地拟合自然语音。图1所示为MELP编解码原理框图[2]。
2 Nios II可嵌入软核的特点
Nios嵌入式处理器是用户可配置的通用RISC嵌入式处理器,是一个非常灵活、强大的处理器,因此已成为世界上最流行的嵌入式处理器[3];采用改进的哈佛存储器结构,CPU带有分离的数据和程序存储器总线控制。SOPC Builder系统开发工具允许用户容易地指定系统中Avalon控制器和从属设备之间的连接,这些从属设备可以是存储器或外围设备。
Nios指令总线为16位,用于从存储器中读取指令。Nios数据总线宽度为16位或32位,分别用于Nios CPU的16位或32位配置。
2.1 指令系统
Nios指令系统支持C和C++程序编译,包括算术和逻辑运算、位操作、字节读、数据传送、流程控制和条件转移等指令。指令系统包含丰富的寻址方式以减少代码长度和提高处理器性能。
2.2 寄存器组
Nios CPU有1个大容量的窗口化的通用寄存器组、8个控制寄存器、1个程序计数器和1个用于指令前缀的K寄存器。通用寄存器在16位Nios CPU中是16位,在32位Nios CPU中是32位。寄存器组可配置为包含128、256或512个寄存器。软件可以通过包含32个寄存器的滑动窗口存取这些寄存器,滑动窗口的移动间隔是16个寄存器,且允许快速地进行寄存器切换,加速子程序的调用和返回。
2.3 高速缓存
可配置的Nios CPU可以有选择地包含指令和数据高速缓存。高速缓存通常通过提供局部存储系统提高CPU的性能,这个局部存储系统可以快速地响应CPU产生的总线事件。Nios高速缓存的实现是采用简单的直接映射的连续写入结构,这种结构设计能够用最少的器件资源获得最大的性能[4]。
2.4 中断处理
Nios处理器允许多达64个矢量中断。中断源有三类:外部硬件中断、内部中断和软件中断。Nios中断处理模式能够准确地处理所有内部中断。
用户可以有选择地禁止TRAP指令软件中断、硬件中断和内部中断。这项选择能够减少Nios系统的大小,但只用于处理器不运行复杂软件的系统。
2.5 硬件加速
Nios指令系统可以利用硬件提高系统性能。特殊的周期密集型软件操作可以用硬件显著地提高系统性能,这种特性通过修改指令系统提供[5]。
Nios处理器有2种指令系统修改方法:自定义指令和标准CPU选项[6]。
评论