为我的CDM12做了块小板玩升频
样板到
这故事要从装了论坛的CDM12讲起。按照惯例,装完机总要拿到公司用AP测测。不测不知道,一测吓一跳。按装机
说明装起来的机器,音频带内的指标尚可,带外的信噪比相当的
原图采用的是PCM1974 datasheet中的fc=162KHz的LPF。这个LPF作为192KHz的DAC测试还可以,对于采样频率为
44.1KHz的CD而言,它显然不能有效地滤除带外的频谱映像成分和噪音。于是我就多次仿真、试验试图改进LPF
(具体情节另文贴出),最后在保证带内幅频响应和群时延平坦到一定程度的时候,宽带(500KHz)噪音仍然在
330uV左右。我还是有点不甘心,因为我测的几台像点样的厂机(价位在1000到2000美元之间)宽带噪音都在100uV以下。
反复读了又读PCM1798和PCM1794的Datasheet,结合其他一些关于delta-sigma DAC的资料,我觉得升频应该是
解决宽带信噪比的有效方法。
PCM1794在48KHz下输出1KHz,-60dBFS信号的频谱
PCM1978在96KHz下输出1KHz,-60dBFS信号的频谱
上面这两张图虽然来自于两个不同的芯片,但是除了采样率不同以外,其他的测试条件基本一样。我的PCM1798
在44.1KHz下的噪声频谱与前面一幅图很类似,当采样频率上去以后,噪声频谱应该与后面一幅图类似,一马平川
我一向对异步升频持保留态度。尽管芯片厂家都说自己的SRC滤除jitter的效果多么好,等效LPF的拐点频率多么低,
我可是亲自测到输入时钟的jitter对多频信号造成了怎样的恶劣影响(百灵歌著名的SRC2496是也)。做过数字设计的
TX都知道,两个完全异步的时钟放到一起,什么情况都可能发生。所以我这次坚持要做同步升频,也就是把SRC
只作为2倍的过取样数字滤波器使用。
但是论坛的CDM12升频并不是那么好加的。原因是主时钟采用的是384fs的频率(16.9344MHz),本来就有些特别,
升频之后采样频率加倍,时钟就成了192fs。这两个倍率现在都不是很流行,更糟糕的是位时钟BCLK是采样频率的
48倍,而不是常用的64倍。想偷懒重用输入端的BCLKI作为输出端的BCLKO是不成了。
CS8421原理框图
我看了TI、ADI和Cirrus Logic几家公司的SRC产品,只有Cirrus Logic的CS8421可以接受384fs的主时钟并支持192fs的
输出,但是只能工作在被动方式下。这就意味着必须外加一些逻辑生成88.2KHz所需的两个时钟信号(BCLKO和LRCKO)。
他们与主时钟MCLK的关系是:
fBCLKO = 1/4 * fMCLK
fLRCKO = 1/48 * fBCLKO = 1/192 fMCLK
这额外的逻辑就需要一个2位计数器负责除4,和一个6位计数器负责除48。
用逻辑电路搭固然可以,但是机内空间有限,还是用可编程逻辑电路来实现灵活些,没准还可以增加一些新功能呢。
用GAL固然可以,可是3.3V的少见,编程又要拔来拔去,太麻烦。恰好我在ebay上买到一些便宜的CPLD,Altera的
EPM3032ATC44,32个逻辑单元,3.3V输入兼容5V电平,体积又小又可以在线编程,就是它了!
(我可没想到最终会把32个逻辑单元一个不剩全用掉!) |