多进制数字相位调制MPSK系统.docx
- 文档编号:2612050
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:23
- 大小:301.46KB
多进制数字相位调制MPSK系统.docx
《多进制数字相位调制MPSK系统.docx》由会员分享,可在线阅读,更多相关《多进制数字相位调制MPSK系统.docx(23页珍藏版)》请在冰点文库上搜索。
多进制数字相位调制MPSK系统
多进制数字相位调制(MPSK)系统
Abstract
MultiplePhaseShiftKeying(MPSK-multiplephaseshiftkeying)isalsocalledmulti-phasesystem,whichisthepromotionofthetwo-phasesystem.Itisthemodulationtocharacterizedigitalinformationusingthedifferentcarrier’sphasestate.SimilarwiththeBinaryDigitalPhaseModulation,ithastheabsolutephasemodulation(MPSK)andphasemodulation(MDPSK)asthetwokindsofmodulationmethods.
ThisarticleismainlyabouttheMultiplePhaseShiftKeyingsystem(MPSK)basedonXilinxISEsimulationsoftwaredesign,setting4PSKasanexample.Themodulationmethodisthesimplephase-selectionmethod.Itonlyconcentratesonthedesignofdigitalsystem,neglectingtheanalogcircuitsystem.
Keywords:
MultiplePhaseShiftKeyingMPSKXilinxISEphase-selectionmethod
摘要
多进制数字相位调制(MPSK-multiplephaseshiftkeying)又称多相制,是二相制的推广。
它是利用载波的多种不同相位状态来表征数字信息的调制方式。
与二进制数字相位调制相同,多进制数字相位调制也有绝对相位调制(MPSK)和相对相位调制(MDPSK)两种。
本文主要研究基于XilinxISE仿真软件设计的多进制数字相位调制(MPSK)系统,以4PSK系统为例。
调制方法采用简便的相位选择法,且略去模拟电路系统部分,仅对数字系统进行设计。
关键字:
多进制数字相位调制MPSKXilinxISE相位选择法
多进制数字相位调制(MPSK)系统
1多进制数字相位调制
1.1MPSK概念
多进制数字相位调制也称多元调相或多相制。
它利用具有多个相位状态的正弦波来代表多组二进制信息码元,即用载波的一个相位对应于一组二进制信息码元。
如果载波有2k个相位,它可以代表k位二进制码元的不同码组。
多进制相移键控也分为多进制绝对相移键控和多进制相对(差分)相移键控。
M进制数字相位调制中,四进制绝对移相键控(4PSK,又称QPSK)和四进制差分相位键控(4DPSK,又称QDPSK)用的最为广泛。
1.2MPSK原理
在MPSK信号中,载波相位可取M个可能值:
因此,MPSK信号可表示为:
假定载波频率是基带数字信号速率的整数倍,则上式可改写为:
上式表明,MPSK信号可等效为两个正交载波进行多电平双边带调幅所得已调波之和。
因此其带宽与MASK信号带宽相同,带宽的产生也可按类似于产生双边带正交调制信号的方式实现。
多相制信号常用的产生方法有:
直接调相法及相位选择法。
2四相相位调制(4PSK)
四相调相信号是一种四状态符号,即符号有00、01、10、11四种状态。
所以,对于输入的二进制序列,首先必须分组,每两位码元一组。
然后根据组合情况,用载波的四种相位表征它们。
这种由两个码元构成一种状态的符号码元称为双比特码元。
同理,k位二进制码构成一种状态符号的码元则称为k比特码元。
2.14PSK调制
2.1.1相位选择法
在一个码元持续时间内,MPSK信号为载波四个相位中的某一个。
因此,可以用相位选择法产生4PSK信号,其原理如下图所示。
图中,四相载波发生器产生4PSK信号所需的四种不同相位的载波。
输入的二进制数码经串/并变换器输出双比特码元。
按照输入的双比特码元的不同,逻辑选相电路输出相应相位的载波。
例如,B方式情况下,双比特码元ab为11时,输出相位为45的载波;双比特码元ab为01时,输出相位为135的载波等。
图2-1相位选择法产生4PSK信号(B方式)方框图
图2-1产生的是B方式的4PSK信号。
要想形成A方式的4PSK信号,只需调整四相载波发生器输出的载波相位即可。
2.1.2直接调相法
4PSK信号也可以采用正交调制的方式产生。
四相PSK(4PSK)信号实际是两路正交双边带信号。
串行输入的二进制码,两位分成一组。
若前一位用A表示,后一位用B表示,经串/并变换后变成宽度加倍的并行码(A、B码元在时间上是对齐的)。
再分别进行极性变换,把单极性码变成双极性码,然后与载波相乘,形成正交的双边带信号,加法器输出形成4PSK信号。
显然,此系统产生的是π/4系统PSK信号。
如果产生π/2系统的PSK信号,只需把载波移相π/4后再加到乘法器上即可。
图2-2π/4系统信号产生的原理框图
π/4系统信号产生的原理框图如图2-2。
若要产生4PSK的A方式波形,只需适当改变振荡载波相位就可实现。
2.24PSK解调
因为4PSK信号是两个正交的2PSK信号的合成,所以可仿照2PSK信号的相平解调方法,用两个正交的相干载波分别检测A和B两个分量,然后还原成串行二进制数字信号,即可完成4PSK信号的解调。
此法是一种正交相平解调法,又称极性比较法,原理图如图2-3。
图2-3π/4系统PSK信号解调原理框图
为了分析方便,可不考虑噪声的影响。
这样,加到接收机上的信号在符号持续时间内可表示为:
假定讨论的π/4相移系统,那么相位只能取π/4,3π/4,5π/4,7π/4。
两路乘法器的输出分别为:
LPF输出分别是:
根据π/4移相系统PSK信号的相位配置规定,抽样判决器的判决准则表如表2-1。
当判决器按极性判决时,若正抽样值判为1,负抽样值判为0,则可将调相信号解调为相应的数字信号。
解调出的A和B再经并/串变换,就可还原出原调制信号。
若解调π/2移相系统的PSK信号,需改变移相网络判决准则。
若解调4PSK信号(A方式),只需适当改变相移网络。
表2-1nπ/4判决器的判决准则表
2.34PSK调制与解调系统设计
MPSK调制电路系统框图如图2-4,电路符号图中没有包含模拟电路部分,输出信号为数字信号。
基带信号通过串/并转换器xx得到2位并行信号yy;四选一开关根据yy的数据,选择载波对应的相位进行输出,即得调制信号y。
图2-4MPSK调制电路系统框图
MPSK调制电路符号如图2-5。
图2-5MPSK调制电路符号
图2-6是MPSK解调方框图,图中没有包含模拟电路部分,调制信号为数字信号形式。
当调制为低电平时,译码器1根据q值,送入加法器xx相应的数据。
图2-6MPSK解调方框图
加法器把运算结果送到寄存器yy,译码2根据yy数据通过译码,输出2位并行信号yyy,yyy再通过并/串转换,就可得到解调后的基带信号y。
3ISE设计与仿真
Altera和Xilinx是全球知名的FPGA生产厂商,二者的开发产品Quartus和ISE均可作为本设计使用的软件,选择哪个在产品设计中视使用的芯片类型而定。
本设计仅进行软件仿真,从学习的方面考虑,使用Xilinx公司的ISE配合ModelSim进行设计仿真,设计语言为VHDL语言。
VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。
Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
3.1ISE操作环境
ISE的全称为IntegratedSoftwareEnvironment,即“集成软件环境”,是Xilinx公司的硬件设计工具。
作为相对容易使用的、首屈一指的PLD设计环境,SE将先进的技术与灵活性、易使用性的图形界面结合在一起,能使设计者在最短的时间,以最少的努力,达到最佳的硬件设计。
利用Xilinx公司的ISE开发设计软件的工程设计流程,具体分为五个步骤:
即输入(DesignEntry)、综合(Synthesis)、实现(Implementation)、验证(Verification)、下载(Download)。
3.1.1输入(DesignEntry)
为了克服原理图输入方法的缺点,目前在大型工程设计中,在ISE软件中常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和VerilogHDL。
它们的共同优点是利于由顶向下设计,利于模块的划分与复用,可移植性好,通用性强,设计不因芯片的工艺和结构的变化而变化,更利于向ASIC的移植,故在ISE软件中推荐使用HDL设计输入法。
3.1.2综合(Synthesis)
综合是将行为和功能层次表达的电子系统转化为低层次模块的组合。
一般来说,综合是针对VHDL来说的,即将VHDL描述的模型、算法、行为和功能描述转换为FPGA/CPLD基本结构相对应的网表文件,即构成对应的映射关系。
3.1.3实现(Implementation)
实现是根据所选的芯片的型号将综合输出的逻辑网表适配到具体器件上。
XilinxISE的实现过程分为:
翻译(Translate)、映射(Map)、布局布线(Place&Route)等3个步骤。
ISE集成的实现工具主要有约束编辑器ConstraintsEditor)、引脚与区域约束编辑器(PACE)、时序分析器(TimingAnalyzer)、FPGA底层编辑器(FGPAEditor)、芯片观察窗(ChipViewer)和布局规划器(Floorplanner)等。
3.1.4验证(Verification)
验证(Verification)包含综合后仿真和功能仿真(Simulation)等。
功能仿真就是对设计电路的逻辑功能进行模拟测试,看其是否满足设计要求,通常是通过波形图直观地显示输入信号与输出信号之间的关系。
综合后仿真在针对目标器件进行适配之后进行,综合后仿真接近真实器件的特性进行,能精确给出输入与输出之间的信号延时数据。
3.1.5下载(Download)
下载(Download)即编程(Program)设计开发的最后步骤就是将已经仿真实现的程序下载到开发板上,进行在线调试或者说将生成的配置文件写入芯片中进行测试。
在ISE中对应的工具是iMPACT。
3.2ISE程序设计
本设计程序采用VHDL程序设计。
分别创建工程文件MPSK和MPSK2作为调制系统和解调系统设计文件。
因为所有的输入波形和载波均只有四种,且数字系统较难使用直接调相法和相干解调法,调制采用相位选择法,解调部分则枚举各个载波情况分别译码。
ISE提供了非常方便的VHDL编写环境,可详细的把各种类型文件分类,可根据设计者的端口要求自动创建module,帮助设计者填写一些普遍的架构,设计者只需填入中心内容即可。
与Quartus不同的是,ISE的时钟和激励输入需要写在一个与相关文件关联的用VHDL语言编写的testbench文件里,低级的版本可以创建testbenchwaveform文件进行波形图形输入,高版本已完全取消图形输入。
对于波形输入较多且较复杂的工程,testbench文件相当地省时和有效。
并且确认了关联文件后,ISE会自动进行空实体声明,信号赋初值,结构体建立,元件配置和例化,生成进程框架等程序的书写,余下的工作十分简单
3.2.1调制系统程序设计
调制系统程序见附录1。
调制信号说明见表3-1。
表3-1调制信号说明
其中实体的四个端口中clk、start、x为输入类型,分别作为系统时钟、开始调制信号、基带信号。
只有一个输出类型y,作为调制信号的输出端。
唯一的进程通过对clk分频,得到4种相位;并完成基带信号的串并转换。
端口y根据yy寄存器数据,输出对应的载波。
yy寄存器则在时钟课计数器的控制下定时读取中间寄存器xx的值作为载波输出的依据。
Testbench程序中,按照原程序的设计,设置每个码元长度为时钟长度的四倍。
时钟和激励分别在两个进程中。
用waitfor语句保证编码从时钟上升沿开始使波形整齐便于观察。
同时为了观察所有类型的基带信号输入设置x为00011011的循环。
3.2.2解调系统程序设计
解调程序MPSK2和对应的testbench程序见附录2。
解调信号说明如表3-2所示。
将一个信号周期分成4份,高电平权值分别为0、0、0、0,低电平权值分别为1、1、2、3。
表3-2解调信号说明
解调程序的端口数量和名称和调制程序完全相同,不同的是输入x为调制信号,输出y为基带信号。
中间变量较前者多了一个加法器xx,每个周期的加法结果有四种刚好对应四种中间信号yyy,也即将要输出的基带信号。
程序中的个进程以寄存xx周期末数据的yy为敏感列表完成表3-2的转换。
yy的信号来源在一个进程中由clk触发。
控制输出的不再是时钟信号,因时钟信号上升沿到来时输出的是上升沿之前yyy的值,把本周期和上一周期混在一起输出得到的结果毫无意义,clk之外的信号的跳变单独作用的结果也同样,因此必须有yyy自己参与控制。
因yyy一个载波周期仅跳变一次,故需要和计数器q共同作为敏感信号控制输出。
调试中发现的另一个问题是毛刺问题,因在q=1时yyy可能处在跳变过程,该跳变也会被输出,解决方法是延迟1ns再输出。
程序中的另一个进程以寄存xx周期末数据的yy为敏感列表完成表3-2的转换。
Testbench程序编写也与MPSK相似,同样控制波形的整齐度,实现载波信号的全部循环出现。
3.3仿真结果
分别运行两个testbench程序,启动ModelSim进行仿真,添加所有变量到波形,得到调制系统和解调系统的仿真图形分别如图3-1和图3-2。
清晰波形图见附录3。
仿真结果显示,系统程序设计成功。
图3-1调制系统仿真波形
图3-2解调系统仿真波形
4总结
本文以多进制数字相位调制与解调系统的ISE和ModelSim为研究对象,进行了VHDL程序和ISE+Model仿真的学习和实践设计。
通过理论学习及软件仿真我不仅更加深刻的理解了FPGA的相关概念,掌握了VHDL语言的灵活运用,同时学习了ISE和ModelSim的使用,锻炼了编程能力和逻辑分析能力,感受到了学习理论知识并将其用于实践的快乐,达到了课程设计的预期目的。
通过本次设计,让我学到了一些在课堂学不到的知识和能力,如查找资料、筛选信息并将有用信息运用到实际中,很好的锻炼了理论联系实际,与具体项目、课题相结合开发的能力。
同时也让我们学会了怎样更好的发现问题,解决问题,积累了一些解决问题的经验。
既让我们懂得了怎样把理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决。
VHDL程序的编写,对于不经常使用的初学者我来说,就已经是一种极大的考验。
为了课设目标的完成,我用了最快的时间最高的效率,综合书籍网络资料各种资料,终于达到了可以自己编写的程度。
另外ISE的搜索安装也是一个漫长和曲折的过程,因为电脑系统问题用不了ISE的自带仿真器,不得不安装了ModelSim,却使我以为发现了一个非常强大的仿真软件,ISE的便利和智能很让我欣喜。
Testbench文件的发现和学习也花费了我很长的时间和精力,学会后又觉得它真的十分有用。
从一个什么都不懂的小白成为一个略知一二的入门者,是艰辛而又开心的体验。
感谢老师的教育和督促,感谢同学们的帮助,这次课设我真的感悟良多,受益匪浅,我对科学技术的渴求和探索仍将继续,永不停止。
5参考文献
1《FPGA应用技术基础教程》.电子工业出版社.2004
2《VHDL语言程序设计及应用》.北京邮电大学出版社.2004
3《VHDL与FPGA设计》.中国铁道出版社.2003
4《FPGA/CPLD设计工具XilinxISE使用详解》.人民邮电出版社.2005.01
5《ModelSim电子系统分析及仿真》.电子工业出版社,2011.12
6《怎样用VHDL写TESTBENCH》.XX文库文档学习资料
6附录
附录1调制系统源程序
MPSK文件:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityMPSKis
Port(clk:
inSTD_LOGIC;
start:
inSTD_LOGIC;
x:
inSTD_LOGIC;
y:
outSTD_LOGIC);
endMPSK;
architectureBehavioralofMPSKis
signalq:
integerrange0to7;--计数器
signalxx:
std_logic_vector(1downto0);--中间寄存器
signalyy:
std_logic_vector(1downto0);--2位并行码寄存器
signalf:
std_logic_vector(3downto0);--载波f
begin
process(clk)
--通过对clk分频,得到4种相位;并完成基带信号的串并转换
begin
ifclk'eventandclk='1'then
ifstart='0'thenq<=0;
elsifq=0thenq<=1;f(3)<='1';f
(1)<='0';xx
(1)<=x;yy<=xx;
elsifq=2thenq<=3;f
(2)<='0';f(0)<='1';
elsifq=4thenq<=5;f(3)<='0';f
(1)<='1';xx(0)<=x;
elsifq=6thenq<=7;f
(2)<='1';f(0)<='0';
elseq<=(q+1)rem8;
endif;
endif;
endprocess;
y<=f(0)whenyy="11"else
f
(1)whenyy="10"else
f
(2)whenyy="01"else
f(3);--根据yy寄存器数据,输出对应的载波
endBehavioral;
MPSK_TEST文件:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.all;
USEieee.numeric_std.ALL;
ENTITYMPSK_TEST_vhdIS
ENDMPSK_TEST_vhd;
ARCHITECTUREbehaviorOFMPSK_TEST_vhdIS
COMPONENTMPSK
PORT(
clk:
INstd_logic;
start:
INstd_logic;
x:
INstd_logic;
y:
OUTstd_logic);
ENDCOMPONENT;
--Inputs
SIGNALclk:
std_logic:
='0';
SIGNALstart:
std_logic:
='0';
SIGNALx:
std_logic:
='0';
SIGNALy:
std_logic:
='0';
CONSTANTclk_period:
time:
=40ns;
BEGIN
uut:
MPSKPORTMAP(
clk=>clk,
start=>start,
x=>x,
y=>y
);
clk_gen1:
PROCESS--时钟进程
BEGIN
clk<='1';
waitforclk_period/2;
clk<='0';
waitforclk_period/2;
ENDPROCESS;
tb:
PROCESS--激励进程
BEGIN
--Wait100nsforglobalresettofinish
ifstart='0'
thenwaitfor120ns;
start<='1';
endif;
x<='0';
waitfor480ns;
x<='1';
waitfor320ns;
x<='0';
waitfor160ns;
x<='1';
waitfor320ns;
ENDPROCESS;
END;
附录2解调程序源程序
MPSK2文件:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityMPSK2is
port(clk:
instd_logic;--系统时钟
start:
instd_logic;--同步信号
x:
instd_logic;--调制信号
y:
outstd_logic);--基带信号
endMPSK2;
architecturebehavofMPSK2is
signalq:
integerrange0to7;--计数器
signalxx:
std_logic_vector(2downto0):
="000";--加法器
signalyyy:
std_logic_vector(1downto0);--2位并行基代信号寄存器
signalyy:
std_logic_vector(2downto0);--寄存xx数据
begin
process(clk)
begin
ifclk'eventandclk='1'then
ifstart='0'thenq<=0;
elsifq=0thenq<=1;yy<=xx;--把加法计数器的数据送入yy寄存器
ifx='0'thenxx<="001";--调制信号x为低电平时,送入加法器的数据“001”
elsexx<="000";
endif;
elsifq=2thenq<=3;
ifx='0'thenxx<=xx+"001";--调制信号x为低电平时,送入加法器“001”
endif;
elsifq=4thenq<=5;
ifx='0'thenxx<=xx+"010";--调制信号x为低电平时,送入加法器的数据“010”
e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多进制 数字 相位 调制 MPSK 系统