文献标识码: A
文章编号: 0258-7998(2011)06-084-03
近年来,数字多媒体技术得到了前所未有的发展。数字音频技术已经同CD、DVD和MP3等娱乐产品一起进入到人们的日常生活中,对人们的生活产生了巨大影响[1]。而随着个人数字娱乐产品的普及,音频专用解码芯片以其低成本和高性能而得到了广泛的应用[2-3]。
在音频解码芯片设计过程中,研究人员往往需要对解码器的功能进行反复验证[4]。传统的验证方法一般是利用FPGA搭建专用的测试平台并使用ChipScope等在线逻辑分析仪进行辅助分析。这种方法可以有针对性地获取用户所需数据,从而在一定程度上达到验证的目的,但存在一些缺陷。首先,测试平台通用性差,无法兼容多个音频解码器。即使对于同一个解码器,一旦接口或内部测试模块改变,测试平台就需要做相应的修改。其次,受限于在线逻辑分析仪的功能,测试结果的显示不直观,如无法根据用户的需求实现可配置的图形化显示功能。为此,本文设计并实现了一个通用的音频解码器测试系统,其功能强大,并具有良好的可扩展性,可以帮助研究人员提高工作效率,具有很大的实用价值。
1 系统结构与工作原理
系统总体结构如图1所示。在FPGA内部,该验证系统主要由系统控制、码流输入、输入缓冲、音频解码器、输出缓冲、音频输出、信息提取和信息显示共八个模块组成。
系统复位完成后,如果用户在一定时间内没有改变系统参数,则系统会根据默认设置运行。首先,码流输入模块接收系统控制模块的指令,指定接口芯片在存储介质的特定位置读取数据并将其写入输入缓冲区中。当输入缓冲区中的有效数据量到达预先设定的解码最小值时,音频解码器便开始从输入缓冲区中读取编码数据并进行解码,之后将解码得到的PCM样本写入到输出缓冲区中。同样,在输出缓冲区中的有效数据量达到预先设定的播放最小值时,音频输出模块开始根据获得的音频信息以给定的速率从输出缓冲区中读取PCM样本,并按照特定的格式输出到AC’97编解码芯片中,从而驱动扬声器发出声音。在系统运行过程中,系统控制模块实时响应用户输入、改变系统工作状态。而信息显示模块则将信息提取模块获得的数据通过VGA显示器或LED实时显示出来。
1.1 系统控制和信息提取
系统控制模块一方面响应用户输入从而对系统进行控制,另一方面协调各模块工作,防止缓冲区溢出。对于用户输入,系统控制模块采用了延时查询与循环验证的处理方式,这样提高了系统判断的准确性,减少了误触发率[5]。而对于各模块工作的协调则由系统控制模块与信息提取模块共同完成的。例如在音乐第一帧解码过程中,系统控制模块会通过信息提取模块获取音乐的基本信息(声道信息、采样率等),之后将该信息传递给音频输出模块,从而决定输出缓冲区中PCM样本与声道的对应关系以及音乐的播放速率等。同样,输入输出缓冲区中的有效数据量和剩余空间等信息也通过信息提取模块反馈到系统控制模块中,作为控制音频解码器是否继续解码的依据。此外,信息提取模块还对获取的数据进行整合和筛选,并将处理结果送入到信息显示模块中。
1.2 码流输入模块
码流输入模块通过接口芯片从存储介质中读取数据并将其存入到输入缓冲区中,其结构如图2所示。系统控制模块在命令码流输入模块读取数据的同时,将起始地址(逻辑地址)和要读取的数据量传递给该模块。其中逻辑地址首先通过地址映射子模块转换为硬件物理地址,再送到数据读取控制子模块中。数据读取控制子模块确认来自系统控制模块的指令和数据合法后,启动进度控制状态机,进而通过读写时序产生子模块将指令写入接口芯片内的命令寄存器中,之后等待接口芯片的反馈信息并读取数据。在数据读取过程中,接口芯片的工作状态会写入到状态寄存器中,供数据读取控制子模块使用。
1.3 音频解码模块
音频解码模块即待验证的音频解码器。该模块的接口分为两部分:一是与输入输出缓冲区的接口,在默认状态下,该部分接口均为单比特串行模式,但系统预留了串并转换和并串转换模块,因此用户可以选择使用并行输入或并行输出。此外,基于异步FIFO的设计允许用户在解码器输入输出端使用不同的时钟;二是与系统控制模块和信息提取模块的接口,为了减少接口数量,系统控制模块只提供了解码起始信号和解码结束反馈信号。而信息提取模块除提供了必须的解码信息传递接口外,还提供了两组信息提取接口,一个用于时序波形的显示,另一个用于直接的数值显示。除使用系统默认的接口外,用户也可根据自己的需要对接口进行定制或扩展。可见,对于一般的音频解码器,用户无需改变接口便可将其直接嵌入到验证系统中,增强了系统的通用性。
1.4 音频输出模块
音频输出模块是一个整合PCM输出控制和AC’97输入输出控制的音频输出接口。由图3可见,由比特时钟生成的同步信号同时送入AC’97 编解码器、SDATA_IN子模块和SDATA_OUT子模块中。其中SDATA_OUT子模块将指令和PCM数据串行输出到AC’97 编解码器中,而SDATA_IN子模块从传输的串行信号中解出PCM样本和编解码器状态信息,并将其送到音频输出控制子模块中。音频输出控制子模块一方面将输出缓冲区中的PCM数据送到SDATA_OUT模块中,另一方面根据获得的编解码器状态信息采取相应的操作。例如,在改变音量时,可以先通过SDATA_IN子模块读取AC’97 编解码器中音量寄存器中的数据,再将数据进行一定的运算后发送到SDATA_OUT子模块中,进而通过串行输出接口写入AC’97 编解码器的相应寄存器中,从而完成音量的改变。
在系统复位完成后,音频输出控制子模块首先通过SDATA_IN子模块获得的状态信息判断AC’97 编解码器的工作状态,待可以接收指令后,再通过指令控制信息命令SDATA_OUT子模块将指令ROM中的数据依次写入AC’97 编解码器中,从而完成初始化操作。在接收到播放指令后,音频输出控制子模块开始从输出缓冲区中读取PCM样本并经由SDATA_OUT子模块将其填入AC’97帧结构的特定位置,实现音乐的播放。
可见,只要将音频输出控制子模块稍作修改,便可将SDATA_IN子模块获得的PCM数据写入到缓冲区中,这为音频编码器的验证提供了支持。
1.5信息显示模块
由图4可见,信息显示模块提供了多种数据显示方式,即字符显示、图形显示和字符与图形混合的显示方式。对于字符显示,默认的每个字符大小为8×8个像素点,像素点数值由字符库产生。在字符库中,用户除使用基本的ASCII码字符外,也可自行定制字符点阵从而实现一些特殊字符或图形(如公司LOGO)的显示。因此对于较小的或可以由多个字符构成的图形,可通过字符库直接产生。
而对于较复杂的图形,则由图形生成子模块通过逐点绘制的方式实现。图形和字符数据经过合成和配色后同行场同步信号一起送入到VGA显示模块中。
在信息显示模块中,显示控制子模块一方面控制行场同步信号及消隐信号的产生、保证图像数据的同步输出,另一方面获取数据处理子模块的输出数据,控制图像的生成。而数据处理子模块则根据系统控制模块指定的显示方式对原始数据进行计算或排序处理。例如,当需要在屏幕的322~578行显示PCM波形时,由于16位PCM数据的动态范围为-32 768~32 767,因此对这些数据进行加法和移位运算从而将其映射到指定范围。
1.6 系统特点
由以上分析可知,同现有的音频解码器验证系统相比,该系统的优势主要体现在以下几个方面:
(1)兼容各种音频解码器,具有很好的通用性。
(2)支持用户自定义的显示和分析功能,且只需稍加改动便可用于音频编码器的验证,具有良好的可扩展性。
(3)基于物理地址的底层数据读取方式使用户可根据需要在存储介质的任意位置进行非连续的数据读取,既降低了系统复杂度,减少了资源开销,又增加了数据读取的灵活性。
(4)基于FPGA的纯硬件验证方式,验证结果更接近流片结果。
(5)既是一个通用的音频解码器验证平台,也是一个功能完备且数据显示直观的播放器和演示系统。
2 系统实现及验证实例
整个系统在Xilinx公司的VirtexIIpro开发板上实现,其硬件连接结构如图5所示。其中FPGA内部各模块使用VHDL和Verilog HDL语言混合编程实现,音频解码器为MP3解码器[6]。在系统运行时,FPGA通过System ACE从CF卡中读取MP3编码数据后,在FPGA内部进行解码,之后通过LM4550进行实时播放。在播放的过程中,系统通过FMS3818将解码的信息显示到VGA显示器上,同时通过LED显示当前系统的工作状态。
由系统资源开销情况(表1)和MP3解码器的资源开销情况(表2)可见,在忽略解码器资源开销的情况下,整个测试系统的各项资源开销均不到系统资源的60%。此外,实验结果表明,该系统的最高时钟频率为106.95 MHz,且输入输出模块均具有很强的实时性,可以保证数据的实时读取与声音的流畅播放。
音频解码芯片的研究人员往往需要对解码器的功能进行反复验证,传统的验证方法存在诸多缺陷,降低了研究人员的工作效率。而本文设计的音频解码器验证系统通用性强、数据显示直观、功能强大,缩短了音频解码器的片上验证周期。实验结果表明,该系统资源开销低、实时性强,具有很大的实用价值。
参考文献
[1] Hu Ruimin, Zhang Yong, Ai Haojun. Digital audio compression technology and AVS audio standard research[C]. proceedings of ISPACS 2005, Hong Kong, China, December, 2005:757-759.
[2] Zhang Hongsheng, Lu Mingying, Wang Guoyu. An ASIC implementation of MPEG audio decoders[C].ASICON′ 07.7th International Conference on.Guilin,China,October, 2007:754-757.
[3] 宋奇刚.MP3数字音频解码芯片VLSI设计研究[D]. 成都:电子科技大学,2005.
[4] 周建,刘鹏,陈科明,等. 基于FPGA平台的媒体系统芯片验证框架[J]. 微电子学,2006,36(3):284-287.
[5] 肖看,朱光喜,刘文予,等. FPGA按键模式的研究与设计[J].电子技术应用,2008,34(10):45-47.
[6] FALTMAN I, HAST M, LUNDGREN A, et al. A hardware implementation of an MP3 decoder.DIGITAL IC-PROJECT, LTH, Sweden.2003.5.