信号调制方式识别思路与参数计算

 

      本项目采用已调信号频谱峰点的不同以及正弦波与方波THD值的不同来区别不同的调制类型,由于STM32F4采样率不足,故将输出信号进行频谱搬移,Um乘以1.9M正弦波搬至100K的位置,送入单片机进行峰点分析,Um送入1通4模拟开关生成4路Um,第一路为AM,ASK解调,采用半波整流电路;第二路为FM解调,采用NE564锁相环电路;第三路为FSK解调,采用NE564锁相环电路,锁相环解出来的信号为正弦波,故采用钳位电路加过零比较芯片得到方波,第四路为PSK解调,采用倍频分频解调原理。最后将4路信号接到4选一选择器通过单片机分析在示波器显示正确的解调信号;在串口屏上显示调试类型与各项调制参数。

关键词:半波整流电路;NE564锁相环电路;钳位电路;倍频分频解调原理

图1 系统框图

本系统的硬件架构包含以下几个主要模块:

1.频谱搬移模块:通过与1.9 MHz正弦波信号相乘,将输入信号的频谱搬移到100 kHz的频段,适应STM32F4单片机的采样能力。

2.信号生成与分路模块:使用1通4模拟开关生成四路Um信号,分别对应AM/ASK、FM、FSK、PSK调制方式。

3.解调电路模块:包括半波整流电路、NE564锁相环电路、钳位电路、过零比较器等,针对不同调制方式进行解调。

4.STM32F4单片机分析与控制模块:通过处理和分析输入信号,识别调制方式,并控制4选1选择器来切换显示的解调信号。

5.显示与反馈模块:通过示波器显示解调信号波形,并通过串口屏显示调试信息和各项调制参数。

二、理论分析与计算

1. 调制方式识别

   峰点比较法:从理论上讲CW信号在频域只有一个点,AM有三个点,FM,ASK,FSK,PSK点数无法确定,但可以确定的是FM的点数是包含ASK、FSK、PSK的。这时我们采用THD值辅助区别模拟调制与数字调制,对于数字调制ASK的点数是可区别于FSK与PSK,但FSK与PSK可能会有包含的关系,这时只需要使用单片机控制1通4模拟开关依次采集THD值,还可采用高电平捕获区别FSK与PSK。

2. 参数估计原理

  a.AM调幅系数ma估计

Uc为解调信号幅度,Uf为已调信号幅度。由上述公式我们可知当已调信号幅度为1V时解调信号幅度近似于Ma。

  b.FM调频系数估计

调频系数为频偏除以调制频率

Uo为解调信号幅度,F0为解调信号频率(调制频率)

c.ASK、FSK、PSK速率计算

  码元数率为6kbps、8kbps、10kbps,一个方波里含有两个码元,故对应方波频率为3K、4K、5K。

d.FSK移频键控系数估计

 在前述系统框图中FSK与FM是分两路解调的,当输入为FSK信号时,锁相环输出依然为正弦,故H也有如下关系式:

三、电路与程序设计

1. 电路设计

(1)AM、ASK解调电路

AM、ASK解调电路采用半波整流电路(可直接采用模块)

图2. 半波整流电路(R值无参考性)

由与ASK解调信号为方波,为了方波不失真低通滤波器截止频率设计为100KHZ。

图3. 二阶巴特沃斯低通滤波器(R、C值无参考性)

(2) FM解调电路(可直接用模块)

图3. NE564锁相环电路

改变如图红框的电容值即可改变VCO振荡器的震荡频率,从而解调FM,由于当调制频率和调制指数过大时,解调出的信号幅度超过3.3V,无法送给单片机处理,而调制频率和调制指数过低时,信号幅度也过低单片机难以正确识别,故在NE564输出口接一个3KHZ的低通滤波器解决该矛盾。

(3)FSK解调电路

 锁相环电路如图3所示,由于锁相环模块直接输出方波在调制指数过低时不稳定,故先先采用FM解调电路解调出正弦波再通过钳位电路稳定波形,最后过零比较得到方波。(正钳位电路的电阻可与二极管换个位置R取100K、C取100nF)

                        

                                                               图4. 钳位电路

                                        

图5. 过零比较电路

(4)PSK解调电路

采用倍频-分频原理解调PSK,可以将PSK信号看做一个正弦信号乘以正负1,将PSK信号进行平方(正负1平方为1),再进行2分频便得到频率一致载波。

图6. 倍频-分频原理框图

最后采用相干解调将PSK信号乘以载波通过低通滤波器便得到调制信号。

                                                   图7  STM32F407软件流程图

### 使用YOLO实现调制信号识别的方法 尽管YOLO最初设计用于视觉对象检测任务,但在特定条件下也可以探索其应用于其他类型的模式识别问题的可能性。然而,直接应用YOLO于调制信号识别并非标准做法,因为这两种任务本质上存在显著差异:前者处理的是二维图像数据,而后者涉及一维时间序列或频域特征。 #### 数据预处理转换 对于尝试将YOLO应用于调制信号识别的任务而言,首要挑战在于如何有效地将一维信号映射到适合YOLO输入的空间表示形式。一种可能的方式是利用短时傅里叶变换(STFT)或其他类似的时频分析技术来生成代表性的伪彩色图谱作为YOLO的输入[^2]。这些图谱能够捕捉随时间和频率变化的信号特性,从而使得原本的一维信号信息能够在二维平面上得到展现。 ```python import numpy as np from scipy.signal import stft import matplotlib.pyplot as plt def signal_to_spectrogram(signal, fs=1e6): f, t, Zxx = stft(signal, fs, nperseg=1024) spectrogram = np.abs(Zxx) return f, t, spectrogram # 假设signal是一个长度为N的时间序列数组 frequencies, times, spectrogram_image = signal_to_spectrogram(signal) plt.pcolormesh(times, frequencies, spectrogram_image, shading='gouraud') plt.ylabel('Frequency [Hz]') plt.xlabel('Time [sec]') plt.show() ``` #### 构建定制化YOLO模型 一旦完成了从原始信号向可视化表征的转变,则可以根据具体应用场景调整现有的YOLO架构以适应新的输入格式和输出需求。这通常涉及到修改网络的最后一层或多层结构以便更好地匹配预期的结果类别数量及其分布特点。此外,在某些情况下还可以考虑引入额外辅助分支帮助提升整体性能表现[^3]。 ```python import torch.nn as nn from yolov5.models.yolo import Model class ModulationRecognitionYOLO(Model): def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None): super().__init__(cfg, ch, nc) # 自定义最后几层以适配新任务的需求 self.custom_head = nn.Sequential( nn.Conv2d(in_channels=self.model[-1].out_channels, out_channels=nc or 80, kernel_size=1), nn.Sigmoid() # 或者根据实际情况选用合适的激活函数 ) def forward(self, x): y = self.extractor(x) return self.custom_head(y) ``` #### 训练验证过程 完成上述准备工作之后就可以按照常规流程开展训练工作了。值得注意的是由于目标领域发生了改变因此原有的损失函数、评价指标体系也需要相应做出适当调整以确保最终获得的理想模型参数配置[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值