当前位置:网站首页>单极性非归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK及MATLAB仿真
单极性非归零NRZ码、双极性非归零NRZ码、2ASK、2FSK、2PSK、2DPSK及MATLAB仿真
2022-04-23 03:56:00 【Chenxr32】
这篇博客是用MATLAB仿真观察二进制数字信号码元速率和它的带宽的关系。书上给了数字基带信号和频带信号的功率谱密度,但是我还没搞明白FFT与功率谱密度的关系,所以博客里图片的信号幅值就不要纠结啦,看包络形状和带宽就行。如果有明白FFT与功率谱密度的关系的朋友看到博客,请留言告诉我。
单极性非归零NRZ码
在表示一个码元时,二进制符号1和0分别对应基带信号的正电平和零电平,在整个码元持续时间,电平保持不变。发1和发0等概率时,单极性非归零NRZ信号的功率谱密度为 P s ( f ) = 1 4 T b S a 2 ( π f T b ) + 1 4 δ ( f ) P_s(f)=\frac{1}{4}T_{b}Sa^{2}(\pi fT_{b})+\frac{1}{4}\delta (f) Ps(f)=41TbSa2(πfTb)+41δ(f) T b ( s ) T_b(s) Tb(s) 是码元宽度,码元速率 R B = 1 T b ( B a u d ) R_B=\frac{1}{T_b}(Baud) RB=Tb1(Baud)。功率谱的带宽近似为 f b = 1 T b ( H z ) f_b=\frac{1}{T_b}(Hz) fb=Tb1(Hz)(Sa函数第一零点)。
下图为单极性非归零NRZ码的幅频特性,用MATLAB的fft函数计算的(下同),码元速率 R B = 100 B a u d R_B=100Baud RB=100Baud,抽样频率 f s = 5000 H z f_s=5000Hz fs=5000Hz,由于fft函数计算结果是对称的,所以只画了一半的图像。可以看到0频率处有一个冲激信号,第一个零点在100 H z Hz Hz处。
双极性非归零NRZ码
二进制符号1和0分别对应基带信号的正电平和负电平, 双极性非归零NRZ码具有直流分量小、抽样判决门限为0、可以在电缆等不接地线上传输等优点。 发1和发0等概率时,双极性非归零NRZ码的功率谱密度为 P s ( f ) = T b S a 2 ( π f T b ) P_s(f)=T_{b}Sa^{2}(\pi fT_{b}) Ps(f)=TbSa2(πfTb) 带宽近似为 f b = 1 T b f_b=\frac{1}{T_b} fb=Tb1。
下图为双极性非归零NRZ码的幅频特性,也是用fft函数计算的, R B = 100 B a u d R_B=100Baud RB=100Baud, f s = 5000 H z f_s=5000Hz fs=5000Hz。可以看到0频率处没有冲激信号,第一个零点在100 H z Hz Hz处。
二进制幅度键控(2ASK)
2ASK是利用代表数字信息的0或1的基带矩形脉冲去键控一个连续的高频载波,使载波时断时续地输出。2ASK信号可以表示为 s 2 A S K ( t ) = s ( t ) c o s ( ω c t ) s_{2ASK}(t)=s(t)cos(\omega_ct) s2ASK(t)=s(t)cos(ωct) ω c \omega_c ωc是载波角频率, s ( t ) s(t) s(t)为单极性非归零NRZ矩形脉冲序列。
2ASK信号的频谱类似AM信号的频谱,都是将低频信号的频谱搬移到载波频率的位置,带宽是低频信号带宽的两倍,即 B 2 A S K = 2 f b = 2 T b = 2 R B B_{2ASK}=2f_b=\frac{2}{T_b}=2R_B B2ASK=2fb=Tb2=2RB 2ASK的频带利用率为 η = R B B 2 A S K = 1 2 B a u d / H z \eta=\frac{R_B}{B_{2ASK}}=\frac{1}{2}Baud/Hz η=B2ASKRB=21Baud/Hz
下图为2ASK信号的幅频特性, R B = 100 B a u d R_B=100Baud RB=100Baud, f s = 5000 H z f_s=5000Hz fs=5000Hz, f c = 1000 H z f_c=1000Hz fc=1000Hz。可以看到1000 H z Hz Hz频率处有一冲激信号,主瓣的第一个零点在1100 H z Hz Hz和900 H z Hz Hz处,带宽为200 H z Hz Hz。
二进制频移键控(2FSK)
2FSK信号是1对应于载频 f 1 f_1 f1,0对应载频 f 2 f_2 f2, f 1 f_1 f1与 f 2 f_2 f2之间的改变是瞬间完成的。2FSK信号可以表示为 s 2 F S K ( t ) = s ( t ) c o s ( ω 1 t + ϕ n ) + s ( t ) ‾ c o s ( ω 2 t + θ n ) s_{2FSK}(t)=s(t)cos(\omega_1t+\phi_n)+\overline{s(t)}cos(\omega_2t+\theta_n) s2FSK(t)=s(t)cos(ω1t+ϕn)+s(t)cos(ω2t+θn) s ( t ) s(t) s(t)为单极性非归零矩形脉冲序列, s ( t ) ‾ \overline{s(t)} s(t)为对 s ( t ) s(t) s(t)逐码取反形成的矩形脉冲序列, ϕ n \phi_n ϕn和 θ n \theta_n θn是第n个码元的初相位。
2FSK可以视为两路2ASK信号的合成,其中一路以 s ( t ) s(t) s(t)为基带信号, ω 1 \omega_1 ω1为载频,另一路以 s ( t ) ‾ \overline{s(t)} s(t)为基带信号, ω 2 \omega_2 ω2为载频。因此,2FSK信号的频谱也是两个2ASK频谱之和。2FSK的带宽为为 B 2 F S K = ∣ f 2 − f 1 ∣ + 2 f b B_{2FSK}=|f_2-f_1|+2f_b B2FSK=∣f2−f1∣+2fb f b = 1 T b f_b=\frac{1}{T_b} fb=Tb1是基带信号的带宽,数值上等于码元速率。
下图为2FSK信号的幅频特 性, R B = 100 B a u d R_B=100Baud RB=100Baud, f s = 5000 H z f_s=5000Hz fs=5000Hz, f 1 = 1000 H z f_1=1000Hz f1=1000Hz, f 2 = 2000 H z f_2=2000Hz f2=2000Hz。可以看到1000 H z Hz Hz和2000 H z Hz Hz频率处各有一个冲激信号,2FSK信号带宽为 B 2 F S K = 2000 − 1000 + 2 × 100 = 1200 H z B_{2FSK}=2000-1000+2\times100=1200Hz B2FSK=2000−1000+2×100=1200Hz
二进制相移键控(2PSK)和二进制差分相移键控(2DPSK)
2PSK是利用载波的相位直接表示数字信息的相移方式,通常用相位0和相位π来分别表示0或1。2PSK信号可以表示为 s 2 P S K ( t ) = s ( t ) c o s ( ω c t ) s_{2PSK}(t)=s(t)cos(\omega_ct) s2PSK(t)=s(t)cos(ωct) ω c \omega_c ωc是载波角频率, s ( t ) s(t) s(t)为双极性非归零NRZ矩形脉冲序列。
因为 s ( t ) s(t) s(t)的均值为0,2PSK可以视为抑制载波双边带调幅,2PSK的连续谱部分与2ASK的连续谱部分形状基本相同。2PSK信号的带宽为 B 2 P S K = 2 f b = 2 T b = 2 R B B_{2PSK}=2f_b=\frac{2}{T_b}=2R_B B2PSK=2fb=Tb2=2RB
频带利用率为 η 2 P S K = R B B 2 P S K = 1 2 B a u d / H z \eta_{2PSK}=\frac{R_B}{B_{2PSK}}=\frac{1}{2}Baud/Hz η2PSK=B2PSKRB=21Baud/Hz
2DPSK是用前后码元的相对载波相位值传送数字信息,相对载波相位是指本码元与前一码元初相之差。2DPSK可以由原0、1序列的相对码(差分码)经过绝对相移键控(2PSK)而形成,2DPSK信号也可以表示为 s 2 D P S K ( t ) = s ( t ) c o s ( ω c t ) s_{2DPSK}(t)=s(t)cos(\omega_ct) s2DPSK(t)=s(t)cos(ωct) s ( t ) s(t) s(t)为差分码数字序列。
2DPSK与2PSK有相同的带宽和频带利用率,即 B 2 D P S K = B 2 P S K B_{2DPSK}=B_{2PSK} B2DPSK=B2PSK η 2 D P S K = η 2 P S K \eta_{2DPSK}=\eta_{2PSK} η2DPSK=η2PSK
下图为2PSK信号的幅频特性, R B = 100 B a u d R_B=100Baud RB=100Baud, f s = 5000 H z f_s=5000Hz fs=5000Hz, f c = 1000 H z f_c=1000Hz fc=1000Hz。可以看到1000 H z Hz Hz频率处没有冲激信号,主瓣的第一个零点在1100 H z Hz Hz和900 H z Hz Hz处,带宽为200 H z Hz Hz。2DPSK的幅频特性与2PSK相同。
MATLAB仿真
%% Parameter
fs = 5000; %sampling frequency Hz
fc1 = 1000; %carrier frequency Hz
fc2 = 2000; %carrier frequency Hz
RB = 100; %Code Rate Baud
M = 2; %Size of signal constellation
k = log2(M);%Number of bits per symbol
N = 10000; %Number of bits to process
n = 2^(ceil(log2(N*fs/RB)));
t = (0:n-1)./fs; % time vector
f = (-n/2:n/2-1)*fs/n; %frequency range
%% Generate code or signal
data_in = randi([0,k],N,1);%unipolar code
unipolar_nrz_st = zeros(1,n);
bipolar_nrz_st = zeros(1,n);
% 1 δφ=π, 0 δφ=0
differencial_st = zeros(1,n);
last_bit = -1;
for i = 0:N-1
unipolar_nrz_st((i*fs/RB+1):((i+1)*fs/RB)) = data_in(i+1);%unipolar non-zero signal
if data_in(i+1) == 1
bipolar_nrz_st((i*fs/RB+1):((i+1)*fs/RB)) = 1;%bipolar non-zero signal
last_bit = -last_bit;
differencial_st((i*fs/RB+1):((i+1)*fs/RB)) = last_bit;%differencial signal
else
bipolar_nrz_st((i*fs/RB+1):((i+1)*fs/RB)) = -1;
differencial_st((i*fs/RB+1):((i+1)*fs/RB)) = last_bit;
end
end
%% Unipolar non-zero signal
%Baseband
S = fftshift(fft(unipolar_nrz_st));
figure('Name','Unipolar non-zero signal','NumberTitle','off');
subplot(3,1,1);
plot(f,abs(S)*2/n);
grid minor;
ylim([0,0.1]);
xlabel('f/Hz');
ylabel('S(f)');
title('Baseband signal');
%2ASK
s_ask = unipolar_nrz_st.*cos(2*pi*fc1*t);
S_ask = fftshift(fft(s_ask));
subplot(3,1,2);
plot(f,abs(S_ask)*2/n);
grid minor;
ylim([0,0.1]);
xlabel('f/Hz');
ylabel('S_{2ASK}(f)');
title('2ASK');
%2FSK
s_fsk = unipolar_nrz_st.*cos(2*pi*fc1*t) + (~unipolar_nrz_st).*sin(2*pi*fc2*t);
S_fsk = fftshift(fft(s_fsk));
subplot(3,1,3);
plot(f,abs(S_fsk)*2/n);
grid minor;
ylim([0,0.1]);
xlabel('f/Hz');
ylabel('S_{2FSK}(f)');
title('2FSK');
%% Bipolar non-zero signal
%Baseband
S = fftshift(fft(bipolar_nrz_st));
figure('Name','Bipolar non-zero signal','NumberTitle','off');
subplot(3,1,1);
plot(f,abs(S)*2/n);
grid minor;
xlabel('f/Hz');
ylabel('S(f)');
title('Baseband signal');
%2PSK
s_psk = bipolar_nrz_st.*cos(2*pi*fc1*t);
S_psk = fftshift(fft(s_psk));
subplot(3,1,2);
plot(f,abs(S_psk)*2/n);
grid minor;
xlabel('f/Hz');
ylabel('S_{2PSK}(f)');
title('2PSK');
%2DPSK
s_dpsk = differencial_st.*cos(2*pi*fc1*t);
S_dpsk = fftshift(fft(s_dpsk));
subplot(3,1,3);
plot(f,abs(S_dpsk)*2/n);
grid minor;
xlabel('f/Hz');
ylabel('S_{2DPSK}(f)');
title('2DPSK');
仿真结果
版权声明
本文为[Chenxr32]所创,转载请带上原文链接,感谢
https://blog.csdn.net/QDchenxr/article/details/106204295
边栏推荐
- UDP协议与TCP协议
- Does China Mobile earn 285 million a day? In fact, 5g is difficult to bring more profits, so where is the money?
- Source code and update details of new instance segmentation network panet (path aggregation network for instance segmentation)
- What if you encounter symbols you don't know in mathematical formulas
- A function second kill 2sum 3sum 4sum problem
- Nel ASA:挪威Herøya设施正式启用
- Use the thread factory to set the thread name in the thread pool
- 现货黄金基本介绍
- 知乎有问题,谁来解答?
- Add the compiled and installed Mysql to the path environment variable
猜你喜欢
Abstract classes, interfaces and common keywords
Basic knowledge of convolutional neural network
Mechanical design knowledge point planning
AI CC 2019 installation tutorial under win10 (super detailed - small white version)
ROS series (4): ROS communication mechanism series (4): topic communication practice
变量、常量、运算符
Wechat applet canvas draws a simple asymptotic color of the dashboard
阿里云IoT流转到postgresql数据库方案
【ICCV 2019】MAP-VAE:Multi-Angle Point Cloud-VAE: Unsupervised Feature Learning for 3D Point Clouds..
Solve the technical problems in seq2seq + attention machine translation
随机推荐
Wechat payment iframe sub page has no response
The art of concurrent programming (6): explain the principle of reentrantlock in detail
Counting and sorting (C language implementation) -- learning notes
vscode删除卸载残余
php导出Excel表格
C语言 字符常量
Numpy's broadcasting mechanism (with examples)
Jupiter notebook modify configuration file setting startup directory is invalid
【BIM入门实战】Revit建筑墙体:构造、包络、叠层图文详解
基于PHP的代步工具购物商城
Basic introduction to spot gold
Photoshop installation under win10
秒杀所有区间相关问题
Basic knowledge of convolutional neural network
RuntimeError: output with shape [4, 1, 512, 512] doesn‘t match the broadcast shape[4, 4, 512, 512]
Basic usage of Google colab (I)
Let matlab2018b support the mex configuration of vs2019
Instructions for fastmock
Vscode download and installation + running C language
Nel ASA: her ø Ya facility in Norway officially opened