发烧论坛

注册

 

发新话题 回复该主题

枫影FX-1000 数字音频播放系统设计思想 [复制链接]

1#
http://blog.sina.com.cn/fyaudio转发
枫影FX-1000 数字音频播放系统设计思想(一)
枫影FX-1000设计始于2011年5月,这是一个很普通的日子,几个对音乐喜爱的发烧坐在一起闲聊着,但随着话题的深入,忽然觉得我们有能力和资源设计和制造属于我们自己的音响系统。因为其中有着国内顶尖的电子工程师和软件工程师,从业时间都长达10年以上,更重要的是对HIFI的追求更有着20多年的历史,其中横跨了电子管时代,晶体管时代,集成电路时代直至现在的计算机信息时代。这是一笔很大的财富,更何况这些工程师都是职业的专业的,事实说明我们没有理由不去开发这一系列的产品。
在选定第一款产品的时候,我们做了充分的讨论,现代的民用音响系统中主要包括三部分音源、放大器、音箱。音箱我们不专业,毕竟我们只在电子,计算机领域工作过十几年,对于声学和电声学只是略知皮毛而已。那么我们所剩下的选择只有音源和放大器,一般来说在整个系统中,音源的重要性是要大于放大器的,理所当然音源就成为了我们的第一个目标。
做一个什么样的音源,这是一个值得思考的问题,肯定要是个数字音源,这是别无选择的,然后就是要对电脑的支持,这个我们考虑了蛮长时间,毕竟很多资深的发烧友都觉得PC出来的声音不好听,不好听肯定是有原因的如果问题出现在音源上,要对计算机进行支持那么这个问题将会避无可避,即便是这样也不能抹杀掉计算机的强大,廉价和方便,因噎废食的事我们不想做,所以对计算机输入的支持也就成为了必须要考虑的功能,这对我们来说将是一次挑战也是责无旁贷。
对传统数字音频系统的支持,这个不二话,铁定要做。
是否需要本机播放功能,这是在一个偶然的机会想到这个功能的,最开始的计划中是没有的,我们在进行系统调试时,在内存中内建了一个标准正弦波表以便输出标准正弦波来完成测试,测试的结果令我们很满意基本达到了安捷伦音频分析仪的测量极限,我想如果将内存加大直接播放音乐文件应该是一个很好的选择,后来证明只是一个很好的功能,只是加大的开发的难度与工作量同时也让整个开发周期往后延期了不少时间,但带来的好处也是明显的,即可以使设备使用更加方便,又能完全甩开数字音频信号通讯过程中令人头痛的时钟抖动所带来的音质劣化。再加上现在的大容量Flash ROM 已经相当便宜了,如果拿一张正版CD比,将会发现它是如此的廉价和方便,这样本机播放也就成为了一个需要完成的功能。
经过这样一讨论,发现我们既然做了一个不曾有过的东西,可以通过USB接电脑,可以通过光纤和AES接传统的数字音源,还可以使用内部的内存系统进行本机播放,这大概也算是一种创新吧。我不知道这样的一件不曾有过的产品能不能得到市场的认可,但这的确是我想要的产品,这就足够了。
输入接口确定了,那输出呢?
首先一定是要平衡输出的,这是我一直想要的接口,而且必须是彻彻底低的平衡,是从DA转换开始的平衡,这样的设计显然会大大增加成本和设计难度。但没办法,因为我一直认为这种平衡接口(XLR)所能达到的性能是单端(RCA)无法比拟的,曾经无数次在各种工业项目中被验证其优越的抗干扰能力和传输能力(记得三年前我为iPAD的代工厂设计相关加工设备时,因为一开始采用单端的信号传输,加工出来的东西总是达不到iPAD近乎残酷的要求,但后来换成平衡传输以后,所有问题才迎刃而解,达到了需方的品质要求),如果叫我放弃这个接口,只从商业的角度来考虑的话,我想我会失去大半的热情(对于噪音和失真所带来的影响还有彼此间的相互关系我将另行撰文加以阐述)。
本来想省点事,放弃单端RCA的输出,后来想想这样做太过于另类与不近人情了。最后还是加了以使其适应更多的HIFI系统,这应该算是一种商业考虑吧。
有很多发烧友认为功能的多样化常常会对性能造成不好的影响,但我认为这个认识在模拟系统中是正确的,但对于数字系统将不再成为矛盾,要不然现在的计算机不可能是如此的强大而且价格便宜。比如在液晶显示器上显示几个字符,如果用模拟系统搭建那将会成为一场噩梦,但对于数字系统会发现这个功能是如此的简单和轻松。
最后编辑拓海i 最后编辑于 2012-10-20 11:22:22
本主题由 版主 eric 于 2012/10/23 17:11:44 执行 移动主题 操作
分享 转发
TOP
2#

枫影FX-1000 数字音频播放系统设计思想(二)

http://blog.sina.com.cn/fyaudio转发

目标已经定下,剩下将是艰苦、漫长而且是枯燥的设计部分了,首先是要确定数字部分的架构。数字部分要实现的功能分三大块,通讯、存储、计算。FX1000大部分设计开发工作都是围绕这部分来展开的,工作量很大也很乏味,但这又必须认真仔细去完成的工作。
为了实现这些功能,经过一段时间的思考,我们选定了ARM+FPGA的架构,ARM(32位RISC CPU)用来完成通讯与存储部分的工作,FPGA(现场可编程逻辑)用来完成粘合逻辑与计算部分的工作。

通讯部分,这部分基本上可以按部就班的来做,因为相关的协议早已定下,按此完成即可,可能用很多人问:时钟怎么办?的确,是通讯都会要涉及到时钟的问题,特别是时钟抖动问题,这直接影响到数据是否能够被正确的接收,在HIFI领域这个问题将会被衍生到对音质的影响,不幸的是,这个影响的确存在而且很麻烦。因为时钟的抖动造成的失真可以算是一种相位上的失真,大脑对相位的认识关系到对空间的认知,对方向的判断。在相位上出现抖动,出现失真,就好比一人在唱歌,但老是在变化位置而且频率很快的变换位置。出现了这种情况,我想大脑会需要不停地捕捉这个声音,想去定位这个声音,却老是跟不上,这应该不会是一件很好受的事情。这种情况在现实生活中是很难发生的,但在通讯系统中就时常会发生这种情况,自然界中发生相位失真一般发生在运动的物体中,物理学中叫做“多普勒效应”,我们经常用这个原理来测量物体运动的状态。在天文学上可以通过观察天体光谱发生“红移”和“紫移”的情况来判断这些天体是否远离还是接近我们(扯远了)。
在Fx1000的设计中,通讯中的时钟抖动要求只需满足数据能够被正确接收,即可,这样对通讯部分的时钟要求就低多了,再做时钟眼图分析的时候,这也是一件很轻松的事,整个眼图都打得很开,测量的结果也是完全符合要求。当然这只是满足了数据正被确接收的要求,而对于HIFI来说还是远远不够的,因为从通讯系统中得到的时钟抖动还是比较大,虽然已经使用了一级PLL锁相环。因此对于这个时钟我们设计了专门的模块(包括软件和硬件)来进行抖动吸收,这在以后的篇幅中会被讲到。可能有人会问USB数据接收和SPDIF数据接收是完全不同的,怎么可以混在一起来说呢?其实,表面上的差异那只是协议上的差异而已,原理却差不多。SPDIF的时钟是从Biphase Mark Code中提出时钟来同步数据并进行接收的,而USB是通过帧时钟进行同步来完成接收的,它们的差异在于SPDIF接收数据长度是固定的,时钟频率根据采样率的不同而不同;而USB则是时钟频率是固定的,数据长度根据采样率和分辨率的不同而不同,但对于时钟抖动的处理却是一致的。

存储部分,这部分主要是个文件系统的问题,有两个方面的要求,第一:必须是windows所支持的文件系统,第二:支持FLASH ROM电气特性,这个特性和硬盘是不一样的。

计算部分,这部分是总个系统的核心,包括的内容也很多而且还在不断的追加当中。我总觉得这部分是很难用文字表述清楚的,一般的做法是给出完整的算法图和方程式,或者给出MATLAB的程序。问题是这些因为涉及到公司的核心利益都无法对外公开。所有我只能在文字上进行简单的描写,这样做的目的是希望更多人理解“枫影FX1000”。
首先要说明的是“枫影FX1000”的计算部分是由FPGA来完成,我们在FPGA中总共实现了8个DSP模块,分别用来完成时钟、信号、保护等各种计算,特别是要提出来的是DSD信号的处理,这个部分的计算与经常使用的二进制编码规则完全不同,幸亏是用FPGA来完成如果换成普通的CPU或者DSP这将会是一件很痛苦的事情。
时钟部分,主要是进行一些迭代计算以配合DDS模块完成对时钟抖动的吸收。这个效果很明显,虽然不能完全消除(这是不可能做到的事情)。没做处理的时候抖动频率大概在几KHz左右,而通过抖动吸收以后下降到1mHz以下,原来一秒钟抖动几千下,处理以后几个小时才会发生一次抖动。(未完待续…)
TOP
3#

枫影FX-1000 数字音频播放系统设计思想(三)

http://blog.sina.com.cn/fyaudio转发
````信号处理,这部分的工作可以说是相当艰巨的,这几乎超过了我们最初的估计,以至于这部分的工作还没有真正的结束。
从最简单的说起吧,首先是内插器,和抽取器的实现,对也内插器,有好几个用途,第一:是做为超取样滤波器中的一个部件,但因为WM8741中已经有了一个8倍的超取样滤波器,并且WM8741的最高采样频率以只能做到8倍超取样,192k/24BIT也是枫影FX1000的最高播放模式,所以在FPGA中暂时没有去实现超取样滤波器,但这并不意味着一直不会去实现,如果有足够的证据表明能实现一个更高性能的8倍超取样滤波器,那我们会毫不犹豫的启用这一功能,而且WM8741中的超取样滤波器是可以被旁路的,这也给以后的FX1000提供了一个升级的途径。还有一种情况,那就是下一个版本的解码系统可能要实现384K/32BIT播放格式,这就必然要实现16倍超取样滤波器,如果采用频率交错的话,那这个功能的实现就会成为必然。第二:做为数据纠错时使用,当时钟发生严重错误的时候,这时就必须对数据重新组织,和抽取器一起对数据重新进行采样,以得到一组合适的数据代替那些错误的数据,以便使整个播放能够顺利进行下去,如果错误严重到不能被修补时,那系统只能进入保护状态了。
抽取器,它是和内插器对应的,主要的作用就是把高采样率的数据,抽取成低采样率的数据,比如现在DXD文件,是384K采样率的文件,显然是不能被WM8741使用的,除非做交错处理,但如果抽取掉一半的数据,那就可以被WM8741接受了,虽然这是有损的,但这起码是播放高于192K数据的一个方法。
FIR滤波器(有限冲激响应滤波器),FIR在音频领域应用面要大于IIR(无限冲激响应滤波器)因为IIR的相位非线性要大于FIR,但IIR的实现起来更容易效率更高。幸好我们选择的FPGA能满足FIR的需求。FIR可以接在内插器的后面构成内插滤波器再配合后端的模拟滤波器够成总个DAC的滤波器系统,以过滤掉量化噪音和镜像噪音。当然它还有很多的用途,在这我就不再加以说明了,因为写多了估计没人愿意看了。
这里我要说一下DSD数据的处理,到目前为止我都不认为这是一个成功的数据模型,虽然DSD数据流更接近模拟信号,甚至于通过一个低通滤波器就可以将DSD数据转换成模拟信号,也能很好的解决常规DAC中的量化误差问题,高的取样频率也能使信号更加细腻,虽然这些都是HIFI系统所需要的。但是它的缺点也是很明显的,首先它难以加工和处理,连一个简单的音量衰减都是很困难的,当然这是相对于PCM数据,后者只要做一个除法器就够了,而DSD数据呢,则需要对那些1BIT的数据,进行重新排布,统计。DSD数据滤波器就可想而知了,就算是SACD的创始者SONY也只取得了少得可怜的成绩(另一个Philps早已退出),再者DSD信号似乎并没有给我们带来多大惊喜,就算是追求很高的HIFI领域,SACD的普及率也是比较低的,远远低于SACD 创始者的期望,相对于CD的成功,SACD只能算是失败了,好像SONY都没有太多得激情去推动SACD的发展了。还有就是DSD虽然有这很高的采样率,但他的量化噪音太靠近音频信号了,基本上后级的低通滤波器的转折频率要做到30kHz左右,这样低的转折频率对于音频信号危害是显而易见的,而PCM信号转折频率可以做到100kHz以上,所有说DSD信号可以重放100kHz的音频信号只是个美丽的传说。(未完待续…)
TOP
发新话题 回复该主题