USRP的AM信号传输

在GNU Radio平台实验时,使用USRP进行AM信号传输以及噪声调幅干扰,但是接收端却接收不到信号。
这是发射端仿真

img

output是本该发射的信号

img


input是接收端刚接收到的信号,在接收端却接收不到output发出的信号,在发送端改变信号并不能改变input里的信号

img


这是接收端仿真

img

在GNU Radio平台实验时,如果使用USRP进行AM信号传输以及噪声调幅干扰,但是接收端却无法接收到信号,可能是由于以下几个原因:

硬件连接问题:确保USRP设备与接收端正确连接,并且连接线路没有任何故障。

信号传输问题:检查信号传输路径是否正确。在GNU Radio中,您需要正确配置发送和接收块之间的连接,以确保信号能够在两个方向上正确传输。

GNU Radio配置问题:检查GNU Radio中各个块的参数是否正确配置。例如,检查是否正确设置了USRP设备的采样率和频率,以及是否正确设置了接收块的中心频率和带宽等参数。

环境干扰问题:在实验过程中,可能会存在其他无线电设备或者电磁干扰等环境干扰。这些干扰可能会影响信号的传输和接收。尝试将设备放置在更加隔离的环境中或者使用其他干扰抑制技术来解决这个问题。

检查下是否有具体的错误,如出现报错,可先运行接收,在未收到噪声前就点击运行发射模块,可再次成功接收。

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

USRP可以实现AM(幅度调制)信号的发送和接收。具体步骤如下:

  1. 生成AM信号。可以使用Matlab、Python等工具生成AM信号。AM信号可以表示为:
s(t) = [1 + k*m(t)]*c(t)*cos(2*pi*f*t)

其中,m(t)为信息信号,f为载波频率,c(t)为载波信号,k为调制指数。

  1. 编写发送端代码。可以使用UHD库在C++或Python中编写。主要步骤是:
  • 创建USRP对象并设置参数。设置USRP类型、采样率、中心频率等。
  • 生成AM信号样本,采用上一步生成的AM信号离散化。
  • 发送AM信号样本。使用USRP的send()函数发送样本数据。
  • 设置发射通道的增益等参数以实现发射。
  1. 编写接收端代码。主要步骤是:
  • 创建USRP对象并设置参数。设置与发送端一致。
  • 从USRP接收AM信号样本。使用recv()函数接收数据。
  • 解调AM信号。提取信息信号m(t)和载波信号c(t)。
  • 显示解调后的信息信号。
  1. 进行实际测试。连接两台USRP,执行发送端代码在一台USRP上发送AM信号,在另一台USRP上执行接收端代码接收并解调信号。

  2. 进行优化改进。可以调整USRP的采样率和中间频率,优化增益和滤波参数等来实现更高质量的AM信号传输。

一个简单的AM信号传输的USRP C++ demo程序可以参考:https://github.com/EttusResearch/uhd/blob/master/host/examples/tx_amplitude.cpp