根据FPGA的MPSK调制解调器设计.docx
- 文档编号:29734417
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:23
- 大小:2.98MB
根据FPGA的MPSK调制解调器设计.docx
《根据FPGA的MPSK调制解调器设计.docx》由会员分享,可在线阅读,更多相关《根据FPGA的MPSK调制解调器设计.docx(23页珍藏版)》请在冰豆网上搜索。
根据FPGA的MPSK调制解调器设计
硬件描述语言及EDA设计
项目名称:
基于FPGA的调制器的设计
专业:
电子与通信工程
设计人:
田文正
学号:
2013704045
指导教师:
全海燕
得分:
基于FPGA的调制器的设计
1.绪论
作为数字通信技术中重要组成部分的调制解调技术一直是通信领域的热点课题。
随着当代通信的飞速发展,通信体制的变化也日新月异,新的数字调制方式不断涌现并且得到实际应用。
目前的模拟调制方式有很多种,主要有AM、FM、SSB、DSB、CW等,而数字调制方式的种类更加繁多,如ASK、FSK、MSK、GMSK、PSK、DPSK、QPSK、QAM等。
在众多调制方式中,MPSK信号由于抗干扰能力强而得到了广泛的应用,具有较高的频谱利用率和较好的误码性能,并且实现复杂度小,解调理论成熟,广泛应用于数字微波、卫星数字通信系统、有线电视的上行传输、宽带接入与移动通信等领域中,并已成为新一代无线接入网物理层和B3G通信中使用的基本调制方式。
现场可编程门阵列(FieldProgrammableGateArray,FPGA)是20世纪90年代发展起来的大规模可编程逻辑器件,随着电子设计自动化(ElectronDesignAutomationEDA)技术和微电子技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工作方式,在超高速、实时测控方面都有着非常广阔的应用前景。
FPGA具有高集成度、高可靠性等特点,在电子产品设计中也将得到广泛的应用。
FPGA器件的另一特点是可用硬件描述语言VHDL对其进行灵活编程,可利用FPGA厂商提供的软件仿真硬件的功能,使硬件设计如同软件设计一样灵活方便,缩短了系统研发周期。
基于上述优点,用FPGA实现调制解调电路,不仅降低了产品成本,减小了设备体积,满足了系统的需要,而且比专用芯片具有更大的灵活性和可控性。
在资源允许下,还可以实现多路调制。
MPSK是目前应用非常广泛的调制解调技术,目前MPSK调制的实现主要是利用数字电路和专用芯片来完成,通常利用可编程数字电路对基带信号进行码元变换,成形滤波等处理后得到同相分量和正交分量,然后将两路信号分量经过数模转换获得模拟信号送入一个正交相乘器与中频载波调制得到中频MPSK调制信号。
该方法适合高码率数字信号的传输,但系统的开放性和灵活性较差。
2.MPSK的调制原理
2.1二进制相移键控(BPSK)
对于二进制相移键控BPSK(BinaryPhaseShiftKeying)来说,就是二进制的数字信号0和1分别用载波的0和π来表示。
其表达式由公式(2.1)给出:
(2.1)
式中,An为二进制数字,
(2.2)
数字调相波可以用矢量图表示其相位变化的规则,根据CCITT规定,存在A、B两种表示相位变化的矢量图,如下图2.5所示。
图2.1矢量图
2.2QPSK调制原理
QPSK信号可以表示为
(2.5)
式中,
是载波的角频率,
是第k个码元的载波相位取值,Ts是一个发送码元的持续时间,它将取可能的四种相位之一,g(t)是发送码元的波形函数。
是可以取区间(0,2π)任何离散值的随机变量,可取的个数由调制方式的进制来决定。
在QPSK调制系统中,发送端可取的相位值为四个。
将上式展开,得到:
(2.6)
令
,
,则两者的取值为随机的离散值,和选定的相位有关,在星座图的映射中对应同相和正交分量,反映其在映射图中的矢量位置。
对于四种相位的选择,存在π/2体系和π/4体系。
π/2体系对应n=0,π/2,π,3π/2四个离散值。
π/4体系对应n=π/4,3π/4,5π/4,7π/4四个离散值。
从式(2.6)可以看出,四相调制的波形,可以看成是对两个正交载波进行二进制幅度调制的信号之和。
从Xn和Yn的取值,容易发现两者具有一定的矢量约束关系,保证两者合成的矢量点在落在同一圆周上。
这个关系意味着,系统的非线形失真对QPSK系统的可靠性影响很小。
由于四相绝对移相调制可以看作两个正交的二相绝对移相调制的合成,QPSK调制器可以看成由两个BPSK调制器构成。
输入的串行二进制序列经过串并转换后,分成两路速率减半的序列,然后经过极性转换后变成两路双极性二电平信号I(t)和Q(t),然后跟cos2πft和sin2πft相乘进行调制,正交调制方式体现在I通道使用同相载波进行2PSK调制,Q通道使用正交载波进行2PSK调制。
相加后即得到QPSK信号。
如图2.9所示:
图2.2QPSK调制系统
QPSK信号的产生方法采用相位选择法(I通道与Q通道相位正交),如图2.10所示。
由于I通道与Q通道为正交调制方式,故其选择载波方式不同。
由图2.10可知,二相载波发生器分别送出调相所需的两种不同相位的载波,即数字载波信号。
图2.3相位选择法原理
根据QPSK调制原理,设计模型如图3.11所示。
电路主要由分频器和二选-开关等组成,分频器对外部时钟信号进行分频和计数,并输出2路频率相同而相位不同的相干数字载波信号;2选一开关是在基带信号的控制下,对2路载波信号进行选通,输出数字QPSK信号。
(以I路调制为例)
图2.4I路调制
3.MPSK设计
3.1总体设计方案
硬件方框图如下图所示:
图3.1总体设计方框图
由上图可以看出,基带信号(为12路并行信号)通过并/串转换器得到串行信号,利用使能开关控制选择进行QPSK或是BPSK。
经过调制解调后,通过示波器显示。
当进行QPSK调制解调时,将串行码字变为两路并行信号,分别进入I通道和Q通道,I通道使用同相载波进行BPSK调制,Q通道使用正交载波进行BPSK调制。
分别解调后,再经并/串转换恢复原码。
当进行BPSK调制解调时,将串行码(绝对码)变为相对码后在进行PSK调制解调,最后经相对码转换成绝对码(基带信号)。
3.2调制硬件设计
图3.2BPSK、QPSK的I路调制方框图
BPSK调制方框图如图3.2所示。
BPSK调制器模型主要由分频器、计数器和二选一开关等组成。
由于系统时钟为50MHz,输出波形很难在模拟示波器上显示,故采用分频的方式经系统时钟的频率降低。
基带信号首先由绝对码经过异或门与寄存器完成绝对码向相对码转换(图中未画出)。
计数器对时钟信号计数,并输出两路相位相反的数字载波信号;二选一开关的功能是:
在基带信号的控制下,对两路载波信号进行选通,输出的信号即为数字调制信号。
QPSK的I通道调制方框图如图3.2所示,为了形成正交调制方式,Q路调制的二选一开关对两路载波信号的选通与上图相反,从而达到正交的目的。
3.3输入输出设备
本方案采用FPGA中的18个开关作为输入设备,其中SW0~SW3作为使能开关,SW17~SW6作为12路并行码的输入设备。
利用DE2开发板提供的2个40针的扩展头作为输出,并以模拟示波器进行观察调制信号。
如下图3.4所示:
图3.3DE2开发板及输入输出设备
4.系统设计
4.1MPSK系统模块设计
MPSK系统的模块主要包括5000分频模块、并行码转换为串行码模块、串行码转换为并行码模块、绝对码转换为相对码模块、BPSK调制模块、I路调制模块、Q路调制模块等。
整体设计模块图如图4.1所示:
图4.1MPSK系统的模块设计
4.2并/串转换
系统的并串转换设计为12路并行信号转换成一路串行信号,并通过DE2开发板的扩展头输出并在模拟示波器上显示。
Clk为时钟周期,当start0未高电平时进行并串转换。
其仿真图以及显示在示波器上的串行码如下图4.2(a)以及4.2(b)所示:
图4.2(a)并行码转换成串行码仿真图
图4.2(b)并行码转换成串行码在示波器上的显示
4.3绝对码/相对码转换
绝对码转换成相对码的仿真图以及在示波器上的显示如下图4.3(a)以及4.3(b)所示,当start1为高电平时进行BPSK调制解调,此时进行绝对码向相对码的转换。
输出信号是输入信号x与中间寄存器xx的异或,同时输出信号滞后于输入信号一个周期。
图4.3(a)绝对码转换成相对码
图4.3(b)绝对码转换成相对码在示波器上的显示
4.4BPSK调制
BPSK调制仿真图与在示波器上的显示如图4.3(a)与4.3(b)所示,当start1为高电平时开始BPSK调制解调。
基带信号经过调制模块中的载波调制成为调制信号。
图4.3(a)BPSK调制仿真图
图4.3(b)BPSK调制在示波器上的显示图
4.5I路与Q路
当start2为高电平时进行QPSK调制解调。
根据QPSK调制解调原理,将QPSK分为I路与Q路进行正交调制,本设计利用一个两位寄存器将调制信号分为两路并行信号。
如图4.6(a)与4.6(b)所示:
图4.5(a)I通道码元与Q通道码元
图4.5(b)I通道码元与Q通道码元在示波器上的显示
4.6Q路调制
由于Q路调制与I路调制正交,所以其选择载波方式与I路相反,并利用星座图验证期正确性。
仿真图与在示波器上的显示图如下图所示;
图4.6.1Q路调制仿真信号
图4.6.2Q路调制在示波器上的显示图
图4.7.3QPSK星座图
参考资料
[1]TheodoreS.Rappaport.WirelessCommunicationsPrinciplesandPractice.PublishingHouseofElectronicsIndustry.1999.
[2]潘莉,郭东辉,纪安妮等.数字调制解调技术及其应用的研究进展.电讯技术,2001,(5):
26~30.
[3]D.Divsalar,M.K.Simon.Multiple-SymbolDifferentialDetectionofMPSK.IEEETransactionsonCommunications.1990,38(3):
300~308.
[4]D.Makrakis,K.Feher.OptimalNoncoherentDetectionofPSKSignals.Elect.Lett..1990,26(6):
146~155.
[5]赖昭胜,管立新,曾祥华.QPSK高性能数字调制器的FPGA实现.PLDCPLDFPGA应用.2006,22(12):
139~148.
[6]姚培,杨晓峰,项海涛.用FPGA实现QPSK可变速率调制解调器.中国新通信.2006,(10):
33~36.
[7]候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学出版社,1999:
2~12.
[8]甘秉承.BPSK/QPSK信号全数字化解调的研究与设计:
[硕士学位论文].成都:
电子科技大学,2004.
[9]樊昌信,曹丽娜.通信原理(第6版).国防工业出版社,2008.03:
238-241.
[10]郑大春,项海格.一种全数字QAM接收机符号定时和载波相位恢复方案.通信学报,1998(7).Vol.19,NO.7.
[11]曾志民.现代调制解调器原理及其应用.人民邮电出版社,1995.
[12]费义伟.基于FPGA的QPSK调制解调器的设计[工学硕士学位论文].哈尔滨工业大学.2007.
[13]段吉海,胡媛媛.基于VHDL的MSK调制解调器的建模与设计[J]微计算机信息,2006,7—2:
205—207
[14]辛洁,赵建东,孙运强.基于FPGA的四相移键控调制解调器的建模与设计[A].国外电子测量技术.太原.中北大学信息与通信工程学院.2009.
附录1电路图
MPSK总体设计电路图:
附录2源代码
5000分频模块:
libraryIEEE;
useIEEE.std_logic_1164.all;
useIEEE.std_logic_unsigned.all;
entityf5000is
port(x:
inSTD_LOGIC;
--D:
std_logic_vector(13downto0);
fout:
outstd_logic);
ENDf5000;
architectureoneoff5000is
signalfull:
std_logic;
begin
p_reg:
process(x)
variableCNT8:
std_logic_vector(13downto0);
begin
ifx'eventandx='1'then
ifCNT8="01001110001000"then
CNT8:
="00000000000000";
full<='1';
elseCNT8:
=CNT8+1;
full<='0';
endif;
endif;
endprocessp_reg;
p_div:
process(full)
variablecnt2:
std_logic;
begin
if(full'eventandfull='1')then
cnt2:
=notcnt2;
ifcnt2='1'thenfout<='1';
elsefout<='0';
endif;
endif;
endprocessp_div;
end;
12路并串转换:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitychuanxingis
port(clk:
instd_logic;--系统时钟
start0:
instd_logic;--开始调制信号
x:
instd_logic_vector(11downto0);--基带信号
y:
outstd_logic);--调制信号
endchuanxing;
architecturebehavofchuanxingis
signalq:
integerrange0to11;--计数器
signalxx:
std_logic_vector(1downto0);--中间寄存器
signalyy:
std_logic_vector(1downto0);--2位并行码寄存器
signalzz:
std_logic_vector(1downto0);--2位并行码寄存?
signalf:
std_logic_vector(3downto0);--载波f
begin
process(clk)--通过对clk分频,得到4种相位;并完成基带信号串并转换
begin
ifclk'eventandclk='1'then
ifstart0='0'thenq<=0;
elsifq=0thenq<=1;xx(0)<=x(0);zz<="01";
elsifq=1thenq<=2;xx
(1)<=x
(1);zz<="11";
elsifq=2thenq<=3;xx(0)<=x
(2);zz<="01";
elsifq=3thenq<=4;xx
(1)<=x(3);zz<="11";
elsifq=4thenq<=5;xx(0)<=x(4);zz<="01";
elsifq=5thenq<=6;xx
(1)<=x(5);zz<="11";
elsifq=6thenq<=7;xx(0)<=x(6);zz<="01";
elsifq=7thenq<=8;xx
(1)<=x(7);zz<="11";
elsifq=8thenq<=9;xx(0)<=x(8);zz<="01";
elsifq=9thenq<=10;xx
(1)<=x(9);zz<="11";
elsifq=10thenq<=11;xx(0)<=x(10);zz<="01";
elsifq=11thenq<=0;xx
(1)<=x(11);zz<="11";
endif;
endif;
endprocess;
y<=xx(0)whenzz="01"else
xx
(1)whenzz="11";--根据yy寄存器数据,输出对应的载波
endbehav;
绝对码转换为相对码:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityAR_DPSKis
port(clk:
instd_logic;--系统时钟
start:
instd_logic;--开始转换信号
x:
instd_logic;--绝对码输入信号
y:
outstd_logic);--相对码输出信号
endAR_DPSK;
architecturebehavofAR_DPSKis
signalq:
integerrange0to3;--分频器
signalxx:
std_logic;--中间寄存器
begin
process(clk,x)--此进程完成绝对码到相对码
begin
ifclk'eventandclk='1'then
ifstart='0'thenq<=0;xx<='0';
elsifq=0thenq<=1;xx<=xxxorx;y<=xxxorx;--输入信号与前一个信号输出信号进行异或
elsifq=1thenq<=2;xx<=xxxorx;y<=xxxorx;
elsifq=2thenq<=3;xx<=xxxorx;y<=xxxorx;
elsifq=3thenq<=0;xx<=xxxorx;y<=xxxorx;
elseq<=q+1;
endif;
endif;
endprocess;
endbehav;
BPSK调制:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityPLCPSKis
port(clk:
instd_logic;--系统时钟
start:
instd_logic;--开始调制信号
x:
instd_logic;--基带信号
y:
outstd_logic);--已调制输出信号
endPLCPSK;
architecturebehavofPLCPSKis
signalq:
std_logic_vector(1downto0);--2位计数器
signalf1,f2:
std_logic;--载波信号
begin
process(clk)--此进程主要产生两重载波信号f1,f2
begin
if(clk'eventandclk='1')then
ifstart='0'thenq<="00";
elsifq<="00"thenf1<='1';f2<='0';q<=q+1;
elsifq<="01"thenf1<='1';f2<='0';q<=q+1;
elsifq<="10"thenf1<='0';f2<='1';q<=q+1;
elsifq<="11"thenf1<='0';f2<='1';q<="00";
endif;
endif;
endprocess;
process(clk,x)--此进程完成对基带信号x的调制
begin
ifclk'eventandclk='1'then
ifq="00"then
ifx='1'theny<=f1;--基带信号x为‘1’时,输出信号y为f1
elsey<=f2;--基带信号x为‘0’时,输出信号y为f2
endif;
elsifq="01"then
ifx='1'theny<=f1;
elsey<=f2;
endif;
elsifq="10"then
ifx='1'theny<=f2;
elsey<=f1;
endif;
elsifq="11"then
ifx='1'theny<=f2;
elsey<=f1;
endif;
endif;
endif;
endprocess;
endbehav;
基带信号分为I路与Q路信号:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.all;
USEieee.numeric_std.ALL;
entitymodulationis
port(clk:
instd_logic;--系统时钟
start:
instd_logic;--开始调制信号
x:
instd_logic;--基带信号
yi:
outstd_logic;
liong:
outstd_logic);
endmodulation;
architecturebehavofmodulationis
signalq:
integerrange0to7;--计数器
signalxx:
std_logic_vector(1downto0);--中间寄存器
signalyy:
std_logic_vector(1downto0);--2位并行码寄存器
signalf1,f2:
std_logic;
begin
process(clk)--通过对clk分频,得到4种相位;并完成基带信号的串并转换
begin
ifclk'eventandclk='1'then
ifstart='0'thenq<=0;
elsifq=0thenq<=1;f1<='1';f2<='0';xx(0)<=x;yi<=xx(0);
elsifq=2thenq<=3;f1<='1';f2<='0';xx(0)<=x;yi<=xx(0);
elsifq=4thenq<=5;f1<='0';f2<='1';xx(0)<=x;yi<=xx(0);
elsifq=6thenq<=7;f1<='0';f2<='1';xx(0)<=x;yi<=xx(0);
elsifq=7thenq<=0;xx
(1)<=x;yy<=xx;liong<=xx
(1);
elseq<=q+1;xx
(1)<=x;yy<=xx;liong<=xx
(1);
endif;
endif;
endprocess;
endbehav;
Q路调制:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
us
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 根据 FPGA MPSK 调制解调器 设计