建一个小站,与其说是分享还不如说是一种岁月的记录。

上一次心血来潮做解码器还是大二的时候,当时刚开始玩无线电隔三差五的守台子玩。但毕竟音乐还是要听的,同时带两个耳机不方便不说还显得略微有点蠢。于是乎想做一个能两路叠加的声卡,一来满足一下听台子的需要,二来也改善一下笔记本的背噪。一开始还打算从USB解码开始做起,买了几片TAS1020,折腾两天之后发现这部分仅能望而不能及也。重新搜罗两天发现当时CM6631A的方案在DIY中还算热门,普遍评价都还不错于是上淘宝选了块号称体积最小对的CM6631A模块。

不知从何时起,对DIY小型化的要求越发苛刻。要做解码器却选了一个耳放的外壳,外尺寸也只有64*26*86mm,内尺寸就更不用说了。即便如此,由于当时无线电正玩着火热,功能要求并不简单。从起的名字“Super USB Sound Card with CW Auto Key”就能看得出来,除了两路音频叠加,两路能分开调音量以外,还加入了CW自动键和手动键。而这所有的控制都要从一个3.5mm音频接口输入,具体的功能选择由开机时的接口状态得出,并由单片机进行控制判断。

而受限于当时对电源部分设计的把握,仅仅对USB电源做了滤波处理,并未做升压补偿和双电源转换,导致整体方案设计局限在了单电源上。受单电源的影响,DAC只能选择电压输出的CS4398。同时耳放驱动也只能选用TPA152这个勉强算得上HIFI的耳放……考虑到本文的重点也不在这,下面就简单放几张图把这段跳过好了。

虽然说第一代声卡小毛病一堆,但单凭底噪一点还是可以秒杀集成声卡几条街的。尤其之前买的几个耳机还都是低阻高灵敏,对控制底噪的要求还是有一些的。因此这个解码器也一直没闲着,除了更新过一次CM6631A的固件、把耳放驱动部分改成了手机中比较流行的Directpath以外,几乎没出过其他问题。

在这么半将就用的4年里,重新做一个解码器的想法总是时不时的冒出来。第一次是XMOS方案的出现,可以说这个芯片的结构还是非常新颖的。之所以没有称之为单片机是觉得它内部的架构已经超出了现有微处理器的范畴,与其说是微处理器更不如说是一个半定制的FPGA。

草就是这么长起来的,最开始关注XMOS的时候还是L8A的时代,USB协议还是需要外置一块芯片完成的。后来就出现了U8A,总算是单芯片方案了。然而面对BGA的封装和现成模块的局限还是一直在观望。直到最近发现XMOS已经出了U208,而且模块设计的是相当小巧,同时还有采样率指示输出,正合我意。又恰逢gap,也该是拔草的时候了。

说拔就把,当天晚上就基本完成了功能定位、电源架构、元件选型、PCB位置排布。画出来的草图和最终的实现方案几乎完全一致也能说明这草长得够壮实了。

吸取了之前电源设计的经验教训,这次算是在电源上下足了功夫。一方面参考现有产品,另一方面结合实际的空间布局、所需要的电源轨做了进一步的优化。尤其是针对DAC、滤波、音量调节部分的供电算是下了血本,在升压后又用高抑制比的LDO做了稳压。稳压后又用磁珠做了一次隔离,隔离后的输出接在示波器上仅仅比示波器不接探头时的底噪高出一点,最多也就2mVpp的纹波。

在音频链路上,这次使用了PCM1796 -> OPA2209 -> OPA1642 -> PGA2311 -> TPA6120的方案。使用数字音量调节的主要原因是没有找到合适的小体积电位器。另一个原因是因为PGA2311有正增益,可以通过程序控制,免去了接高阻耳机时改增益电阻的麻烦。运放用了两种主要考虑的是共模输入电压的限制,OPA2209作为IV转换,OPA1642作为滤波和转单端使用。

后来发现中间一层除了耳放以外还有屏蔽的作用,测试结果U208模块的辐射干扰还是不小的,特别是对DAC转换部分的干扰比较强。加上中间一层之后PGA2311的输出干净了许多。

数字控制部分直接上了块STM32的小芯片,QFN封装的比较省地方。加了晶振原先是考虑做频率计测量音频采样率用来动态调整DAC的,后来发现模块自带的采样率指示输出还挺靠谱就没用这部分了。STM32的程序写熟了也没费多少工夫,连写带调不到一下午就完成了。

最后放几张新做的解码器照片,声音评价这个因人而异。不过有些评价还是非常一致的,例如声音非常干净、层次清晰,细节丰富等。

最后还是推荐一下模块的卖家,CM6631A和U208的模块都是在他家买的。也是卖家自己设计的缘故,问题回复的非常及时和专业。店铺名叫:哈罗-HIFI。