- 注册时间
- 2012-7-22
- 最后登录
- 2018-11-30
- 阅读权限
- 200
- 积分
- 791
- 帖子
- 735
- 精华
- 4
- UID
- 2
  
|
从存储器上的二进制文件,到声卡发出声音,这其中有一个数据流动转换的过程。不管声卡的界面是PCI还是PCI-E,或者是USB的,它们的工作流程基本一样。本篇着重讲讲声卡的工作流程。
1 q0 [/ _6 U# p0 t. V4 l5 d
, I: y/ ?) r4 M0 H* Y. @模拟输出' P- M, H- U( {
7 `7 [: x# H' g9 _0 q$ h+ d
- h! [ ]: g' D 声卡模拟输出流程示意图: E* O8 q8 `1 k5 E% I
3 p8 z7 z- c: l4 {! Q模拟在港台称为类比。模拟输出是我们使用得最多的输出方式,相比数字输出方式,它无需外接任何解码设备就能完成声音的输出。系统通过系统总线(例如PCI)传送数据到主芯片(I/O控制器或者音频控制器),然后输出数字信号到Codec或者DAC进行数字信号到模拟的转换,再通过声卡上的模拟输出插座输出。 V* R. i0 J3 j3 U2 F8 q
整个过程为,总线->主芯片->Codec或DAC->输出。在最后一个环节,会有运放参与其中的工作,对信号进行放大,但这个环节,并不是一定需要的。
$ k m j9 Q/ u3 w
, B5 S2 @& E, ?; h/ f% K
6 ?/ J* j: g. Y8 Z+ R; X( `1 x
# X3 X# ?1 `) L! E! k8 T6 A数字输出' _+ W4 u9 Q1 C) e" ?8 y

. r! {8 v) v' ]6 b: S# | 声卡数字输出示意图) V% @% [: w% r3 q, g
1 ]; j( E3 m1 m' r. O8 l) m S
相对模拟输出方式,数字输出少了一个数字信号到模拟的转换过程,直接由声卡的光纤或者同轴输出端子和外置DAC通讯,数字模拟信号的转换过程交给了外置组件。
% \3 s* Y" j$ B, ?# B1 Y
8 U w0 @& L. [) n) M: ~. m0 n2 L: { P5 e
模拟输入
. J; g+ P8 a! l( M1 k+ @$ D( \: b$ s7 z

6 L1 G% {5 S0 [ i$ J% ? 声卡模拟输入流程示意图
6 w) t" l8 ^3 y x# b2 t插上麦克风录歌就是一种单纯的模拟信号输入的过程。在这个过程中,Codec和在输出的任务不一样,而是完全相反的,麦克风只能提供模拟信号,要被主芯片接受必须经过模拟信号到数字信号的转换,这个转换过程被称为ADC(注:ADC在用于硬件名称时,是指的模拟数字信号转换器),主芯片接受信号后传递给系统总线。Codec在此流程中担当的工作也可被专用的ADC芯片取代。
& z$ N4 M2 h; [# z0 h/ s& ~7 m& o; \1 B
数字输入
, w- q/ b0 ]; p' r7 H) v, O+ Q/ s+ y- y( h* I6 ~" M1 X

; K7 h4 V7 Y, Q) F0 c* Z! n 声卡数字输入流程示意图
- ~* J* w- {6 t1 @6 r: C( s7 b例如要录取MD的音乐节目,就需要使用到数字输入方式。在某些录音棚中,会有外置的ADC与声卡相连,此时录音,声卡也需要用到数字输入方式。数字输入的流程很简单,将输入的信号变成文件保存,其关键流程就是经过主芯片的转换并传送到系统总线。
3 h: ~+ a. r: x( a# T H5 J _( w2 s$ W7 |* v
回放方式
+ z% g* b- p8 ^/ x1 b; F: K5 x/ l 6 u; U) W! s8 }2 J: b/ b" a
声卡回路方式的流程示意图4 |- X! Q0 D; g- T, k& d0 J9 q, @
4 v4 D) }) a0 n7 _使用一根双3.5mm头的线材将声卡的模拟输出和模拟输入(Line in)连接起来的方式被成为回路,主要用于测试声卡的一些指标,可以看成是模拟输出加模拟输入的流程集合,这种方式不具备实用价值,除了测试之外没有人会这么用。这种流程太长,双3.5mm头的线材的质量会严重影响测试结果,其实很难测试到声卡的真实表现。
$ U" G( d1 { q' ^* t
4 d- M. r1 c) H4 V3 E$ ]内录4 d- R+ Z8 T5 K
. v n: w5 j' D8 d( c( }声卡内录方式的流程示意图
% a5 s8 L# h- D9 E9 \4 V/ t; B) H$ x% Q5 s, u
! M8 c. K5 I2 `. @# L
% Y% y1 X) x4 ~% B4 v
捕捉当前播放的数字信号的过程通常被成为内录,内录常常使用于测试,用于检测声卡的数字信号处理质量相当好用。在日常应用中,也可能用到内录,例如你录制实时播放的数字电台节目,就需要用到内录。8 d( w* F. f% v% b
. t+ B/ U6 W9 F. j- r/ P' q
, E" g4 f% c& b1 b4 F8 n0 A, f1 L' t
USB声卡的模拟输出
' u( @$ ^3 W# z7 q4 w - Y' H8 n6 t# E; W. x; ~' O
USB声卡模拟输出示意图( b. ~5 Z* _& t. X: v
$ g2 p7 w5 F. h5 `# B n2 ]' d0 Z其实与内置声卡相比,外置的USB声卡在模拟输出时,其工作流程也大同小异,只不过是总线由PCI或者PCI-E变成了USB,其他流程完全一致。同样是经过主芯片到Codec或DAC后输出。也有少量的火线声卡,其工作方式同样与内置声卡相似,总线不同罢了。5 E5 W" \: L/ L: O, f* r
以上讲述的几个例子都是基本的流程,在不同的主芯片内部,进行数据处理时,其内部流程也会有所不同。
. E/ l% J R2 R* g+ n4 G5 Z9 N+ j+ } ?6 F6 h
8 H# M6 c! X! \
主芯片内部的流程
- Z! V/ H2 g! \& K
u! p4 {" d& P* {6 k音频加速器和纯I/O控制器的工作流程对比示意图7 b0 j( P1 l2 _% D& X4 J
+ L) N: d- e2 G/ X) r' F% x# c) H8 J
在《声卡入门·2009版 元件篇·认识主芯片》[作者: 夏昆冈 ] 一文中我们说到,主芯片又分音频加速器和I/O控制器两类,音频加速器集成了I/O控制器和DSP,这也导致了它们内部的信号流程会有所不同。I/O控制器很简单,就是输出和输出,而音频处理器的内部流程可能更为复杂,信号可能经过内部的DSP,也可能不经过,这需要看不同场合下声卡驱动的设定。在很多时候,不能依靠简单的硬件来区别其工作流程,因为软件可以让CPU来模拟DSP的工作,即便使用的是基于纯I/O控制器的声卡,它在打游戏的时候,其输出流程中一样会出现一个基于CPU模拟的DSP模块。* D9 \( W$ i3 r
, z: ^4 D, Q9 A. N: E& j
媒体播放器位于流程的什么位置?
1 e/ S4 @+ v6 ?' T/ h; H
, e$ |# Q: ^# q2 k声音的输出,不能单纯依赖硬件得以实现,其中播放器是非常重要的一个环节,但这个环节,有位于整个流程的什么位置?
& h. q, d2 j3 K/ o0 U4 x
9 l* k c7 K; w4 ]! }* {0 a2 x播放器到声卡示意图
7 \ e. }. _" p. P
0 q! ]- H. H' M1 a5 H( d0 n+ z1 h% y: d& l* Y( v) }. H
9 s5 c; ~! D/ K$ T; h这个环节位于输入到声卡之前。播放器读取存储器上的文件,并进行解码,然后输出到设定的声卡。在这之后,声音的处理均与播放器无关。
/ e3 t( ?7 M& l- X8 @: |播放器的DSP 插件,又位于流程的什么位置?% P/ e$ a0 E# ]8 L t! D
. C" M* \( u3 j1 Y+ O
Foobar2000音频播放器的工作流程示意图
# p- k. z) m' R; y) a$ M. m. M
, [& d; h& c2 ?: T* p4 ? D8 U& J1 J/ I9 w% n) h% i7 M! h
以Foobar2000为例,在其读入存储器文件数据后并完成解码后会直接输出,如果加载了DSP插件,就会多一次处理。假设你使用的是X-Fi声卡并开启了环境音效,使用Foobar2000也开启了某个DSP插件,此时,你听到声音,是经过2次DSP处理过的,一次处理,是对输入声卡之前的信号进行处理,即Foobar2000的DSP处理,另外一次就是来自声卡主芯片内部的处理。4 ?; o6 c# b' Q( E }4 h
流程暂且讲到这里,下一篇重点是一个与流程密切相关的环节,SRC。
" e. y( e6 o% h
" V5 l' U! `' u; c2 W# g* \8 i) j仅供学习交流之用,版权归原作者公司所有,
E+ V/ s7 Z5 r4 w( ^ |不可用于商业盈利用途,否则一切后果自行承担!% w. [9 S8 r7 H
$ v; t3 _& l) v7 t) O6 W
7 h8 f5 A4 q+ E( ^
8 E$ r8 j! k t: Z. s0 y, B4 g
$ X3 o; B( a; Q% \1 z
: A' O% x1 X5 S3 F |
|