ZX2000 SPDIF 整体架构以及SPDIF协议分析

 

Audio PLL经过上面表格里面的分频,可以分出target中的频率(Mhz)。

FPGA验证的时候跑的是48K采样率的音乐,所以clock的设置如下:

BitClock = ASYSCLK / D = OverSampClock / D = 36.864 / 6 = 6.144Mhz  //D的值是软件控制的

DataClock = 6.144 / 2 = 3.072 Mhz

SampClock = 3.072 / 64 = 48Khz

 

Abby有一个版本的bitfile可以配置ASYSCLK:

 

通过

devmem 0x8399038 读出该寄存器原来的值:

0x80000011

devmem 0x8399038 32 0x80000111 可以将bit8设置成1,来获取另外一个ASYSCLK

 

BitClock = ASYSCLK / D = OverSampClock / D = 33.8688 / 6 = 5.6448 Mhz  //D的值是软件控制的

DataClock = 5.6448 / 2 = 2.8224 Mhz

SampClock = 2.8224 / 64 = 44.1 Khz

 

SPDIF只有一根输出线,clkdata信息都通过这根线传输,

SPDIF的数据格式如下:

 

 

1 Block       (192 * 64 = 12288 bits )                       = 192 Frames

1 Frame            (32*2 = 64 bits )                       = 2 SubFrames

1 SubFrame      (32 bits)             = 1 Preamble(4 bits) + 1 Channel(28 bits)

1 Channel         (28 bits)         = 1 AuxData(4 bits) + 1 AudioData(20 bits) + 1 MiscData(4 bits)

 

SPDIF 使用的是Biphase-Mark Encoding

上图中,最下面的是SPDIF实际量出的波形,虚线对应的各个点肯定是跳变沿,两根虚线之间如果有数据跳变,则对应的中间的Data1,如果没有数据跳变,中间的Data0

SPDIF中的引导码,分为3种:

ZX2000 SPDIF4frame8subframe)是没有Z前导码的,是用来进行校验的。第五个frame才会出现Z前导码。

前导码是不符合上面说的,虚线边沿数据跳变规则的,所以很容易能够从波形里面找出来。

SPDIFbitclk,可以量上面单独存在的1的周期,然后换算成频率。Bitclk/2/64就可算出采样率了

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值