当前位置:网站首页>单极性非归零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
边栏推荐
- Activity supports multi window display
- How Zotero quotes in word jump to references / hyperlink
- Qt程序集成EasyPlayer-RTSP流媒体播放器出现画面闪烁是什么原因?
- C语言 字符常量
- Zotero6. Version 0 quicklook cannot be used / Chinese garbled code will not be displayed
- [AI vision · quick review of NLP natural language processing papers today, issue 30] Thu, 14 APR 2022
- [mathematical modeling] my mathematical memory
- Mechanical design knowledge point planning
- Opencv4 QR code recognition test
- Raspberry pie 3B logs into the wired end of Ruijie campus network through mentohust, creates WiFi (open hotspot) for other devices, and realizes self startup at the same time
猜你喜欢

Express中间件②(中间件的分类)

硬核拆芯片

Wechat applet cloud database value assignment to array error

【NeurIPS 2019】Self-Supervised Deep Learning on Point Clouds by Reconstructing Space

Set经典小题目
![[AI vision · quick review of robot papers today, issue 28] wed, 1 Dec 2021](/img/c8/90d020d192fe791c4dec5f4161e597.png)
[AI vision · quick review of robot papers today, issue 28] wed, 1 Dec 2021

ROS series (III): introduction to ROS architecture
![[AI vision · quick review of today's sound acoustic papers issue 1] Thu, 14 APR 2022](/img/94/5fa8bf57dff45a1ba108edb46cf6c8.png)
[AI vision · quick review of today's sound acoustic papers issue 1] Thu, 14 APR 2022

Install PaddlePaddle on ARM

What if you encounter symbols you don't know in mathematical formulas
随机推荐
对象和类的概念
现货黄金操作技巧_估波曲线
Variables, constants, operators
ROS series (V): common commands in ROS
ROS series (III): introduction to ROS architecture
vscode删除卸载残余
【李宏毅2022 机器学习春】hw6_GAN(不懂..)
Cause analysis of incorrect time of AI traffic statistics of Dahua Equipment Development Bank
Retrieval question answering system baseline
使用大华设备开发行AI人流量统计出现时间不正确的原因分析
RuntimeError: output with shape [4, 1, 512, 512] doesn‘t match the broadcast shape[4, 4, 512, 512]
Jupiter notebook modify configuration file setting startup directory is invalid
Key point detection of human hand based on mediapipe
Set经典小题目
QtSpim手册-中文翻译
Second kill all interval related problems
STM32 advanced timer com event
The difference between lists, tuples, dictionaries and collections
The art of concurrent programming (3): an in-depth understanding of the principle of synchronized
Writing latex with vscode - the latest tutorial 2022 / 4 / 17