题 目:二进制相移键控(2PSK)电路设计
专业班级:08通信工程1班
姓 名: 杨喆军
学 号:***********
指导教师: 冯 俊 夏义全
高翠云 邵 慧
成 绩:
0
前 言
相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。传统的2PSK(二进制相位键控)调制可采用直接调相法即双极性数字基带信号与载波直接相乘的方法,也可以采用相位选择法即由振荡器和反相器电路来实现调制的方法。对数字信息进行调制可以便于信号的传输;实现信道复用;改变信号占据的带宽;改善系统的性能。
相移键控在数据传输中,尤其是在中速和中高速的数传机中得到了广泛的应用。相移键控有很好的抗干扰性,在有衰落的信道中也能获得很好的效果。二进制移相键控(2PSK)方式是载波相位按基带脉冲序列的规律而改变的一种数字调制方式,和模拟调制不同的是,由于数字基带信号具有离散取值的特点,所以调制后的载波参量只有有限的几个数值,因而数字调制在实现的过程中常采用键控的方法,就像用数字信息去控制开关一样,根据数字基带信号的两个电平,使载波相位在两个不同的数值之间切换的一种相位调制方式。当两个载波相位相差180度时,此时称为反向键控,也称为绝对相移方式。
本次设计实验旨在将理论和实践地结合。依据所学知识,利用Multisim软件进行实验电路设计和仿真。
1
摘要
在数字信号的调制方式中QPSK是目前最常用的一种数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。调制技术是通信领域里非常重要的环节,一种好的调制技术不仅可以节约频谱资源而且可以提供良好的通信性能。QPSK调制是一种具有较高频带利用率和良好的抗噪声性能的调制方式,在数字移动通信中已经得到了广泛的应用。本次设计在理解QPSK调制解调原理的基础上应用MATLAB语言来完成仿真,仿真出了QPSK的调制以及解调的仿真图,包括已调信号的波形,解调后的信号波形,眼图和误码率。在仿真的基础上分析比较了各种调制方法的性能,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。
关键字:QPSK ; 调制解调 ; MATLAB ; 分析与仿真
2
目录
前言………………………………………………………………. 1 摘要...................................................................................................2
1 绪论...........................................................................................................................4 2 .QPSK调制解调的基本原理设计 ..................................................................... 5
2.1 .2PSK数字调制原理 ........................................................................................... 5 2.2 4PSK的调制和解调 .................................................................................................... 5
3 原理框图介绍………………………………………….9 4 单元电路设计………………………………………9
4.1.载波发生器模块—555脉冲发生电路……………9
4.2 载波倒相器………………………………………13 4.3 信码反相器………………………………………13 4.4 模拟开关CD4066…………………………………….13
5、整体电路图设计………………………………………….14
5.1 整体电路图设计说明……………………………………….14 5.2 总电路图……………………………………………14
6 QPSK调制解调系统仿真(MATLAB)……………….15 6.1 2PSK以及4PSK的程序代码………………………..15 6.2 仿真结果(GUI用户界面)…………………………22 7 设计总结……………………………………………….24
8 参考文献……………………………………………….25
3
绪论
进入20世纪以来,随着晶体管、集成电路的出现与普及、无线通信迅速发展。特别是在20世纪后半叶,随着人造地球卫星的发射,大规模集成电路、电子计算机和光导纤维等现代技术成果的问世,通信技术在以下几个不同方向都取得了巨大的成功。
(1) 微波中继通信使长距离、大容量的通信成为了现实。
(2) 移动通信和卫星通信的出现,使人们随时随地可通信的愿望可以实现。 (3) 光导纤维的出现更是将通信容量提高到了以前无法想象的地步。 (4) 电子计算机的出现将通信技术推上了更高的层次,借助现代电信网和计
算机的融合,人们将世界变成了地球村。
(5) 微电子技术的发展,使通信终端的体积越来越小,成本越来越低,范围
越来越广。例如2003年我国的移动电话用户首次超过了固定电话用户。根据国家信息产业部的统计数据,到2005年底移动电话用户近4亿。 随着现代电子技术的发展,通信技术正向着数字化、网络化、智能化和宽带化的方向发展。随着科学技术的进步,人们对通信的要求越来越高,各种技术会不断地应用于通信领域,各种新的通信业务将不断地被开发出来。到那时人们的生活将越来越离不开通信。
本文中提到的调制方式大都是可以实用的,已经采用多年,并且至今仍然被采用着。但是,这些调制方法还不是很完善,有许多值得改进之处。因此,在这些基本的数字调制方法基础上,多年来不断研究出新的或改进的调制方法。实际上,在基本的和先进的调制方法之间并没有明确的界限。这些方法都是不间断地发展出来的,后来者自然比原有者更先进。
此外,随着技术的进步,特别是超大规模集成电路和数字信号处理技术的发展,使得复杂的电路设计得以用少量的几块即成电路模块实现,有些硬件电路的功能还可以用软件代替实现。因此使得一些较复杂的调制技术能够容易地实现并投入使用。这方面的条件使得新的更复杂的调制体制迅速地不断涌现。 目前,改进的数字调制方式主要有偏置正交相移键控, /4正交差分相移键控,最小频移键控,高斯最小频移键控,正交频分复用,网格编码调制等,这里对最小频移键控作一介绍。
4
2 QPSK调制解调的基本原理设计 2.1 2PSK数字调制原理
2PSK信号用载波相位的变化来表征被传输信息的状态,通常规定0相位载波和π相位载波分别表示传“1”和传“0”。
2PSK码元序列的波形与载频和码元持续时间之间的关系有关。当一个码元中包含有整数个载波周期时,在相邻码元的边界处波形是不连续的,或者说相位是不连续的。当一个码元中包含的载波周期数比整数个周期多半个周期时,则相位连续。当载波的初始相位差90度时,即余弦波改为正弦波时,结果类似。以上说明,相邻码元的相位是否连续与相邻码元的初始相位是否相同不可混为一谈。只有当一个码元中包含有整数个载波周期时,相邻码元边界处的相位跳变才是由调制引起的相位变化[16]。
2PSK信号的产生方法主要有两种。第一种叫相乘法,是用二进制基带不归零矩形脉冲信号与载波相乘,得到相位反相的两种码元。第二种方法叫选择法,是用此基带信号控制一个开关电路,以选择输入信号,开关电路的输入信号是相位相差的同频载波。这两种方法的复杂程度差不多,并且都可以用数字信号处理器实现。
S(t) 码变换 双极性 不归零 相 乘 eo(t) 载波 图1 2PSK及2DPSK的调制方框
2.2 4PSK的调制和解调
4PSK直接利用载波的四种不同相位来表示数字信息。如下
5
135o 01 10 90o 45o 11 00 0o 11 180o 参考相位 00 225o 01 270o
10 315o 参考相位 由于每一种相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。两个二进制码元中的前一比特用a来表示,后一比特用b表示,则双比特ab与载波相位的关系入下图:
a 0 1 1 0 双比特码元 b 0 0 1 1 载波相位(φn) A方式 B方式 0o 225o o 90315 o o 180o 45 270o 135 o
表1 双比特ab与载波相位的关系
四进制信号可等效为两个正交载波进行双边带调制所得信号之和。这样,就把数字调相和线性调制联系起来,为四相波形的产生提供依据。
4PSK信号调制和解调
(1)4PSK调制原理:
4PSK的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法等。这里我们采用正交调制方式。
4PSK的正交调制原理如图:
6
a 单/双极性载波震荡 输入 × cosωct 串/并变移相π/2 + + - sinωct 单/双极性b 图3 4PSK正交调制原理方4PSK输出 ×
它可以看成是由两个载波正交的2PSK调制器构成的。图中串/并变换器将输入的二进制序列分为速度减半的两个并行双极性序列a和b(a,b码元在事件上是对齐的),再分别进行极性变换,把极性码变为双极性码(0→-1,1→+1)然后分别调制到cosωct和sinωct两个载波上,两路相乘器输出的信号是相互正交的抑制载波的双边带调制(DSB)信号,其相位与各路码元的极性有关,分别由a和b码元决定。经相加电路后输出两路的合成波形,即是4PSK信号。图中两个乘法器,其中一个用于产生0o与180o两种相位状态,另一个用于产生90o与270o两种相位状态,相加后就可以得到45o,135o,225o,和315o四种相位
(2)4PSK解调原理
4PSK信号是两个载波正交的2PSK信号的合成。所以,可以仿照2PSK相干检测法,用两个正交的相干载波分别检测两个分量 a和b,然后还原成二进制双比特串行数字信号。此法称作极性比较法(相干解调加码反变换器方式或相干正交解调发)
7
yA(t) × 4PSK 输入 zA(t) 低通滤cosωct 正交载波源 sinωct × xA(t) 抽样判a 带通滤波yi(t) 位定并/串变器 b 低通滤zB(t) xB(t) 抽样判yB(t) 图4 4PSK信号解调器原理方图
在不考虑噪声及传输畸变时,接收机输入的4PSK信号码元可表示为
yi(t)=A cos(ωct+φn)
cosφn sinφn 输入相判决器输出 的极性 的极a b 位 性 φn 45o + + 1 1 o 135- + 0 1 o 225- - 0 0 315 o + - 1 0
表2 抽样判决器的判决准则
判决器是按极性来判决的。即正抽样值判为1,负抽样值判为0.两路抽样判决器输出a、b,经并/串变换器就可将并行数据恢复成串行数据。
8
三、原理框图介绍
在PSK调制时,载波的相位随调制信号状态不同而改变。如果一个波比另一个波相差半个周期,我们说两个波的相位差180度,也就是反相。当传输数字信号时,“1”码控制发180度相位,“0”码控制发0度相位。 PSK也可分为二进制PSK(2PSK或BIT/SK)和多进制PSK(MPSK)。在这种调制技术中,载波相位只有0和π两种取值,分别对应于调制信号的“0”和“1”。传“1“信号时,发起始相位为π的载波;当传“0”信号时,发起始相位为0的载波。2PSK的调制原理如下图所示:
四、单元电路设计
1.载波发生器模块—555脉冲发生电路
(1)555定时器的介绍
555定时器是一种模拟和数字功能相结合的中规模集成器件,它不仅用于信号的产生和变换,还常用于控制与检测电路中。555定时器的电源电压范围宽,可在4.5V~16V工作,输出驱动电流约为200mA。 555的内部电路框图和外引脚排列图。
9
图3 555电路的内部电路
(2)555电路的工作原理
它内部包括两个电压比较器,三个等值串联电阻,一个RS触发器,一个放电管T及功率输出级。它们分别使高电平比较器A1同相输入端和低电平比较器A2反相输入端的参考电压分别为VCC/3和2VCC/3,A1和A2的输出端控制RS触发器状态和放电开关状态。当输入信号输入并大于VCC/3时,触发器复位,555的输出3脚输出低电平,同时放电,开关管导通;当输入信号自2脚输入并低于2VCC/3时,触发器置位,555的3脚输出高电平,同时放电,开关管截止。RESET是复位端,当其为0时。 (3)方波发生器电路及仿真结果
10
图5 载波发生电路仿真图
11
(4)正弦波发生器电路及仿真结果
12
2.载波倒相器
图8反相器
模拟信号的倒相通常采用运放倒相器。如4.4.1所示,电路由U2,R8,R10,R11组成,来自内载波发生器产生的正弦波输入到反相器的输入端13脚,在输出端即可得到一个反象的载波信号,即π相载波信号。
3.信码反相器
由U4B:74LS04N组成
4.模拟开关CD4066
CD4066是四双向模拟开关,主要用作模拟或数字信号的多路传输,具有比较低的导通阻抗,导通阻抗在整个输入信号范围内基本不变。CD4066由四个相互独立的双向开关组成,每个开关有一个控制信号,开关中的p和n器件在控制信号作用下同时开关。这种结构消除了开关晶体管阈值电压随输入信号的变化,因此在整个工作信号范围内导通阻抗比较低。与单通道开关相比,具有输入信号峰值电压范围等于电源电压以及在输入信号范围内导通阻抗比较稳定等优点。
13
五、整体电路图设计 1.整体电路图设计说明
在本次设计实验中,由555振荡器及其它原件组成的单谐振荡器电路产生频率为100KHz的方波信号,经由三级滤波电路时滤除多次谐波,产生了频率为100KHz的正弦波信号。该正弦波信号一路由载波倒相器输入模拟开关CD4066的4号引脚,另外一路直接输入到模拟开关CD4066的1号引脚。脉冲信号通过模拟开关CD4066的5号引脚和13号引脚来控制开关的闭合状态(高电平时接通,低电平时断开):当为“1”码时,通过对5号引脚的控制将由4号引脚输入的π相正弦波信号从3号引脚输出;当为“0”码时,通过对13号引脚的控制将由1号引脚输入的0相正弦波信号从2号引脚输出。最终将2号引脚和3号引脚输出的信号相加即为调制后的2PSK信号。
2.总电路图
图10总电路图
14
6 QPSK调制解调系统仿真(MATLAB) 1 2PSK以及4PSK的程序代码
function varargout = mygui(varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
% Title: BPSK & QPSK % Author: Jinyang Zhou % Anhui Univ. of Arch. % Sch. of Elec. & Info. Eng. % Date: 29-June-2011 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% global hWaitbar %%waitbar
% ha=axes('units','normalized','position',[0 0 1 1]); % uistack(ha,'down')
% II=imread('background.jpg'); % image(II) % colormap gray
% set(ha,'handlevisibility','off','visible','off');
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @mygui_OpeningFcn, ... 'gui_OutputFcn', @mygui_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
15
gui_mainfcn(gui_State, varargin{:}); end
% End initialization code - DO NOT EDIT
% --- Executes just before mygui is made visible.
function mygui_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% --- Outputs from this function are returned to the command line. function varargout = mygui_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Executes on button press in BPSK.
function BPSK_Callback(hObject, eventdata, handles) [code_spread,plot_sig,Pe_simu,Pe_theo]=BPSK(2); %subplot(3,1,1); axes(handles.axes1)
plot(code_spread*2-1);axis([0,1000,-2,2]); title('{0,1}code'); %subplot(3,1,2); axes(handles.axes2)
plot(plot_sig);axis([0,1000,-2,2]); title('modulated signal');
%subplot(3,1,3); axes(handles.axes3) plot(code_spread*2-1); hold on
plot(plot_sig,'.'); axis([0,1000,-2,2]); title('comparison'); hold off
16
function BPSK_BER_Callback(hObject, eventdata, handles) N_loop=str2num(get(handles.loopN,'String'));
if isempty(N_loop)
msgbox('Please Typein the value','Error','error'); else
hWaitbar = waitbar(0, 'Please Waiting...' , 'Name','Please Wait...');
for i = 1 : 100
waitbar( i/100 , hWaitbar , ['Completed' num2str(i) '%']) pause(0.01); end
if ishandle(hWaitbar) delete(hWaitbar); clear hWaitbar; end end
[code_spread,plot_sig,Pe_simu,Pe_theo]=BPSK(N_loop(1)); x=0:10;
axes(handles.axes4) %subplot(1,1,1)
semilogy(x,Pe_simu(x+1),'bo'); hold on;
semilogy(x,Pe_theo(x+1)); legend('simulation','theory'); xlabel('SNR');ylabel('BER'); title('BER of BPSK in AWGN'); hold off
function QPSK_Callback(hObject, eventdata, handles)
[code_spread,code_phase_spread,plot_sig,Pe_simu,Pe_theo]=QPSK(2); %subplot(3,1,1); axes(handles.axes1)
plot(code_spread*2-1);axis([0,1000,-2,2]);
17
title('{0,1}code'); %subplot(3,1,2); axes(handles.axes2)
plot(code_phase_spread/pi);axis([0,1000,-0.5,2]); grid on
title('corresponding phase with unit of pi'); %subplot(3,1,3); axes(handles.axes3)
plot(plot_sig,'.');axis([0,1000,-2,2]); title('modulated signal');
function QPSK_BER_Callback(hObject, eventdata, handles)
N_loop=str2num(get(handles.loopN,'String'));
if isempty(N_loop)
msgbox('Please Typein the value','Error','error'); else
hWaitbar = waitbar(0, 'Please Waiting...' , 'Name','Please Wait...');
for i = 1 : 100
waitbar( i/100 , hWaitbar , ['Completed' num2str(i) '%']) pause(0.01); end
if ishandle(hWaitbar) delete(hWaitbar); clear hWaitbar; end end
[code_spread,code_phase_spread,plot_sig,Pe_simu,Pe_theo] = QPSK(N_loop(1)); %subplot(1,1,1) axes(handles.axes4) x=0:14;
18
semilogy(x,Pe_simu(x+1),'bo'); hold on;
semilogy(x,Pe_theo(x+1)); legend('simulation','theory'); xlabel('SNR');ylabel('BER'); title('BER of 4PSK in AWGN'); hold off
function FSK_Callback(hObject, eventdata, handles) % hWaitbar = waitbar(0,'waiting','Name','waitbar', 'CreateCancelBtn',...
% 'delete(hWaitbar) ; clear hWaitbar');
% btnCancel = findall(hWaitbar, 'style','pushbutton'); % set(btnCancel,'string','cancel','fontsize',10); % % try
% for i=1 : 100
% waitbar(1/100,hWaitbar,['completed' num2str(i) '%' ]); % pause(0.1); % end
% delete(hWaitbar); % clear hWaitbar; % end
hWaitbar = waitbar(0, 'Please Waiting...' , 'Name','Please Wait...'); for i = 1 : 100
waitbar( i/100 , hWaitbar , ['Completed' num2str(i) '%']) pause(0.01); end
if ishandle(hWaitbar) delete(hWaitbar); clear hWaitbar; end SNR=0:50;
EbNo=(10.^(SNR/10));
19
Pdfsk=erfc(sqrt(EbNo/2))/2; Pfsk_fadless=exp(-EbNo/2)/2;
Pfsk_fad=1./(2*ones(size(SNR))+EbNo); %subplot(1,1,1); axes(handles.axes4)
semilogy(SNR,Pdfsk,'b',SNR,Pfsk_fadless,'r-o',SNR,Pfsk_fad,'g-x'); axis([0,50,0.0000001,1]);
legend('Coherent FSK','FSK NOT Fading','FSK Fading'); title('FSK theory');
function loopN_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --------------------------------------------------------------------
function Untitled_1_Callback(hObject, eventdata, handles) h=dialog('Name','About', 'position',[500 400 250 150],'FileName','d.jpg');
uicontrol('Style','text','Units','pixels','Position',[0 0 250 100],... 'FontSize',10,'Parent',h,'String',{'BPSK & QPSK 1.0',' ','*****************','Copyright © 2011, Jinyang Chow'}); % hObject handle to Untitled_1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in clear.
function clear_Callback(hObject, eventdata, handles) cla(handles.axes1); cla(handles.axes2); cla(handles.axes3); cla(handles.axes4);
20
legend('off');
% hObject handle to clear (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in aboutme.
function aboutme_Callback(hObject, eventdata, handles) web('hi.baidu.com/aiaipanda1991','-browser') % hObject handle to aboutme (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
21
2 仿真结果(GUI用户界面)
BPSK仿真结果
4PSK仿真结果
22
FSK仿真结果
23
7 设计总结
在通信和信息传输系统、工业自动化或电子工程技术中,调制和解调应用最为广泛。本设计研究了2PSK和4PSK的调制和解调原理,以及利用MATLAB对其调制和解调进行了编程和编译仿真,得到的结论和理论上是一致的。简单而且快捷。同时利用MATLAB中的SIMYULINK对2PSK和4PSK的通信系统进行了仿真研究了其传输的特性,及传输中噪声对系统的影响。
而调制和解调的基本原理是利用信号与系统的频域分析和傅里叶变换的基本性质,将信号的频谱进行搬移,使之满足一定需要,从而完成信号的传输或处理。调制与解调又分模拟和数字两种,在现代通信中,调制器的载波信号几乎都是正弦信号,数字基带信号通过调制器改变正弦载波信号的幅度、频率或相位,产生幅度键控(ASK)、相位键控(PSK)、频率键控(FSK)信号,或同时改变正弦载波信号的几个参数,产生复合调制信号。本课程设计主要介绍基于Matlab对2PSK 和4PSK进制的调制仿真实现.
本研究具有可对比性,对比2PSK和4PSK的通信原理和星座图可发现其中的不同点,但是频谱图近似相同。通信中信道的信噪比设置越大信噪传输越理想,与理论上是相符合的。2PSK和4PSK的传输系统也具有对比性,本研究在文中列出了仿真过程中每个元件的仿真参数的设置。比较其中不同点我们发现其中参数基本相似。也说明了他们的传输原理基本相同,都利用了相位的不同表示了不同的码元传输。
24
8 参考文献
1、曹志刚 等,现代通信原理, 清华大学出版社。 2、潘松,EDA技术实用教程(第二版),科学出版社 3、谭浩强,C语言程序设计,高等教育出版社 4、郑阿奇,MATLAB实用教程,电子工业出版社 5、张伟,Protel99SE实用教程 ,人民邮电出版社 6、阳昌汉 ,高频电子线路,高等教育出版社
25
因篇幅问题不能全部显示,请点此查看更多更全内容