基于QPSK+LDPC的微波信道误码率matlab仿真
目录
一、理论基础
1.1 QPSK
QPSK数字解调包括:模数转换、抽取或插值、匹配滤波、时钟和载波恢复等。在实际的调谐解调电路中,采用的是非相干载波解调,本振信号与发射端的载波信号存在频率偏差和相位抖动,因而解调出来的模拟I、Q基带信号是带有载波误差的信号。这样的模拟基带信号即使采用定时准确的时钟进行取样判决,得到的数字信号也不是原来发射端的调制信号,误差的积累将导致抽样判决后的误码率增大,因此数字QPSK解调电路要对载波误差进行补偿,减少非相干载波解调带来的影响。
此外,ADC的取样时钟也不是从信号中提取的,当取样时钟与输入的数据不同步时,取样将不在最佳取样时刻进行所得到的取样值的统计信噪比就不是最高,误码率就高,因此,在电路中还需要恢复出一个与输入符号率同步的时钟,来校正固定取样带来的样点误差,并且准确的位定时信息可为数字解调后的信道纠错解码提供正确的时钟。校正办法是由定时恢复和载波恢复模块通过某种算法产生定时和载波误差,插值或抽取器在定时和载波误差信号的控制下,对A/D转换后的取样值进行抽取或插值滤波,得到信号在最佳取样点的值,不同芯片采用的算法不尽相同,例如可以采用据辅助法(DA)载波相位和定时相位联合估计的最大似然算法。
1.2 LDPC
LDPC ( Low-density Parity-check,低密度奇偶校验)码是由 Gallager 在1963 年提出的一类具有稀疏校验矩阵的线性分组码 (linear block codes),然而在接下来的 30 年来由于计算能力的不足,它一直被人们忽视。1996年,D MacKay、M Neal 等人对它重新进行了研究,发现 LDPC 码具有逼近香农极限的优异性能。并且具有译码复杂度低、可并行译码以及译码错误的可检测性等特点,从而成为了信道编码理论新的研究热点。Mckay ,Luby 提出的非正则 LDPC 码将 LDPC 码的概念推广。非正则LDPC码 的性能不仅优于正则 LDPC 码,甚至还优于 Turbo 码的性能,是目前己知的最接近香农限的码。Richardson 和 Urbank 也为 LDPC 码的发展做出了巨大的贡献。首先,他们提出了一种新的编码算法,在很大程度上减轻了随机构造的 LDPC 码在编码上的巨大运算量需求和存储量需求。其次,他们发明了密度演进理论,能够有效的分析出一大类 LDPC 译码算法的译码门限。仿真结果表明,这是一个紧致的译码门限。最后,密度演进理论还可以用于指导非正则 LDPC码 的设计,以获得尽可能优秀的性能。
LDPC水印系统结构框图LDPC码具有巨大的应用潜力,将在深空通信、光纤通信、卫星数字视频、数字水印、磁/光/全息存储、移动和固定无线通信、电缆调制/解调器和数字用户线(DSL)中得到广泛应用。
1.3 微波信道
微波信道又分为地面微波信道和空间微波信道。
地面微波信道
地面微波信道通常称为微波。微波是一种频率很高的电磁波,其频率范围为300 MHz~300 GHz,主要使用的是2~40 GHz的频率范围。采用微波信道进行通信的特点如下:
(1)只能进行可视范围内的通信。
(2)大气对微波信号的吸收与散射影响较大。
鉴于上述特点,微波用于不适合铺设有线传输介质的情况,而且只能用于点到点的通信,速率也不高,一般为几百kb/s。微波在地面的直线传输距离与微波的收发天线的高度有关,天线越高,传输距离就越远,通常用于几千米范围内。
地面微波一般按直线传输,受各种因素的影响,微波在传输时也有不同程度的衰减和损耗,因此在远距离传输时,要在微波信道的两个端点之间建立若干个中继站。经过多个中继站的“接力”,信息就被从发送端传输到接收端。
在互连网中,微波信道有时与有线介质混用,具有频带宽、信道容量大、初建费用低、建设速度快、应用范围广的优点,但是微波传输的保密性和抗干扰性能较差。
空间微波信道
空间微波信道也称为卫星信道,使用人造地球卫星作为微波中继器。商用通信卫星通常被定位在3.6万千米的同步轨道上,但也有中低轨道的小卫星通信。采用卫星信道进行通信的特点如下:
(1)适合长距离的传输。
(2)传输延时较大,一般为500 ms左右。
(3)费用较高。
每个同步卫星可覆盖地球的1/3表面。卫星通信的地面站使用小口径天线终端设备VSAT来发送和接收数据,国内很多证券公司显示的证券行情都是通过VSAT接收的卫星通信广播信息,证券的交易信息则是通过延迟小的数字数据网DDN专线或分组交换网进行转发。在VSAT中,信息处理、业务的自适应、网络的控制与检测等,都由计算机操作控制,可提供包括音频、数据、图像和电视等综合服务。
卫星信道具有通信容量大、传输距离远的优点,但是其一次性投资大,而且容易受天气影响。
二、核心程序
......................................................
%%
n = 3;
m = 6;
Rate = n/m;
p = 144;
N = m*p;
M = n*p;
%如果仿真时间非常慢,那么就把下面的8改为6或者5,这样就快点,但是误码率就统计不到10-6
SNR = [0:1:5];
%译码迭代次数
Max_iter = 10;
H = func_dys(n,m,p);
NUMS = [1200,1000,800,600,500,400,200,150,100]/2;
d = 50;%50km
F = 6;%6G
Gt = 8;%发射增益
Gr = 8;%接收增益
%%
%开始循环,进行误码率仿真仿真时间~~4小时
for i=1:length(SNR)
i
Bit_err(i) = 0; %设置误码率参数
Num_err = 0; %蒙特卡洛模拟次数
Numbers = 0; %误码率累加器
%信道参数
SNRs = 10^(SNR(i)/10);
%求出方差值
sigma = 1/sqrt(2*SNRs);
%发射功率
Ptr = 50;%10w
%功率对应的db,dBm = 10 x log[ 功率 mW]
dbm = 10*log10(1000*Ptr);
while Num_err <= NUMS(i)
fprintf('EbN0 = %f\n', SNR(i));
Num_err
Numbers
%产生需要发送的随机数
Trans_data = round(rand(N-M,1));
%LDPC编码
[ldpc_code,newH] = func_Enc(Trans_data,H);
u = [ldpc_code;Trans_data];
%QPSK映射
z0 = func_QPSK_mod(u);
%发送天线功率
z1 = Ptr*z0;
%通过微波信道
%衰落信道:路径衰落公式可以自己替换大尺度衰落因子β的公式为,https://wenku.baidu.com/view/b0b24de1011ca300a7c3900f.html
LS = dbm+Gt-(32.45+20*log10(1000*F)+20*log10(d));
H0 = 10^(LS/20);
z = H0*z1 + sigma*randn(size(z1));
%接收并
H1 = 10^(Gr/20);
zz = func_deMapping(H1*z,length(z));
%译码
[vhatsd,nb_itersd,successsd] = func_Dec(2*zz-1,newH,sigma,Max_iter);
%QPSK逆映射
[nberr,rat] = biterr(vhatsd(M+1:N)',Trans_data);
%LDPC译码
Num_err = Num_err+nberr;
Numbers = Numbers+1;
end
Bit_err(i) = Num_err/(N*Numbers);
end
..................................................................
三、测试结果
A01-154