本部分描述了传统模拟调制解调器使用的调制方法。另外两种类型的调制解调器,有线调制解调器和 ADSL 调制解调器,使用相同的调制方法,但情况更为复杂,因为它们将其频谱划分为多个信道等等。有线调制解调器必须与许多其他人共享电缆。本 HOWTO 不解释有线和 ADSL 调制解调器的这种额外复杂性。
调制是将二进制(0 或 1)表示的数字信号转换为类似于正弦波的模拟信号。调制信号由纯正弦波“载波”信号组成,该信号被修改以传递信息。纯载波正弦波,频率和电压不变,根本不提供信息流(除了载波存在)。为了使其传递信息,我们修改(或调制)该载波。调制有 3 种基本类型:频率、幅度和相位。接下来将对它们进行解释。
最简单的调制方法是频率调制。频率以每秒周期(正弦波)为单位测量。它是正弦波形状在一秒内重复自身的次数的计数。这与它在一秒内达到峰值的次数相同。“赫兹”(缩写为 Hz)一词用于表示“每秒周期”。
频率调制的一个简单例子是,一个频率表示二进制 0,另一个频率表示 1。例如,对于一些过时的 300 波特调制解调器,1070 Hz 表示二进制 0,而 1270 Hz 表示二进制 1。这被称为“频移键控”。可以使用更多频率,而不仅仅是两种可能的频率,以允许传输更多信息。如果我们有 4 个不同的频率(称它们为 A、B、C 和 D),那么每个频率可以代表一对位。例如,要发送 00,将使用频率 A。要发送 01,使用频率 B;对于 10,使用 C;对于 11,使用 D。同样地,通过使用 8 个不同的频率,我们可以通过每次频率偏移发送 3 位。每次我们将可能的频率数量加倍,我们就可以将其表示的位数增加 1 位。
一旦理解了上述频率调制示例,包括通过单个频率偏移表示几位的可能性,就更容易理解幅度和相位调制。对于幅度调制,只需改变正弦波的高度(电压),类似于改变正弦波的频率。对于简单情况,可能只有 2 个允许的幅度级别,一个代表 0 位,另一个代表 1 位。正如频率调制的情况所解释的那样,具有更多可能的幅度将导致每次幅度变化传输更多信息。
要在某个时间瞬间改变正弦波的相位,我们停止发送旧的正弦波,并立即开始发送相同频率和幅度的新正弦波。如果我们开始发送新的正弦波,其电压水平(和斜率)与我们停止发送旧的正弦波时存在的电压水平(和斜率)相同,则相位不会发生变化(并且根本没有可检测到的变化)。但是,假设我们在正弦波曲线上的不同点启动了新的正弦波。那么,在旧正弦波停止而新正弦波开始的时间点,可能会出现突然的电压跳变。这就是相移,它以度(deg.)为单位测量。 0 度(或 360 度)相移意味着根本没有变化,而 180 度相移只是反转正弦波的电压(和斜率)。换句话说,180 度相移只是在过渡点跳过半个周期(180 度)。当然,我们可以只跳过比如说 90 度或 135 度等。与频率调制示例一样,可能的相移越多,单个相移可以表示的位数就越多。
我们可以选择组合调制方法,而不是仅选择频率、幅度或相位调制。假设我们有 256 个可能的频率,因此可以为每次频率偏移发送一个字节(8 位)(因为 2 的 8 次方是 256)。还假设我们还有另外 256 个不同的幅度,因此每次幅度偏移代表一个字节。还假设有 256 个可能的相移。那么在某个时间点,我们可能会对所有 3 个方面进行偏移:频率、幅度和相位。这将为每次此类转换发送 3 个字节。
当今使用的调制方法实际上没有这样做。由于检测所有 3 种类型的变化需要相对较长的时间,因此这不切实际。主要问题是,频繁的相移可能会使人认为发生了频率偏移,而实际上并没有发生。
为了避免这种困难,可以同时仅改变相位和幅度(频率不变)。这称为相位-幅度调制。它也称为正交幅度调制 (= QAM),因为在早期版本中只有 4 个可能的相位(正交)。此方法今天用于常见的 14.4k、28.8k 和 33.6k 调制解调器速度。今天未使用此调制方法的唯一重要情况是 56k 调制解调器。但即使是 56k 调制解调器也专门在从您的 PC 到电话线的方向上使用 QAM(相位-幅度调制)。有时,当线路条件不够好时,甚至另一个方向也会回退到 QAM。因此,QAM(相位-幅度调制)仍然是普通电话线上最广泛使用的方法。
用于高于 33.6k 速度的“调制”方法与 33.6k 及以下速度常用的相位-幅度调制完全不同。由于普通电话呼叫在电话公司的本地办公室被转换为数字信号,因此您可以通过普通电话呼叫发送数字数据的最快速度与电话公司在其网络数字部分(用于电话呼叫)使用的速度相同。这个速度是多少?嗯,它接近 64kbps。有时是 64k,有时如果位被“盗用”用于信令目的,则会更少。如果电话公司知道该链路不是用于语音的,则位可能不会被盗用。将介绍 64k 的情况,然后将解释为什么实际速度较低(56k 或更低 - 通常明显更低)。
因此,对于使用旨在发送人类语音数字编码的电路的数字部分的普通电话呼叫,64k 是绝对的最高可能速度(不包括日期压缩)。为了使用 64k,调制解调器需要直接访问电路的数字部分,或者能够确定生成接收到的模拟信号的确切数字信号(反之亦然)。如果电话呼叫的双方都只有到电话公司的模拟接口,则此任务非常容易出错。但是,如果一方具有数字接口,则这是可能的(对于 V.90 在一个方向上,对于 V.92 在两个方向上)。因此,如果您的 ISP 具有到电话公司的数字接口,则 ISP 可能会通过电话线向您的 PC 发送某个数字信号。来自 ISP 的数字信号在您 PC 位置附近的本地电话局转换为模拟信号(可能在您家附近)。然后,您的调制解调器的任务是尝试准确地找出该数字信号是什么。如果它可以做到这一点,那么在这种方向上,64k(电话公司数字信号的速度)的传输是可能的。
电话公司使用什么方法来对模拟信号进行数字编码?它使用一种以每秒 8000 个采样的速率对模拟信号的幅度进行采样的方法。每个采样幅度被编码为一个 8 位字节。(注意:8 x 8000 = 64k)这称为“脉冲编码调制”= PCM。然后,这些字节在电话公司的数字电路上以数字方式发送,其中许多呼叫使用称为“时分复用”的时分共享方案共享单个电路。然后,最后在您家附近的本地电话局,数字信号被解复用,从而产生与 PCM 最初创建的数字信号相同的信号。然后,此信号被转换回模拟信号并发送到您的家中。这种模数转换(反之亦然)由称为“编解码器”(编码器/解码器)的电话公司硬件完成。每个 PCM 8 位字节都会产生一定幅度的模拟信号。您的调制解调器的任务是根据其检测到的模拟幅度来确定该 PCM 8 位字节是什么。
这最初称为“模数转换”。现在通常称为“PCM”-某物(例如 PCM 调制),因为它就像编码/解码 PCM 一样,但增加了在编解码器从数字 PCM 代码生成模拟电压的精确时间进行采样的问题。
为了确定电话公司用于创建模拟信号的数字代码,调制解调器必须在电话公司创建模拟信号时使用的完全相同的时间点对该模拟信号幅度进行采样。为此,在模拟电话线上残留的 4kHz 信号的帮助下生成 8kHz 时钟定时信号。以 8k 幅度/秒的速度向您的家庭/办公室创建幅度,这在某种程度上创建了一个 4kHz 信号。假设每隔一个幅度具有相反的极性。那么将创建一个 4kHz 的类正弦波。每个幅度在某种意义上都是一个 8 位符号,而何时对幅度进行采样称为“符号定时”。调制解调器的任务是确保其 8kHz 时钟以精确地是 4kHz 信号(可能会略微偏离 4kHz)速度的两倍速度运行,并且调制解调器的时钟与电话公司的编解码器使用的时钟同步。实际电子设备可能会使用更高的频率时钟(将它们分频)并采集多个样本。如果您知道此同步是如何工作的,请告诉我(如果这是最新的 Modem-HOWTO)。
现在,PCM 中幅度的编码是非线性的。在低幅度下,PCM 字节值中 1 的增量表示模拟信号幅度中的增量(delta)远小于被采样的幅度高得多的情况。因此,对于低幅度,很难区分相邻的字节值。为了更容易做到这一点(对于 56k 调制解调器),不使用某些代表非常低幅度的 PCM 代码。这在可能的幅度之间提供了更大的增量,并使您的调制解调器更容易正确检测到它们。因此,V.90 或 V.92(在下游方向)不使用一半的幅度级别。这相当于每个符号(有效幅度级别)代表 7 位而不是 8 位。这就是 56k 的由来:7 位/符号 x 8k 符号/秒 = 56k bps。当然,每个幅度符号实际上是由 8 位生成的,但 ISP 发送器实际上只使用了可能的 256 个字节中的 128 个字节。有一个代码表将这 128 个 8 位字节映射到 128 个 7 位字节。它不仅仅是一个简单的映射,比如忽略最后一位。因此,要发送 7 个正常的 数据字节(8 位)将需要 8 个上述字节。
但这比这稍微复杂一些。如果线路条件不接近完美,或者如果方向是上游(仅限 V.92),那么甚至会使用更少的可能级别(符号),从而导致速度低于 56k。此外,由于美国政府禁止电话线上高功率级别的规定,某些高幅度级别无法使用,从而导致“56k”调制解调器在下游方向上最多只能达到 53.3k 左右。
请注意,电话网络的数字部分是双向的。一个电话呼叫使用两个这样的电路,每个方向一个。对于 V.90,56k 信号仅在一个方向上使用:从您的 ISP 到您的 PC(称为“下游”方向)。对于此 V.90,另一个方向(上游,从您的家庭/办公室到 ISP)使用传统的相位-幅度调制方案,最大速度为 36.6kbps(而不是 53.3kbps)。对于 V.92,此上游方向也使用 PCM 方法,并支持高达 48 kbps 的速度。从您的家庭/办公室到最近的电话公司办公室的模拟电路部分从未打算成为双向的,因为它只是一对双绞线。但是由于复杂的消除方法,它能够同时在两个方向上发送数据,如下一小节所述。据称,对于 V.92,由于单电路上的双向流量的困难,几乎不可能同时获得两个方向的最大吞吐量。
现代调制解调器能够同时发送和接收信号。可以称之为“双向”或“全双工”。这曾经是通过使用一个频率用于发送,另一个频率用于接收来完成的。今天,相同的频率用于发送和接收。这是如何工作的,不容易理解。
大多数电话系统“主线”是数字的,当您拨打电话时使用两个信道。您说的话通过一个数字信道传输,另一个人说的话通过另一个(反向)数字信道传输。不幸的是,电话系统通往家庭(和许多办公室)的部分不是数字的,而只是一个模拟信道。如果两个调制解调器直接连接到电话系统的数字部分,那么双向通信(同时发送和接收)将不成问题,因为将有两个信道可用。
但是信号路径的末端部分仅通过一个电路。如何在上面同时进行双向通信?它的工作原理类似于这样。假设您的调制解调器正在接收来自另一个调制解调器的信号,并且没有发送。那么没有问题。但是,如果您的调制解调器开始发送(另一个接收到的信号仍在流入您的调制解调器),它将淹没接收到的信号。如果发送的信号是应用于线路末端的“实心”电压波,那么在该点上不可能存在任何接收到的信号。
但是,发射器具有“内部阻抗”,并且应用于线路末端的发射信号不足以完全消除来自另一端的接收信号。因此,虽然线路末端的电压主要是较强的发射信号,但其中一小部分是所需的接收信号。所有需要做的就是滤除这个较强的发射信号,然后剩下的将是我们想要的来自另一端的信号。为此,只需要直接从发射器(在将其应用于线路之前)获得纯发射信号,将其放大一定量,然后从线路末端存在的总信号中减去它。在接收器电路中这样做会留下一个主要来自线路另一端的信号。
在一条线路上沿一个方向传播的模拟信号可能会遇到线路中的变化,这将导致部分信号以相反的方向回声。由于同一电路用于数据的双向流动,因此这种回声将导致接收失真。缓解此问题的一种方法是偶尔发送训练信号,以确定线路的回声特性。这将使人们能够预测任何给定信号将产生的回声。然后,此预测方法用于预测发射信号将引起的回声。然后,从接收到的信号中减去此预测的回声信号。这消除了回声。