信号发生器做通信测试平台,最容易踩的坑不是仪器不够贵,而是把“能出波形”误当成“链路能收数据”。我这次用一台普通函数信号发生器、一台任意波形发生器、几只衰减器和一套示波器采集端,搭了一个简易通信测试平台,目标很明确:在封闭实验环境里完成ASK/FSK这类基础调制方式的发射、信道衰减、接收判决和误码统计。它适合刚接触通信链路的朋友做原理验证,也适合有经验的开发者快速验证检波电路、比较器阈值和解码逻辑。整套东西不接天线,不做对外辐射,只做有线连接和屏蔽箱内测试,重点是把信号发生器从“单音源”变成可控的激励源,再把接收端从“看波形”变成“能判0/1”的测试链路。
1. 平台整体设计与器件选型逻辑
1.1 先定测试目标,再定仪器边界
我见过不少初学者一上来就列仪器清单,最后发现信号发生器只能输出正弦波,接收端却要做相干解调,链路根本跑不通。我的做法是先写一句测试目标:在1 MHz载波上,用ASK调制传输一段已知伪随机序列,符号率10 kbps,接收端用包络检波加比较器恢复数据,误码率低于1%就算通过。这个目标决定了信号发生器只需要具备外部调制输入或任意波形输出能力,不需要宽带矢量调制;接收端也不需要高精度本振,包络检波就够。目标越具体,仪器边界越清楚,后面选衰减器、滤波器、比较器阈值都有依据。
反过来,如果目标是验证PSK或QAM,信号发生器就得能输出IQ基带或具备IQ调制入口,接收端也要有相干载波恢复,这时简易平台的成本会明显上升。我的建议是先把平台分成“原理验证级”和“指标测试级”两档:原理验证级重点看波形、眼图、判决点,指标测试级才去抠灵敏度、邻道抑制、误码率曲线。多数人第一次搭建,做到原理验证级已经能学到八成核心知识,不必一上来追求综测仪级别的精度。
1.2 三层链路:激励、信道、接收判决
整套平台我按三层来拆:第一层是激励层,信号发生器负责产生载波和调制包络,必要时用任意波形发生器生成基带码元;第二层是信道层,用固定衰减器、可变衰减器、合路器和噪声源模拟路径损耗与噪声;第三层是接收判决层,检波二极管把射频包络变成低频电压,运放和比较器把它切成方波,最后由单片机或逻辑分析仪采样解码。三层之间用同轴线短距离连接,所有节点尽量在屏蔽盒内,避免环境噪声把微弱信号淹没。
这个分层的好处是每一层都能单独测。激励层可以用示波器直接看调制包络,信道层可以用频谱仪看衰减量是否对得上,接收层可以用信号发生器注入已知方波来校准比较器阈值。哪一层出问题,就在哪一层定位,不会出现“链路不通就换仪器”的盲目操作。我实际调试时,先单独验证检波器在1 MHz、0 dBm输入下输出直流分量是否随包络变化,再串入衰减器看检波电压是否按预期下降,最后才接解码器。这样每一步都有可观测的量,排错效率高很多。
1.3 器件清单与预算档位
我整理了一份常用清单,按“必要”和“可选”分开,预算档位只代表大致范围,具体以手头仪器为准。必要项里,信号发生器至少要有正弦波输出和外部调制入口,任意波形发生器不是必须,但如果有会方便生成码元;示波器带宽要覆盖载波的3到5倍,采样率至少是载波的5倍;衰减器建议准备3 dB、6 dB、10 dB、20 dB各两只,方便组合;检波二极管选小信号肖特基,结电容要小;比较器用普通高速运放加滞回电路即可。可选的是噪声源、频谱仪、逻辑分析仪,没有频谱仪也能用示波器FFT粗略看频谱,但精度别期待太高。
| 器件 | 作用 | 关键参数 | 必要程度 |
|---|---|---|---|
| 函数信号发生器 | 产生载波、外部调制 | 频率范围、调制输入带宽 | 必要 |
| 任意波形发生器 | 生成基带码元、包络 | 采样率、垂直分辨率 | 可选 |
| 固定衰减器 | 模拟路径损耗 | 精度、回波损耗 | 必要 |
| 可变衰减器 | 细调接收电平 | 步进、频率范围 | 可选 |
| 肖特基检波二极管 | 包络检波 | 结电容、反向恢复 | 必要 |
| 运放与比较器 | 放大、判决 | 带宽、滞回设置 | 必要 |
| 示波器 | 看波形、眼图 | 带宽、采样率 | 必要 |
| 屏蔽盒与同轴线 | 减少干扰 | 屏蔽效能、阻抗匹配 | 必要 |
注意:信号发生器输出口不要直接短路,衰减器先接再开机;检波二极管对静电敏感,焊接时烙铁要接地。
2. 核心信号链拆解与参数计算
2.1 载波频率与调制方式怎么定
载波频率我选1 MHz,理由很实际:频率太低,检波器输出端容易混入工频和谐波;频率太高,面包板走线和普通运放会拖后腿。1 MHz落在普通示波器和运放都能处理的区间,检波二极管结电容的影响也可控。如果手头只有低频函数发生器,可以降到100 kHz,但要注意环境中的开关电源噪声;如果有射频信号发生器,可以升到10 MHz,但接收端布局要更紧凑,比较器也要选带宽更高的型号。
调制方式先选ASK,因为它的包络最直观。信号发生器用正弦波输出载波,外部调制入口接一个由任意波形发生器产生的方波包络,或者直接用信号发生器的 burst 模式控制载波通断。方波包络的高电平对应“1”,低电平对应“0”,接收端检波后就是一个随包络变化的电压。这里要强调:ASK的调制深度不是越深越好。深度太浅,检波后高低电平差异小,比较器容易误判;深度太深,载波通断瞬间的频谱展宽明显,接收端滤波器不好设计。我一般把调制深度设在80%到90%,既保证判决余量,又不让边沿过于陡峭。
2.2 采样率、带宽与滤波器参数
如果使用任意波形发生器生成基带包络,采样率要满足奈奎斯特,但实际工程里我会留足余量。符号率10 kbps,基带方波含有大量谐波,采样率至少取符号率的20倍以上,也就是200 kSa/s;如果想让边沿更干净,取1 MSa/s更舒服。载波1 MHz,示波器采样率至少5 MSa/s,最好10 MSa/s以上,否则看眼图时点数不够。接收端低通滤波器的截止频率要高于符号率、低于载波频率,我取100 kHz,既能滤掉1 MHz载波残余,又不会把10 kbps码元边沿磨得太圆。
滤波器阶数不用一上来就做高阶。一阶RC滤波器在100 kHz截止时,对1 MHz载波有约20 dB衰减,对10 kbps方波的三次谐波影响不大,先用一阶把链路跑通,再考虑二阶或巴特沃斯。这里有个容易忽略的点:检波二极管后面直接接RC滤波,RC时间常数要兼顾包络边沿和纹波。时间常数太大,码元边沿拖尾,高速码元会连成一片;时间常数太小,载波残余大,比较器抖动。我按符号周期的十分之一来估算,10 kbps对应100微秒周期,时间常数取10微秒左右,实测比较器输出比较干净。
2.3 电平预算、衰减与噪声注入
电平预算是简易平台最值得算的一步。假设信号发生器输出0 dBm,同轴线损耗按0.5 dB算,固定衰减器先放40 dB,接收端检波器输入就是-40.5 dBm。检波二极管在-40 dBm附近还能工作,但灵敏度已经下降,比较器需要更大增益。如果想让检波器工作在更舒服的区间,我会把衰减降到20 dB到30 dB,接收电平落在-20 dBm到-30 dBm。这个区间既不会让检波器进入非线性,也能让后级运放有足够的放大空间。
噪声底可以粗略估算:室温下1 Hz带宽的热噪声功率密度约-174 dBm/Hz,10 kHz带宽增加40 dB,噪声底约-134 dBm;再叠加接收端噪声系数10 dB,等效噪声底约-124 dBm。如果接收信号是-30 dBm,信噪比大约94 dB,听起来很充裕,但实际环境干扰和检波器非线性会吃掉不少余量。为了模拟更真实的链路,我会用合路器把信号和噪声源合在一起,逐步增加噪声直到误码出现,再记录此时的信噪比。没有噪声源时,可以用信号发生器的另一路输出加衰减器模拟干扰,或者直接用环境噪声,但重复性差一些。
| 项目 | 示例值 | 计算说明 |
|---|---|---|
| 信号源输出 | 0 dBm | 函数发生器设定 |
| 线缆损耗 | 0.5 dB | 短同轴线估算 |
| 固定衰减 | 30 dB | 组合3只10 dB |
| 接收电平 | -30.5 dBm | 0 - 0.5 - 30 |
| 10 kHz噪声底 | -134 dBm | -174 + 10log10(10000) |
| 叠加噪声系数 | -124 dBm | 噪声底 + 10 dB |
提示:每次改变衰减量后,等信号发生器输出稳定再记录数据;比较器阈值不要一次调太多,按10 mV步进观察判决点变化。
3. 从零搭建:分步实操与现场记录
3.1 发射端:信号发生器输出与调制接法
发射端我分两种接法。第一种是信号发生器自带外部调制入口:载波设1 MHz、幅度1 Vpp,调制源用任意波形发生器输出10 kbps方波,幅度调到能让调制深度达到80%左右。第二种是没有外部调制入口时,用信号发生器的 burst 模式,让载波按方波门控通断,这种方式更接近OOK,接收端检波后高低电平差异更大,适合第一次联调。两种接法都要注意阻抗匹配,信号发生器输出阻抗通常是50欧姆,接收端检波器输入也要按50欧姆设计,否则驻波会让幅度读数不准。
现场操作时,我先用示波器探头接在信号发生器输出端,确认载波频率和幅度;再接上调制源,看包络是否跟着方波变化。这里不要直接把探头夹在检波二极管后面看,因为检波后是直流加低频,示波器要切到DC耦合,垂直档位也要重新调。我的习惯是先看包络,再看检波输出,最后看比较器输出,三层波形同时抓,任何一层异常都能马上发现。如果包络边沿有明显的过冲,先在调制源输出串一个100欧姆电阻,或者把方波边沿调缓,别急着怀疑接收端。
*RST FREQ 1MHZ VOLT 1.0 OUTP ON AM:STAT ON AM:DEPT 80上面是通用SCPI思路,具体指令名以手头仪器手册为准。我通常先手动设置,确认链路通了再写脚本,避免一开始就被指令格式卡住。信号发生器输出口先接衰减器再接检波器,开机顺序是先开仪器、后接负载,关机反过来。这个顺序看起来琐碎,但检波二极管被浪涌打坏的情况并不少见。
3.2 信道模拟:衰减、噪声与屏蔽
信道层我用了三种模块:固定衰减器、可变衰减器和合路器。固定衰减器负责大范围电平下降,可变衰减器负责细调,合路器负责把噪声源或干扰信号叠加进来。所有模块装在金属盒里,接口用SMA短线和50欧姆负载端接,未使用的端口一定要接负载,否则反射会让波形出现纹波。屏蔽盒不用追求极致,但盖子要盖好,电源线进出处加一个磁环,能明显减少开关电源噪声。
我做过一个对比:同样-30 dBm接收电平,不加屏蔽时检波输出上叠加了约20 mV的工频纹波,比较器输出偶尔出现窄脉冲;把链路放进屏蔽盒、信号源改用电池供电后,纹波降到5 mV以下,误码明显减少。这个现象说明简易平台里“接地和屏蔽”不是玄学,而是直接影响判决余量。信道层还要注意衰减器的频率特性,普通碳膜衰减器在1 MHz下问题不大,但如果升到10 MHz,就要看标称频率范围,别拿低频衰减器硬扛高频。
3.3 接收端:检波、比较与采样
接收端从检波二极管开始。我选小信号肖特基,阳极接信号,阴极接RC网络,RC时间常数按前面说的10微秒左右。检波输出先经过一级运放缓冲,再进比较器。比较器一定要加滞回,否则输入噪声会让输出在阈值附近来回跳。滞回窗口我一般设在检波输出高低电平差的20%左右,比如高电平1.2 V、低电平0.2 V,阈值取0.7 V,滞回上下各0.1 V。这样即使有几十毫伏噪声,输出也不会频繁翻转。
采样端可以用单片机定时器捕获,也可以用逻辑分析仪直接抓比较器输出。我用的是一个简单的边沿计数加定时采样:比较器输出接单片机外部中断,记录每个边沿的时间戳,再按符号周期10微秒? 这里要纠正,10 kbps对应100微秒周期,不是10微秒。按100微秒周期切片,每个切片中间采样一次,得到0/1序列。采样时刻要放在码元中间,避开边沿,这个“中间采样”原则在通信接收里非常关键。如果采样点落在边沿附近,误码率会明显上升,哪怕波形看起来很好。
# 伪代码:按固定周期在码元中间采样 symbol_period = 100e-6 sample_offset = 0.5 * symbol_period bits = [] next_sample = start_time + sample_offset while next_sample < end_time: bits.append(read_level_at(next_sample)) next_sample += symbol_period这段逻辑不依赖具体硬件,核心是“等间隔、中间采样”。实际调试时,我会先用已知的1010序列校准采样相位,再换伪随机序列测误码。如果1010序列都解不对,先别怀疑解码算法,回头检查比较器阈值和采样相位。
3.4 联调与误码率测试
联调顺序我固定为:单音验证、包络验证、检波验证、比较器验证、解码验证。单音验证看信号源和线缆,包络验证看调制深度,检波验证看RC时间常数,比较器验证看阈值和滞回,解码验证看采样相位。每一步都记录波形截图和关键电压,后面出问题可以回溯。误码率测试用伪随机序列,长度至少1024位,发1000个码元统计错误数。误码率低于1%算原理验证通过,低于0.1%算链路比较健康。注意样本量太小没有统计意义,10个码元错1个就是10%,不能说明问题。
我实际跑过一组数据:接收电平-30 dBm、无额外噪声时,误码率约0.02%;把衰减增加到-60 dBm,误码率升到3%左右;再叠加噪声,误码率迅速恶化。这个趋势符合预期,也说明平台能区分“电平不足”和“噪声太大”两类问题。记录数据时,我同时记下信号源幅度、衰减量、比较器阈值、采样相位和环境温度,后面复现实验时这些参数缺一不可。如果只记“误码率0.02%”,下次换个房间可能就复现不了。
| 测试阶段 | 观察点 | 通过标准 | 记录项 |
|---|---|---|---|
| 单音验证 | 信号源输出波形 | 频率幅度正确 | 频率、幅度、波形 |
| 包络验证 | 调制后包络 | 高低电平清晰 | 调制深度、边沿 |
| 检波验证 | 检波输出 | 随包络变化 | 高低电压、纹波 |
| 比较器验证 | 判决输出 | 无频繁翻转 | 阈值、滞回窗口 |
| 解码验证 | 误码统计 | 误码率达标 | 序列长度、错误数 |
4. 常见问题与排查技巧实录
4.1 现象-原因-动作速查表
简易平台出问题,症状往往很相似:波形有、但解不出来;或者误码率忽高忽低。我整理了一张速查表,按“先看什么、再动什么”的顺序排。排查时不要一上来就换仪器,先用示波器确认信号在哪一层变了形。多数问题出在接口、阈值和接地,而不是核心器件。
| 现象 | 可能原因 | 排查动作 |
|---|---|---|
| 检波输出没有变化 | 载波未调制、检波管接反 | 看包络、查二极管方向 |
| 比较器输出一直高 | 阈值偏低、输入失调 | 调阈值、测输入电压 |
| 比较器输出频繁翻转 | 滞回过小、噪声大 | 加滞回、加屏蔽 |
| 误码率忽高忽低 | 采样相位漂移、时钟不同步 | 校准采样点、共时钟 |
| 波形有纹波 | 电源噪声、未端接 | 加磁环、接50欧负载 |
| 衰减量对不上 | 衰减器频率特性、阻抗不匹配 | 换衰减器、查阻抗 |
注意:比较器输出频繁翻转时,先别加电容硬滤,先找噪声源;盲目加大滤波会拖慢边沿,反而增加误码。
4.2 独家避坑经验
第一个坑是“地线环路”。信号发生器、示波器、单片机电源如果分别接地,屏蔽盒和探头地夹之间可能形成环路,检波输出上会出现几毫伏到几十毫伏的低频起伏。我的处理方式是所有设备共用一个插排,信号发生器和示波器用同一路供电,探头地线尽量短,屏蔽盒单点接地。这个改动不起眼,但对微弱信号判决帮助很大。
第二个坑是“比较器阈值设得太理想”。理论上阈值取高低电平中点,实际检波输出有纹波和温漂,阈值要留余量。我一般先把阈值设在中点,再用可变电阻微调,观察误码率最低点,最后把阈值固定在这个位置上下10%的范围内。第三个坑是“忽略采样相位”。同样一组波形,采样点偏10微秒,误码率可能从0.1%跳到5%。我习惯用1010序列做相位扫描,找到误码率最低的采样偏移,再固定下来。第四个坑是“信号源幅度旋钮当衰减器用”,频繁大幅调输出幅度会改变输出级工作点,波形失真。正确做法是固定信号源幅度,用衰减器调电平。
5. 平台扩展与复用
5.1 从ASK到FSK/PSK的升级路径
ASK跑通后,升级FSK比较自然。信号发生器如果有FM调制入口,可以把基带方波接到FM输入,设置频偏,接收端用两个带通滤波器或锁相环鉴频。简易做法是用一个中心频率和两个边带频率,检波后比较两路幅度,判断频率高低。这个方案不需要相干载波,适合教学演示,但频偏和滤波器带宽要匹配,频偏太小判决困难,频偏太大占用带宽增加。我一般把频偏设在符号率的0.5到1倍,先用10 kbps、频偏10 kHz试。
PSK升级难度明显高一些,需要相干载波或差分检测。简易平台可以用信号发生器的IQ调制入口,基带用任意波形发生器生成两路正交码元,接收端用乘法器加低通滤波恢复基带。没有IQ入口时,可以用开关切换相位,但相位跳变会产生频谱展宽,接收端要能容忍。我的建议是先把ASK和FSK玩透,再碰PSK,因为PSK的判决点对相位噪声和采样时钟更敏感,简易平台容易陷入“调不完的参数”。
5.2 自动化测试与数据记录
平台跑通后,我把信号源设置、衰减器切换、误码统计串成半自动流程。信号源用SCPI控制,衰减器如果支持程控就程控,不支持就手动记录。每次测试生成一个CSV,字段包括时间、载波频率、符号率、调制方式、衰减量、比较器阈值、采样偏移、误码数和总码元数。这样跑一组衰减扫描,就能画出误码率随接收电平变化的曲线。曲线比单点数据更有说服力,也更容易发现异常点。
# 伪代码:衰减扫描与误码记录 for atten in [10, 20, 30, 40, 50, 60]: set_attenuator(atten) wait_settle(0.5) errors, total = run_ber_test(sequence, symbol_rate) log_row(atten, errors, total)自动化不等于放任不管。每换一个衰减档,我会先抓一张波形截图,确认没有削顶或失真,再跑误码统计。数据记录里一定要留“异常备注”,比如某档位出现了电源纹波、某次探头地线松了,这些备注后面分析曲线时非常有用。我的经验是,手工记录越细,后面复现越省时间;只记最终误码率,等于把最值钱的过程信息丢了。
5.3 可复用的实验记录模板
我最后留一个自己常用的记录模板思路:每个实验分“配置、波形、数据、结论”四块。配置写信号源频率幅度、调制方式、衰减量、比较器阈值、采样率;波形留包络、检波、比较器三张图;数据写误码数和总码元;结论只写一句话,比如“接收电平低于-55 dBm后误码率快速上升”。这个模板不复杂,但能逼着我把关键参数写全。下次换一个检波二极管或换一个比较器,直接对比四块内容,就能判断改动带来的影响。
我个人在实际操作中的体会是,信号发生器搭通信测试平台,核心不是把仪器堆齐,而是把每一层的可观测点留出来。发射端看包络,信道层看衰减,接收端看检波和判决,三个观察点稳住了,链路就不会变成黑盒。还有一个小技巧:每次调试前先用1010序列跑一遍,确认采样相位和比较器阈值没漂,再换伪随机序列做误码统计,这样能少走很多“以为算法错了、其实是相位偏了”的弯路。