数字带通传输系统

数字信号的传输方式分为基带传输和带通传输。

用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。

数字信息有二进制和多进制之分,数字调制可分为二进制调制和多进制调制。二进制数字调制分为二进制振幅键控、二进制频移键控和二进制相移键控。

二进制振幅键控

2ASK称为通--断键控OOK,载波在二进制基带信号s(t)控制下通--断变化,这种键控又称为通--断键控。2ASK/OOK信号的产生方式通常有:模拟调制法和键控法,一般的模拟幅度调制法,用乘法器实现;数字键控法开关电路受载波控制。

2ASK/OOK信号也有两种基本的解调方法:非相干解调和相干解调。非相干解调使用的是包络检波法,相干解调是同步检测法

input_data = [0,1,0,1,1,1,0,0,0,1];
n = length(input_data);
bit_rate = 1; % 设置比特率
T = 1/bit_rate; % 每个符号的时间长度
t = 0:T/99:T; % 时间向量

% 对输入信号进行2ASK调制
i = 1;
for j = 1:length(input_data)
    ask_signal(i:i+99)=input_data(j)*sin(2*pi*t);
    i = i + 100;
end

[b,a] = butter(10,1/4);
fdata = filter(b,a,ask_signal);

fdata = abs(fdata);     %通过全波整流器
fdata = filter(b,a,fdata);

i = 50;
k = 1;
while i<=length(fdata)
    if fdata(i)>=0.5
        decode(k) = 1;
    else
        decode(k)=0;
    end
    k=k+1;
    i=i+100;
end
disp('解调之后的结果为');
decode

上面这种非相干解调方式是先通过带通滤波器,再通过全波整流器,之后是低通滤波器,最后是抽样判决器。

设置判决大于0.5可以非常好的解调出信号,但是0的话就不行,有点疑惑

相移键控

相移键控是组里使用的调制方式,2PSK信号一般可以表示为双极性全占空矩形脉冲序列与一个正弦载波的相乘。发送二进制符号“0”时,e2psk(t)取0相位,发送二进制符号“1”时,e2psk(t)取pi相位。双极性信号是一种数字信号,其特点是一个正的振幅表示一种状态,而一个负的振幅表示另一种状态。具体来说,双极性信号使用正电压表示一个逻辑状态(如“1”),同时使用负电压表示另一个逻辑状态(如“0”),并且通常以接地(零电平)作为判决电平。这种信号的特点是在“1”和“0”等概率出现的情况下,没有直流分量,有利于在信道中传输。接收端恢复信号时,判决电平为零值,因此不受信道特性变化的影响,具有较强的抗干扰能力。

PSK


与2ASK信号的产生方法相比较,只是对s(t)的要求不同,在2ASK中s(t)是单极性的,2PSK中s(t)是双极性的基带信号。

% 定义参数
bit_stream = [1 0 1 1 0 0 1];    % 示例二进制数据序列
fc = 1000;                        % 载波频率 1 kHz
fs = 8192;                        % 采样频率 8 kHz 
T = 1/fc;                         % 每个比特的时间长度
samples_per_bit = T*fs;           % 每个比特的采样点数
t = 0:1/fs:T-1/fs;                % 单个比特的时间向量
bpsk_signal = [];                 % 初始化BPSK信号向量

% 生成BPSK信号
for i = 1:length(bit_stream)
    if bit_stream(i) == 1
        bpsk_signal = [bpsk_signal cos(2*pi*fc*t)]; % 位1相位0
    else
        bpsk_signal = [bpsk_signal cos(2*pi*fc*t+pi)]; % 位0相位π
    end
end

% 重新计算总时间向量t2以确保长度与bpsk_signal相同
t2 = 0:1/fs:(length(bpsk_signal)-1)/fs;

% 现在,您可以安全地绘制整个BPSK信号
figure;
plot(t2, bpsk_signal);
title('Binary Phase Shift Keying (BPSK) Signal');
xlabel('Time (s)');
ylabel('Amplitude');

2PSK解调,一般采用的都是相干解调,coswct一般是未调载波信号。2PSK容易出现180°的相位模糊    

% 清空环境变量
clear; close all; clc;

% 生成BPSK信号的参数
bit_stream = [1 0 1 1 0 1 0];
sample_rate = 10;             % 每个比特的采样数
fc = 1;                       % 载波频率
fs = fc * sample_rate;        % 采样频率
Tb = 1;                       % 比特时间
t = 0:1/fs:Tb-1/fs;           % 时间采样点
carrier = cos(2*pi*fc*t);     % 载波

% 生成BPSK信号
bpsk_signal = [];
for bit = bit_stream
    if bit == 0
        bpsk_signal = [bpsk_signal -carrier];
    else
        bpsk_signal = [bpsk_signal carrier];
    end
end

% 信号通过一个带通滤波器(这里简单模拟,用一个通过所有频率的滤波器代替)
[b, a] = butter(5, 0.2, 'low');
bpsk_filtered = filter(b, a, bpsk_signal);

% BPSK信号通过相乘器(与相同的载波相乘)
t_full = (0:length(bpsk_filtered)-1) / fs;
multiplier_output = bpsk_filtered .* cos(2*pi*fc*t_full);

% 相乘器输出信号通过低通滤波器
lpf_output = filter(b, a, multiplier_output);

% 低通滤波器输出信号通过抽样判决器
sampling_points = sample_rate/2:sample_rate:length(lpf_output);
decision = lpf_output(sampling_points) >= 0;

% 解调结果
disp('解调后的信号:')
disp(decision)

% 绘图
subplot(3,1,1)
plot(bpsk_signal)
title('原始BPSK信号')
xlabel('时间')
ylabel('幅度')

subplot(3,1,2)
plot(multiplier_output)
title('经过带通滤波器和相乘器的信号')
xlabel('时间')
ylabel('幅度')

subplot(3,1,3)
plot(t_full, lpf_output)
hold on
stem(t_full(sampling_points), lpf_output(sampling_points))
title('经过低通滤波器和抽样判决器后的信号')
xlabel('时间')
ylabel('幅度')
hold off

2DPSK

输入的序列是绝对码序列,差分编码规则,相对码是绝对码和相对码前一位的异或,得到相对码之后再按照绝对相位调制进行调制。   

生成2DPSK代码,并且解调

% 定义参数
bitStream = [0 1 0 0 1 1 1 0]; % 输入比特流
Ns = 100; % 每个符号的采样数
fc = 2; % 载波频率
fs = Ns*fc; % 采样频率
t = (0:1/fs:1/fc-(1/fs))'; % 时间

% 初始化参数
prevPhase = 0; % 初始相位
dpskSignal = zeros(length(bitStream)*length(t), 1);
index = 1;

% 2DPSK调制
for i = 1:length(bitStream)
    if bitStream(i) == 0
        phase = prevPhase;
    else
        phase = prevPhase + pi;
    end
    dpskSignal(index:(index+length(t)-1)) = cos(2*pi*fc*t + phase);
    prevPhase = phase; % 更新相位
    index = index + length(t);
end

% 解调
prevPhase = 0;
demodBitStream = zeros(1, length(bitStream));
index = 1;

for i = 1:length(bitStream)
    currentPhase = angle(sum(exp(j*2*pi*fc*t).*dpskSignal(index:(index+length(t)-1))));
    phaseDiff = currentPhase - prevPhase;
    if cos(phaseDiff) > 0
        demodBitStream(i) = 0;
    else
        demodBitStream(i) = 1;
    end
    prevPhase = currentPhase; % 更新相位
    index = index + length(t);
end

% 绘制信号图
figure;
subplot(2,1,1);
plot(dpskSignal);
title('2DPSK调制信号');
xlabel('采样');
ylabel('幅度');

subplot(2,1,2);
stairs([bitStream demodBitStream(1:end)]);
axis([0 length(bitStream)+1 -0.5 1.5]);
title('原始比特流和解调后比特流');
xlabel('比特');
ylabel('值');
legend('原始比特流', '解调后比特流');

% 输出解调的比特流
disp('解调出的比特流:');
disp(demodBitStream);

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字带通传输系统是一种利用数字信号传输数据的系统。它可以通过传输信道来传输信号,并且利用数字信号处理算法进行信号的解调和解码。Matlab是一个功能强大的数学计算工具,可以用于设计数字带通传输系统。 首先,通过Matlab可以进行信号的生成。可以使用Matlab提供的各种信号生成函数来生成不同类型的信号,如正弦信号、方波信号、高斯脉冲等。生成的信号可以用于模拟数字带通传输系统中的数据源。 其次,通过Matlab可以进行信号的调制。调制是将基带信号转换为带通信号的过程。常见的调制方式有频移键控(FSK)、相移键控(PSK),以及正交振幅调制(QAM)等。可以使用Matlab提供的调制函数来实现信号的调制过程。 然后,通过Matlab可以进行信号的传输仿真。可以采用传输信道模型,如高斯噪声信道或多径衰落信道等,利用Matlab通信工具箱中的函数来实现信号传输仿真。仿真可以帮助设计者评估信道条件下系统的性能,如误码率、信噪比等。 最后,通过Matlab可以进行信号的解调和解码。解调是将带通信号恢复为基带信号的过程,解码是将数字信号转换为原始数据的过程。可以使用Matlab提供的解调和解码函数来实现信号的解调和解码过程。 综上所述,Matlab可以用于数字带通传输系统的设计。通过利用Matlab的信号生成、调制、传输仿真和解调解码等功能,可以实现对数字带通传输系统的全面设计和性能评估。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值