- 注册时间
- 2012-7-22
- 最后登录
- 2018-11-30
- 阅读权限
- 200
- 积分
- 791
- 帖子
- 735
- 精华
- 4
- UID
- 2
  
|
从存储器上的二进制文件,到声卡发出声音,这其中有一个数据流动转换的过程。不管声卡的界面是PCI还是PCI-E,或者是USB的,它们的工作流程基本一样。本篇着重讲讲声卡的工作流程。
4 d* d A5 R2 G1 V6 ]+ |
& t, A( {7 L* E模拟输出
# r1 S; M* D. @; s. g. x k8 O7 z1 \+ m: C$ H0 ^: X0 c2 ~0 G

/ |* @ Y+ z; V: m u 声卡模拟输出流程示意图+ z& e6 u; W/ b
1 V6 S- H5 `2 q3 y8 b2 z1 k: W模拟在港台称为类比。模拟输出是我们使用得最多的输出方式,相比数字输出方式,它无需外接任何解码设备就能完成声音的输出。系统通过系统总线(例如PCI)传送数据到主芯片(I/O控制器或者音频控制器),然后输出数字信号到Codec或者DAC进行数字信号到模拟的转换,再通过声卡上的模拟输出插座输出。3 S# W4 v1 ` n0 M2 T3 E2 ^
整个过程为,总线->主芯片->Codec或DAC->输出。在最后一个环节,会有运放参与其中的工作,对信号进行放大,但这个环节,并不是一定需要的。! D" L& s3 m; g$ d% S. K
0 T l9 [! s1 ?& L' |! K
* y* G/ J2 T" _+ V) p6 L! _9 y
1 j1 [% \9 R' L4 A" q# F. \
数字输出
6 K7 a% T* ^" W " R3 ~( }& G( _0 K( H
声卡数字输出示意图
4 r" l2 a7 N0 @% @% h* ^1 P) G$ t" n& z9 t2 g' u
相对模拟输出方式,数字输出少了一个数字信号到模拟的转换过程,直接由声卡的光纤或者同轴输出端子和外置DAC通讯,数字模拟信号的转换过程交给了外置组件。3 U7 e9 r" D) l0 } L: |' B
6 E1 k1 l& H4 z
' L5 [, u) u. I" E1 V; X模拟输入- i+ S/ R5 ?' w2 s7 h5 e( h! b
, i0 [% X x4 L% X7 g; X0 l' T 1 f( Y- F* N% ^1 _5 i
声卡模拟输入流程示意图) j- Z" _! Q& f# d
插上麦克风录歌就是一种单纯的模拟信号输入的过程。在这个过程中,Codec和在输出的任务不一样,而是完全相反的,麦克风只能提供模拟信号,要被主芯片接受必须经过模拟信号到数字信号的转换,这个转换过程被称为ADC(注:ADC在用于硬件名称时,是指的模拟数字信号转换器),主芯片接受信号后传递给系统总线。Codec在此流程中担当的工作也可被专用的ADC芯片取代。
! j. [ T& @' z" e7 @) V* v
0 ]* V" `6 ~- x2 k1 y' d3 B. I+ |数字输入# t5 _/ b, R1 _% a3 u/ ~. v9 F- r5 ^
1 _3 x4 w% N" l( t8 m
0 |% q) j' Q% A y# K 声卡数字输入流程示意图. t# R6 W0 W% T- T: Y7 b% }- p
例如要录取MD的音乐节目,就需要使用到数字输入方式。在某些录音棚中,会有外置的ADC与声卡相连,此时录音,声卡也需要用到数字输入方式。数字输入的流程很简单,将输入的信号变成文件保存,其关键流程就是经过主芯片的转换并传送到系统总线。. i1 o7 G. v; H+ d
t! m" @% k3 ]& G6 U7 Q5 H6 W
回放方式
" @# Y' J4 `0 P0 M : m4 D/ Y8 h' p- a
声卡回路方式的流程示意图0 c! [1 d( w7 Y9 u- m! T- F
0 I+ z, t' k: \$ f- T+ }使用一根双3.5mm头的线材将声卡的模拟输出和模拟输入(Line in)连接起来的方式被成为回路,主要用于测试声卡的一些指标,可以看成是模拟输出加模拟输入的流程集合,这种方式不具备实用价值,除了测试之外没有人会这么用。这种流程太长,双3.5mm头的线材的质量会严重影响测试结果,其实很难测试到声卡的真实表现。
" L+ _! Z" |! Q; N( q, d! ^& [. U6 B6 h4 z/ {' R8 E) c
内录
6 g4 I \- t+ _6 i7 g: h; L. C: z/ m
5 e* L/ E% i+ G声卡内录方式的流程示意图/ S$ m% e) r/ i# G+ `5 h
0 p1 V' b( e: @; ~7 S3 q% m8 H/ _7 }; C8 T
) U% X) R, b* }/ k5 b" Y捕捉当前播放的数字信号的过程通常被成为内录,内录常常使用于测试,用于检测声卡的数字信号处理质量相当好用。在日常应用中,也可能用到内录,例如你录制实时播放的数字电台节目,就需要用到内录。
% S: n9 F( Q3 [' w
4 a( ~0 `) y3 Q1 G E$ x& n% h+ s6 ^+ B4 s; p0 N
USB声卡的模拟输出2 |) \6 V* l% O& M
/ _8 |& ~; W F6 z
USB声卡模拟输出示意图0 ~, L) A/ K6 G% E
0 ?. p1 i$ K; X, u6 B, G! T其实与内置声卡相比,外置的USB声卡在模拟输出时,其工作流程也大同小异,只不过是总线由PCI或者PCI-E变成了USB,其他流程完全一致。同样是经过主芯片到Codec或DAC后输出。也有少量的火线声卡,其工作方式同样与内置声卡相似,总线不同罢了。
5 K% ^ G9 _/ ~3 a6 ^& F以上讲述的几个例子都是基本的流程,在不同的主芯片内部,进行数据处理时,其内部流程也会有所不同。9 r% \" f4 w9 ^! s9 [
0 N8 {+ A+ `7 k7 t+ v3 B' a3 l. P3 h; g4 ~
主芯片内部的流程+ N. n4 W8 J6 y5 [' I
 - A- ~% S k6 o: |- L
音频加速器和纯I/O控制器的工作流程对比示意图2 s7 Q* | P: f! _! N
; O8 M3 R# ^$ o$ G) t6 W0 Y5 c
1 `7 h# v9 R$ t3 M 在《声卡入门·2009版 元件篇·认识主芯片》[作者: 夏昆冈 ] 一文中我们说到,主芯片又分音频加速器和I/O控制器两类,音频加速器集成了I/O控制器和DSP,这也导致了它们内部的信号流程会有所不同。I/O控制器很简单,就是输出和输出,而音频处理器的内部流程可能更为复杂,信号可能经过内部的DSP,也可能不经过,这需要看不同场合下声卡驱动的设定。在很多时候,不能依靠简单的硬件来区别其工作流程,因为软件可以让CPU来模拟DSP的工作,即便使用的是基于纯I/O控制器的声卡,它在打游戏的时候,其输出流程中一样会出现一个基于CPU模拟的DSP模块。
# G1 L6 e1 q; S& Y, a1 |4 l! M8 J) B. _! p# R" k B
媒体播放器位于流程的什么位置?
! |; A( q4 ?# L2 k Q7 Q8 ] u# `- N- J
声音的输出,不能单纯依赖硬件得以实现,其中播放器是非常重要的一个环节,但这个环节,有位于整个流程的什么位置?
! p1 \' |' _% j. e& w6 P K4 F
) [0 ?% n2 Y* ], g2 a, w w播放器到声卡示意图. z$ S) q' A! s; m5 g- T+ V
+ y' A$ s! P. s% l/ D6 S* L
/ z2 u j9 Q3 N 2 N' @$ A$ o" I& Z7 d7 u- ]
这个环节位于输入到声卡之前。播放器读取存储器上的文件,并进行解码,然后输出到设定的声卡。在这之后,声音的处理均与播放器无关。: ^0 C6 y/ }) @7 G) L
播放器的DSP 插件,又位于流程的什么位置?
8 [! `6 [ n& Z9 S+ v1 {7 [
/ j! z& I- o5 r& _3 _& jFoobar2000音频播放器的工作流程示意图- C5 v: s( U# D4 a. {2 r( w
. @0 [2 q% c5 X& l' M* q3 o
/ b) r9 \) V- _
以Foobar2000为例,在其读入存储器文件数据后并完成解码后会直接输出,如果加载了DSP插件,就会多一次处理。假设你使用的是X-Fi声卡并开启了环境音效,使用Foobar2000也开启了某个DSP插件,此时,你听到声音,是经过2次DSP处理过的,一次处理,是对输入声卡之前的信号进行处理,即Foobar2000的DSP处理,另外一次就是来自声卡主芯片内部的处理。! J; @; g0 {* A# ?5 ?
流程暂且讲到这里,下一篇重点是一个与流程密切相关的环节,SRC。8 s7 I9 M; ?8 p) m
8 S1 z; M8 k% R6 A, ^仅供学习交流之用,版权归原作者公司所有,
- A+ H5 g' m( t8 m( b不可用于商业盈利用途,否则一切后果自行承担!
7 U+ z {7 [1 @
) e2 L( {- Q5 m; ^( S3 `7 M4 Q
7 O+ T' d* a* J5 M: y
7 @" h" o8 S: w: B! C' A# M! E7 ? g
. j6 g& m) |) ?: X5 B; c |
|