一种有无线结合的局域网通信系统*
2021-01-26刘兴姿
刘 台,胡 斌,龚 鹏,刘兴姿
(武汉中原电子集团有限公司,湖北 武汉 430205)
0 引言
在现代大型通信系统项目中,小型通信系统可作为大型通信系统的子系统存在。现有的通信方式中,USB 传输方式已经发展成为一种成熟的通信方式,而近距离无线传输多采用蓝牙技术。蓝牙5.0是蓝牙技术联盟在2016 年提出的蓝牙技术标准。相比于之前版本的蓝牙标准,蓝牙5.0 具有更高的传输速率、更大的传输数据量和更远的传输距离,理论通信范围可达300 m[1],同时在低功耗方面性能突出[2]。
本文实现了有线与无线两种方式的通信系统方案。方案使用的开发板型号为NRF52840,开发环境为keil5,兼容USB 有线模式和蓝牙无线模式,实现了多个多功能通信设备对一个通话终端的实时话音通信。本文对系统结构、蓝牙拓扑结构、数据流程以及程序实现流程进行展示,分析模拟音频单元器件选型,对蓝牙5.0 通信方式的传输速度进行分析并配置测试,并对比话音质量测试标准进行丢包测试、波形测试和实际话音测试,最终展示实验结果。根据通话终端与多功能通信设备一对多实时话音通信方案,实现了蓝牙5.0 无线话音传输和USB 有线话音传输。经实测话音质量,结果满足音频性能指标要求。
1 系统原理分析
有无线局域网通信系统结构如图1 所示。多功能通信设备可通过有线USB 或无线蓝牙方式和通话终端实现话音通话合按键指令的传输。同时,一个通话终端可以和多个多功能通信设备同时通话,实现一对多通话功能。
多功能通信设备原理如图2 所示。耳机采集话音模拟信号,传输进入多功能通信设备。多功能通信设备将模拟信号降噪、放大以及AD 转换变换成数字信号。当工作模式为USB 模式时,数字信号通过USB 发给通话终端或计算机;当工作模式为蓝牙模式时,多功能通信设备的蓝牙模块作为从设备,将数字信号经从设备的蓝牙模块发送给蓝牙主机,然后蓝牙主机再将数据经USB 转发给通话终端或计算机。
图1 有无线局域网通信系统结构
图2 多功能通信设备原理图系统设计与实现
1.1 低功耗蓝牙拓扑结构
低功耗蓝牙系统拓扑结构如图3 所示,是星形拓扑[3]。系统分为主机和从机两种设备,其中系统如何运行取决于主机。中心主机可以和多个外设从机进行连接和通信。在有无线局域网通信系统中,多功能通信设备充当蓝牙系统中的从机角色,而与通话终端通过USB 连接的蓝牙模块充当蓝牙系统中的主机角色。
图3 低功耗蓝牙拓扑结构
1.2 系统数据流程
USB 模式数据流向示意图如图4 所示。多功能通信设备将音频信号直接通过USB 转发到通话终端或计算机。
蓝牙模式数据流向示意图如图5 所示。多功能通信设备将音频信号通过蓝牙发送给主机。主机接收蓝牙数据后,USB 将数据转发给通话终端或计算机。相比于USB模式,蓝牙模式增加了主机转发功能。
1.3 模拟音频单元设计
模拟音频单元框图如图6 所示。当输入MIC 有效值7 mV、1 kHz 正弦波时,发送端的DNR-3F 降噪模块输出的MICBUFF 信号有效值为660 mV±5%,需要通过下一级的运放进行增益调节,以满足数字话音幅值要求和ADC 的输入范围要求310 mV±5%。
音频信号增益调节电路如图7所示,调节R23/R25的倍数,使运放输出给ADC 输入端电压有效值在310 mV±5%以内,调试时将R25设定为10.5 kΩ,将R23设定为4.99 kΩ,电阻选择贴片薄膜电阻,精度1%即可。
图4 USB 模式数据流向
图5 蓝牙模式数据流向
图6 模拟音频单元
图7 语音信号发送增益调节电路
R23与C68组成低通滤波器,截止频率f=1/2πRC,要求放大器设计相位漂移5°以内,则截止频率必须满足:
因为人的声音频率范围是300~3 400 Hz,为了放大一点余量,计算时取值300~4 000 Hz 的范围。同时,要求低通滤波器在4 kHz 时的响应误差在-0.01 dB(十进制0.999)以内,则截止频率必须满足:
综上所述,截止频率满足f≥89.376 kHz 时,低通滤波器满足增益误差-0.01 dB 以内和相位漂移5°以内,因此反馈电容C取值为:
这里取值C=360 pF,重新计算可得截止频率f=88.6 kHz。
当C71交流耦合电容前后端直流偏置电压不一样时,R26做为限流电阻限制通过交流耦合电容的电流,一般取值几十到几百欧姆,这里R26=49.9 Ω。
C71和R28组成高通滤波器,R28与连接到运放输出端的ADC 输入阻抗并联,在这里建议并联后的电阻为10 kΩ,此处所使用ADC 输入阻抗为20 kΩ,因此R28=20 kΩ。
此处高通滤波器截止频率300 Hz 处响应误差取值-0.01 dB(十进制0.999),则截止频率满足:
交流耦合电容取值满足:
这里C71取值为1 μF 时,高通滤波器截止频率约为16 Hz。
电压偏置电路设计如图8 所示。
图8 运放电压偏置电路
设置R41=R42=100 kΩ,因此偏置电压为2.5 V。C89和R41、R42组成低通滤波器,用于滤除电阻产生的热阻噪声和由电源VDDA5V 产生的电源噪声,C89取值2.2 μF,C83预留,低通滤波器截止频率为:
刚好只允许直流电源电压通过,作为偏置电压。
计算压摆率SR:
式中,A为运放输出最大幅值。
一般保守的选择是取计算值的8~10 倍以上,这里取值为:
为了获得THD+N 为-100 dB 大小的要求,此运放电路输出端总噪声必须满足:
计算可得1 kHz 时,运算放大器输入噪声密度需要满足:
OPA1611 满足以上要求。
音频编解码芯片将从MCU 桥接芯片处收到的数字音频信号通过DAC 转换成模拟信号输出,通过运放OPA1611 差分放大和滤波后传送给耳机受话器。为使该模拟信号能够满足驱动耳机受话器,需将该信号调至有效值7.35 V±10%。
增益调节电路如图9 所示。由于DAC 部分收到的其他音频设备的音频有效电平值是310 mV(7 mV输入情况下),理论上需要放大的倍数为7.35 V/310 mV ≈23.7。电路中电阻值越高,会贡献越高的热噪声给电路而降低音频指标;电路中电阻值越低,会使DAC输出越多的电流增加失真。因此,权衡考虑,选取电阻值R30=R47=2 k Ω。根据放大比例,计算可得R46=R48=47.5 kΩ,即放大倍数为47.5/2=23.75。
图9 语音信号接收增益调节电路
图9 中的U7A 部分,反馈电阻和电容实现低通滤波器功能。该低通滤波器的截止频率为f=1/2πRC,要求差分放大器相位漂移5°以内,则截止频率必须满足:
因为人的声音频率范围是300~3 400 Hz,为了放大一点余量,计算时取值300~4 000 Hz的范围。
同时,要求差分放大器增益误差-0.01 dB(4 kHz情况下),则截止频率必须满足:
综上选择f≥89.376 kHz,因此反馈电容C取值为:
这里取值C=36 pF,重新计算可得截止频率f=93.12 kHz。
对于运放输出电流能力的分析计算,差分放大器接耳机受话器负载,最大功耗110 mW,耳机1 kHz 阻抗大小为600 Ω,则对于运放每个通道的要求如下:
计算压摆率SR:
式中,A为运放输出最大幅值。根据尼奎斯特采样原理,f=24 kHz(为DAC采样频率48 kHz的一半)。
一般保守选择取计算值的8~10 倍以上,这里取值为:
为了获得THD+N为-100 dB 大小的要求,此运放电路的总噪声必须满足:
式中,玻尔兹曼常数K=1.381×10-23,开氏温度T=298 K。
电阻R30或R47的热噪声为:
1.4 软件处理流程
主机程序流程图如图10 所示。从机程序流程图如图11 所示,流程中省略了按键处理。蓝牙和USB 通过接收模块接收数据。发送模块发送数据时,为了调和各模块的处理速度,使用环形缓存进行中和调整,保持收发速率的匹配。数据处理在主函数中进行。
1.5 蓝牙处理能力分析
蓝牙连接或广播都是周期性的。在一个周期中,蓝牙连接或广播只持续很短一段时间,几百微妙至几毫秒,与数据包长度有关[4]。CPU 或系统只会在这段时间内工作,其余时间系统都处于空闲状态。若广播间隔为200 ms,CPU 或者系统不是持续工作200 ms,实际只工作几百微妙,大部分时间(199 ms以上的时间)系统都是处于空闲状态。这是广播或连接状态系统平均电流很低的原因。图12 为广播间隔为200 ms 时系统的实时电流波形。
蓝牙想要达到最大吞吐率,必须保证蓝牙带宽尽可能被利用。此问题可转化为蓝牙包尽可能占满时间轴。如图13 所示,在固定的时间内,发包占用的时间比例越高,越接近最大吞吐率。
图10 主机程序流程
图11 从机程序流程
图12 广播间隔200 ms 系统实时电流波形
图13 蓝牙发包情形一
相反,若连接间隔很长且每个间隔只发一包,那么即便包长为251 Bytes,吞吐率也不高,如图14 所示。
蓝牙的传输效率可以粗略表示为:
图14 蓝牙发包情形二
式中,th表示蓝牙数据传输吞吐率,data表示一个连接间隔传输的数据,interval表示连接间隔,datalen表示一个数据包的长度,num表示在一个连接间隔内发送蓝牙数据的包数。例如。连接间隔为60 ms,一个连接间隔只传244 Bytes 的数据包,此时的吞吐率为244 Bytes/60 ms=4.1 kB/s。因此,欲提高吞吐率,可以从数据包长度、每个连接间隔发送的包数和连接间隔3 个方面入手。
已知NRF52840 蓝牙传输支持的数据包最大长度为247 Bytes,I2S 采样频率为8 kHz,采样位数16 bits。只取左声道,根据条件确定了一包数据长度为160 Bytes,采样一包数据20 ms,实际应用中需外加6 Bytes 包头,因此一包数据长度为166 Bytes,即每20 ms 蓝牙需输出一个166 Bytes 数据包。
蓝牙连接间隔取值范围为7.5 ms~4 s,连接间隔太长会降低蓝牙传输的吞吐率,连接间隔短一些会提高蓝牙传输吞吐率,但连接间隔过短也不会继续提高蓝牙吞吐率且会增加耗电。经实验,最佳连接间隔为30 ms。
现已确定一个包的数据长度为166 Bytes,连接间隔为30 ms,需确定每个连接间隔发送的包数num。每个连接间隔发送的包数取决于一个重要参数NRF_SDH_BLE_GAP_EVEVT_LENGTH,此参数的单位是1.25 ms。它的大小代表在一个连接间隔内用于发包的时间。为了尽可能多发包,应将整个连接间隔都用来发包。因此将此参数设为24,即30 ms,即整个连接间隔都用来发包。
一个251 Bytes 的蓝牙数据包和它的ACK 包在空中总共持续的时间大概为2.5 ms,可以估算在30 ms连接间隔内理论上可以发的包数为30 ms/2.5 ms=12包。虽然NRF_SDH_BLE_GAP_EVEVT_LENGTH 设为30 ms,希望整个连接间隔都用来发包,但实际每个连接间隔还要预留一些时间给协议栈调度,射频初始化和应用程序执行。假设以上时间花费为3 ms,那么30 ms 连接间隔理论上可以发送的最大包数为(30-3) ms/2.5 ms=10 包,最终确定每个连接间隔发送的最大包数为10,因此可以得出蓝牙最高的传输速度可以达到247 Bytes10/30 ms=81 kB/s。
以上分析为1M 模式,蓝牙5.0 提出了一个2M高速率模式[5],即同样的连接间隔,2M 模式可以发出的数据包基本上是1M 模式的两倍,相当于传输速率翻倍。
2 实验结果分析
首先,根据图1 的连接方式连接设备,一个通话终端连接4 个多功能通信设备,每个多功能通信设备连接一个用户耳机。多功能通信设备在发送音频包时,将发出的数据包数累加,使用Jlink 打印出来。发出的数据包经USB 模式或蓝牙模式传输到计算机,计算机使用Microsoft Visual Studio 2010 实现了一个从com 口读取数据并原路写回com 口的程序,并经USB 或蓝牙传回到各个多功能通信设备,即回环测试。多功能通信设备将返回的数据包累加并打印,测试的数据量为30 万包。多功能通信设备连接数为4,经过发送的包数和回环后收到的包数对比可以看出,发送与接收数据包延迟30 包。图15 为发送包数与回环包数打印,packet_no 为发送话音包数,packet_recv 为回环后接收包数。
其次,测试音频质量。耳机MIC 输入7 mV、1 kHz正弦波,经USB 或蓝牙传回到各个多功能通信设备。回环后,耳机PHONE 输出有效值7.35 V、1 kHz 正弦波。图16 为回环后I2S 输出波形,满足测试标准。
图15 丢包测试
图16 波形测试
最后,进行话音测试。使用耳机讲话,回环后传回到耳机,可听到话音,稍有延迟和杂音。
3 结语
本文设计一种有无线结合的局域网通信系统。一个通话终端可连接多个多功能通信设备实现多人远端通话,且实现有线与无线两种传输模式。经实验比对数据包数、波形测试和话音测试,结果可以得出此方案可行。但是,本次实验通话延时稍大,与程序中使用的环形缓存较大有关。为保证不丢包,将环形缓存设置得较大。此外,本次实验话音质量存在瑕疵,与开发板资源有限有关,且蓝牙通信距离受限,需改进天线。