水声通信-频带BPSK通信系统

一、引言

本文章给出水声通信完整的BPSK频带仿真系统。包括带宽B的设置,采样率以及过采样率之间的关系。设置了码元速率Rb以及码元的过采样率sps,之间的关系。最后包括上采样以及从基带在频带的调制,滤波恢复等步骤。

二、基带与频带的不同点

其实基带部分是不经过载波调制的如下图理解

2.1基带调制

2.2、频带调制

1.发射端

2.接收端

基带没有 上采样,成型滤波,载波调制的部分 本质就是01 01码的判决。

频带不同,设计载波调制以及,低通滤波等等。具体的不同大家也可以根据代码来看,这里只给出基带的代码,频带代码需要的话联系我的闲鱼账号(小买卖不易,请大家理解知识产权)。

三、代码

3.1 基带BPSK代码(这里还带了卷积码编码,其实本质就是再随机信号之间加了一层信道编码)

%% 卷积码BPSK调制  维特比译码软应判决
 clc;
close all;
clear all;
%%

N = 100000;              %信息比特个数为N 
EbNo =-5:10;             %码元信噪比 
M = 2;                   %BPSK调制
L = 3;                   %卷积码约束长度
trel = poly2trellis(L,[7,5]);         %网格图
tblen = 18;                              %Viterbi回溯长度
msg=randi([0 1],N,1); %生成N个随机码             
msg1 = convenc(msg,trel);                 %卷积码编码
%% BPSK Modulation
bpskmod= 1 - 2* msg1;%(BPSK映射 0变为1 1变为-1)
p_bpskmod=sum(abs(bpskmod).^2)/numel(bpskmod);%bpsk码元能量
K = log2(M); % coded bits per symbol
R = 1/2; %code rate, information bits per coded bit
infoBitsPerSymbol = K * R;

%%
% % AWGN信道

%%鍣0娣诲姞
 
for i = 1:length(EbNo)
      EsNo_dB = EbNo(i)+ 10*log10(infoBitsPerSymbol);% 信道编码因为码率引起3dB的衰落
      EsNo_Lin = 10^(EsNo_dB/10);
      Es = 1; % PSK or other constellation(e.g. QAM) with unit average symbol energy
      No = Es /EsNo_Lin;
      var= sqrt(No/2); % 有声功率计算标准差
%
      for j=1:length(msg1)  
    
   
      G_noise(j)=var*randn  ;               %生成长度与卷积码相同长度的的噪声
      end 
     
      bpsk_Gnoise=bpskmod+G_noise';

 %BPSK解调 硬判决
      
       
      bpskdemod1 = bpsk_Gnoise; % 楂樻柉纭垽鍐?
      bpskdemod1(bpskdemod1>-0) = 0;
      bpskdemod1(bpskdemod1<0) = 1; 
      %---璇爜鐜?
    %维特比译码器
    bpskdemod_hard1= vitdec(bpskdemod1,trel,tblen,'cont','hard');          %硬判决输入
    [err1 ber1(i)] = biterr(bpskdemod_hard1(tblen+1:end),msg(1:end-tblen)); %计算BER
    
      bpskdemod_hard1= vitdec( bpsk_Gnoise,trel,tblen,'cont','unquant');          %软符号输入
    [err1 ber2(i)] = biterr(bpskdemod_hard1(tblen+1:end),msg(1:end-tblen)); %计算BER  
    
      
   

   end
%% 画图

figure();
semilogy(EbNo,ber1,"-kd",EbNo,ber2,"-r+");

axis([-5 10 10^-5 10^0 ]);
legend("Gausssian Hard Decision","Soft Decision",'FontSize',14,'FontName','Times New Roman')
set(gcf,'Position',[20 100 700 500]);     
set(gcf,'Color','w'); 
xlabel('Eb/(NG+NI)(dB)','FontSize',1,'FontName','Times New Roman');
ylabel('BER','FontSize',30,'FontName','Times New Roman');set(gca,'YDir','normal')
set(gca,'FontSize',20);
set(gca,'linewidth',2);
title('Hard Decison under MAIN(different A) and Gaussian ','FontSize',15,'FontName','Times New Roman');

3.2频带BPSK结果

代码可以联系闲鱼,这里只放部分代码用于讲解

fs = 100e3; %采样频率

dt=1/fs;
fc=30e3;    %载波频率
num_R =10000;  %码元个数 
T=0.001; %码元周期
sps=fs*T; %码元采样个数
Rb=1/T;
Frame=10%;帧数
% 系统初始化
N_bit = num_R;
msg = randi([0,1],1,N_bit);

Rb表示码元速率,也是信息速率, T为码元周期,fc为载波频率,采样频率为100kHz,这里教大家在怎么计算这些参数的,首先Rb=1000bit/s, 表示一秒传输1000个比特,但是采样频率为100k,也就是说一秒采1e5个点, 因为一个码元就采了100个点,这个明白了吧 fs*Rb=100。刚好100个点也是1ms也就是一个码元周期T

下面放出基带BPSK的频谱图

从上图第三行图,可以看出基带频谱中心为0hz, 而且频带宽度为1khz,这个1kHz是怎么来的呢 ,其实跟大家讲 1k就是等于Rb 码元宽度。 为什么呢 ,大家如果有学过信号与系统就知道,码元是一个门限函数,他的傅里叶变换到频谱是一个sa函数,因此会出现很多边带,但是由于滚降滤波只留下了主峰,因此就形成了上图的第三行。  

第四行就是乘以载波调制了,频谱搬移到了30kHz左右。

四、代码获取

闲鱼请搜索  科研Beatles

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研Beatles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值