
- 收藏
- 加入书签
基于FPGA的音频信号处理的设计与实现
摘要:音频信号监测是保证音频设备高质量工作的关键。为实现对音频设备中的音频信号进行实时,快速监测,采用FPGA进行数字音频信号的处理,并将其进行网络传输,将能够更好地提升音频信号的整体质量。本文详细介绍该系统的音频采集、音频分析、音频切换、网络传输模块及软件的设计。经试验证明,本系统运行稳定、工作可靠,大大提高收听人员的收听效果。
关键词:FPGA;音频监控;网络传输;设计优化
引言
数字信号的处理方法有很多种,其中最常见的方法有:专用集成电路、数字信号处理器、可编程逻辑器件等。在这些方面,可编程逻辑设备由于具有高的并行处理能力和高配置能力,被使用的频率也逐渐提升。当前,可编程门阵列(FPGA)是近年来发展最迅速的一种,因此,以FPGA为核心的声学处理系统的研制就显得非常必要。
本文基于嵌入式FPGA芯片MicroBlaze为核心,设计一种用于音频采集、分析、传输的嵌入式系统。由于使用可编程逻辑,因此整个设计方案在不改变硬件平台的情况下,可以对其进行进一步的扩充和修改。与其它采用DSP(数字信号处理)或ASIC(应用专用集成电路)装置的系统相比,本系统具有高实时性和快速的运算能力,同时还能够有效解决传统的多通道音频处理系统的并行处理性能差、系统升级、联机配置不灵活等问题。
1 系统设计
MicroBlaze是Xilinx公司研发的一款基于32位RISC(Reduced Instruction Set Computer)优化架构,用于FPGA上的嵌入式工程应用。FPGA内置微芯片软核,大大提高FPGA的灵活性和高配置能力。它可以按照设计要求进行精简,并能在最小的资源下满足设计需求。可以使用总线接口PLB(Processor Local Bus),FSL(Fast Simplex Link)与外部设备或内存进行数据交互。该系统使用微芯片微控制器,并将其嵌入FPGA中,通过总线方式对多种外部设备进行存取。其主要功能是以FSL总线进行4个声频信号的接收;用PLB总线存取Bram,从声频分析模块所生成的结果,把所需的选择信号写入Bram,以便转换模块存取;通过对PLB总线和网络处理模块的接入,可以实现网络上的音频和语音信号的实时传递和显示。
2 硬件设计
2.1 音频接收模块
模拟音频信号经A/D采样器CS4392处理后,得到的数字音频格式为Left-justify。音频格式具有3条信号线路:
1)串行时钟SCLK又称为位时钟(BCLK),即SCLK具有一个脉冲,它与数字音频的每个比特数据相对应。SCLK的频率为2×取样频率×取样位.
2)帧时钟LRCK(又称为WS),用以在左、右声道之间进行数据的转换。LRCK中的“1”表示左声道的数据被传送,而“0”表示数据被传送到右边通道。LRCK的频率与取样频率相等。
3)串行数据SDATA(Serial Data),就是用二进制补码表示的音频数据。
2.2 FSL接口模块
FSL总线是一条以FIFO(First InFirst Out)为基础的单程点到点通讯总线。FSL总线具有一个主装置和一个从装置,其结构与FIFO相似,主要装置是FIFO的数据写端口,而FIFO的数据读取端则是FIFO的数据输出。
它的主要特征是:1)点对点的单向通讯;2)不共享通讯机制;3)支持独立于数据的控制通讯;4)FIFO通信方式;5)数据的可配置宽度;6)具有高速度(600 MHz的独立操作)的通讯性能。FSL接口模块是FSL的主要终端,将数据写入到FSL总线中;从装置(MicroBlaze)以中断模式(在FSL_M_FULL是高时发生中断)从FSL中读出数据,并将该指示读出(put)和获取(get)。当FSL总线的FIFO数据满载时,需要以一个恒定的速度(48KHz)存入FSL模块的平行数据,这就造成一个时间上的问题,在一个48kHz的时钟循环期间,MicroBlaze的响应需要被打断,否则FIFO会溢出,导致数据丢失。
FSL接口模块实现如下功能:第一阶段FIFO是在FSL总线接口前添加的,并且首先将来自音频接收模块的并行数据写入FIFO。在FIFO满时,以系统时钟频率将FIFO中的数据一次写入FSL总线FIFO。对于MicroBlaze,其响应时间裕量由1/48ms提高至FIFO的深度/48ms,适当地设定FIFO的深度可以使处理器有充足的时间对中断做出反应。
2.3 音频切换模块
通过对语音信号进行分析,使语音的自动转换变得简单。语音信号转换模块是从主路,备用路1,备用路2中选择一条输出。在主干道上,备用路1次之,备用路2次之。预设地,主路输出被选中,在MicroBlaze侦测到主路信号RMS值小于某个数值(-100 dB,可设置),且持续时间超过一定时间(避免由于音频中断造成错误的转换),则视为主路发生故障。而在备用路1发生故障时,将备用2路输出作为备用。当优先级较高的一条输入被还原时,则返回到该输出端。通过MicroBlaze运算生成一个输出选择信号,当这个数值发生变化时,将其写入一个双端口Bram,以检测和自动转换。
2.4 网络发送模块
为了使音频和声音处理的结果能够在网络上传送,将需要通过采用TCP/IP协议的方式,将声音资料通过IP包封起来。该系统使用W5300的硬件芯片,通过UDP协议进行音频数据的实时传输。网络传输模块主要用于W5300与微控制器之间的接口。
W5300是一种以太网络为核心的高性能芯片。W5300支持TCP/IP固件协议;可同时使用8个不同的端口;高速网络传输,最高可达50 Mbps;支持TCP/IP混合网络(TCP/IP)协议堆栈;(MDI/MDIX)的支持;支持8/16比特的数据总线等。它具有高速、高性能的特点,可以在IPTV、视频监控、IP电话、大屏幕等方面得到广泛的应用。
3 软件设计
软件的开发是以MicroBlaze为核心的,它与其它的嵌入式处理程序类似,并且通常使用C。在EDK(EmbeddedDevelopment Kit)中,每个外部IP模块都有其自身的功能库。使用LibGen工具,在项目中加入所需要的外设函数库的头部,并对其进行调用,从而实现对外部设备的操作与控制。首先对主程序进行初始化,其中包括定时器,FSL,W5300。计时器初始化包含中断模式设定、写时序控制字;FSL初始化的目的是增加FSL总线的中断;W5300初始化包含诸如源IP,端口号,目的IP,端口号,缓冲区大小,运行协议等。主要程序是以循环的形式进行待机。计时器的中断时间为200 ms,当中断时,将变量en_rms、en_fft设为1,这样,在主机上计算4个rms和4个Ffft值,将所有的结果都写进W5300,并以TCP/IP的方式传送到网络上,方便软件的显示。FSL总线采用以中断的形式进行数字音频信号的接收。为了避免由于FIFO溢出而导致的数据损失,这种中断具有比计时器更高的优先级。FSL中断时,一次读取FIFO内所有的数据,然后把结果写到W5300上。最后,基于Rms的数值,按照信道转换原理,在双端口Bram中写入控制输出的选择字。
结束语
本论文的主要工作是将FPGA及其内置的软核处理器应用于音频设备的音频监测,不仅达到预定的目的,同时也大大减少系统的专用芯片数目和PCB板的尺寸,具有良好的应用前景。但是,像均衡、滤波、AGC等复杂的音频处理算法,往往需要大量的运算和控制,采用FPGA实现将成为DSP的优点。在未来的研究中,DSP+FPGA的设计将能够更好地凸显其整体灵活性、通用性和适用性,并能够有效提高算法的效率,进而使其更大程度上适用于实时信号的处理。
参考文献
[1]李声飞.基于FPGA+DSP架构的数字音频处理技术研究[J].单片机与嵌入式系统应用,2018,18(01):6-10.
[2]廖钧华.一种基于FPGA的数字音频处理器设计[J].内江科技,2019,40(12):25-26.
[3]张高健,杨刚,杨霖,张青青.基于ARM+FPGA的多路广播音频处理系统[J].电声技术,2015,39(12):68-70+83.