如何产生高斯带限白噪声数据_在射频接收机中制造噪声- 用信号发生器仿真真实信号...

4149b069-9a12-eb11-8da9-e4434bdf6706.png

噪声是一种多余的信号。在通信系统中,噪声会影响发射机和接收机的性能。它会降低发射机的调制质量和接收机的灵敏度。因此,降低电子器件的噪声,是研发工程师最关注的问题。

但是,为了仿真真实环境,您需要在设计中注入一个“噪声”信号。噪声信号需要简单,并且有数学模型为基础。加性高斯白噪声 (AWGN) 是接收机性能测试中最常用的噪声。射频系统中另一个常见的噪声是相位噪声。添加相位噪声减损以进行精确的信号置换或容限测试,这样做对您评测被测器件和诊断被测器件故障很有帮助。

在本白皮书中,您将了解加性高斯白噪声 (AWGN) 和相位噪声的定义,以及如何正确和准确地将噪声加入有用信号中,以便进行接收机性能测试。相关阅读:

https://zhuanlan.zhihu.com/p/87833294​zhuanlan.zhihu.com
4449b069-9a12-eb11-8da9-e4434bdf6706.png

是德科技:射频基础 - 信号发生器基础指南 第一部分

是德科技:射频基础 - 信号发生器基础指南 第一部分​zhuanlan.zhihu.com
4449b069-9a12-eb11-8da9-e4434bdf6706.png

向信号中添加实时噪声

什么是加性高斯白噪声 AWGN?它有什么重要意义?

噪声是所有通信信道的一个固有部分。下面的香农 (Shannon-Hartley) 定理告诉我们,在存在噪声的情况下,通过指定带宽的通信信道传输信息的最大速率是多少。

C= B * Log2 (1+S/N)

其中:

C是信道容量,单位为比特/秒 (bit/s)
B是信号带宽,单位为Hz
S是在该带宽上接收的平均功率,单位为瓦
N是该带宽上的噪声的平均功率,单位为瓦

要想以可重复的方式仿真真实的信道条件,您必须将随机噪声添加到所需的信号中。AWGN是一个数学模型,用于仿真发射机和接收机之间的信道。这个模型是线性增加的宽带噪声,具有恒定的频谱密度和高斯分布的幅度。AWGN 不适用于衰落、互调和干扰测试。

以LTE eNB接收机测试(3GPP TS 36.141)为例,第7.3节描述了将AWGN应用于所需的LTE信号进行eNB动态范围测试,第8条描述了所有的非多径接收机性能测试用例。动态范围测试的目的是测量接收机在接收信道存在干扰 (AWGN) 的情况下接收所需信号的能力。

图1所示为一个常见的接收机性能测试设置。它需要一台信号发生器生成有用信号,另一台生成 AWGN。使用合路器来合并信号并与被测器件连接。确保两个信号发生器之间有足够好的隔离,使它们不至于影响其他单元的 ALC(自动调平控制)操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在MATLAB生成OFDM信号并添加高斯白噪声仿真代码: ```matlab clear all;close all;clc; % OFDM参数设置 N = 64; % 子载波数量 cp_len = 16; % 循环前缀长度 data_len = N/2-1; % 数据载波数量 Fs = 100e3; % 采样率 Fc = 2e3; % 载波频率 Ts = 1/Fs; % 采样周期 % 生成随机数据 data = randi([0 1],1,data_len); % QPSK调制 mod_data = pskmod(data,4); % 将数据映射到子载波上 signal = zeros(1,N); signal(2:N/2) = mod_data(1:data_len/2); signal(N/2+2:N) = mod_data(data_len/2+1:data_len); % IFFT变换 ifft_signal = ifft(signal)*sqrt(N); % 插入循环前缀 tx_signal = [ifft_signal(N-cp_len+1:N) ifft_signal]; % 发送信号 t = (0:length(tx_signal)-1)*Ts; carrier_wave = exp(1i*2*pi*Fc*t); tx_signal = tx_signal.*carrier_wave; % 加入高斯白噪声 snr = 10; % 信噪比 rx_signal = awgn(tx_signal,snr,'measured'); % 接收端解调 rx_signal = rx_signal.*conj(carrier_wave); rx_signal = rx_signal(cp_len+1:end); rx_signal = fft(rx_signal)/sqrt(N); % 将载波数据映射回原始数据 rx_data = zeros(1,data_len); rx_data(1:data_len/2) = rx_signal(2:data_len/2+1); rx_data(data_len/2+1:data_len) = rx_signal(N/2+2:N); % QPSK解调 demod_data = pskdemod(rx_data,4); % 统计误码率 err = sum(abs(data-demod_data)); ber = err/data_len; fprintf('误码率: %f\n',ber); ``` 代码首先设置OFDM的参数,包括子载波数量、循环前缀长度、数据载波数量、采样率和载波频率等。然后生成随机数据,并进行QPSK调制。接着将数据映射到子载波上,并进行IFFT变换和插入循环前缀。然后将信号进行调制,并添加高斯白噪声。接收端对信号进行解调,并将载波数据映射回原始数据,并进行QPSK解调。最后统计误码率。 需要注意的是,代码的误码率是理论误码率,实际误码率可能会受到信道的影响而有所偏差。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值