我于 1985 年设计了这个电路,因为我感到孤独,需要有人倾诉。Talking Box会说出我让它说的话。
说真的,我把它连接到我的电话上,当作数字答录机。我有一个 AT&T 的数据访问协议 (DAA),这是一个电话线接口,它工作得很好。我玩的是按键音,需要良好的保真度。于是县家庭和儿童服务机构错误地把我的号码写在他们的一些名片上。我接到了很多很多电话,特别是因为我在写和读我的淫秽垃圾诗作为我的答录信息。我说的是高保真宝贝!我得到了无数的证明,证明我有多受爱戴。基本上,我在 1985 年说唱出现之前就已经开始说唱了。“你好,你打电话来是想让孩子接受服务吗?”今天可能不是一个可以接受的问候语。
我曾用 Z80 汇编器编写了一个汇编语言程序来管理设备功能,后来我构建了一个适配器板,插入 IBM PC 兼容机的串行 I/O 设备插槽,并用英特尔的通用同步/同步版本 USART Intel 8251A 替换了异步 UART 设备。后来,一位名叫 Tommy Cobb 或“Cobbler”的朋友将我的 Z80 代码转换为 PC 的 8088 汇编程序。我不记得我最后一次看到我的 IBM PC 串行 I/O 板适配器是什么时候。我不知道有任何文档。我似乎找不到我的 Talking Box 原型,但它肯定在这所房子的某个地方。这是一个上镜的装置,我想在这里附上一些照片,但可惜。
除了将它连接到手机之外,该软件还允许我选择和重放一些不错的循环,用作音频存储示波器。倒着播放录音可以听到……啊,没关系。☺
无论如何, 《无线电电子》杂志买下了这篇文章,并付给我一笔相当可观的首期付款。我真的很感动,当然也很受激励。北美首发连载权。这似乎是一种很好的谋生方式,因为我喜欢设计、建造、编码和写作。有几位作者已经多次出现在文章中,所以这不是一个原创的想法。然后,该杂志于 1985 年 4 月倒闭并停止出版,这篇文章从未印刷过。我的感觉是,在那一刻,制造商印刷行业已经完蛋了,业余爱好者的建造观众已经消失了。这是在互联网出现之前。所以这里是这篇文章的复活。希望您喜欢它,即使它已经过时了。电动玩具即使在其使用逐渐减少后,仍作为概念保持实用性。
作者还要特别感谢 K3GO 的 John T. Smith,感谢他利用 OCR 技术将文章输入页面的 JPG 扫描件转换为文本。
Talking Box 是一个易于构建且经济实惠的项目,几乎可以为任何计算机提供一种数字编码方式,随后再现人类语音或类似音频频率的模拟信号。为了便于操作,该项目被设计为连接到计算机的串行 I/O 端口,看起来几乎就像是一个同步电话调制解调器。这为大量应用程序提供了一个易于连接的设备接口。该项目电路采用连续可变技术
斜率增量调制将模拟信号编码为二进制数据,然后将该二进制数据解码回模拟信号。由于这种编码/解码操作,该设备通常简称为编解码器。
在串行数据速率为 16 千比特每秒 (kbps) 的情况下,Talking Box 可以录制和重现语音,其保真度可与大多数电话应答机相媲美。将数据速率提高到 32 kbps,即每秒重现声音存储约 4 千字节数据,会使频率在 300 到 3000 Hz 之间的音频信号失真度低于 5%。这使得该项目可以轻松地与计算机一起使用,例如重现和识别电话按键信号。虽然本文的主要目的是描述 Talking Box 电路的设计和构造及其在音频或语音信号的二进制存储和重现中的应用,但该编解码器设备在通信、工业控制和仪器仪表领域还有许多其他应用。该项目的一些可能用途包括数字滤波器、电机远程控制、语音信号扰频、编码瞬态信号以供存储或显示、信号幅度压缩、用于混响的数字延迟线、提取和再现音位变体以形成合成语音、为声学调制解调器编码或解码信号、分组语音数据消息以及图像处理或分析。
大多数数字编码器以固定间隔对连续变化信号的幅度进行采样,然后用二进制字表示这些样本的幅度和极性。相比之下,增量调制器生成单比特字,其值表示跟踪信号中的量化误差或“增量”(A),而不是表示输入信号本身的值。从技术上讲,增量调制器是一种闭环采样数据控制系统,它产生二进制输出,其极性表示当前正在采样的输入信号与前一个输入信号的量化近似值之间的差异。这是通过在简单控制环路的前向路径中放置比较器并在反馈路径中放置积分器来实现的。如图 1 中的线性增量调制系统框图所示,比较器的输入是输入信号和积分器或本地解码器的输出。
因此,比较器输出反映了输入信号和积分器输出之间的差值的符号。该符号位控制接下来施加到积分器的电荷的极性,并形成数字输出。比较器输出通常采用时钟控制,以提供同步带限串行数字位流。所需电路的简单性和输出数据的串行性质是增量调制器的两个基本优点。如果将得到的时钟串行位流传送到类似构造的接收积分器(如图1所示),则该解码积分器的输出将是原始发射控制环路积分器输出的副本。同步串行数据流中不包含帧信息,并且从编码器获得的位流所表示的原始输入的复制在该数据输入到解码器后立即开始。此副本的保真度将在很大程度上取决于发射积分器跟踪原始输入信号的程度。从图 2 所示的波形(线性增量调制器波形图)可以看出,编码器的反馈信号试图以一系列大小恒定的斜坡步长跟踪输入信号。由于来自本地解码器的反馈信号由线性网络形成的恒定或接近恒定大小的步长组成,因此这种类型的增量调制称为线性增量调制。解码器输出中这些增量步长的存在会导致量化噪声信号,称为粒状噪声。如果比特流的时钟速率比输入信号的带宽高出一个八度或更多,则接收器输出处的低通滤波将消除大部分噪声信号。可以通过减小步长、增加采样频率或两者兼而有之来进一步降低该噪声信号的水平。
任何线性调制系统的主要缺点是,这种简单设计的控制环路无法在很宽的输入信号功率范围内保持足够的信噪比 (s/n),也就是说,它们的动态范围有限。例如,在语音录制中,不同人的语音模式中遇到的不同功率水平将导致信噪比明显不同。
在增量调制编码器中,输入信号的瞬时斜率或幅度变化率的信息由每个二进制或逻辑输出电平的连续发生率表示。如图 2 左侧所示,输入端存在零斜率、恒定幅度信号,由此产生的跟踪信号是一系列斜坡阶跃,每个阶跃的电平相等但极性相反。这进一步导致数字输出端出现交替的零-一序列,因此可以看出,这表示或对应于输入信号中的相对静默期或恒定幅度电平。静默期间与此期望结果的任何偏差都称为空闲通道噪声,当然,这将导致相关解码器输出非零信号。
如上所述,应用具有零斜率的输入信号后,将输出交替的 1 和 0 序列。但假设输入信号斜率变化如此之快,以至于反馈信号(即编码器的积分器输出)无法再跟踪输入信号。在这种情况下,输出将产生一串极性恒定的位。这种情况称为斜率过载,当它发生时,解码器的输出可能与原始信号完全不同。原始信号与其副本之间的差异程度称为斜率过载噪声。斜率过载噪声对复制波形的失真贡献大于粒状或量化噪声,因此对绝对波形保真度的影响更大。然而,人类听众会发现粒状噪声在再现的语音信号中在感知上更明显和更令人讨厌。
因此,我们可以看到,线性编码器的信噪比直接受输入信号功率水平的影响。在低输入功率水平下,信号跟踪效果较差,因为反馈跟踪信号在相对较小的输入信号上产生较大的偏移,因此相对较大的步长会产生大量的粒状噪声。随着输入信号功率水平的增加,信噪比线性提高,因为量化噪声在总功率中所占的比例越来越小。编码器跟踪输入信号的能力逐渐提高,直到编码器略微出现斜率过载。此时,信噪比开始下降,因为噪声功率含量的增加速度比信号功率含量的增加速度快。图 3(增量调制器系统中的信号功率和噪声功率)以图形方式表示了这些关系。
编码器的模拟输入信号的频率限制在上限。存在由奈奎斯特采样率确定的某个时钟频率,该时钟频率大于输入信号带宽,并且将在给定的噪声水平下对信号进行编码,前提是步长足够小。但是,输入信号的幅度限制在上限和下限都有限制。对于任何特定的输入信号电平,都有一个相关的积分器步长,它将提供最佳信噪比。不幸的是,固定的步长会导致线性编码器中有用输入信号动态范围的限制值相对较小。
现在考虑一下信噪比的改善,如果在输入信号的斜率较小时以某种方式减小跟踪步长,而在斜率变陡时增大跟踪步长,则可实现信噪比的改善。这可以通过调整积分器的增益来实现。显然,反馈信号将在更宽的输入功率水平范围内更好地跟踪。由于量化噪声与步长的平方成正比,因此使步长适应更宽的输入信号范围将导致噪声功率随输入信号功率而变化,而不是像线性增量调制那样独立于输入信号功率。因此,使噪声功率与信号功率成正比会导致信噪比具有与输入信号电平无关的恒定值。这是自适应增量调制的原理。对于给定的时钟速率和输入信号带宽,调整积分器增益的方法可以显著增加有用的动态范围,如图 3 所示。
已经使用了许多算法来自适应地改变跟踪积分器步长,但 Talking Box 采用的是连续可变斜率增量 (CVSD) 调制技术。也称为音节压扩增量调制,它是编码和解码具有大动态范围的语音或其他模拟信号的首选方法。前面所示的线性增量调制器中包含的操作元件外部是算法的实现,该算法监控增量调制器的当前和过去几个数字输出,然后相应地调整编码器积分器的增益。如图 4 中的 CVSD 调制系统框图所示,算法的监控部分是通过一个简单的移位寄存器实现的,该寄存器存储最后三个或四个输出位。当所有这些顺序存储的位都具有相同的逻辑电平时,公认的标准算法会提供指示,这种情况称为巧合。真正的巧合输出的出现表明当前积分器增益可能太小而无法跟踪模拟输入。重合输出允许更大的电流对低通滤波器充电,然后使用此滤波器的电压输出来调整编码器积分器增益的绝对幅度。大多数应用使用简单的单极低通滤波器,其固定重合时间常数范围从大约五到十毫秒,这相当于有声语音的典型音调周期,最多大约一百毫秒,这相当于语音的典型音节持续时间。因此,这种滤波器在语音编解码器应用中通常被称为音节滤波器。通常,时间常数值最终是根据主观偏好来选择的。
这种逻辑电平同步序列检测算法意义重大,不仅因为它简洁,还因为许多其他使用移位寄存器的算法都尝试过,但结果并不令人满意。在公认的算法中,同步信号的存在与输入信号的包络性质有关,因此指示信号的时间平均功率水平,而不是其他序列检测方法提供的有关输入曲线斜率的更瞬时的信息。该算法的效果是压缩信号,从而增加可实现的动态范围。
该算法在解码器中重复,因此电平数据在接收端得到恢复。如果将 CVSO 编码器数据流输入到线性解码器,编码器模拟输入信号的基本形状将被复制,但所有输出将具有相同的电平。比特流看起来好像来自具有恒定输入电平的线性编码器,因此解码器端需要该算法通过解压缩或扩展信号来恢复幅度电平变化。值得注意的是,由于该算法仅对过去的串行数据进行操作,因此它实际上相当于在不改变信道比特率的情况下增加比特流的信息内容。
因此我们可以看出,增量调制原理加上CVSO算法提供了一种易于实现的、有效的将音频模拟信息数字化为串行数据流的方法。
Talking Box 使用摩托罗拉 MC3417 或 MC3418 集成电路 (IC) 实现 CVSD 编码器和解码器电子电路,以实现增量调制器功能。这些 IC 是通用 CVSO 构建块,允许根据应用的特定要求定制电路实现。据摩托罗拉称,斜率极性开关的电流匹配在 MC3418 IC 制造过程中经过激光微调,以保证空闲通道性能,最小步长为 5 毫伏,典型电流匹配为 15 微安至 3 毫安。这允许步长变化为三百比一,这反映了显著模拟信号动态范围的能力。
由于 Talking Box 电路本身由单独的编码器和解码器路径组成,因此可以同时用于发送和接收,从而实现全双工操作。编码器和解码器均由相同的可变速率 TTL 时钟发生器电路驱动。由一对电压调节器和 RS232 接口电平转换器 IC 组成的支持元件是印刷电路板上仅有的其他部件。
图 5 的原理图显示了编码器路径电子电路,即 CVSD 编解码器语音数字化器 (A/D)。如图所示,该电路分为四个功能区域,从麦克风前置放大器电路开始,然后是自动增益控制 (AGC) 放大器、语音带通滤波器,最后是 CVSD 调制器电路本身。
麦克风前置放大器是一种经典的无变压器不平衡或单端输入放大器电路。为了在音频源(例如动圈麦克风)的低电平信号下获得最佳的噪声性能,该设计采用了非反相配置。该实现是在具有高阻抗场效应晶体管 (FET) 输入的 TL084 型四路运算放大器 (op amp) IC 的四分之一中实现的。前置放大器具有可调增益,可以使用微调电位器进行改变,该微调电位器连接为反馈电阻,标记为 MIC GAIN。放大器还具有低频滚降,即高通特性,其转折频率由从运算放大器的反相输入到地面的串联电阻/电容组合的值确定。这有助于降低前置放大器的环境交流场(通常为 60 Hz)嗡嗡声拾取灵敏度,并降低输入信号的低频功率含量。最后,前置放大器还具有一个小值电容器,它位于运算放大器的非反相或信号输入端与地面之间,用于绕过麦克风电缆上可能存在的不良高频噪声。请注意,对于某些应用,串联输入电阻器(100 欧姆)可以用电容器(通常约为 1 微法拉)代替。
麦克风前置放大器之后是 A6C 放大器电路,用于在将音频信号应用到语音滤波器和 CVSD 编解码器之前对其进行电平压缩。此操作限制了信号幅度的动态范围,然后才将其提交给频率带通和编码器处理。Talking Box 中使用的 AGO 电路是由 Burr-Brown Research Corporation* 的 Jerald Graeme 描述的。其操作基于使用 FET 作为 T 型分压器网络中的受控可变电阻元件,该元件决定了此阶段的增益范围和输出幅度。
AGC 电路动作由 FET 和两个运算放大器实现,这两个运算放大器来自同一四路封装,部分用于前面描述的麦克风前置放大器。第一个运算放大器用作增益控制反相放大器,第二个运算放大器用作峰值感测放大器。如果输出信号的峰值正电平超过 AGC LEVEL 电位器的电位器臂上设置的电压值,则感测比较器的输出将摆动为正,从而增加 FET 的栅极电压,从而降低其输入到源极的电阻。这反过来会导致更多的输入信号分流到地,最终导致此阶段的总电路增益降低。通过调节上面提到的 AGC LEVEL 控制电位器,可以将输出信号幅度设置为从零到增益控制放大器的饱和或削波电平之间»
在使用 FET 作为音频信号可变电阻元件的概念的许多实现中遇到的困难集中在这样一个事实:设备本身的电阻受施加在其上的信号调制。如果不能充分补偿 FET 特性的这一方面,将导致信号电平相关的增益和失真。图 5 所示的电路采用一种新颖的校正反馈方法来显著减少这种信号电平调制。可以看出,出现在 FET 漏极引线上的信号与来自相关 AGC 放大器输出的相等但相反的同相信号相匹配。电路中使用的电阻值经过选择,以允许 FET 在小信号电平下工作;这种情况也有助于最大限度地减少失真。如图所示,AGC 级的输出随后应用于编码器信号路径中接下来看到的语音带通滤波器。
语音带通滤波器电路级名义上允许 300 至 3000 Hz 频率通带内的输入信号通过,同时拒绝超出此范围的信号。在选择带通滤波器实现技术时,主要考虑因素之一是派生参数的值,该参数称为归一化或分数带宽。从数值上讲,它是从上 -3dB 截止频率中减去下 -3dB 或半功率截止频率,然后将该差值除以这两个相同频率的几何平均值而得出的结果。几何平均值当然是刚刚计算出的这个差值的平方根。这样,从编码器语音滤波器指定的(高和低)截止频率计算出的分数带宽的值约为 3,我们发现,当分数带宽的计算值开始通过约 0.8 的值并从下方接近或超过 1(或 1 的数值)时,通常,带通滤波器性能的更好结果来自级联高通和低通滤波器部分,而不是来自真正的带通实现。这是编码器语音滤波器电路中使用的方法。
另一个需要考虑的方面是语音滤波器需要具有良好的频率和瞬态响应特性。巴特沃斯型滤波器具有最平坦的通带幅度,同时提供中等速度的初始衰减滚降率。虽然使用这些滤波器时,通带上的频率变化会产生相移,但这种相移是渐进的,听觉上无法察觉。此外,这种滤波器的过冲量较低,瞬态响应可接受。所有这些因素结合起来,使这种滤波器的信号失真较低。编码器中选择的高通和低通滤波器类型是三阶有源滤波器,在转折频率以外,每八度具有 -18dB 的锐利截止率,以及平坦的功率和电压频率响应,并且在整个频带上相移逐渐变化。用于实现滤波器的特定电子电路称为无限增益 # 多反馈设计,之所以选择它是因为它在复杂性和元件值分布与灵敏度之间提供了良好的折衷。每个部分都由一半的 LM353 双 FET 输入运算放大器 IC 实现。这些器件具有极高的输入阻抗、快速的转换速率以及在电容负载下极其稳定的运行。由于滤波器中级联了两个反相运算放大器,因此最终结果近似于整个级的零相位变化。
语音带通滤波器的输出信号最终被应用到 CVSD 调制器电路。基本上,这一阶段的所有有效功能都包含在 IC 本身中,而分立元件则用于确定设备操作三个区域的特定参数。
首先,我们发现两个硅二极管从 IC 的引脚 12 连接到地,从而为设备的逻辑信号输入建立了阈值点,该阈值点高于地约 1.4 伏(约两个二极管压降),以便与 TTL 逻辑电平或电路板上的 RS232 接口 ICS 一起使用。
第二个要考虑的方面是跟踪积分器滤波器网络。Talking Box 电路使用单极积分滤波器网络连接在 IC 引脚 6 和 7 之间的本地解码器积分器放大器上。输出
出现在引脚 7 处的跟踪积分器的 1/2 也连接到引脚 2 处的模拟信号比较器的一个输入。使用双极网络作为此滤波器可以将信噪比提高一到两 dB,优于单极实现。如果需要,可以通过切断印刷电路板顶部连接引脚 2 和 7 的走线并在导体侧用合适的电阻器跳线引脚,然后在引脚 2 和地之间添加一个电容器来实现双极网络。摩托罗拉数据表 2 中解释了所需元件值的推导。
但请注意,所示出的通常使用的单极滤波器已被证明完全适合使用 MC3417 设备以 32 kbps 的数据速率进行 TouchTone 再现。
CVSD 调制器操作的最后一个区域是音节滤波器网络以及确定 IC 器件的积分器最小步长和环路增益。音节滤波器是一个简单的单极低通电路,由两个电阻器(标记为 Rs 和 Rp)和电容器 Cs 组成。通常,电容器通过串联的 Rs 和 Rp 充电。但是,当符合输出(IC 的引脚 11)变为真时,这会有效地将上电阻器 Rp 从 Cs 的充电路径中移除,从而增加充电电流,最终增加积分器步长。电阻器 Rm 用于确定最小积分器步长,而电阻器 Rx 的值用于通过简单的线性电流-电压变换确定环路增益。修改这种转换关系可以显著提高信噪比,但同时也会增加电子电路的复杂性。例如,使用有源电路器件实现此功能,在 32 kbps 数据速率下操作时,可以轻松产生 50 dB 有用信号幅度(动态)范围和 30 dB s/n 比。
CVSD 编码器 IC 的操作涉及三个数字或逻辑电平信号路径。第一个信号是引脚 14 的时钟输入,通常由下面描述的时钟发生器电路提供。第二个逻辑信号是出现在引脚 9 上的数字输出,它是来自调制器的实际串行数据流。数据位在引脚 14 处输入到 IC 的时钟的下降沿从设备输出。第三个也是最后一个逻辑信号是强制空闲输入,IC 引脚 15,进入电路。当引脚 9 的数字输出连接到 IC 的引脚 13(如图所示)时,设备内会形成一个切换触发器,然后使强制空闲输入引脚处于活动状态,从而导致从编码器数字输出传输空闲通道模式。此功能允许轻松建立数据链路同步或强制编码器静音模式。
这样检查了 Talking Box 编码器路径的电路细节后,现在让我们将注意力转向解码器路径中使用的电路设计。整个解码器路径的示意图如图 6 所示,即 CVSD 编解码器语音发生器 (D/A)。从该图可以看出,解码器路径由三个主要操作阶段组成,首先是 CVSD 解调器,然后是语音带通滤波器,其输出最终驱动输出放大器。
正如在增量调制原理部分中解释的那样,解码器功能可以被视为和理解为编码器功能的某种补充。因此,毫不奇怪,我们可以注意到它们各自的电子电路和元件值具有镜像相似性。
因此,在 CVSD 解调器级的示意图中,标记为 Rp 和 Rs 的电阻器以及电容器 Cs 的工作功能和值与图 5(编码器路径电路图)中那些标记为相同的组件的工作功能和值完全类似。同样,标记为 Rx 和 Rm 的电阻器的工作方式与编码器实现中标记为相同的补充物的工作方式类似。以类似的方式,甚至构成 CVSD 解调器的解码器积分器滤波器网络的组件也类似于调制器电路中的组件。最后,解码器 IC 的逻辑阈值电平也由一对硅二极管上的压降设置,就像编码器 IC 一样。
然而,在解码器路径中,只有两条数字信号路径与电路相关。有一个时钟输入,通常由用于编码功能的相同 TTL 时钟发生器电路驱动。该信号施加到解码器 IC 的引脚 14,并将随后依次出现在数字输入引脚 13 上的数据位计时到 IC 中。
CVSD 解调器级的输出当然是原始模拟信号的未滤波副本,该模拟信号曾经输入到编码器路径。然后,它接下来被应用于解码器路径语音带通滤波器,该滤波器用于消除前面描述的颗粒噪声或量化噪声。硬件实现与编码器路径中使用的硬件基本相同,只是高通和低通电路的级联顺序被反转了。在解码器滤波器中,第一个目标是尽可能多地消除量化噪声,因此将低通函数放在最前面,最靠近滤波器级的输入(因此也靠近解码器输出),以最大化这种衰减。
解码器信号路径中语音滤波器后面显示的是第三个也是最后一个解码器电路,即输出放大器。顾名思义,此阶段放大语音滤波器输出的音频信号。一对互补的硅双极晶体管作为缓冲装置连接,以提高此电路中使用的 LF356 运算放大器 IC 的功率输出能力。增益(或输出电平)控制以反馈路径中的微调电位器的形式提供,但也可以修改从运算放大器 IC 的非反相输入到地的电阻器的值,以调整输出电平的范围。最终,放大的信号通过大值电解电容器耦合到输出变压器的初级。次级产生的信号是解码器路径的最终输出,这完成了对电子电路这一部分的描述。
如前所述,除了刚刚描述的编码器路径和解码器路径电路之外,Talking Box 的另一个主要电路元件是用于控制前两个电路时序的时钟发生器。该电路的原理图如图 7 所示,即可选频率 TTL 时钟发生器电路。从图中可以看出,该电路主要由一个晶体控制振荡器组成,该振荡器驱动一个可编程分频器链,该分频器链的分频模数由相关拨码开关上设置的值决定。因此,可编程分频器很容易配置为大范围的数据时钟速率,事实上,为了灵活性,该时钟速率可以设置为由相关计算机通过连接接口选择。
印刷电路板上的最终电子电路元件是支持元件,包括计算机接口使用的正负电压调节器和 RS232 电平转换器 IC。图 B(RS232 接口电路和电压调节器图)显示了包含这些部件的示意图。
了解了增量调制器的一般工作原理以及该调制器的具体工作方式后,让我们看看实际硬件是如何实现和物理构造的。
刚刚描述的电子电路全部包含在一块双面印刷电路板上。该电路板的一侧主要用作接地层,允许数字电路和模拟电路紧密放置和混合。图 9(CVSD 编解码器印刷电路板布局)显示了印刷线路板两侧电路走线的正像。请注意,虽然卡是双面的,或者在电路板的正面和背面都有导电路径,但布局不需要使用镀通孔或导电孔来连接两侧。当然,这样做是为了让实验者能够轻松且廉价地复制建议用于项目的电路板。如零件清单所示,可提供带有镀通孔的成品电路板和原图的胶片副本。
请注意,在前后电路布局本身两侧的外围区域都提供了对准目标。首先,将此图稿作为每侧的胶片图像(通常是负片)提起,确保在每种情况下都包含这些目标。然后,使用这些目标,将前后胶片图像对齐并固定到位。现在,使用圆形打孔器同时在两张胶片上打三个单独的定位孔。注意在电路图稿区域之外的位置打孔。这些定位孔的存在将使前后胶片通过穿过这些孔的合适销钉相互对齐,同时将要暴露的一块电路板材料以三明治的方式放置在它们之间,从而确保轻松实现电路卡两侧的前后定位。这种尺寸精确的定位销可以从印刷电路供应商处购买,但经验表明,如果没有合适尺寸的预制棒之类的东西,那么削成适当尺寸的铅笔或木钉就可以很好地完成此目的。 68 号钻头尺寸足以满足大多数支撑孔的要求,即那些有元件引线穿过的孔。例外情况是调节器安装孔(37 号)和唱机连接器安装孔(直径为 3/16 英寸)。
两个图表用于显示印刷电路板的组件安装和组装细节。第一个图表是图 10,即 CVSD 编解码器电路板组件组装图,显示了零件在安装和焊接到电路板时的位置,还显示了原理图中各种标记点的位置,其中一些标记的电路位置用作测试点的连接,而其他位置则用于绑定各种配置选项。
第二张图。图 11 是 CVSD 编解码器电路板“Z 线”位置图,详细说明了电路板上必须焊接在卡的顶部或元件侧的孔的位置。请注意,只有当电路板上没有镀通孔并且零件清单中显示的电路板有此类孔时,才需要执行此步骤。如果此孔位置有元件引线,则将其焊接在电路板的两侧。如果没有元件引线穿过此孔,则将导线穿过孔和铆钉并将其焊接到电路板的两侧。这种从电路板一侧到另一侧实现导电通孔或路径的方法通常被称为“Z 线”,因为跳线的外观与字母相似,因此得名图 11。请注意,电路板导体侧必须焊接的所有孔都不是盲孔,即安装元件后无法进入。这使得项目电路可以轻松地用自制印刷电路板组装,无需镀通孔和很少的跳线。
RS232 连接器本身的上排引脚(即 1 至 13 号引脚)应焊接到电路板的顶部或元件侧,而下排引脚(即 12 至 25 号引脚)则应焊接到电路板的背面。
现在我们已经了解了 CVSD 操作的电子原理以及项目电路板的物理构造,接下来我们要研究的领域是将设备连接到相关计算机所需的软件。
正如介绍中提到的,Talking Box 看起来就像是连接的支持计算机的同步调制解调器。到目前为止,我们已经描述了项目电路的五条数字信号路径。当然,这些是两条数据路径,一条通往解码器,一条来自编码器;两个相关的时钟信号;以及编码器的强制空闲输入。其他一些可选的物理接口信号将在下一节的应用示例中描述。但是,由于接下来的解释只涉及数据交换操作本身的编程方面,因此现在假设只有这五条信号线连接到相关计算机上的串行 I/O 端口和从该端口连接。图 12(CVSD 板使用的 SIO 设备接线示意图)详细显示了此互连的硬件细节。
在以下讨论中,我们将参考清单 1 中所示的软件例程,即 CVSD 驱动程序。此程序清单包含控制 Intel 8251 兼容串行 I/O 设备(即 USART)所需的例程模块,以及控制 Zilog SIO 兼容串行 I/O 设备所需的模块。通过选择适当的驱动程序模块,这两个设备中的任何一个都可以轻松地以适合 Talking Box 要求的同步模式运行。源代码完全用 Intel 8080 汇编语言编写,模块之间的使用选择通过等式语句进行。
USART 和 SIO 软件驱动程序模块均包含四个主例程或入口点,它们与计算机与编码器/解码器的数据交换直接相关。这四个入口点是 INUART 例程、SERIN 和 SEROUT 例程以及 GETSYNC 例程。
在首次使用串行 I/O 设备向任一方向传输数据之前,用户必须先初始化或软件配置串行 I/O 设备本身,使其在同步模式下运行。这可以通过调用标为 INUART 的例程来实现。在任一模块中,此指令序列本质上用于加载 I/O 设备的控制寄存器,以便我们使其对未添加奇偶校验位的八位(字节宽)数据字符进行操作,并且它将使用单个字符作为模板,以便在串行位流(通常称为 SYNC 字符)内匹配模式,以假设已在字符边界上遇到同步(称为同步检测)。
请注意,在大多数同步通信中,没有字符帧位,例如异步或面向字符的串行通信协议所熟悉的起始位和停止位。相反,组成字符的每个位依次通过单独信号连接器路径上呈现的定时信号传输到串行设备或从串行设备传输出去,并且字符边界通过从时钟输入的位流中计数适当定义的每个字符的位数来确定。大多数“真实”或同步电话调制解调器数据传输应用程序以块的形式发送和接收数据字符,这些传输之间会暂停,以便定期重新同步数据流并允许对每个块的内容进行错误检查等。出于显而易见的原因,同步方法通常被称为面向消息的串行通信协议。
一旦初始化 SIO 或 USART 设备并使其投入运行,它们在软件中仍然相对容易控制。在这两种情况下,SERIN(从端口获取字符)和 SEROUT(将字符输出到端口)例程与简单的异步应用程序相同。因此,字符输入和输出例程仅涉及状态字节内位级别的循环测试,该状态字节从 I/O 设备反复读取,以确定字符是否已准备好接受或传送。当最终满足此测试时,字符本身实际上会从串行端口读取或写入串行端口,然后退出例程并返回到调用者。
剩下的驱动程序是标记为 GETSYNC 的驱动程序。对于任何 I/O 设备,该程序再次完成相同的功能。通常在记录周期开始时调用此入口点,以实际开始从编码器输入音频数据。在此任务中,该程序首先用于将编码器的强制空闲输入保持为真,从而使编码器生成相同的交替一零位序列输出,该输出表示静音,直到串行 I/O 设备检测到这些位的字符串与同步字符匹配。当满足对该字符存在的测试时,强制空闲信号线立即返回 false,允许编码器开始将音频数据发送到串行端口,然后在最终退出程序之前,该端口接下来设置为接收此数据。请注意,对于某些应用程序,可以更改所使用的此位模式的值,即同步字符,然后允许在硬件检测到与信号波形中的某个位置相对应的匹配序列时开始音频记录。
应用程序调用这四个硬件驱动程序原语例程来完成将音频数据物理地传入和传出计算机的任务。以下部分是使用这些例程与项目板和支持计算机的一些应用程序示例。
作者使用的 Talking Box 演示程序采用了刚刚描述的这些驱动程序例程,并允许从图 13 所示的命令菜单中选择性地执行任务,即 CVSD 编解码器电路板演示程序命令菜单。该程序在 CP/M 操作系统下运行,并已在 8080(自制)和基于 Z80(Televideo TS802H)的微机系统上进行了测试。该程序的汇编源代码显示在清单 2 中,即 CVSD 编解码器电路板演示程序。[-可选包含]
从该命令表可以看出,该程序设置为允许操作员从本地麦克风和扬声器对或电话线录制和播放音频。用于将演示程序和带有 Talking Box 的计算机连接到交换电话网络的互连装置基于称为数据访问装置或 DAA 的设备。作者使用的特定设备是较旧的(1976 年)贝尔电话 1001F 型数据耦合器,尽管可以从 Cermetek 等公司以不到 20 美元的价格购买复制其 DAA 功能的较新的 FCC 第 68 部分注册混合模块(CH1810 直接连接保护混合模块,或 DCPH,参见参考资料)。这些模块提供完全相同的功能连接,但它们的尺寸明显更小,使用方便性大大提高,旨在安装在设备内部,而不是挂在单独的外壳中的墙上!请注意,DCPH 模块采用 CMOS 逻辑电平信号路径,而 DAA 具有 RS232 信号电平要求。 DAA 或 DCPH 均可提供电话正在响铃的指示,并允许计算机控制设备的挂机/摘机(或应答/挂断)状态,并控制其对电话线的音频应用或接收。两者都提供所谓的计费延迟定时器、信号过载保护、线路隔离和保护以及捕获和拨号脉冲电话线(即呼叫)的能力。用于将 DAA 或 DPCH 和 Talking Box 连接到主机的物理接线如图 14 所示,即 CVSD 板和 DAA 到计算机接线图。
除了允许计算机在本地和电话上录制和播放音频外,演示程序还提供了例程来显示和更改表示音频信号的内存区域的内容,将其全部清除为某个预设的 (SYNC) 字符值,以及从主机系统磁盘驱动器保存或加载此音频内存的内容。它还允许初始化项目使用的串行 I/O 端口,更改 SYNC 字符值,并将用户定义的控制输出(称为标志位)信号设置为高或低。此输出信号可用于在计算机的控制下从一对编码/解码串行时钟速率中进行选择,如图 7 和 8 所示。最后,该程序还提供同步脉冲信号,该信号在每个播放周期开始时输出,以允许触发示波器显示等操作。
显然,该程序及其一些例程可以为许多有用的设备应用程序提供核心。项目系统可以立即实现的众多功能包括:用作计算机化的电子音频消息系统或应答机;用于从存储的语音中提取和播放音位变体(或说话者相关的音素示例)作为一些数据样本;用于存储并显示(在示波器上)这些音位变体或瞬态音频信号以供分析;用于将整个单词或语句存储在磁盘上以供以后重放。
由此我们可以看出,Talking Box 是一个易于构建和易于使用的项目,用于使用计算机将语音或其他音频信号数字化并再现。
作者特别感谢 WH Kerr 先生、EP Norwood 先生和 CP Quinn 先生为该项目的实现提供的宝贵支持和贡献。
这就是《无线电电子》杂志购买的文章。下面是摩托罗拉的 CVSD 编解码器数据表的副本。这份文件非常有趣且信息量丰富。
希望您发现我们上面介绍的内容有用或有趣 ☺ 严肃地说,我们始终欢迎评论、批评和建议。上帝保佑大家。