目 录
1 项目的目的 ···························································································· 3 2项目设计································································································ 3 2.1项目的设计原理 ················································································ 3 2.1.1数字通信系统模型 ······································································ 3 2.1.2 8QAM调制解调原理 ····································································· 3 2.1.3(7,4)循环码的编译码原理 ······················································· 5 2.1.4高斯噪声信道原理 ······································································ 7 3程序流程图及设计 ··················································································· 9 3.1程序流程图 ······················································································ 9 3.2设计方案 ························································································· 9 3.2.1产生二进制随机数据源 ································································ 9 3.2.2(7,4)循环码的编码 ······························································· 10 3.2.3 8QAM调制 ··············································································· 10 3.2.4信道加高斯白噪声 ····································································· 10 3.2.5 8QAM解调 ················································································ 10 3.2.6(7,4)循环码的译码 ······························································· 10 3.2.7误码率 ···················································································· 10 4仿真结果及分析 ····················································································· 11 5设计总结······························································································· 11 参考文献 ································································································· 12 附录 ······································································································· 13
- 1 -
1 项目的目的
通信按照传统的理解就是信息的传输,在当今高度信息化的社会,通信已成为现代社会的“命脉”。通信的目的是传递消息中所包含的信息。通信系统的作用就是将信息从信源发送到一个或多个目的地。对于电通信,首先要把消息转变成电信号,然后经过发送设备,将信号送入信道,在接收端利用接收设备对接收信号作相应的处理后,送给信宿再转换为原来的消息。数字通信系统(Digital Communication System)是利用数字信号来传输信息的通信系统,数字通信系统设计的技术主要有信源编译码、信道编译码、数字调制与解调、同步等。
本次通信系统仿真是利用Matlab仿真软件进行(7,4)循环编译码、8QAM(八进制正交幅度调制)调制解调的数字通信系统仿真。
2项目设计
2.1项目的设计原理 2.1.1数字通信系统模型
数字通信系统模型图2-1所示。
图2-1 数字通信系统模型
2.1.2 8QAM调制解调原理
噪声 信道 信源 信源编码 信道编码 数字调制 信宿 信源译码 信道译码 数字解调 QAM(Quadrature Amplitude Modulation)是一种振幅和相位联合调制键控,频谱利用率较高的调制方式,它用两路独立的基带数字信号对两个相互正交的同频载波的双边带调制,并利用这种已调信号在同一带宽内频谱正交的性质来实现两路并行的数字信号传输。
正交调幅信号有两个相同频率的载波,但是相位相差90度。一个信号叫I信号,
- 2 -
另一个信号叫Q信号。从数学角度将一个信号可以表示成正弦,另一个表示成余弦。两种被调制的载波在发射时已被混和。到达目的地后,载波被分离,数据被分别提取然后和原始调制信息相混和。
QAM是一种矢量调制,将输入比特先映射(一般采用格雷码)到一个复平面(星座)上,形成复数调制符号,然后将符号的I、Q分量(对应复平面的实部和虚部,也就是水平和垂直方向)采用幅度调制,分别对应调制在相互正交(时域正交)的两个载波(coswt和sinwt)上。这样与幅度调制(AM)相比,其频谱利用率将提高1倍。QAM是幅度、相位联合调制的技术,它同时利用了载波的幅度和相位来传递信息比特,因此在最小距离相同的条件下可实现更高的频带利用率。 一个码元可以表示为
stAcost kTtk1T
kk0k展开上式为
令
stAcoscostAsinXAcos , YAsin
kkk0kkkkksin0t
kkk式子可以变为同相分量和正交分量的形式
s(t)Xkkcos0tYksin0t
s k(t)是两个正交的振幅键控信号之和
QAM的调制框图2-2所示。
2/4电平变换 相乘器 cost 串/并转换 相加器 二进制数据 902/4电平变换 0相移
相乘器 图2-2 QAM的调制框图
- 3 -
QAM的解调框图2-3所示。
载波同步 并/串转换 相乘器 LPF 抽样判决 相乘器 LPF 抽样判决 图2-3 QAM解调框图
2.1.3(7,4)循环码的编译码原理
(7,4)循环码的编译码原理
(1) 有信息码构成信息多项式m(x)= mk1(2) 用xnkxk1+……+m0其中高幂次为k-1; m(x)最高幂次为n-1,该过程相
乘以信息多项式m(x),得到的xnk当于把信息吗(mk1,mk2,……,m1,m0)移位到了码字德前k个信息位,其后是r个全为零的监督位; (3) 用g(x)除xnk m(x)得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),
nk将此r(x)加于信息位后做监督位,即将r(x)于x式必为一码多项式。
m(x)相加,得到的多项
循环码的译码原理
纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。
通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM传输文件的协议如
- 4 -
ZMODEM、XMODEM协议中均用到了CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。
在SystemView中没有提供专用的CRC循环冗余校验码编码器,读者可根据有关参考书设计一个相应的仿真电路。如果不想亲自动手设计,可以在CDMA库(IS95)中找到一个现成的专用的CRC编码器和译码器。该图符(FrameQ)是的接入信道的数据帧品质指示编码器,其中使用了多种不同比特率的数据模型,通过CRC校验来判断接入信道的质量好坏。其中规定每一帧的长度为20ms的数据。一个典型IS-95-A标准规定的9600信道的CRC测试码的长度为192比特,其中信息位172位、校验位12比特、尾部全零8比特。感兴趣的读者可以加入一个速率为860bps(192bit/0.2ms=860)的PN数据,然后观察经过CRC编码后的波形。并可用对应的译码器译码观察输出波形是否与输入的PN码一致。
当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:
yce
上式也可以写成多项式形式:
y(x)c(x)e(x)
译码器的任务就是从y(x)中得到e(x),然后求的估值码字
c(x)= y(x)+ e(x)
并从中得到信息组m(x)。
循环码译码可按以下三个步骤进行: (1)有接收到的y(x)计算伴随式s(x);
(2)根据伴随式s(x)找出对应的估值错误图样e(x);
(3)计算c(x)= y(x)+ e(x),得到估计码字c(x)。若c(x)=c(x),则译码正确,
否则,若c(x)c(x),则译码错误。
由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,故S(x) 共有2n-k 个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x) 共有2(7-4) = 8个可能的表达式,可
- 5 -
根据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示。 BCH(7,4)循环码错误图样表:
错误图样 E6(x)=x6 E5(x)=x5 E4(x)=x4 E3(x)=x3 E2(x)=x2 E1(x)=x1 E0(x)=x0 E(x)=0 错误图样码字 1000000 0100000 0010000 0001000 0000100 0000010 0000001 0000000 伴随式S(x) x2 x2+x x2+x+1 x+1 x2+1 x 1 0 伴随式 100 110 111 011 101 010 001 000 表1 BCH(7,4)循环码错误图样表
上式指出了系统循环码的译码方法:将收到的码字R(x) 用g(x) 去除,如果除尽则无错;否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x),从而实现纠错目的。
2.1.4高斯噪声信道原理
信道中存在的不需要电信号统称为噪声,通信系统中的噪声是叠加在信号上的,没有输入信号时通信系统中也有噪声,噪声永远存在于通信系统中。噪声可看成是信道中的一种干扰,成为加性干扰,因为他是叠加在信号上的,噪声对于信号的传输时有害的,它能使模拟信号失真,使数字信号发生错码,并限制着信息的传输速率。 信道中加性噪声的来源,一般可以分为三方面: (1) 人为噪声
人为噪声来源于无关的其它信号源,例如:外台信号、开关接触噪声、工业的点火辐射等。 (2) 自然噪声
自然噪声是指自然界存在的各种电磁波源,例如:闪电、雷击、大气中的电暴和各种宇宙噪声等。 (3) 内部噪声
内部噪声是系统设备本身产生的各种噪声,例如:电阻中自由电子的热运动
- 6 -
和半导体中载流子的起伏变化等。
某些类型的噪声是确知的,虽然消除这些噪声不一定很容易,但至少在原理上可消除或基本消除,另一些噪声则往往不能准确预测其波形,这种不能预测的噪声统称为随机噪声,我们关心的只是随机噪声。 常见的随机噪声分为:
①单频噪声:为连续波干扰。特点:频带窄,可实测后避开或网络设计时考
虑减小其干扰值。
②脉冲噪声:为时间上的突发性干扰。 特点:时间短,幅度大,频带宽。可
从时间上避开(中断通信一瞬间 )。
③起伏噪声:为时间上连续、频带极宽的干扰。在通信过程中,无法从时域、
频域避开此噪声。
一般加性噪声仅考虑为起伏噪声。 起伏噪声包含:
①散弹噪声:由半导体器件电子发射的不均匀性引起的噪声。
②热噪声:电阻类导体中电子的布朗运动(热运动)引起的噪声。 满足高斯分布,在1013 Hz内其功率谱密度为常数。
③宇宙噪声:天体辐射所形成的噪声。 服从高斯分布,通过实测,在20~300MHZ范围内,具有较平坦的功率谱密度,但强度较小。
由于在一定的频率范围内,起伏噪声的功率谱近似平坦,为白噪声[或限带白噪声]。加性噪声为零均值高斯白噪声。
加性高斯白噪声作用下的调制信道(白高斯信道)可由Shannon公式计算信道的容量:
SSCBlog21Blog21bit/sNn0BB:信道带宽(Hz) S:信号功率( W ) N = n0 B:白噪声功率
- 7 -
3程序流程图及设计 3.1程序流程图
程序流程图如图3-1所示。
图3-1程序流程图
3.2设计方案
3.2.1产生二进制随机数据源
计算误码率 画出误码率曲线 (7,4)循环译码 8QAM解调 信道加高斯白噪声 画出加噪后的信号接收图 8QAN调制 画出8QAM星座图 (7,4)循环编码码 产生二进制随机信源 在MATLAB中表示信号的常规格式是向量或者矩阵。本示例中利用randint函数来产生一个表示二进制数据序列连续值的列向量。其中二进制数据序列的长度(即为列向量中的行数)设置为9999。 %% 定义参数 M = 8; k = log2(M);
- 8 -
%% 产生信源 n=9999;
x = randint(n,1);
3.2.2(7,4)循环码的编码
code = encode(x,7,4,'cyclic');%进行(7,4)信道编码
xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');%在这里left-msb的意思是二进制数据中,以左边第一位为最高位来将2进制数翻译成8进制数
3.2.3 8QAM调制
modem.qammod函数实现M-QAM调制,本示例中M为8。由于该函数默认的输入是八进制数据,而产生的信源为二进制,故须修改默认函数参数为输入数据类型是二进制。
%% 调制,设置输入为二进制数据 y = modulate(modem.qammod(M), xsym);
3.2.4信道加高斯白噪声
ynoisy = awgn(y,30,'measured');
3.2.5 8QAM解调
modem.qamdemod函数实现M-QAM解调。由于该函数默认的输出也是十进制数据,而之后要计算误码率时要求是二进制,故须修改默认函数参数为输出数据类型是二进制。
%% 解调,设置输出二进制数据
zsym = demodulate(modem.qamdemod(M),ynoisy);%解调接收到的ynoisy信号 z = de2bi(zsym,'left-msb');%将解调出来的信号进行8进制到2进制的转换
3.2.6(7,4)循环码的译码
msg=decode(z,7,4,'cyclic'); %信道译码 msg = msg(1:length(x));
3.2.7误码率
[number_of_errors(n),bit_error_rate(n)] = biterr(x,msg);
- 9 -
4仿真结果及分析
信源发“1”码的概率为P(1),发送“0”码的概率为P(0),则二进制基带传输系统的总误码率为
P当P(1)=P(0)=1/2时有 总误码率为
eP(1)P(0/1)P(0)P(1/0)
VPe5设计总结
*d0
1A 1erf2n2课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节。而计算机通信则是一门实用性很强的课,特别是数据通信与计算机的结合,派生出当前计算机最具发展前途的计算机网络。而计算机通信课程设计则很好地体现了这门课程的实用性,在整整一学期课本理论知识的学习使我感到对迷茫与无助,有种脱离实际的空虚感,但是课程设计给我提供了很好的一个理论与实际相结合的平台,它使我把理论知识实用化,也使是我对这门课有了一个新的认识,对整个知识框架又有了一个全新的认识,同时我也意识到这门课是一门实用性很强的课程,作为通信工程的必修课,在课设过程中我意识到了它在我的以后工作生活中的实用价值。
在设计的过程中,我有许多不懂得地方,在完成过程中老师指导我去怎么选择资料,如何去利用网络资源,在这个学习的过程中,我也进一步了解到Matlab的实用价值,更加深刻地理解了通信这门课程中纠错码与纠错原理,更加深刻地理解了循环冗余校验码CRC原理。是我系统地学习了(7,4)循环码的编码与译码原理与其的实现方法。能够用此去分析不同输入码情况下其编译码输出结果以及区分出校验位于信息位码字。学会了在无差错和部分差错的情况下分析仿真给出(7,4)循环码的译码结果。同时我熟练地掌握了Matlab的编程方法,并掌握了用Matlab编写(7,4)循环码的编码与译码。
- 10 -
参考文献
[1] 樊昌信,曹丽娜.通信原理(第6版)[M].国防工业大学出版社,2006.9 [2] 曹雪虹,张宗橙.信息论与编码(第2版)[M].清华大学出版社.2009
[3] 唐向宏,岳恒立.郑雪峰.MATLAB及在电子信息类课程中的应用(第2版)[M].电子工业出版社
[4] 李建新.现代通信系统分析与仿真MATLAB 通信工具箱[ M ].西安电子科技大学出版社 .2002.
项目设计 评 语 项目设计 成 绩
指导教师 (签字) 年 月 日 - 11 -
附录
代码:Matlab7.0版本 %数字通信系统的仿真 clear clc
M=8;%设置M的数目 n =9999; Fc=10;%载波频率 Fd=1;%信号采样速率 Fs=50;%采样频率 N=Fs/Fd; k = log2(M); x = randint(n,1);
SNR_in_dB = 1:2:11;%定义信噪比的数值
code = encode(x,7,4,'cyclic');%进行(7,4)信道编码
xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');%在这里left-msb的意思是二进制数据中,以左边第一位为最高位来将2进制数翻译成8进制数 y = modulate(modem.qammod(M),xsym); ynoisy = awgn(y,30,'measured');
%h=scatterplot(ynoisy,N,0,'bx');%绘制散射图
zsym = demodulate(modem.qamdemod(M),ynoisy);%解调接收到的ynoisy信号 z = de2bi(zsym,'left-msb');%将解调出来的信号进行8进制到2进制的转换
%z= reshape(z.',prod(size(z)),1);%再将得到的3列乘以3333行的数组转换成1列9999行的数组, msg=decode(z,7,4,'cyclic'); %信道译码 msg = msg(1:length(x)); %误码率BER计算
[number_of_errors(n),bit_error_rate(n)] = biterr(x,msg)
- 12 -
因篇幅问题不能全部显示,请点此查看更多更全内容