获取未知射频信号的比特流

信息处理 调制 解调 信道编码 特别提款权
2022-02-01 23:51:05

我正在尝试获取通过 433MHz 发送的信号的比特流。我已经安装了 SDR#(我在 Windows 上),连接了我的 NESDR SMART,我在这里识别了信号: 在此处输入图像描述 我可以看到只有一个峰值逐渐降低,所以我假设这是 AM。然后我将带宽设置为中央波瓣的宽度。我终于录制了“音频”并将 WAV 打开到 Audacity,但我无法理解正弦波(我期待的是数字流,因为指定了调制)所以这里是 I/Q 数据。 在此处输入图像描述 这是该波形主体的摘录: 在此处输入图像描述 我还安装了 DSD+ 和 SDR# 插件以及两者之间的虚拟电缆,但是在设置 SDR# 之后,波形并没有移动,所以什么也没有出现。

这是什么类型的编码?如何读取比特流?我对其他事情持开放态度,试图深入了解这一点。

2个回答

在此处输入图像描述

首先,我找到了正弦波极值(底部的黑色标记),并在信号图的顶部拉伸并叠加了一个正弦波图(红色),极值在相同的位置。该信号在一些非零段上匹配 (0) 正弦波,在其他非零段上它匹配正弦波并带有符号翻转 (1)。这给出了一个二进制序列。

符号翻转相当于 180 度相移,因此这是一种二进制相移键控(BPSK,2PSK,也称为反相键控,PRK)的形式,有用符号间隔持续时间(每个正弦曲线段)看似等于保护间隔持续时间(分隔符号的每个零值段)。不寻常的是,这里的符号率高于正弦波频率,比率约为20/72.86

IQ 数据看起来像一个叠加了二进制相移键控 (BPSK) 的正弦调制脉冲序列。BPSK 符号率似乎与脉冲重复频率 (PRF) 的速率相同。

我很无聊,所以我继续在 MATLAB 中对数据进行建模。

clear; clc;

% Measured quantities from IQ data
pw = 2.1771e-4;         % Pulse Width 
pri = 4.1123e-4;        % Pulse Repetition Interval 
ts = 2.419e-5;          % Sampling Interval 
period = 0.0012;        % Modulation Period 
npulses = 24;           % Pulses in IQ plot
t_start = 1.8660;       % Plot start time 

% Derived Quantities 
prf = 1/pri;            % Pulse Repetition Frequency
fs = 1/ts;              % Sampling Rate 
f = 1/period;           % Modulation Frequency

% Generate pulsed data
waveform = phased.RectangularWaveform('SampleRate',fs,'PRF',prf,...
    'PulseWidth',pw,'OutputFormat','Pulses','NumPulses',npulses);

pulses = waveform();

% Prepend data with zeros to match IQ plot
pulses = [zeros(fix((pri-pw)/ts),1); pulses].';

t = (0:length(pulses)-1)*ts;
t = t_start + t;

modulation = sin(2*pi*f*t);

figure(1)
subplot(2,1,1)
plot(t,pulses,'b'); title('Pulsed Data')
xlabel('t'); ylabel('Amplitude');
ylim([-0.1 1.1])
xlim([t(1) t(end)])

subplot(2,1,2)
plot(t,modulation,'r'); title('Frequency Modulation')
xlabel('t'); ylabel('Amplitude');
ylim([-1.25 1.25])
xlim([t(1) t(end)])

脉冲串

% Frequency Shifted Baseband Data
initial_phase = 3*pi/16;  % Used to match IQ plot
amp = 0.75;
I_mod = -amp*sin(2*pi*f*t + initial_phase);
Q_mod = -amp*cos(2*pi*f*t + initial_phase);

% Modulate the pulsed data
I_data = I_mod.*pulses;
Q_data = Q_mod.*pulses;

figure(2)
subplot(2,1,1)
plot(t,I_data,'b'); title('I-Signal');
hold on;
plot(t,I_mod,'r--');
xlabel('t'); ylabel('Amplitude');
ylim([-1.0 1.0])
xlim([t(1) t(end)])

subplot(2,1,2)
plot(t,Q_data,'b'); title('Q-Signal');
xlabel('t'); ylabel('Amplitude');
hold on;
plot(t,Q_mod,'r--');
ylim([-1.0 1.0])
xlim([t(1) t(end)])

频移 IQ 数据

% Phase Modulation
phase_code = [1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1];
phase_chip = ones(1,pri/ts);

phase_mod = kron(phase_code,phase_chip);

% Prepend the data to match IQ plot
phase_mod = [zeros(1,fix((pri-pw)/ts)) phase_mod];

% Modulate the pulses data
I_phase = I_data.*phase_mod;
Q_phase = Q_data.*phase_mod;

figure(3)
subplot(2,1,1)
plot(t,I_phase,'b'); title('I-Signal');
hold on
plot(t,phase_mod,'r--')
xlabel('t'); ylabel('Amplitude');
ylim([-1.0 1.0])
xlim([t(1) t(end)])

subplot(2,1,2)
plot(t,Q_phase,'b'); title('Q-Signal');
hold on
plot(t,phase_mod,'r--')
xlabel('t'); ylabel('Amplitude');
ylim([-1.0 1.0])
xlim([t(1) t(end)])

BPSK 调制 IQ 脉冲序列

在上图中,您可以看到发生 180 度相移的位置。我还发现符号率 (PRF) 与调制频率 (f) 之比为 2.91。