多进制数字相位调制(MPSK)系统(24页).doc
-
资源ID:36117859
资源大小:199.50KB
全文页数:24页
- 资源格式: DOC
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
多进制数字相位调制(MPSK)系统(24页).doc
-多进制数字相位调制(MPSK)系统-第 20 页AbstractMultiple Phase Shift Keying (MPSK - multiple phase shift keying) is also called multi-phase system, which is the promotion of the two-phase system. It is the modulation to characterize digital information using the different carriers phase state. Similar with the Binary Digital Phase Modulation, it has the absolute phase modulation (MPSK) and phase modulation (MDPSK) as the two kinds of modulation methods.This article is mainly about the Multiple Phase Shift Keying system (MPSK) based on Xilinx ISE simulation software design, setting 4PSK as an example. The modulation method is the simple phase-selection method. It only concentrates on the design of digital system, neglecting the analog circuit system.Keywords: Multiple Phase Shift Keying MPSK Xilinx ISE phase-selection method摘 要多进制数字相位调制(MPSK - multiple phase shift keying)又称多相制,是二相制的推广。它是利用载波的多种不同相位状态来表征数字信息的调制方式。与二进制数字相位调制相同,多进制数字相位调制也有绝对相位调制(MPSK)和相对相位调制(MDPSK)两种。本文主要研究基于Xilinx ISE仿真软件设计的多进制数字相位调制(MPSK)系统,以4PSK系统为例。调制方法采用简便的相位选择法,且略去模拟电路系统部分,仅对数字系统进行设计。关键字: 多进制数字相位调制 MPSK Xilinx ISE 相位选择法目录Abstract1摘 要11 多进制数字相位调制11.1 MPSK概念11.2 MPSK原理12 四相相位调制(4PSK)22.1 4PSK调制2相位选择法22.1.2 直接调相法32.2 4PSK解调42.3 4PSK调制与解调系统设计53 ISE设计与仿真73.1 ISE 操作环境73.1.1 输入(Design Entry)73.1.2 综合(Synthesis)8实现(Implementation)8验证(Verification)8下载(Download)93.2 ISE程序设计93.2.1 调制系统程序设计9解调系统程序设计10仿真结果114总结125参考文献136 附录14附录1 调制系统源程序14附录2 解调程序源程序18附录3仿真波形图24多进制数字相位调制(MPSK)系统1 多进制数字相位调制 MPSK概念多进制数字相位调制也称多元调相或多相制。它利用具有多个相位状态的正弦波来代表多组二进制信息码元,即用载波的一个相位对应于一组二进制信息码元。如果载波有2k个相位,它可以代表 k位二进制码元的不同码组。多进制相移键控也分为多进制绝对相移键控和多进制相对(差分)相移键控。M进制数字相位调制中,四进制绝对移相键控(4PSK,又称QPSK)和四进制差分相位键控(4DPSK,又称QDPSK)用的最为广泛。 MPSK原理在MPSK信号中,载波相位可取M个可能值:因此,MPSK信号可表示为:假定载波频率是基带数字信号速率的整数倍,则上式可改写为:上式表明,MPSK信号可等效为两个正交载波进行多电平双边带调幅所得已调波之和。因此其带宽与MASK信号带宽相同,带宽的产生也可按类似于产生双边带正交调制信号的方式实现。多相制信号常用的产生方法有:直接调相法及相位选择法。2 四相相位调制(4PSK)四相调相信号是一种四状态符号,即符号有00、01、10、11四种状态。所以,对于输入的二进制序列,首先必须分组,每两位码元一组。然后根据组合情况,用载波的四种相位表征它们。这种由两个码元构成一种状态的符号码元称为双比特码元。同理,k位二进制码构成一种状态符号的码元则称为k比特码元。 4PSK调制相位选择法在一个码元持续时间内,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.2 4PSK解调因为4PSK信号是两个正交的2 PSK信号的合成,所以可仿照 2 PSK信号的相平解调方法,用两个正交的相干载波分别检测A和B两个分量,然后还原成串行二进制数字信号,即可完成4 PSK信号的解调。此法是一种正交相平解调法,又称极性比较法,原理图如图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-1 n/4判决器的判决准则表2.3 4PSK调制与解调系统设计MPSK调制电路系统框图如图2-4,电路符号图中没有包含模拟电路部分,输出信号为数字信号。基带信号通过串/并转换器xx得到2位并行信号yy;四选一开关根据yy的数据,选择载波对应的相位进行输出,即得调制信号 y。图2-4 MPSK调制电路系统框图MPSK调制电路符号如图2-5。图2-5 MPSK调制电路符号图2-6是MPSK解调方框图,图中没有包含模拟电路部分,调制信号为数字信号形式。当调制为低电平时,译码器1根据q值,送入加法器xx相应的数据。图2-6 MPSK解调方框图加法器把运算结果送到寄存器yy,译码2根据yy数据通过译码,输出2位并行信号yyy, yyy再通过并/串转换,就可得到解调后的基带信号y。3 ISE设计与仿真Altera和Xilinx是全球知名的FPGA生产厂商,二者的开发产品Quartus和ISE均可作为本设计使用的软件,选择哪个在产品设计中视使用的芯片类型而定。本设计仅进行软件仿真,从学习的方面考虑,使用Xilinx公司的ISE配合ModelSim进行设计仿真,设计语言为VHDL语言。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。3.1 ISE 操作环境ISE的全称为Integrated Software Environment,即“集成软件环境”,是Xilinx公司的硬件设计工具。作为相对容易使用的、首屈一指的PLD设计环境,SE将先进的技术与灵活性、易使用性的图形界面结合在一起,能使设计者在最短的时间,以最少的努力,达到最佳的硬件设计。利用Xilinx公司的ISE开发设计软件的工程设计流程,具体分为五个步骤:即输入(Design Entry)、综合(Synthesis)、实现(Implementation)、验证(Verification)、下载(Download)。3.1.1 输入(Design Entry)为了克服原理图输入方法的缺点,目前在大型工程设计中,在ISE软件中常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和Verilog HDL。它们的共同优点是利于由顶向下设计,利于模块的划分与复用,可移植性好,通用性强,设计不因芯片的工艺和结构的变化而变化,更利于向ASIC的移植,故在ISE软件中推荐使用HDL设计输入法。3.1.2 综合(Synthesis)综合是将行为和功能层次表达的电子系统转化为低层次模块的组合。一般来说,综合是针对VHDL来说的,即将VHDL描述的模型、算法、行为和功能描述转换为FPGA/CPLD基本结构相对应的网表文件,即构成对应的映射关系。实现(Implementation)实现是根据所选的芯片的型号将综合输出的逻辑网表适配到具体器件上。Xilinx ISE的实现过程分为:翻译(Translate)、映射(Map)、布局布线(Place & Route)等3个步骤。ISE集成的实现工具主要有约束编辑器Constraints Editor)、引脚与区域约束编辑器(PACE)、时序分析器(Timing Analyzer)、FPGA底层编辑器(FGPA Editor)、芯片观察窗(Chip Viewer)和布局规划器(Floorplanner)等。验证(Verification) 验证(Verification)包含综合后仿真和功能仿真(Simulation)等。功能仿真就是对设计电路的逻辑功能进行模拟测试,看其是否满足设计要求,通常是通过波形图直观地显示输入信号与输出信号之间的关系。综合后仿真在针对目标器件进行适配之后进行,综合后仿真接近真实器件的特性进行,能精确给出输入与输出之间的信号延时数据。下载(Download)下载(Download)即编程(Program)设计开发的最后步骤就是将已经仿真实现的程序下载到开发板上,进行在线调试或者说将生成的配置文件写入芯片中进行测试。在ISE中对应的工具是iMPACT。3.2 ISE程序设计本设计程序采用VHDL程序设计。分别创建工程文件MPSK和MPSK2作为调制系统和解调系统设计文件。因为所有的输入波形和载波均只有四种,且数字系统较难使用直接调相法和相干解调法,调制采用相位选择法,解调部分则枚举各个载波情况分别译码。ISE提供了非常方便的VHDL编写环境,可详细的把各种类型文件分类,可根据设计者的端口要求自动创建module,帮助设计者填写一些普遍的架构,设计者只需填入中心内容即可。与Quartus不同的是,ISE的时钟和激励输入需要写在一个与相关文件关联的用VHDL语言编写的testbench文件里,低级的版本可以创建testbench waveform文件进行波形图形输入,高版本已完全取消图形输入。对于波形输入较多且较复杂的工程,testbench文件相当地省时和有效。并且确认了关联文件后,ISE会自动进行空实体声明,信号赋初值,结构体建立,元件配置和例化,生成进程框架等程序的书写,余下的工作十分简单3.2.1 调制系统程序设计调制系统程序见附录1。调制信号说明见表3-1。表3-1 调制信号说明其中实体的四个端口中clk、start、x为输入类型,分别作为系统时钟、开始调制信号、基带信号。只有一个输出类型y,作为调制信号的输出端。唯一的进程通过对clk分频,得到4种相位;并完成基带信号的串并转换。端口y根据yy寄存器数据,输出对应的载波。yy寄存器则在时钟课计数器的控制下定时读取中间寄存器xx的值作为载波输出的依据。Testbench程序中,按照原程序的设计,设置每个码元长度为时钟长度的四倍。时钟和激励分别在两个进程中。用wait for语句保证编码从时钟上升沿开始使波形整齐便于观察。同时为了观察所有类型的基带信号输入设置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相似,同样控制波形的整齐度,实现载波信号的全部循环出现。仿真结果分别运行两个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应用技术基础教程.电子工业出版社 .20042 VHDL语言程序设计及应用. 北京邮电大学出版社 .20043 VHDL与FPGA设计. 中国铁道出版社 .2003 4 FPGA/CPLD设计工具Xilinx ISE使用详解. 人民邮电出版社 .2005.01 5 ModelSim电子系统分析及仿真. 6 怎样用VHDL写TESTBENCH. 百度文库文档学习资料6 附录附录1 调制系统源程序MPSK文件:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity MPSK is Port ( clk : in STD_LOGIC; start : in STD_LOGIC; x : in STD_LOGIC; y : out STD_LOGIC);end MPSK;architecture Behavioral of MPSK issignal q:integer range 0 to 7; -计数器signal xx:std_logic_vector(1 downto 0);-中间寄存器signal yy:std_logic_vector(1 downto 0);-2位并行码寄存器signal f:std_logic_vector(3 downto 0); -载波fbeginprocess(clk)-通过对clk分频,得到4种相位;并完成基带信号的串并转换beginif clk'event and clk='1' then if start='0' then q<=0; elsif q=0 then q<=1;f(3)<='1' f(1)<='0' xx(1)<=x;yy<=xx; elsif q=2 then q<=3;f(2)<='0' f(0)<='1' elsif q=4 then q<=5;f(3)<='0' f(1)<='1' xx(0)<=x; elsif q=6 then q<=7;f(2)<='1' f(0)<='0' else q <= (q+1)rem 8; end if;end if;end process;y<=f(0) when yy="11" else f(1) when yy="10" else f(2) when yy="01" else f(3); -根据yy寄存器数据,输出对应的载波end Behavioral;MPSK_TEST文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY MPSK_TEST_vhd ISEND MPSK_TEST_vhd;ARCHITECTURE behavior OF MPSK_TEST_vhd IS COMPONENT MPSKPORT(clk : IN std_logic;start : IN std_logic;x : IN std_logic;y : OUT std_logic);END COMPONENT;-InputsSIGNAL clk : std_logic := '0'SIGNAL start : std_logic := '0'SIGNAL x : std_logic := '0'SIGNAL y : std_logic := '0'CONSTANT clk_period : time :=40 ns;BEGINuut: MPSK PORT MAP(clk => clk,start => start,x => x,y => yclk_gen1 : PROCESS -时钟进程BEGINclk <='1'wait for clk_period/2;clk <='0'wait for clk_period/2;END PROCESS;tb : PROCESS -激励进程BEGIN- Wait 100 ns for global reset to finishif start ='0'then wait for 120 ns;start <='1'end if;x<='0'wait for 480 ns;x<='1'wait for 320 ns;x <='0'wait for 160 ns;x <='1' ;wait for 320 ns;END PROCESS;END;附录2 解调程序源程序MPSK2文件:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MPSK2 isport(clk :in std_logic; -系统时钟 start :in std_logic; -同步信号 x :in std_logic; -调制信号 y :out std_logic); -基带信号end MPSK2;architecture behav of MPSK2 issignal q:integer range 0 to 7; -计数器signal xx:std_logic_vector(2 downto 0):="000" -加法器signal yyy:std_logic_vector(1 downto 0); -2位并行基代信号寄存器signal yy:std_logic_vector(2 downto 0); -寄存xx数据beginprocess(clk)beginif clk'event and clk='1' then if start='0' then q<=0; elsif q=0 then q<=1;yy<=xx; -把加法计数器的数据送入yy寄存器 if x='0' then xx<="001" -调制信号x为低电平时,送入加法器的数据“001” else xx<="000" end if; elsif q=2 then q<=3; if x='0' then xx<=xx+"001" -调制信号x为低电平时,送入加法器“001” end if; elsif q=4 then q<=5; if x='0' then xx<=xx+"010" -调制信号x为低电平时,送入加法器的数据“010” end if; elsif q=6 then q<=7; if x='0' then xx<=xx+"011" -调制信号x为低电平时,送入加法器的数据“011” end if; else q<=(q+1) rem 8; end if;end if;end process;process(yy) -此进程根据yy寄存器里的数据进行译码beginif yy'event then if yy="101" then yyy<="00" -yy寄存器“101”对应基带码“00” elsif yy="011" then yyy<="01" -yy寄存器“011”对应基带码“01” elsif yy="010" then yyy<="10" -yy寄存器“010”对应基带码“10” elsif yy="100" then yyy<="11" -yy寄存器“100”对应基带码“11” else yyy<="00" end if;end if;end process;process(yyy,q) -此进程根据yyy寄存器里的数据进行译码beginif yyy'event or q'event then if q=1 then y <= yyy(1) after 1 ns; elsif q=5 then y <= yyy(0); else null ; end if;end if;end process;end behav;MPSK2_TEST文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY MPSK2_TEST_vhd ISEND MPSK2_TEST_vhd;ARCHITECTURE behavior OF MPSK2_TEST_vhd IS COMPONENT MPSK2PORT(clk : IN std_logic;start : IN std_logic;x : IN std_logic; y : OUT std_logicEND COMPONENT;-InputsSIGNAL clk : std_logic := '0'SIGNAL start : std_logic := '0'SIGNAL x : std_logic := '0'CONSTANT clk_period : time :=40 ns;-OutputsSIGNAL y : std_logic;BEGINuut: MPSK2 PORT MAP(clk => clk,start => start,x => x,y => yclk_gen1 : PROCESS -时钟进程BEGINclk <='1'wait for clk_period/2;clk <='0'wait for clk_period/2;END PROCESS;tb : PROCESS -激励进程BEGIN- Wait 100 ns for global reset to finishif start ='0' then wait for 100 ns;start <='1'wait for 20 ns;end if;x <= '1'wait for 160 ns;x <='0' ;wait for 160 ns;x <= '1'wait for 80 ns;x <= '0'wait for 160 ns;x <= '1'wait for 80 ns;x <= '0'wait for 160 ns;x <= '1'wait for 160 ns;x <= '0'wait for 80 ns;x <= '1'wait for 160 ns;x <= '0'wait for 80 ns;END PROCESS;END;附录3仿真波形图调制系统仿真波形图:解调系统仿真波形图: