1、沈阳理工大学装备工程学院课程设计说明书摘 要本次课程设计为基于MATLAB 的 BPSK 原理电路仿真。本次课设着重介绍了算法的实现,并采用 MATLAB 程序仿真测试了BPSK 过程中单极性不归零编码、 脉冲成形、PSK 调制、信号通过 AWGN 信道、载波恢复、解调、解码等过程。关键词: BPSK; 2PSK;MATLAB ;数字频带通信;I沈阳理工大学装备工程学院课程设计说明书目 录绪论11 BPSK数字调制原理21.1 数字带通传输分类21.2 BPSK 调制原理分析21.2.1调制原理分析21.2.2解调原理分析42 MATLAB软件62.1 MATLAB软件介绍63 基于的 MAT
2、LAB的 BPSK调制分析和仿真73.1 基于 MATLAB的 BPSK调制系统总述73.2 编码过程的 MATLAB实现83.3 BPSK 调制的 MATLAB的实现113.4 AWGN信道 MATLAB的实现133.5 载波恢复的 MATLAB实现163.5.1接收端带通滤波器163.5.2通过 FFT实现载波的直接频率估计203.5.3自适应(迭代)算法验证恢复频率223.6 BPSK 解调254 总结30附录31致谢32参考文献33II沈阳理工大学装备工程学院课程设计说明书绪论数字信号传输方式分为数字带通传输和数字基带传输。对于本次课程设计二进制相移键控 BPSK(Binary Pha
3、se Shift Key)是利用载波的相位变化来传递数字信息,而振幅和频率保持不变的一种数字带通调制方式。在实际应用中,PSK 具有恒包络特性,频带利用率比 FSK 高,在相同信噪比的条件下误码率也较低,同时 PSK 调制实现相对简单,故卫星通信,遥测遥控中用得最多的是BPSK 方式调制。1沈阳理工大学装备工程学院课程设计说明书1 BPSK 数字调制原理1.1 数字带通传输分类数字带通传输中一般利用数字信号的离散取值特点通过开关键控载波,从而实现数字调制,比如对载波的振幅、频率和相位进行键控可获得振幅键控(ASK )、频移键控(FSK)和相移键控( PSK)。1.2 BPSK 调制原理分析1.
4、2.1 调制原理分析相移键控是利用载波的相位变化来传递数字信息, 而振幅和频率保持不变。在 BPSK 中,通常用初始相位 0 或 分别表示二进制的 0和1。因此, BPSK 信号的时域表达式为:eBPSK (t)A cos( c tn )1-1其中,n 表示第 n 个符号的绝对相位:0 发送0时1-2n发送1时因此,式( 1-1)可以改写为:Acos( ct)概率为 PeBPSK1-3- Acos( ct)概率为1 - P由于表示信号的两种码元的波形相同,极性相反,故BPSK 信号一般可以表述为一个双2沈阳理工大学装备工程学院课程设计说明书极性全占空( 100% duty ratio)矩形脉冲
5、序列于一个正弦载波的相乘,即eBPSK s(t) cos ct1-4其中,s(t )an g (1 nTs )1-5n这里 ,g(t)脉冲宽度为 Ts 的单个矩形脉冲,而an 得统计特性为1概率为 Pan-1概率为 1- p1-6即发送二进制符号位 0时( a 取+1), e(t) 取 0 相位;发送二进制符号为1时nKSPB( a 取-1), e(t ) 取相位。这种以载波的不同相位直接去表示响应的二进制数字信nKSPB号的调制方式,称为二进制绝对相移调制(BPSK)。调制原理框图如图1.1 所示:图 1.1 BPSK 调制原理图3沈阳理工大学装备工程学院课程设计说明书典型波形如图1.2 所
6、示 :图 1.2发送码元为1 0 0 1 1的 BPSK波形1.2.2 解调原理分析BPSK 信号的解调方法是相干解调法。由于PSK 信号本身就是用相位传递信息的,所以在接受端必须利用信号的相位信息,故采用相干解调法来解调信号。BPSK 解调原理框图如 1.3 所示:eBPSK (t )acde 输出带通滤波器相乘器低通滤波器抽样判决定时cos ct脉冲图 1.3 BPSK 解调原理框图给出了一种 BPSK 信号想干接受设备原理框图。 图中经过带通滤波的信号在相乘器与本地载波相乘,在相干解调中,如何得到与接收的BPSK 信号同频同相的相干载波是关键,然后用低通滤波器去除高频分量,再进行抽样判决
7、,判决器是按极性进行判决,得到最终的二进制信息。图中,假设相干载波的基准相位于BPSK 信号的调制载波的基4沈阳理工大学装备工程学院课程设计说明书准相位一致。但是,由于在BPSK 信号的载波恢复过程中存在180 o 的相位迷糊( phaseambiguity),即恢复的本地载波与所需的相干载波可能同相,也可能反相,这种相位关系的不确定性将会造成解调出数字基带信号与发送的数字基带信号正好相反,即 1 变为 0,0变为 1,判决器输出数字信号全部出错。这种现象称为 BPSK 方式的倒 现象。具体波形如图 1.4 所示图 1.4解调信号示意图5沈阳理工大学装备工程学院课程设计说明书2 MATLAB软
8、件2.1 MATLAB 软件介绍MATLAB简介 MATLAB的名称源自 Matrix Laboratory,它是一种科学计算软件,专门 以矩阵的形式处理数据。 MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB 产品的开放式结构,可以非常容易地对MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB 产品以提高产品自身的竞争能力。在通信仿真中,欲将寄载消息的信号保质保量的传送给接收者,就必须对它们进行加工处理,对相应的部件进行分析和研究,而这种
9、研讨过程中会用到大量的数学计算。它是以矩阵,数组为基本处理对象,矩阵的维数不需要预先指定,且随时可变,具有丰富的矩阵运算功能。仿真功能我们采用MATLAB 语言编程,以Windows 和 MATLAB为软件运行环境。将通信原理中的知识点用MATLAB来实现。通过灵活的菜单和界面设计使 某些参数可调。同时运用Simulink 软件包,使波形在仿真的同时显示系统。更加有利于在课堂上使用。MATLAB 界面:图 2.1 MATLAB 界面6沈阳理工大学装备工程学院课程设计说明书3 基于的 MATLAB的 BPSK 调制分析和仿真3.1 基于 MATLAB 的 BPSK 调制系统总述基于 MATLAB
10、 的 BPSK 调制解调系统流程框图如3.1 所示:编码脉冲 形 成道调制信文本信息解码抽 样 判 决解调载波恢复图 3.1 BPSK 调制解调系统流程框图通信过程分析:整个发送与接收过程仿真了实际中的通信过程,输入一段信息如 ph经过编码过程,变换为一串二进制字符,再加载矩形窗进行脉冲成形,生成原始的数字基带信号,为了发送信息,通过 BPSK 调制成数字带通信号发射,发射信号进入模拟的 AWGN 信道,被接收机所接受, BPSK 解调采用的是相干解调,故需要进行载波恢复,恢复载波的频率,用已恢复的载波对接受信号进行相乘,再对其进行抽样判决,恢复最原始的二进制字符,再进行解码恢复原始的信息内容
11、。仿真过程的要求:本次课设使用 MATLAB 进行 BPSK 通信过程仿真,要求不仅能将原始信息转换成二进制字符信息,解调后也能很好的恢复成原来的信息,过程中对信号观察不仅需要从时域上进行观察分析,也需要再频域上进行观察分析,以分析通过 AWGN 信道对信号的影响。7沈阳理工大学装备工程学院课程设计说明书3.2 编码过程的 MATLAB 实现对于输入的文本信息,如果要进行调制发送,必然而且也可以将其转换成由0与 1二进制字符,这个过程是信源编码过程。算法原理:对于输入的文本信息, 在 MATLAB 中有对于的 ASCII 编码, MATLAB 会自动的任意一行文档表示为一列 ASCII 码。再
12、将十进制的 ASCII 码转换为二进制的的字符。对于数字形式的信息,必须转化成模拟形式,也就是脉冲成形过程,它将数字形式的每个字符转换成合适的模拟脉冲,经过传输后,接受端可以从接受到的信号中恢复出原来的二进制字符。本次课设采用矩形窗加载,即为矩形脉冲。算法原理框图如3.2 所示:文本信息二进制信息脉冲成形基带信号图 3.2算法框图MATLAB 代码:%编码和脉冲成形%采样率 100decimalvalue=real(str);%使用自带 real 函数读取字符串的ASCII 码binaryvalue=dec2base(decimalvalue,2,8);% dec2base函数转成 8 位二进
13、制形式字符%因为使用 dec2base函数转换出的二进制字符是使用char 型的数组%进行将 char 型转换成 int 型二进制字符matrix1=size(binaryvalue);a=matrix1(1,1);b=matrix1(1,2);bv=;for i=1:1:a;for j=1:1:b;8沈阳理工大学装备工程学院课程设计说明书bv1=binaryvalue(i,j);bv1=bv1*1;bv1=bv1-48;bv=bv bv1;endend%为了能使编码后的二进制可以进行脉冲成形需要对其进行过采样M=100;N=length(bv);bsignal=zeros(1,N*M);bs
14、ignal(1:M:end)=bv;%使用矩形窗进行脉冲成形p=ones(1,M);s=conv(p,bsignal);%因为使用卷积,加载后的信号需要剔除后续多余部分k1=length(s);k1=k1-99;signal=zeros(1,k1);for i=1:1:k1;signal(i)=s(i);end%画图语句k=1;%第一幅图x=signal;Ts=1/100;plotspec(x,Ts,k);%调用自编子函数9沈阳理工大学装备工程学院课程设计说明书运行程序输入 str=ph,输出二进制字符的基带信号signal,时域图如 3.3 所示:图 3.3基带信号时域图基带信号频域图如3.
15、4 所示:图 3.4 基带信号频域图由 MATLAB 的工作空间可知 ph转换成的二进制字符为: 011000001101000.10沈阳理工大学装备工程学院课程设计说明书3.3 BPSK 调制的 MATLAB 的实现数字基带信号一般不直接进行发射,需经过调制,本次课设要求使用BPSK 调制方式进行调制。算法原理:在 MATLAB 中,可以采取脉冲成形的方式对原始信号进行调制,先将信号进行过采样插值,将 1s 内取 100k 个有相同幅值的点,以便使用载波进行脉冲成形,过采样后直接使用载波对信号进行相乘,以达到调制的目的。算法原理框图如3.5 所示:二进制字符i1 : length (bv)判
16、断值为 0为1BPSK调制信号插0过采样与载波相乘插 1过采样图 3.5算法原理框图MATLAB 代码:%BPSK 调制%采样率 100kHZt2=0:(2*pi)/100000:2*pi-0.00001;% 载波一周期内采样点数fc=300;%载波频率m1=;c1=;b1=;%进行过采样插值11沈阳理工大学装备工程学院课程设计说明书for n=1:1:length(bv);if bv(n)=0;m=-ones(1,100000);b=zeros(1,100000);else bv(n)=1;m=ones(1,100000);b=ones(1,100000);endc=cos(fc*t2);%
17、 生成相应载波%过采样后插值的信号m1=m1,m ;c1=c1,c;b1=b1,b;endpsk=c1.*m1;%生成 BPSK 信号Ts=1/100000;%采样周期x=psk; %画图k=2;%第二幅图plotspec(x,Ts,k);%调用自编函数文件运行程序得到 BPSK 已调信号 psk,时域图如 3.6 所示:图 3.6 BPSK 信号时域图(部分)12沈阳理工大学装备工程学院课程设计说明书BPSK 的频域图如 3.7 所示:图 3.7 BPSK 信号频域图从图观察,在300 HZ 处附近有值,说明已用频率300HZ 的载波调制数字基带信号。3.4 AWGN 信道 MATLAB 的
18、实现加性高斯白噪声 AWGN(Additive White Gaussian Noise) 是最基本的噪声与干扰模型。它的幅度分布服从高斯分布,而功率谱密度是均匀分布的,它意味着除了加性高斯白噪声外, r(t) 与 s(t)没有任何失真。即 H(f) 失真的加性噪声:叠加在信号上的一种噪声, 通常记为 n(t),而且无论有无信号, 噪声 n(t) 都是始终存在的。因此通常称它为加性噪声或者加性干扰。白噪声:噪声的功率谱密度在所有的频率上均为一常数,则称这样的噪声为白噪声。如果白噪声取值的概率分布服从高斯分布,则称这样的噪声为高斯白噪声。在 MATLAB 中有模拟 AWGN 信道可直接使用 aw
19、gn 函数, y = awgn(x,SNR)在信号 x 中加入高斯白噪声。信噪比SNR 以 dB 为单位。 x 的强度假定为0dBW。如果 x 是复数,就加入复噪声。y = awgn(x,SNR,SIGPOWER)如果 SIGPOWER 是数值,则其代表以dBW 为单位的信号强度;如果SIGPOWER13沈阳理工大学装备工程学院课程设计说明书为measured, 函数将在加入噪声之前 定信号 度。y = awgn(x,SNR,SIGPOWER,STATE)重置 RANDN 的状 。y = awgn(,POWERTYPE)指定 SNR 和 SIGPOWER 的 位 。 POWERTYPE 可以是
20、 dB 或 linear 。 如果 POWERTYPE 是dB,那么 SNR 以 dB 位,而 SIGPOWER 以 dBW 位。如果 POWERTYPE 是linear,那么 SNR 作 比 来度量,而 SIGPOWER 以瓦特 位。MATLAB 代 :%模 AWGN 信道e2psk=awgn(psk,100);% 用 awgn%画 x=e2psk;Ts=1/100000;%采 率k=3;plotspec(x,Ts,k);运行程序, AWGN 信道后的信号 e2psk,其 域 如 3.8 所示:图 3.8 经过 AWGN信道后的信号e2psk14沈阳理工大学装备工程学院课程设计说明书信号局部
21、放大图如3.9 所示:图 3.9 e2psk信号时域图(部分)可见信号经过 AWGN 信道后,受到噪声污染,时域上有失真。e2psk 信号频谱图如 3.10 所示:图 3.10 e2psk信号频谱图15沈阳理工大学装备工程学院课程设计说明书300HZ 左右处放大图如3.11 所示:图 3.11 e2psk 信号 300Hz 左右处频谱分析图可知,由于信号经过了AWGN 信号,收到噪声干扰,频谱图在整个频域上有加性白噪声污染,都有不同程度的失真,不利于信号的解调。3.5 载波恢复的 MATLAB 实现从接收端接收到信号后,为了进行相干解调,需要从本地恢复载波。对本次课设BPSK 调制方式是一种没
22、有抑制载波的调制方式,但是在通常情况下,载波很容易的被隐藏在接收信号中,而且需要很多额外的处理过程来恢复载波。对于刚接收到的信号可先通过 FFT 实现载波的频率估测, 得出一个频率之后, 再使用自适应算法的方式, 准确定位和验证载波频率值。3.5.1 接收端带通滤波器在接收器接受到调制信号后,由于调制信号被AWGN 信道“污染”,在整个频带上增加了加性高斯白噪声,故为了过滤信号需要在接受端加上一个带通滤波器,以滤除带外信号。16沈阳理工大学装备工程学院课程设计说明书本次课设调用remez函数以使用雷米兹算法, 雷米兹算法提供了求解切比雪夫逼近问题的有效方法。切比雪夫滤波器是在通带或阻带上频率响
23、应幅度等波纹波动的滤波器。MATLAB 代码:%带通滤波器生成及其频率响应f1=500;%滤波器阶数fs=1000;%滤波器显示频率最大值的两倍ff=0 .51 .52 .68 .69 1;%归一化的截止频率fa=0 0 1 1 0 0;h=remez(f1,ff,fa);%生成带通滤波器figure(4),freqz(h,1,512,fs);%绘出滤波器的频率响应r=filter(h,1,e2psk);%信号通过带通滤波器k=5;plotspec(r,Ts,k)带通滤波器的幅频响应如图3.12 所示:图 3.12带通滤波器幅频响应17沈阳理工大学装备工程学院课程设计说明书带通滤波器的相频响应
24、如图3.13 所示:图 3.13 带通滤波器的相频响应分析可知在通带或阻带上频率响应幅度等波纹波动的切比雪夫滤波器, 带通滤波器的频率响应可知带通滤波器的中心频率为 300Hz,通带为 260Hz 至 340Hz,群延时为 179.85 度。信号通过带通滤波器后时域图如3.14 所示:图 3.14信号通过带通滤波器18沈阳理工大学装备工程学院课程设计说明书通过带通滤波后信号的局部图如3.15 所示:图 3.15接收信号通过带通滤波(部分)可知经过带通滤波后,时域图中信号有一定成度的改善,波形突刺减少,一定程度的恢复成原来的波形。信号通过带通滤波后的幅频响应如3.16 所示:图 3.16接受信号
25、通过带通滤波后的幅频响应19沈阳理工大学装备工程学院课程设计说明书分析频域图,在频带中多余的加性白噪声得到一定的抑制,而很好的保留了载频附近的频率信息。3.5.2 通过 FFT 实现载波的直接频率估计对于没有抑制载波的调制信号来说,使用FFT 变换后通常载波频率幅度是最大值,可以通过检测已调信号的整个频率范围最大值来确定最大值。但是,一般情况下,由于已调信号经过信道后,频谱受到损伤,出现一定程度的失真,降低了用最大值来确定载波频率的方法的可靠性,此时需要使用另外的方法来恢复载波频率。载波恢复流程框图如3.17 所示:r (t )r 2 (t)r p (t ) cos(4 f c t)X 2BP
26、F图 3.17载波恢复流程图如图 3.17 所示,一般可以在带通滤波器后使用非线性模块平方器,r (t ) 是接受信号,由基带信号 signal (t ) 和载波 cos信号 相乘组成,平方器的输出项为r 2 (t) signal 2 (t) cos2 (2 fc t)3.1又根据等式2 cos2 ( x)1cos(2x) ,改写 3.1 为r 2 (t ) (1/ 2)signal 2 (t )1 cos(4 fct)3.2将 signal 2 (t) 用其平均值和偏移量的和来表示signal 2 (t)signalavg2v(t )3.320沈阳理工大学装备工程学院课程设计说明书因此r 2
27、 (t )(1/ 2) signalavg2v(t )signalavg2 cos(4 f c t)v(t ) cos(4 fct )3.4以 2 f c 为中心的窄带带通滤波器只能让 r 2 (t ) 中的纯余弦项通过,而且还会抑制当中的直流成分,低频部分 v(t ) 和向上边频了的 v(t) 也不能通过。带通滤波器的输出约为r p (t) BPF r 2 (t)1 signal avg2 (t) cos(4 f ct)3.52式中,是相位偏移, 是带通滤波器引入的。 对于接受机来说,值是已知的, 故 r p (t )可用来估算出载波的频率。MATLAB 代码:rsc=r;q=rsc.2;%
28、 通过平方器fl=500; ff=0 .0100 .0104 .0136 .0140 1;fa=0 0 1 1 0 0;h=remez(fl,ff,fa) ;% 生成带通滤波器rp=filter(h,1,q);% 再通过带通滤波fftrBPF=fft(rp);% 对 rp 信号进行 FFT 变换m,imax=max(abs(fftrBPF(1:end/2);% 找到最大值, 返回最大值和最大值所在数组点ssf=(0:length(rp)/(Ts*length(rp);%建立储存频率的数组freqS=ssf(imax);%找出存储频率数组对应最大幅度的频率运行程序结果:freqS =600由结果
29、可知估测频率fc=300Hz。21沈阳理工大学装备工程学院课程设计说明书3.5.3 自适应(迭代)算法验证恢复频率对于前面已经估测处了载波的频率,此时可以由freqS 为假设值,利用自适应算法对恢复的载波频率进行再估测和验证。在通信中的许多问题能够被设计成最优化问题要解决这种问题需要三个基本的步骤:( 1)设定一个目标 -选择一个目标函数( 2)选择一个实现目标的方法 -最大化或最大化这个目标函数( 3)检验以确定这个方法能达到预期效果“设定一个目标函数”通常包括寻找一个可以最大化或可以最小化的函数,定位最大和最小值为所要解决问题提供了有用的信息。 这个函数的选择必须使它和它的导数的值能基于一
30、些信息计算出来。有很多的方法可以用来实现最大化或最小化过程。有的时候是可以使用直接的方法,如,如果为了找到多项式达到最小值的点,只要直接找到它的导数并置零就可以得到解答。但是很多时候,不可能有如此简单的解决方法,递归方法(自适应方法)通常在信号运算中有很好的应用。自适应算法通常以最陡下降为目的,也可以称之为最陡下降法,最陡下降自适应算法从最初猜测的位置开始,算出从估计值开始哪个是最陡下降的方向,并沿着这条下降方向做出最新的估算,为了运用最陡下降法来最小化多项式J (x) ,假设在时间 k 处的 x的当前估算是可以得到的,表示为x k 在时间 k1的估算可以用下式:dJ( x)x k 1 xk
31、dx x x k3.6式中,是很小正数,称为步长,而J ( x) 的梯度是当前 x k 点计算出来的,当k 重复计算,依次迭代运算,最终接近最小值对于接受信号为 r (t ) ,设 freqS 为 f ,合理的算法为尝试最小化下式:J ( f )1 LPF r (t) cos(2 ft )3.7222沈阳理工大学装备工程学院课程设计说明书利用梯度算法重写3.6 式,得:f k 1f k u dJ ( f )ff kdff k uLPF 23.8kTsr ( kTs ) cos(2 kTs f k) sin(2 kTs f k)将平方项展开整理为:J ( f ) LPF 111f )t cos2
32、 ( f c f )tcos(4 f ct )cos( 4 ft ) cos 2 ( f c223.91 - LPFcos 2 ( f cf )t 此式即为其误差表面函数,可以用来分析性能函数。MATLAB 代码:%自适应算法估测频率%预先恢复频率 2fc=freqS=600Hz%本次算法初始值为300Hz,采用步长 mu=0.003Ts=1/100000;time=5;t=0:Ts:time-Ts;% 建立时间向量fl=300;ff=0 .005 .01 1;fa=1 1 0 0;h=remez(fl,ff,fa);% 低通滤波生成mu=.003;% 步长fc=300;% freqS 估测出频率fest=zeros(1,length(t);fest(1)=fc+3;% 起始运算的频率303Hzz=zeros(1,fl+1);% 进行循环运算 迭代运算有 3.8 式得出for k=1:length(t)-1