一、USRP信号
USRP捕获信号的波形如下:
放大后:
100ms
10ms
1ms
100us
10us
1us
二、波形分析
2.1 时间分辨率
采样率61.44MHz, 对应时间分辨率为1/61.44us=0.01627us=16.27ns。
这时间分辨率够用了,数据包长度为1到20us:
2.2 Wireshark和USRP采集信号出入
感觉有点不太好根据Wireshark分离出USRP捕获的信号......
取绝对值:
现在的关键问题是,即便我用Wireshark计算的数据包波形去分离USRP采集的信号,怎么验证这个分离出来的信号就是我电脑和路由器相互通信的信号呢?
思路:
我目前想到的方法是,利用USRP采集信号的空窗部分。USRP采集的信号几乎每时每刻都有数据,这是频点多用户使用的原因,这样导致看起来好像没用空窗。但是,我的电脑、路由器离USRP近,别人的设备离USRP远,USRP采集我的电脑、路由器信号强度更高,高强度信号出现、消失和Wireshark数据包波形应该是对应的。
但奇怪的是,USRP捕获的信号高强度部分几乎占满了整个时间轴,和Wireshark波形对不上:
我想可能的原因是2.4G频段穿墙效果不差。
还是觉得奇怪,就算2.4G穿墙效果不差,别人家的信号总是比我家信号弱的。
所以,另一种原因是Wireshark捕获不全?
这是我之前用Wireshark捕获的一份信号,也不是密集到URSP波形那样:
两个调查方向:
① USRP信号视频图。
② Wireshark捕获数据中Source和Direction都不含192.168.1.103的部分有没有可能也是路由器和我电脑发送的?
2.3 USRP采集2.4G信号视频图
从时频图可以看到多个子载波,同时有明显的TDD时分复用痕迹:
我大概明白USRP采集的信号为什么像一把梳子了,因为TDD的原因:
这样的话就不能用我前面提出的通过间隔验证信号是否正确分选出来的方法了。
得再想想怎么让USRP和Wireshark捕获信号相互印证......
2.4 64QAM
我的另一篇博客查了我电脑和路由器通信用的是64QAM:
Wireshark获取数据传输的码元速率-CSDN博客
不知道能不能看出来。
星座图绘制程序:
clc
clear
close all% 打开文件
% fid = fopen('real_data_show.txt', 'rb'); % 'rb'表示以二进制读取模式打开文件
fid = fopen('cooperate with wireshark.txt', 'rb'); % 'rb'表示以二进制读取模式打开文件% 读取数据
raw = fread(fid, Inf, 'float32', 0, 'l'); % 假设数据是16位整数,'b'表示小端% 关闭文件
fclose(fid);data = raw(1:2:end) + 1i * raw(2:2:end); % 复数数组samp_rate = 61.44e6; % 采样率 250 kHz
% signal_duration = 10; % 每个信号的时长 1秒
% samples_per_signal = samp_rate * signal_duration;
% num_signals = floor(length(data) / samples_per_signal);
% signals = reshape(data(1:num_signals * samples_per_signal), samples_per_signal, num_signals);
% data = signals(:,5);
data = data(1:round(samp_rate*3));% 绘制星座图
figure;
scatter(real(data), imag(data), 1, 'b', 'filled'); % 绘制复数点
title('Constellation Diagram');
xlabel('In-phase');
ylabel('Quadrature');
grid on;
axis equal;
有一个圆的白点轮廓:
加一句话,再绘图:
data(abs(data)<0.6)=0;
xlim,ylim调整下:
xlim([-2,2])
ylim([-2,2])
好奇怪,为什么IQ图是方形的......
2.5 WiFi CSMA/CA 信号时长、间隔特性
首先要明白WiFi的TDD和5G移动通信的TDD是不一样的,前者是按需分配(CSMA/CA),后者是固定分配:
WiFi(IEEE 802.11协议)并不像4G/5G蜂窝网络那样,为每个用户预先分配固定的、周期性的时间间隔。WiFi采用的是一种竞争机制,所有用户在一个共享的频道上“争先恐后”地发送数据。其核心是 CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,载波监听多点接入 / 碰撞避免)。
OFDM是Orthogonal Frequency Division Multiplexing正交频分复用技术。
这篇博客对CSMA/CA技术介绍的非常好:
计算机网络:数据链路层 - CSMA/CA协议-CSDN博客
我更关注的是CSMA/CA主导WiFi信号发送的间隔:
802.11 标准规定所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔 IFS, Interframe Space。
常用的两种帧间间隔如下:
短帧间间隔 SIFS:
长度为 28 微秒,是最短的帧间间隔,用来分隔开属于一次对话的各个帧,一个站点应当能够在这段时间内从发送方式切换到接收方式。
分布式帧间间隔 DIFS:
长度为 128 微秒,它比短帧间间隔 SIFS 要长得多。在 DCF 方式中用来发送数据帧和管理帧。
一个关键的结论就是,CSMA/CA主导的WiFi通信,两帧之间必定有至少28us的SIFS间隔,大部分时间是大于128us间隔的:
2.6 TDD时隙
比对下USRP采集信号的梳状结构和TDD时隙是否能对上:
0.2s大概3-4个间隔,对应0.05s, 50ms
DIFS 128us,再考虑退避算法用的时间