找回密码
 -注册-
查看: 11767|回复: 94
打印 上一主题 下一主题

身为码农出身的新烧,弄不懂为啥数字音源会有区别,请老烧指点迷津

[复制链接]
跳转到指定楼层
发表于 2017-2-19 08:44 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式 来自 上海浦东新区
比如DAC, 耳放等一样的前提下,用CD和用PC做音源为啥会有区别?不都是输出0,1吗?这还能有区别?还有换根好的USB线啥的能提高,好玄乎

请老烧指点,最好用理性的方式,而非感性的方式解释

94
发表于 2017-5-5 15:24 | 只看该作者 来自 上海
HHYYTT 发表于 2017-5-5 13:03
我准备有空用单片机做个usb audio的误码测试仪,顺便测测数据包时域情况。

其实有现成的软硬件可以测。
期待你的测试

回复

使用道具 举报

93
发表于 2017-5-5 15:01 | 只看该作者 来自 上海
本帖最后由 aarwwefdds 于 2017-5-5 15:29 编辑

说来说去都是那一套jitter论 误码论。
http://www.erji.net/forum.php?mod=viewthread&tid=1987631&extra=

别的我不说 看下USB/UAC基础原理吧,特别是楼上那些说自己是码农的,里面还有UAC实现代码,想必都看得懂吧。关于USB同步传输的事情上面也有说

看到楼上还有搬来老奔腾浮点运算BUG的事情,差点以为穿越了...本来浮点运算就是有精度限制的,拿个excel就能发现。然后老奔腾浮点运算图省事加快效率的事情,现在有些编译器也允许你做类似的事情,例如gcc里的--ffast-math,就是降低精度换速度(虽然会违反ISO规范)。而且x86架构只是定义了整数计算单元,一般定义里是不带浮点数单元的。只不过后来加FPU成了惯例而已

而PC里大多数操作都是整数运算操作,除了运算密集型应用。Windows不开源不知道,至少Linux内核里是也是尽全力避免真浮点运算(需要用到浮点运算时 用整数运算模拟浮点运算避免使用FPU)。大多数音频数据也是16/24/32位整数(除非你闲得慌用32位浮点)。所以浮点这事就别拿出来说了。

哦对了,FB2K在应用了DSP(包括音量控制)以后会使用双精度浮点给DSP计算音频数据,最后输出时会向下取整。担心浮点不精确的只要关DSP音量控制拉满然后ASIO输出就行了

然后作为码农,应该是最明白CPU/内存出错的时候会出什么事情的...直接crash啊。这种错误基本上都会让CPU遇上不可理解的错误指令,或者让指向的内存地址发生错误,为了避免任何可能产生的错误产生毁灭性影响,计算机的先驱们设计了各种机制,使得出错时能够及时中止运行。后来x86保护模式的引入更避免了程序崩溃使得整个PC系统崩溃。现在遇上问题CPU就会抛出一个“异常”,然后走异常处理流程,处理不掉就会给个错误然后结束自身。当你写的VC++程序crash时你是先觉得PC的CPU/内存出错还是先觉得软件上有问题?

既然一个正常的PC没有随时蓝屏,你的程序不会经常随机性崩溃(程序有BUG除外)。那你管那么多干啥...只有要求那种长时间在线的服务器,因为要连续高负载运行好几年都不能崩溃,才会应用上ECC内存。至于CPU校正...AMD曾经搞了个ACC,本意是为了让南桥校正CPU超频而又没给够电压的情况下可能产生的CPU错误(加压可以稳定超频后的CPU 副作用是耗电量增加以及发热量增大),结果被拿去开核了,然后就没然后了。

而且一个烧友,一条合格的USB线应该都有的吧,没有某宝也一堆什么发烧线了。USB线也不需要做阻抗匹配(确实有阻抗要求不过一般在PCB板上完成)。说充电各种跳的应该看一下自己的充电线是不是合格了,我自己测过一些廉价USB线,包括一些厂家送的机线,线损很大不好使。
回复

使用道具 举报

92
发表于 2017-5-5 13:03 | 只看该作者 来自 广东深圳
我准备有空用单片机做个usb audio的误码测试仪,顺便测测数据包时域情况。
回复

使用道具 举报

91
发表于 2017-5-5 12:03 | 只看该作者 来自 湖南长沙
琵琶琴瑟 发表于 2017-2-19 08:51
一个小例子就是,用电脑听歌经常遇到过系统造成的爆音吧?比如3分20秒你听到爆了,感觉很奇怪,进度条拖回 ...

只不过出问题的程度和强度不同,时间也可能是随机的,这里只能这样认为,因为谁也没有去论证过到底什么情况下传输会出问题。那么大到明显的出爆音,这毫无疑问是传输有错误,如果小到几不可闻,这种情况其实也是传输有错误,只是程度不同罢了。
回复

使用道具 举报

90
发表于 2017-5-5 07:46 | 只看该作者 来自 上海
25楼解释的不错
回复

使用道具 举报

89
发表于 2017-5-5 07:25 | 只看该作者 来自 广东广州
音频输出是一种非常简单的IO操作(解码工作都由DAC做),PC机除了处理一下中断返回,是不占用什么资源。PC机上各种卡顿,我更多认为是播放器软件写的渣,或者其他软件突发把电脑资源占用太多。我觉得讨论还是放在正常使用环境比较好,这种突发的东西,我觉得没必要太过聚焦。
回复

使用道具 举报

88
发表于 2017-5-5 07:18 | 只看该作者 来自 广东广州
farrel 发表于 2017-2-19 14:00
楼主是码农,应该知道数字信号不会出错的原理吧,一般信道都是同时传输信号和校验码,如果0,1出错,那么校 ...

这是唯一站得住脚的解释,如果规范的确如此的话。
回复

使用道具 举报

87
发表于 2017-5-4 23:38 | 只看该作者 来自 北京宣武
这个盲听可破,其实盲听可以验证很多疑问,但貌似大家都不喜欢盲听,知道这样说招人烦但还是说了
回复

使用道具 举报

86
发表于 2017-5-4 23:27 | 只看该作者 来自 河南
PC的主要问题是干扰大
回复

使用道具 举报

85
发表于 2017-5-4 23:02 | 只看该作者 来自 北京
琵琶琴瑟 发表于 2017-2-19 08:51
一个小例子就是,用电脑听歌经常遇到过系统造成的爆音吧?比如3分20秒你听到爆了,感觉很奇怪,进度条拖回 ...

我真的没碰到过这样的情况, 爆的地方 永远是爆的  没碰到过所谓的 该爆不爆的  
回复

使用道具 举报

84
发表于 2017-5-4 22:52 | 只看该作者 来自 广东深圳
wlq307 发表于 2017-5-4 22:19
亏你还说自己是码农,一个10年的码农告诉你区别在哪里,因为声音是实时性的,要求每一微秒,每一皮秒处理的 ...

请继续你的表演
回复

使用道具 举报

83
发表于 2017-5-4 22:19 | 只看该作者 来自 中国
亏你还说自己是码农,一个10年的码农告诉你区别在哪里,因为声音是实时性的,要求每一微秒,每一皮秒处理的数据量都要完全一致。举个例子,你解压一个1G的RAR数据包,你解压10次,你10次用的时间都会有差异,1G的数据,你用USB传输10次,10次用的时间都会不一样。这就不要谈微秒,皮秒处理的数据量是否一致了,数据是不会错,但是时间会有偏差,因为PC是多线程的,上百个线程在同时由系统调度,随时会中断,检验或者继续,你无法独占资源。
回复

使用道具 举报

82
发表于 2017-5-4 22:01 | 只看该作者 来自 四川成都
校验了还丢包?那你用的Windows和我用的就可以不一样了?
回复

使用道具 举报

81
发表于 2017-3-15 22:21 | 只看该作者 来自 广东广州
几率问题,好的线出错几率低一点吧。
回复

使用道具 举报

80
发表于 2017-3-15 19:26 | 只看该作者 来自 四川成都
wljmusic 发表于 2017-2-23 23:54
现在做校验不丢包了?

丢了包找回来重新传,叫做校验
回复

使用道具 举报

79
发表于 2017-2-28 12:47 | 只看该作者 来自 上海
andygaof 发表于 2017-2-19 16:54
我来尝试回复一下楼主这个问题

下图是小提琴某个音调长弓的波形图,请注意一点尽管他可以用FFT来分解, ...

手动赞
回复

使用道具 举报

78
发表于 2017-2-27 16:25 | 只看该作者 来自 广东
作为理科生,数模转换损失细节很容易理解,不过实际情况是,PC听歌很多时候你是在PC旁边听,PC运转的风扇声,磁盘运转声构成了环境电磁声,对听音有不少的影响,哈哈,这才是切身体会
回复

使用道具 举报

77
发表于 2017-2-25 13:53 | 只看该作者 来自 上海
建议玩pc HiFi的要服务器CPU和主板,加上ecc内存。不然,可能连数字音源0101代码都是错误。
回复

使用道具 举报

76
发表于 2017-2-25 13:49 | 只看该作者 来自 上海
即使硬件正常、软件正常、程序正常,也有可能出现错误,比如在太空中工作的计算机,会受到高能粒子的辐射而计算错误。解释如下:CPU计算时的中间数是存在寄存器中的,当寄存器电位为GND时,表示数据0;电位为VDD时,表示数据1。当一个寄存器被高能粒子击中后,有可能从电位0跳变到电位1,这样计算出来的结果当然是错误的,但寄存器并未被损坏,也就是说CPU硬件没有损坏。我曾经参与过一个比较重大的太空项目,那个项目中的处理方式是三模冗余法,即关键数据一个寄存器,变成三个,最后利用投票的方法来决定正确的数据,两个以上都被粒子击中并发生翻转的可能性很低很低,如果觉得不保险还可以使用五模、七模等。
       一切的一切都正常的情况下(硬件正常、软件正常、环境正常、各种电子质子都按照人们的期望去运行等等),当然不会发生错误,但这种情况怎么可能发生呢?
回复

使用道具 举报

75
发表于 2017-2-25 13:47 | 只看该作者 来自 上海
1994年6月,英特尔公司刚刚推出其划时代产品一一奔腾处理器。在芯片推出的前几天,英特尔公司的技术人员在做测试的时候发现,奔腾芯片的除法运算会发生某种偏差,这个问题是在90亿次除法运算中才可能出现1次错误。



  怀着侥幸心理的Intel测试人员,认为会被这种运算错误的人影响会很少,决定按原计划推出奔腾芯片。但是严谨的学术人员还是在这个几亿分之一几率中找到这个除法BUG。



  如果你闲得无聊,那么用你电脑计算器会算出取十位小数的结果962306957033÷11010046=87402.6282027341



有没有发现上面两张图有什么不同?

  而带有缺陷的Intel 奔腾CPU结果:962306957033÷11010046=87339.5805831329



国外网站对于该Bug的详细解释

  这就是FDIV缺陷。奔腾CPU的FPU单元有严重缺陷的产品,影响到FDIV(浮点除法运算)指令。虽然这个缺陷出现几率极低,但发现这个Bug的科学家还是将它公布世界。让当时使用这一批奔腾CPU的用户慌了起来,Intel的电话被打爆。因为连最基本运算的正确都不能百分百保证,这个底线被打破导致了人们对CPU这三个字母的不信任。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-11-5 18:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表