dudududu 发表于 2015-2-26 13:53:17

问个关于异步时钟的问题

就是网上看到好多解码器,都说为了杜绝信号源时钟的jitter,采用了本地的高质量时钟,那么这样就有一个问题了,信号源时钟和本地时钟如果不同步,快一点或者慢一点,那岂不是要出大事,就算子啊本地开辟一个比较大的FIFO,播放时间长一点,一样会出问题吧,要是信号源快了,就意味着,隔一段时间,就要舍弃一个原始数据,要是信号源慢了,那么隔一段时间,数据就会缺少一个??
难道说,使用本地时钟,还需要对原始数据进行重采样,数字插值或者滤波之类的处理??

wangrb 发表于 2015-3-2 23:18:46

对于usb dac,FIFO快空了的时候会让系统加快数据发送,快满了的时候让系统减慢发送,而读FIFO速率由本地时钟决定,降低时基抖动
对于接收spdif的dac,出现你说的这么严重的时基抖动就不叫时基抖动了,误码会导致DIR失锁不能正常播放
抖动 通常不会这么严重,lz放心用即可

zgxcom123 发表于 2015-3-3 21:20:04

楼主描述的不是异步时钟,是通讯速率跟不上…………………………

dudududu 发表于 2015-3-4 20:55:47

我描述的,是信号源时钟和本地时钟不同步的问题,和抖动没有关系,当然,使用本地时钟就是为了消除信号源的时钟抖动影响的;
比如说,信号源时钟是44.1005k,本地时钟是44.1001k那么,就是信号源发送数据的速度会比解码器消耗数据的速度快,不管FIFO多大,时间长了,总会溢出,反过来的话,信号源慢了,FIFO就会空,我的意思是这个问题要如何解,时钟不同步是一定存在的,因为没有两个始终会完全一样嘛{:titter:}

wangrb 发表于 2015-3-5 23:03:11

dudududu 发表于 2015-3-4 20:55
我描述的,是信号源时钟和本地时钟不同步的问题,和抖动没有关系,当然,使用本地时钟就是为了消除信号源的 ...

这样的时钟长时间连续播放你会享受间断性爆音{:titter:}
每次换曲dir重新锁定一次,清空FIFO,重新开始
所以大概不会出现明显问题吧

dudududu 发表于 2015-3-6 08:22:27

wangrb 发表于 2015-3-5 23:03
这样的时钟长时间连续播放你会享受间断性爆音
每次换曲dir重新锁定一次,清空FIFO,重新开始
...

诶,所以,这是个治标不治本的做法,遇到高码流,长时间的文件,那么爆音间隔就会变小

dykwai1 发表于 2015-3-6 13:21:04

为了杜绝信号源时钟的jitter,采用了本地的高质量时钟
正如这句话所描述的,使用本地时钟考虑的的是 时钟本身 的稳定性问题,与FIFO啊、同步啊什么的没任何关系

dudududu 发表于 2015-3-6 23:10:03

dykwai1 发表于 2015-3-6 13:21
为了杜绝信号源时钟的jitter,采用了本地的高质量时钟
正如这句话所描述的,使用本地时钟考虑的的是 时钟本 ...

但是同样的,必须要面对适中的同步性问题吧,就算你本地时钟性能出奇的好,但是前后不同步,有啥用?时不时的断流或者数据溢出

dykwai1 发表于 2015-3-7 11:02:28

同步是另外一个问题,分两个方面
一个是数据流的,一般是通过fifo缓冲辅助以插入数据、删除数据的办法处理
一个是时钟的,异步时钟一般是通过使用异步fifo的方法解决的

dudududu 发表于 2015-3-7 17:13:31

dykwai1 发表于 2015-3-7 11:02
同步是另外一个问题,分两个方面
一个是数据流的,一般是通过fifo缓冲辅助以插入数据、删除数据的办法处理
...

那么也就是说,不能绝对保证传输的是原始数据咯,时不时的要删除一笔数据,或者插入一笔多余的数据?

dykwai1 发表于 2015-3-9 09:27:53

FIFO 尺寸设置合适的话,插入或删除数据的几率是很低的

dudududu 发表于 2015-3-9 15:29:49

dykwai1 发表于 2015-3-9 09:27
FIFO 尺寸设置合适的话,插入或删除数据的几率是很低的

意思就是要把fifo搞大一点,是么{:lol:}

dykwai1 发表于 2015-3-9 15:37:33

基本是这个意思,具体多大尺寸合适需要实际测试,太大了浪费且会带来一些延迟

mdj-fish 发表于 2015-3-9 16:01:50

你需要的是一个与外部时钟同步的锁相环,本地时钟多么精确都没有用!

dudududu 发表于 2015-3-10 14:00:47

mdj-fish 发表于 2015-3-9 16:01
你需要的是一个与外部时钟同步的锁相环,本地时钟多么精确都没有用!

这个有现成的芯片么?

Fourier00 发表于 2015-3-10 19:20:44

一般音频时钟是多少m,可以允许多少ns的抖动,我有办法做如果时钟频率不是特别高的话,可以根据fifo水线来恢复时钟,如果是需要精度很高,可以考虑用dds,这样肯定不会丢数据

Fourier00 发表于 2015-3-10 19:25:19

如果不用dds可以用高速时钟分频,类似锁相环,但是有高速时钟周期的抖动,不知道这个能不能接受,比如说,用200m的本地时钟可能会产生5ns

Fourier00 发表于 2015-3-10 19:25:47

的抖动,如果可以接受,fpga就可以做这个事情

dudududu 发表于 2015-3-12 09:20:51

发重复了,编辑掉

dudududu 发表于 2015-3-12 09:21:15

Fourier00 发表于 2015-3-10 19:25
的抖动,如果可以接受,fpga就可以做这个事情


ns??现在的数字音频接收芯片的jitter指标基本都在50ps级别,ns会被直接pass掉的

话说,FPGA对高速时钟做分频的话,假设时钟源是高质量的,忽略其本身的jitter,那么FPGA在分频的过程中,会引入多大的jitter呢?

Fourier00 发表于 2015-3-12 12:08:48

dudududu 发表于 2015-3-12 09:21
ns??现在的数字音频接收芯片的jitter指标基本都在50ps级别,ns会被直接pass掉的

话说,FPGA对高速时钟 ...

如果是200m的时钟,最小的抖动就是5ns的,更加高速肯定跑不上去,看来这种方案肯定是不行的,只能外面做一个dds,然后通过dds来恢复时钟,要求是50ps以内,那么实际上要求时钟在(50/(227*1e3))*1e6
=220ppm那可以用dds来通过fifo水线来恢复时钟

dudududu 发表于 2015-3-12 12:51:50

Fourier00 发表于 2015-3-12 12:08
如果是200m的时钟,最小的抖动就是5ns的,更加高速肯定跑不上去,看来这种方案肯定是不行的,只能外面做 ...

DDS不是合成时钟的么?
另外你这个公式是什么意思,可以细说下不?
这么说,DDS还可以消除时钟抖动?看不明白的说啊

Fourier00 发表于 2015-3-12 13:05:57

dudududu 发表于 2015-3-12 12:51
DDS不是合成时钟的么?
另外你这个公式是什么意思,可以细说下不?
这么说,DDS还可以消除时钟抖动?看不 ...

Dds是频率合成的意思,他就是可以根据控制字来产生频率的东西,如果控制字是fifo水线的值的线性函数,就可以通过水线和dds来恢复时钟,保证fifo不溢出,也就是可以恢复对端时钟,在通信中很常见的一种应用,那个算法的是吧50ps除44k的周期,可以求出频偏抖动范围,单位是ppn

dudududu 发表于 2015-3-12 16:36:11

Fourier00 发表于 2015-3-12 13:05
Dds是频率合成的意思,他就是可以根据控制字来产生频率的东西,如果控制字是fifo水线的值的线性函数,就 ...

这里的jitter,应该说的是音频系统里面的主时钟,一般是bitclk的4倍湖综合8倍,或者更高,几十MHz

Fourier00 发表于 2015-3-12 17:59:44

dudududu 发表于 2015-3-12 16:36
这里的jitter,应该说的是音频系统里面的主时钟,一般是bitclk的4倍湖综合8倍,或者更高,几十MHz ...

我觉得偶尔差几ns应该也没有关系,我们当然搞spdif也是通过这样恢复时钟的,还是可以接受,用fpga方案很好实现,200m时钟,5ns按照24bit算的话也就是208ps也挺大的
页: [1]
查看完整版本: 问个关于异步时钟的问题