音频系统芯片选择多项性能参数详解

  • A+
所属分类:音频杂谈

系统设计是一个复杂的过程,不仅仅是有IC拿来用就可以了,还有很多细节需要考虑。本文以高保真音乐重放系统为例介绍如何进行芯片选型,以构建符合市场需求的系统。

  现代集成电路产业一直严格遵循着“摩尔定律”高速发展,芯片发展得越快、速度越高,对软件系统的要求就越低。现在速度就是一切,无论是芯片运行速度、软件开发速度,还是产品上市速度。但是有了芯片是否就足够了呢?下面我们试着从一个相对比较简单的高保真音乐重放设备入手,看看我们需要怎么利用市面流通的IC实现一个这样的系统。

  音频系统对处理器芯片的要求

  从信号处理和芯片设计的角度上看,音频系统原理并不复杂,因此很多半导体厂商似乎都看不上音频产品,而去追逐一些量大或者像高清视频处理等高技术含量有技术门槛的产品。笔者在设计这个高保真音乐重放系统的时候曾经和不同的国内IC设计公司的设计部门沟通过,结果得到的答复都是以“很简单没问题”之类的回复搪塞过去,然而事实上到系统做出来后却往往发现效果不尽如人意。可以说我们在开发这个系统的几年时间里面由于芯片选型的问题,在硬件性能瓶颈上吃尽了苦头。

  以下是我们对处理器芯片的具体要求:1. 速度要在400MHz以上,最好能解码APE C4000的码率;2. 需要能支持USB 2.0 Host/SATA/SD卡;3. 需要支持网络;4. 具有128MB以上的RAM,越大越好;5. 具有256MB或以上的NAND Flash;6. 支持I2S多路输出并可以支持Slave时钟,支持最高768KHz采样率,以及最高32位输出;7. 最好有音频数据后期处理能力;8. 有性能优异的时钟电路和DAC。

  芯片能运行的核心速度对解码效率有至关重要的影响,比如音频无损压缩APE C5000解码方式对处理器的要求就很高,以英特尔ATOM 1.6G上网本为例,其解码192k/C5000两声道音乐尚且无法连续播放,何况普通嵌入式系统?因此只能处理较低的码率。无损压缩和MP3不一样,需要还原完全一致的数据流,处理器性能决定了解码的效率,所以太低的核心频率无法胜任此工作。

  USB 2.0对硬件的要求相当高,PHY兼容性是一个很大的问题,数据流的效率还是其次。同样,SD卡接口兼容性也是目前国产芯片一个很头疼的问题。SATA的需求把处理器周边外设速度提到了一个较高的位置,毕竟不是谁都能够做1.5G/3G PHY的。

  系统运行要依存于NAND Flash中存储的程序,但是NAND Flash发展速度却比处理器发展的速度快。当年定义NAND Flash的时候把ECC设计在外面,让处理器永远落后NAND Flash一段时间,因此NAND Flash转型的时候厂商会因为市场上购买不到芯片而无法出货或者需要高价抢货。另一方面,随着RAM的改进其成本越来越低,致使高成本SDRAM逐渐减产,因此使用老内存的处理器先天不足,其系统BOM成本比使用新RAM的系统成本高。所以处理器需要支持多种启动方式而不仅限于NAND Flash,同时RAM应顺应目前电脑主流,使用DDR2/DDR3等内存,这样的话更能达到低成本高收益。

  最后一个最重要的问题就是音频系统的出口I2S。不管什么数据流从哪里流入,都需要从I2S输出,而这个数据流在任何情况下都不允许有任何数据的错误和流失,除非是处理器速度不够。同时,处理器内部的PLL无法产生我们所需要的I2S时钟,因此外置时钟成为必然,Slave I2S接口也是必不可少的。事实上,I2S在我们开发过程中碰到的问题最多,比如同步不准确、开始播放时左右声道反转、播放过程中不定期左右声道反转、数据输出丢帧等情况,都严重影响输出的技术参数,以致无法达到设计要求。

  我们在这几年产品设计过程中,走的弯路就是因为芯片细节了解不到位而造成的。因为任何厂家的开发系统都没有直接说明是否能支持高清音乐格式,最高支持多少采样率的音乐输出,也无法直接评估其平台是否能够达到我们所需的性能指标,所以都必须根据我们的需求对I2S输出电路进行调整。为评估系统,我们不得不做了大量的设计工作(包括软硬件)之后才能开展评估工作。

  芯片选择需衡量多项性能参数

  在设计过程中我们选择过三星的芯片,也选择过国产芯片,但是都因为种种问题不得不放弃,最后才定了目前的方案。三星的芯片I2S输出位数不够,支持的NAND Flash种类有限,SDRAM单位成本较高,USB host直到其ARM11产品都无法跟上所要求的速度,因此我们在第一批选型之后就放弃了。后来选择了国产平台,也是因为I2S FIFO深度不够,造成了丢帧,另外由于USB PHY的问题,对闪存盘兼容性很差,其升级平台也没有解决,SD卡因为软件的问题兼容性也不好,更致命的问题是因为系统不稳定,处理器无法正常复位,或者运行一段时间之后出现NAND Flash无故丢失数据等问题,最后也无法使用。

 产品最终赢在细节,尝试了种种带硬伤的产品之后,我们最后不得不放弃了国产芯片,选择了国外A厂家的产品。从A厂家的硬件系统看,可以得出的结果就是其硬件细节做得相当好。我们测试其芯片发现,其一致性很高,同时系统余量设计得很好。标称375MHz的芯片,在非最高核心电压情况下基本都可以稳定超频到572MHz,高出标称频率的50%,同时DDR2时钟超频60%,性能不俗。从寄存器设计来说,不少都是根据Linux系统的数据结构设计的,因此只要熟悉软件就很容易熟悉其硬件。

  在大规模数据吞吐的部分,A厂家使用了链接DMA,这个细节完美保证输出数据流的连续,最大限度保证了最重要的I2S数据输出不会丢帧。我们测试的时候一边解码一边通过SD卡进行本地数据解压,在CPU满负荷的情况下都没有出现丢帧,可见A厂家硬件的功力之强。

  在此我们分析一下,为什么会丢帧。其实大部分系统都是完成数据流的一个传输,音频解码的数据流向就是从SD卡等媒体读出原始码流,然后经CPU解码之后送I2S输出,这个过程有涉及到重要数据传输的就是媒体到RAM,再从RAM到I2S的过程,这些数据流都是DMA完成的,而瓶颈就在DMA切换的过程。Linux的文件系统由系统进行缓存,对时序的要求不高,而I2S要求连续的数据,就和I2S的FIFO有密切的关系,如果不是系统自动切换缓冲区的话,就要求CPU介入切换,而CPU的中断响应时间就会严重影响数据的连续性。比如I2S的FIFO是32个数据,如果I2S的LRCK是192kHz,那么能够给CPU的中断时间最长就是32/2/192kHz=83µs,而且根据中断机制,一般是FIFO剩下一半的时候申请中断,那么时间就只有不到50µs,这个速度在普通Linux系统基本无法满足需求,因此丢帧就是必然。IC厂家设计的时候指标都是按96kHz的硬件指标来设计,当然无法满足高端系统的要求了。A厂家的自动DMA链不需要CPU进行数据的切换,而通过软件划分2块或以上的数据(Ping pong buffer)让DMA自动切换,如此就完美保证了输出数据的连续性。对音响系统而言,只要I2S出现丢帧马上就会被察觉,更无法通过仪器的检测,所以这个细节如果做不到位是无法走向市场的。

  另外A厂家的硬件包含了SATA接口以及兼容性和速度都无可挑剔的USB 2.0 host/SD卡支持,更出色的地方是,小小一个ARM9芯片还带了EMAC,同时带了两个小单片机,每个的速度是系统时钟速度的一半,这个小单片机可以实现的功能远比普通MCU的功能多。如果嫌CPU速度不够,还可以选择引脚兼容的带浮点DSP的片子,这个DSP的运算能力相当于同等ARM9在2G以上的运算速度,这对数据后端处理有着至关重要的性能提升。A厂家的片子还提供TF卡启动功能,这样的话可以完美地避开NAND发展所带来的问题,同时解决Linux在NAND建立的文件系统的启动速度问题。

  这里再说说时钟电路。由于需要支持32K~192K采样率,因此必须能够生成对应的时钟,同时要求jitter低于50ps(处理器内置PLL时钟一般在200ps以上)。而对于DAC,很多国产芯片都因为集成的成本低而将DAC集成到CPU里面,但这样做使得性能无法提高,比如THD+N最高只能到90dB左右,而目前世界顶级的DAC其THD+N达到惊人的-120dB,同时提供135dB的动态范围。这样高的性能对整个系统设计都有极其严格的要求,因此国外同类产品售价都不低于4,000美元。另外硬件系统设计最后的一个关键点就是PCB走线。

  在软件方面,系统需要覆盖数十种优化过的音频解码器,解码输出数字信号要经过DSP后处理,另外还涉及到FPGA Verilog软件编程、网络UPNP协议控制、文件共享、远程播放/控制等多种协议,涵盖范围相当广泛,目前国内基本上还没有供应商能进行相关的设计和制作。

  小结

  音频系统属于典型的低频模拟信号和高频数字信号结合的系统,因此能做好的厂家国际上都是屈指可数,国内更是罕见。经过我们三年多的研发,系统终于达到了国际中上游水平,产品听感和国际一线品牌Linn Akurate DS相当,由于系统设计合理得当,在严格的听音环境通过监听音箱和与市场价格在12,000元左右某知名欧洲品牌的DAC A/B对比,听感更胜一筹。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: