基于FPGA的MPSK调制解调器设计_第1页
基于FPGA的MPSK调制解调器设计_第2页
基于FPGA的MPSK调制解调器设计_第3页
基于FPGA的MPSK调制解调器设计_第4页
基于FPGA的MPSK调制解调器设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、硬件描述语言及EDA设计项目名称:基于FPGA的调制器的设计专 业: 电子与通信工程设 计 人: 田 文 正学 号: 2013704045指导教师: 全海燕得 分:基于FPGA的调制器的设计1.绪论作为数字通信技术中重要组成部分的调制解调技术一直是通信领域的热点课题。随着当代通信的飞速发展,通信体制的变化也日新月异,新的数字调制方式不断涌现并且得到实际应用。目前的模拟调制方式有很多种,主要有AM、FM、SSB、DSB、CW等,而数字调制方式的种类更加繁多,如ASK、FSK、MSK、GMSK、PSK、DPSK、 QPSK、QAM等。在众多调制方式中,MPSK信号由于抗干扰能力强而得到了广泛的应用

2、,具有较高的频谱利用率和较好的误码性能,并且实现复杂度小,解调理论成熟,广泛应用于数字微波、卫星数字通信系统、有线电视的上行传输、宽带接入与移动通信等领域中,并已成为新一代无线接入网物理层和B3G通信中使用的基本调制方式。现场可编程门阵列(Field Programmable Gate Array,FPGA)是20世纪90年代发展起来的大规模可编程逻辑器件,随着电子设计自动化(ElectronDesign Automation EDA)技术和微电子技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工作方式,在超高速、实时测控方面都有着非常广阔的应用前景。FPGA具有高集成度、高可靠性等特点

3、,在电子产品设计中也将得到广泛的应用。FPGA器件的另一特点是可用硬件描述语言VHDL对其进行灵活编程,可利用FPGA厂商提供的软件仿真硬件的功能,使硬件设计如同软件设计一样灵活方便,缩短了系统研发周期。基于上述优点,用FPGA实现调制解调电路,不仅降低了产品成本,减小了设备体积,满足了系统的需要,而且比专用芯片具有更大的灵活性和可控性。在资源允许下,还可以实现多路调制。MPSK是目前应用非常广泛的调制解调技术,目前MPSK调制的实现主要是利用数字电路和专用芯片来完成,通常利用可编程数字电路对基带信号进行码元变换,成形滤波等处理后得到同相分量和正交分量,然后将两路信号分量经过数模转换获得模拟信

4、号送入一个正交相乘器与中频载波调制得到中频MPSK调制信号。该方法适合高码率数字信号的传输,但系统的开放性和灵活性较差。2.MPSK的调制原理2.1二进制相移键控(BPSK)对于二进制相移键控BPSK(Binary Phase Shift Keying)来说,就是二进制的数字信号0和1分别用载波的0和来表示。其表达式由公式(2.1)给出: (2.1)式中,An为二进制数字, (2.2)数字调相波可以用矢量图表示其相位变化的规则,根据CCITT规定,存在A、B两种表示相位变化的矢量图,如下图2.5所示。图2.1 矢量图2.2 QPSK调制原理QPSK信号可以表示为 (2.5)式中,是载波的角频率

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)可以看出,四相调制的波形,可以看成是对两个正交载波进

6、行二进制幅度调制的信号之和。从Xn和Yn的取值,容易发现两者具有一定的矢量约束关系,保证两者合成的矢量点在落在同一圆周上。这个关系意味着,系统的非线形失真对QPSK系统的可靠性影响很小。由于四相绝对移相调制可以看作两个正交的二相绝对移相调制的合成,QPSK调制器可以看成由两个BPSK调制器构成。输入的串行二进制序列经过串并转换后,分成两路速率减半的序列,然后经过极性转换后变成两路双极性二电平信号I (t)和Q (t),然后跟cos2f t和sin 2f t相乘进行调制,正交调制方式体现在I通道使用同相载波进行2PSK调制,Q通道使用正交载波进行2PSK调制。相加后即得到QPSK信号。如图2.9

7、所示:图2.2 QPSK调制系统QPSK信号的产生方法采用相位选择法(I通道与Q通道相位正交),如图2.10所示。由于通道与通道为正交调制方式,故其选择载波方式不同。由图2.10可知,二相载波发生器分别送出调相所需的两种不同相位的载波,即数字载波信号。图2.3 相位选择法原理根据QPSK调制原理,设计模型如图3.11所示。电路主要由分频器和二选-开关等组成,分频器对外部时钟信号进行分频和计数,并输出2路频率相同而相位不同的相干数字载波信号;2选一开关是在基带信号的控制下,对2路载波信号进行选通,输出数字QPSK信号。(以I路调制为例)图2.4 I路调制3.MPSK设计3.1总体设计方案 硬件方

8、框图如下图所示:图3.1 总体设计方框图 由上图可以看出,基带信号(为12路并行信号)通过并串转换器得到串行信号,利用使能开关控制选择进行QPSK或是BPSK。经过调制解调后,通过示波器显示。 当进行QPSK调制解调时,将串行码字变为两路并行信号,分别进入通道和通道,I通道使用同相载波进行BPSK调制,Q通道使用正交载波进行BPSK调制。分别解调后,再经并串转换恢复原码。 当进行BPSK调制解调时,将串行码(绝对码)变为相对码后在进行PSK调制解调,最后经相对码转换成绝对码(基带信号)。3.2 调制硬件设计图3.2 BPSK、QPSK的I路调制方框图BPSK调制方框图如图3.2所示。BPSK调

9、制器模型主要由分频器、计数器和二选一开关等组成。由于系统时钟为50MHz,输出波形很难在模拟示波器上显示,故采用分频的方式经系统时钟的频率降低。基带信号首先由绝对码经过异或门与寄存器完成绝对码向相对码转换(图中未画出)。计数器对时钟信号计数,并输出两路相位相反的数字载波信号;二选一开关的功能是:在基带信号的控制下,对两路载波信号进行选通,输出的信号即为数字调制信号。QPSK的I通道调制方框图如图3.2所示,为了形成正交调制方式,Q路调制的二选一开关对两路载波信号的选通与上图相反,从而达到正交的目的。3.3 输入输出设备本方案采用FPGA中的18个开关作为输入设备,其中SW0SW3作为使能开关,

10、SW17SW6作为12路并行码的输入设备。利用DE2开发板提供的2个40针的扩展头作为输出,并以模拟示波器进行观察调制信号。如下图3.4所示:图3.3 DE2开发板及输入输出设备 4.系统设计4.1 MPSK系统模块设计MPSK系统的模块主要包括5000分频模块、并行码转换为串行码模块、串行码转换为并行码模块、绝对码转换为相对码模块、BPSK调制模块、I路调制模块、路调制模块等。整体设计模块图如图4.1所示:图4.1 MPSK系统的模块设计4.2 并/串转换 系统的并串转换设计为12路并行信号转换成一路串行信号,并通过DE2开发板的扩展头输出并在模拟示波器上显示。Clk为时钟周期,当start

11、0未高电平时进行并串转换。其仿真图以及显示在示波器上的串行码如下图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.4 BPSK调制BPSK调制仿真图与在示波器上的显示

12、如图4.3(a)与4.3(b)所示,当start1为高电平时开始BPSK调制解调。基带信号经过调制模块中的载波调制成为调制信号。图4.3(a) BPSK调制仿真图图4.3(b) BPSK调制在示波器上的显示图4.5 I路与Q路 当start2为高电平时进行QPSK调制解调。根据QPSK调制解调原理,将QPSK分为I路与路进行正交调制,本设计利用一个两位寄存器将调制信号分为两路并行信号。如图4.6(a)与4.6(b)所示:图4.5(a) I通道码元与Q通道码元图4.5(b) I通道码元与Q通道码元在示波器上的显示4.6 Q路调制由于Q路调制与I路调制正交,所以其选择载波方式与I路相反,并利用星座

13、图验证期正确性。仿真图与在示波器上的显示图如下图所示;图4.6.1 Q路调制仿真信号图4.6.2 Q路调制在示波器上的显示图图4.7.3 QPSK星座图参考资料1Theodore S.Rappaport.Wireless Communications Principles and Practice.Publishing Houseof Electronics Industry.1999.2 潘莉,郭东辉,纪安妮等.数字调制解调技术及其应用的研究进展.电讯技术,2001,(5):2630. 3D.Divsalar,M.K.Simon.Multiple-Symbol Differential De

14、tection of MPSK.IEEE Transactions on Communications.1990,38(3):300308.4D.Makrakis,K.Feher.Optimal Noncoherent Detection of PSK Signals.Elect.Lett.1990,26(6):146155.5 赖昭胜,管立新,曾祥华.QPSK高性能数字调制器的FPGA实现.PLD CPLD FPGA应用.2006,22(12):139148.6 姚培,杨晓峰,项海涛.用FPGA实现QPSK可变速率调制解调器.中国新通信.2006,(10):3336.7 候伯亨,顾新.VHD

15、L硬件描述语言与数字逻辑电路设计.西安电子科技大学出版社,1999:212. 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调制解调

16、器的建模与设计J微计算机信息,2006,72:20520714 辛洁,赵建东,孙运强.基于FPGA的四相移键控调制解调器的建模与设计A. 国外电子测量技术. 太原.中北大学信息与通信工程学院.2009.附录1 电路图MPSK总体设计电路图:附录2 源代码5000分频模块:library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity f5000 isport(x:in STD_LOGIC; -D:std_logic_vector(13 downto 0); fout:out std_logic);

17、END f5000;architecture one of f5000 is signal full:std_logic;beginp_reg:process(x)variable CNT8:std_logic_vector(13 downto 0); begin if x'event and x='1' then if CNT8="01001110001000" then CNT8 :="00000000000000" full<='1' else CNT8:=CNT8+1; full<='0

18、' end if; end if; end process p_reg;p_div:process(full) variable cnt2:std_logic; begin if(full'event and full='1') then cnt2:=not cnt2; if cnt2='1' then fout<='1' else fout<='0' end if; end if; end process p_div;end;12路并串转换:library ieee; use ieee.std_log

19、ic_arith.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity chuanxing is port(clk :in std_logic; -系统时钟 start0 :in std_logic; -开始调制信号 x :in std_logic_vector(11 downto 0); -基带信号 y :out std_logic); -调制信号end chuanxing;architecture behav of chuanxing issignal q:integer range 0 to 11

20、; -计数器signal xx:std_logic_vector(1 downto 0); -中间寄存器signal yy:std_logic_vector(1 downto 0); -2位并行码寄存器signal zz: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 start0='

21、;0' then q<=0; elsif q=0 then q<=1;xx(0)<=x(0);zz<="01" elsif q=1 then q<=2;xx(1)<=x(1);zz<="11" elsif q=2 then q<=3;xx(0)<=x(2);zz<="01" elsif q=3 then q<=4;xx(1)<=x(3);zz<="11" elsif q=4 then q<=5;xx(0)<=x(4);

22、zz<="01" elsif q=5 then q<=6;xx(1)<=x(5);zz<="11" elsif q=6 then q<=7;xx(0)<=x(6);zz<="01" elsif q=7 then q<=8;xx(1)<=x(7);zz<="11" elsif q=8 then q<=9;xx(0)<=x(8);zz<="01" elsif q=9 then q<=10;xx(1)<=x(9)

23、;zz<="11" elsif q=10 then q<=11;xx(0)<=x(10);zz<="01" elsif q=11 then q<=0;xx(1)<=x(11);zz<="11" end if;end if;end process;y<=xx(0) when zz="01" else xx(1) when zz="11" -根据yy寄存器数据,输出对应的载波end behav;绝对码转换为相对码:library ieee;use ie

24、ee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity AR_DPSK isport(clk :in std_logic; -系统时钟 start :in std_logic; -开始转换信号 x :in std_logic; -绝对码输入信号 y :out std_logic); -相对码输出信号end AR_DPSK;architecture behav of AR_DPSK issignal q:integer range 0 to 3; -分频器 signal x

25、x:std_logic; -中间寄存器begin process(clk,x) -此进程完成绝对码到相对码begin if clk'event and clk='1' then if start='0'then q<=0;xx<='0' elsif q=0 then q<=1;xx<=xx xor x;y<=xx xor x; -输入信号与前一个信号输出信号进行异或 elsif q=1 then q<=2;xx<=xx xor x;y<=xx xor x; elsif q=2 then q&

26、lt;=3;xx<=xx xor x;y<=xx xor x; elsif q=3 then q<=0;xx<=xx xor x;y<=xx xor x; else q<=q+1; end if;end if;end process; end behav;BPSK调制:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PLCPSK isport(clk :in std_logic; -系统时钟

27、 start :in std_logic; -开始调制信号 x :in std_logic; -基带信号 y :out std_logic); -已调制输出信号end PLCPSK;architecture behav of PLCPSK issignal q:std_logic_vector(1 downto 0); -2位计数器signal f1,f2:std_logic; -载波信号beginprocess(clk) -此进程主要产生两重载波信号f1,f2beginif(clk'event and clk='1') then if start='0'

28、; then q<="00" ; elsif q<="00" then f1<='1'f2<='0'q<=q+1; elsif q<="01" then f1<='1'f2<='0'q<=q+1; elsif q<="10" then f1<='0'f2<='1'q<=q+1; elsif q<="11" then f

29、1<='0'f2<='1'q<="00" end if;end if;end process; process(clk,x) -此进程完成对基带信号x的调制beginif clk'event and clk='1' then if q="00" then if x='1' then y<=f1; -基带信号x为1时,输出信号y为f1 else y<=f2; -基带信号x为0时,输出信号y为f2 end if; elsif q="01"

30、 then if x='1' then y<=f1; else y<=f2; end if; elsif q="10" then if x='1' then y<=f2; else y<=f1; end if; elsif q="11" then if x='1' then y<=f2; else y<=f1; end if; end if;end if;end process;end behav;基带信号分为I路与Q路信号:LIBRARY ieee;USE ieee.s

31、td_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;entity modulation isport(clk :in std_logic;-系统时钟 start :in std_logic;-开始调制信号 x :in std_logic;-基带信号 yi :out std_logic; liong :out std_logic);end modulation;architecture behav of modulation issignal q:integer range 0 to 7;-计数器s

32、ignal xx:std_logic_vector(1 downto 0);-中间寄存器signal yy:std_logic_vector(1 downto 0);-2位并行码寄存器signal f1,f2:std_logic;beginprocess(clk)-通过对clk分频,得到4种相位;并完成基带信号的串并转换beginif clk'event and clk='1'thenif start='0'then q<=0;elsif q=0 then q<=1;f1<='1'f2<='0'xx

33、(0)<=x;yi<=xx(0);elsif q=2 then q<=3;f1<='1'f2<='0'xx(0)<=x;yi<=xx(0);elsif q=4 then q<=5;f1<='0'f2<='1'xx(0)<=x;yi<=xx(0);elsif q=6 then q<=7;f1<='0'f2<='1'xx(0)<=x;yi<=xx(0);elsif q=7 then q<=0;xx

34、(1)<=x;yy<=xx;liong<=xx(1);else q<=q+1;xx(1)<=x;yy<=xx;liong<=xx(1);end if;end if;end process;end behav;Q路调制:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Qtiaozhi isport(clk :in std_logic; -系统时钟 start :in std_logic; -开始调制信号 x :

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论