1.算法描述
正交幅度调制(QAM,Quadrature Amplitude Modulation)是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此被称作正交载波。这种调制方式因此而得名。同其它调制方式类似,QAM通过载波某些参数的变化传输信息。在QAM中,数据信号由相互正交的两个载波的幅度变化表示。
模拟信号的相位调制和数字信号的PSK可以被认为是幅度不变、仅有相位变化的特殊的正交幅度调制。由此,模拟信号频率调制和数字信号FSK也可以被认为是QAM的特例,因为它们本质上就是相位调制。这里主要讨论数字信号的QAM,虽然模拟信号QAM也有很多应用,例如NTSC和PAL制式的电视系统就利用正交的载波传输不同的颜色分量。
类似于其他数字调制方式,QAM发射信号集可以用星座图方便地表示。星座图上每一个星座点对应发射信号集中的一个信号。设正交幅度调制的发射信号集大小为N,称之为N-QAM。星座点经常采用水平和垂直方向等间距的正方网格配置,当然也有其他的配置方式。数字通信中数据常采用二进制表示,这种情况下星座点的个数一般是2的幂。常见的QAM形式有16-QAM、64-QAM、256-QAM等。星座点数越多,每个符号能传输的信息量就越大。但是,如果在星座图的平均能量保持不变的情况下增加星座点,会使星座点之间的距离变小,进而导致误码率上升。因此高阶星座图的可靠性比低阶要差。
当对数据传输速率的要求高过8-PSK能提供的上限时,一般采用QAM的调制方式。因为QAM的星座点比PSK的星座点更分散,星座点之间的距离因之更大,所以能提供更好的传输性能。但是QAM星座点的幅度不是完全相同的,所以它的解调器需要能同时正确检测相位和幅度,不像PSK解调只需要检测相位,这增加了QAM解调器的复杂性。
16QAM全称正交幅度调制是英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一种数字调制方式。产生的方法有正交调幅法和复合相移法。
16QAM是指包含16种符号的QAM调制方式。
16QAM 调制解调原理方框图如右图1:
16QAM 是用两路独立的正交 4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是 2ASK 调制的推广,和 2ASK 相比,这种调制的优点在于信息传输速率高。
正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。
16 进制的正交振幅调制是一种振幅相位联合键控信号。16QAM 的产生有 2 种方法:
(1)正交调幅法,它是有 2 路正交的四电平振幅键控信号叠加而成;
(2)复合相移法:它是用 2 路独立的四相位移相键控信号叠加而成。
这里采用正交调幅法。
串/并变换器将速率为Rb的二进制码元序列分为两路,速率为Rb/2.2-4电平变换为Rb/2 的二进制码元序列变成速率为RS=Rb/log216 的 4 个电平信号,4 电平信号与正交载波相乘,完成正交调制,两路信号叠加后产生 16QAM信号.在两路速率为Rb/2 的二进制码元序列中,经 2-4 电平变换器输出为 4 电平信号,即M=16.经 4 电平正交幅度调制和叠加后,输出 16 个信号状态,即 16QAM.
RS=Rb/log216=RB/4.
2. 16QAM 解调原理
16QAM 信号采取正交相干解调的方法解调,解调器首先对收到的 16QAM 信号进行正交相干解调,一路与 cos ω c t 相乘,一路与 sin ω c t 相乘。然后经过低通滤波器,低通滤波器 LPF 滤除乘法器产生的高频分量,获得有用信号,低通滤波器LPF 输出经抽样判决可恢复出电平信号。
QAM也可用于数字调制。数字QAM有4QAM、8QAM、16QAM、32QAM等调制方式。其中,16QAM和32QAM广泛用于数字有线电视系统。以16QAM为例介绍其原理。
16QAM调制器框图及星座图。作为调制信号的输入二进制数据流经过串—并变换后变成四路并行数据流。这四路数据两两结合,分别进入两个电平转换器,转换成两路4电平数据。例如,00转换成–3,01转换成–1,10转换成1,11转换成3。这两路4电平数据g1(t)和g2(t)分别对载波cos2πfct和sin2πfct进行调制,然后相加,即可得到16QAM信号。
QAM调制效率高,要求传送途径的信噪比高,适合有线电视电缆传输。在美国,正交调幅通常用在地面微波链路,不用于国内卫星,欧洲的电缆数字电视采用QAM调制,而加拿大的卫星采用正交调幅。QAM是幅度、相位联合调制的技术,它同时利用了载波的幅度和相位来传递信息比特,因此在最小距离相同的条件下,QAM星座图中可以容纳更多的星座点,即可实现更高的频带利用率,目前QAM星座点最高已可达256QAM。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
bit_count = 4*1000; % Range of SNR over which to simulate Eb_No = -6: 1: 10; SNR = Eb_No + 10*log10(4); % Start the main calculation loop for aa = 1: 1: length(SNR) % Initiate variables T_Errors = 0; T_bits = 0; % Keep going until you get 100 errors while T_Errors < 100 % Generate some random bits uncoded_bits = round(rand(1,bit_count)); % Split the stream into 4 substreams B = reshape(uncoded_bits,4,length(uncoded_bits)/4); B1 = B(1,:); B2 = B(2,:); B3 = B(3,:); B4 = B(4,:); % 16-QAM modulator % normalizing factor a = sqrt(1/10); % bit mapping tx = a*(-2*(B3-0.5).*(3-2*B4)-j*2*(B1-0.5).*(3-2*B2)); % Noise variance N0 = 1/10^(SNR(aa)/10); % Send over Gaussian Link to the receiver rx = tx + sqrt(N0/2)*(randn(1,length(tx))+i*randn(1,length(tx))); %--------------------------------------------------------------- % Merge into single stream again temp = [B5;B6;B7;B8]; B_hat = reshape(temp,1,4*length(temp)); % Calculate Bit Errors diff = uncoded_bits - B_hat ; T_Errors = T_Errors + sum(abs(diff)); T_bits = T_bits + length(uncoded_bits); end % Calculate Bit Error Rate BER(aa) = T_Errors / T_bits; disp(sprintf('bit error probability = %f',BER(aa))); % Plot the received Symbol Constellation figure; grid on; plot(rx,'x'); xlabel('Inphase Component'); ylabel('Quadrature Component'); title('Constellation of Transmitted Symbols'); end
标签:误码率,电平,正交,星座图,matlab,信号,QAM,16QAM,调制 From: https://www.cnblogs.com/51matlab/p/17268517.html