基于FPGA的QPSK调制解调系统模块设计_第1页
基于FPGA的QPSK调制解调系统模块设计_第2页
基于FPGA的QPSK调制解调系统模块设计_第3页
基于FPGA的QPSK调制解调系统模块设计_第4页
基于FPGA的QPSK调制解调系统模块设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

PAGE47基于FPGA的PSK调制解调器的设计摘要近年来,软件无线电技术发展迅速。软件无线电技术,顾名思义是用现代化软件来操纵、控制传统的“纯硬件电路”的无线通信。在软件无线电中将宽带模数变换器(A/D)及数模变换器(D/A)尽可能地靠近射频天线,建立一个具有“A/D-DSP-D/A”模型的通用的、开放的硬件平台,在这个硬件平台上尽量利用软件技术来实现电台的各种功能模块。其中调制解调器的设计至关重要。调制就是对信号源的信息进行处理加到载波上,使其变为适合于信道传输的形式的过程,就是使载波随信号而改变的技术。调制是通过改变高频载波即消息的载体信号的幅度、相位或者频率,使其随着基带信号幅度的变化而变化来实现的。而解调则是将基带信号从载波中提取出来以便预定的接收者(也称为信宿)处理的过程。在本设计中,利用Altera公司生产的StraixFPGA作为硬件开发平台,系统各模块的设计均由VerilogHDL(硬件描述语言)来编写,设计QPSK调制解调系统。论文详细介绍了系统设计和实现的过程,包括需求分析、硬件平台开发、系统模块设计以及最终系统的测试与实现功能。关键词调制解调、FPGA、QPSK

FPGA-baseddesignofPSKmodemAbstractInrecentyears,therapiddevelopmentofsoftwareradiotechnology.Softwareradiotechnology,suggeststhatitisatechnologywhichmanipulatethetraditional“purehardware”withmodernsoftware.Insoftwareradiobothanalog-digitalconverteranddigital-analogconverterarearrangedascloselyaspossibletoRFantennainordertoestablishaplatformwhichisuniversal,andan"A/D-DSP-D/A"modelisincluded.Thenwecanmakefulluseofsoftwaretechnologytoachieveavarietyofradiomoduleswithdifferentfunctions.Inthistechnologythedesignofmodemisimportant.Andmodulationisatechnologythattransmitinformationbycontrolthecarrierphase,amplitude,frequencyaccordingtotheinputdatainordertotransmitinband-passchannels.Demodulationistogettheoriginalsignalatthereceiverfromthemodulatedsignal.

Inthisdesign,IchoosedStraixFPGAasahardwaredevelopmentplatformwhichisproducedbyAlteraCorporation.SomemodulesweredesignbyVerilogHDL.Thenthsemoduleswerelinkedtobeamodemsystem.Thispaperintroducesthesystemdesignandimplementationprocess,includingntheprincipleofQPSK,hardwareplatform,systemandmoduledesignandthefinaltestingofthesystemfunction.Keywords:Modulation、Demodulation、FPGA、QPSK目录1绪论 12EDA技术概述 22.1 EDA设计方式及流程 22.2设计开发环境(Quartus) 33.FPGA原理及其应用 43.1查找表(Look-Up-Table)的原理与结构 43.1.1基于查找表(LUT)的FPGA的结构 53.1.2查找表结构的FPGA逻辑实现原理 73.2.其他类型的FPGA和PLD 83.3选择PLD还是FPGA 94系统相关硬件介绍 94.1A/D转换器 94.2D/A转换器 105QPSK调制解调原理 125.1QPSK调制 125.1.1QPSK信号 125.1.2QPSK调制框图 145.2QPSK解调 155.3QPSK调制解调系统 166基于FPGA的QPSK调制解调系统模块设计 176.1数空振荡器介绍及使用 186.1.1NCO原理 196.1.2NCO使用 226.2数据比特串/并转换模块设计 246.2.1模块功能实现 256.2.2数据比特串/并转换模块仿真 256.3相位映射模块设计 266.3.1模块功能实现 266.3.2相位选择模块仿真 276.4数字低通滤波器的介绍及使用 276.4.1数字低通滤波器介绍 286.4.2数字低通滤波器调用 316.5数字乘法器的介绍及使用 326.6接收端抽样判决模块设计 326.6.1模块功能实现 336.6.2模块仿真 346.7数据发生模块设计 356.7.1数据发生器模块实现 356.7.2数据发生模块仿真结果 376.8数据存储模块设计 376.8.1数据存储模块实现 376.8.2数据存储模块仿真 386.9分频模块设计 387数字QPSK调制解调系统的仿真 397.1调制器仿真 397.1.1调制端顶层文件 397.1.2调制端仿真结果 407.2解调端仿真 417.3系统整体仿真结果 428结论 43致谢 44参考文献 45附录 47外文翻译 551绪论调制是现代通信系统中必不可少的部分。调制方式多种多样,各有优缺点。在通信原理中把通信信号按调制方式可分为调幅、调相和调频三种。其中QPSK是一种常见的数字调制方式,该调制方式属于四进制调制,频谱利用率高、频谱特性好、抗干扰性能强、传输速率快,其最佳传输系统的误比特率与2PSK系统相同,但所占频带只是2PSK信号频带的一半。采用QPSK可同时保证信号传输的效率和误码性能,因此被广泛应用于各种通信系统中。近年来,软件无线电技术打破了有史以来设备的通信功能的实现仅仅依赖于硬件发展的格局。可以说软件无线电技术的出现是通信领域继固定通信到移动通信,模拟通信到数字通信之后第三次革命。在软件无线电中,各种模块都是尽可能通过软件编程来实现,其中FPGA的应用非常广泛。在FPGA上可以通过软件编程实现不同的模块功能,然后实现通信中的各种技术,如调幅、调频、扩频等;在本文中将简要介绍EDA技术、FPGA原理开发平台以及QPSK调制的调制解调原理,然后将着重介绍各个模块的设计及测试,最后将已调的数字信号截止D/A进行传输,在接收端用A/D来将模拟信号转换为数字信号,然后进行解调。通过D/A、A/D来模拟信道进而研究调制解调器的整体性能。2EDA技术概述EDA即电子设计自动化。EDA技术的发展是以计算机科学、微电子技术的发展为基础,并融合了应用电子技术、智能技术以及计算机图形学、拓扑学、计算数学等众多学科的最新成果发展起来的。简单地说EDA就是立足于计算机工作平台而开发出来的一整套设计电子系统的软件工具。EDA设计方式及流程EDA设计方式有Top-down设计和Bottom-up设计。Top-down设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体电路网表,其对应的物理实现可以是PLD器件或专用集成电路(ASIC)。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,另一方面也减少了逻辑功能仿真工作量,提高了设计的一次成功率。Top-down设计中将涉及分为几个不同的层次:系统级、功能级、门级、开关级等。Bottom-up设计是一种传统的设计思路。这种设计方式,一般是设计者选择标准集成电路,或者将各种基本单元,如各种门电路以及像加法器、计数器等模块做成基本单元库,调用这些基本单元,逐级向上组合,直到达到所要求的功能。EDA的设计流程包括器件选择、设计输入、综合、适配、仿真、编程下载。器件选择即选择可编程的器件,根据设计需要选择合适的器件;设计输入可以分为原理图输入、文本输入。原理图输入是将电路图通过图形输入工具输入并进行编译,文本输入则是用硬件描述语言将各个模块的功能描述出来在进行编译;综合是将较高层次的设计描述自动转化为较低层次描述;适配也称结构综合,目的是将有综合器产生的网表文件配置于指定的目标器件中,并产生最终的下载文件,如JEDEC文件、Bitstream位流数据文件;仿真也成为模拟,是对所设计电路的功能的验证。仿真还包括功能仿真和时序仿真。不考虑信号时延等因素的仿真是为功能仿真,而考虑时延等因素的方针则为时序仿真;最后是将设计文件下载到目标器件中实现设计目标。2.2设计开发环境(Quartus)QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境。QuartusII具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。3.FPGA原理及其应用FPGA即现场可编程门阵列,该芯片在许多领域均有广泛的应用,台湾别是在无线通信领域里。由于具有极强的实时性和并行处理能力,使其对信号进行实时处理成为可能。对于现代移动通信中的许多关键技术,如CDMA技术、软件无线电、多用户检测等技术都需要依靠告诉、高性能的并行处理器来实现。随着这些应用的日益多样化,FPGA已经不再是一块独立的芯片,而演变成了构建内核。这使得设计师能选择合适的内核,与专用逻辑“胶结”在一起形成专用的FPGA方案,以满足处理需要。FPGA芯片的一些具体应用有:用于实现语音合成,纠错编码,基带调制解调,系统控制,以及用来实现基带调制解调、定时恢复、自动增益和频率控制等。其中调制解调器需要大量的复杂数学运算,并且对调制解调器的大小、重量、功耗特别关注。FPGA在通信领域的应用大大的改善了现代通信系统的性能。下面将简要介绍FPGA的原理。3.1查找表(Look-Up-Table)的原理与结构采用这种结构的PLD芯片我们也可以称之为FPGA:如altera的ACEX,APE系列,xilinx的Spartan,Virtex系列等。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。下面是一个4输入与门的例子,表3-1输入与门实际逻辑电路LUT的实现方式a,b,c,d输入逻辑输出地址RAM中存储的内容000000000000010000100...011111111113.1.1基于查找表(LUT)的FPGA的结构

Spartan-II主要包括CLBs,I/O块,RAM块和可编程连线(未表示出)。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。Slices可以看成是SpartanII实现逻辑的最基本结构。xilinxSpartan-II的内部结构,如下图:图3-1Spartan-II的内部结构altera的FLEX/ACEX等芯片的结构如下图:图3-2FLEX/ACEX等芯片的结构alteraFLEX/ACEX芯片的内部结构如图3-3所示图3-3逻辑单元(LE)内部结构FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构。3.1.2查找表结构的FPGA逻辑实现原理我们还是以这个电路的为例:图3-4实例原理图A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3-4所示电路的功能。这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。3.2.其他类型的FPGA和PLD

随着技术的发展,在2004年以后,一些厂家推出了一些新的PLD和FPGA,这些产品模糊了PLD和FPGA的区别。例如Altera最新的MAXII系列PLD,这是一种基于FPGA(LUT)结构,集成配置芯片的PLD,在本质上它就是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉不到配置过程,可以同传统的PLD一样使用,加上容量和传统PLD类似,所以altera把它归作PLD。还有像Lattice的XP系列FPGA,也是使用了同样的原理,将外部配置芯片集成到内部,在使用方法上和PLD类似,但是因为容量大,性能和传统FPGA相同,也是LUT架构,所以Lattice仍把它归为FPGA。3.3选择PLD还是FPGA

根据上一篇PLD的结构和原理可以知道,PLD分解组合逻辑的功能很强,一个宏单元就可以分解为十几个甚至20-30多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此,PLD适合用于设计译码等复杂组合逻辑。但FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。同时PLD拥有上电即可工作的特性,而大部分FPGA需要一个加载过程,所以,如果系统要可编程逻辑器件上电就要工作,那么就应该选择PLD。4系统相关硬件介绍4.1A/D转换器A/D转换器,或简称ADC,是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。模数转换器最重要的参数是转换的精度,通常用输出的数字信号的位数的多少表示。转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。A/D转换一般要经过采样、保持、量化及编码4个过程。在实际电路中,有些过程是合并进行的,如采样和保持,量化和编码在转换过程中是同时实现的。一般来说,A/D比D/A贵,尤其是高速的A/D,因为在某些特殊场合,如导弹的摄像头部分要求有高速的转换能力。一般那样A/D要上千美元。还有通过A/D的并联可以提高A/D的转换效率,多个A/D同时处理数据,能满足处理器的数字信号需求了。本开发板采用的是高速的12位AD94334.2D/A转换器数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。一种将二进制数字量形式的离散信号转换成以标准量(或参考量)为基准的模拟量的转换器,简称DAC或D/A转换器。最常见的数模转换器是将并行二进制的数字量转换为直流电压或直流电流,它常用作过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自动控制。数模转换器电路还用在利用反馈技术的模数转换器设计中。数模转换有两种转换方式:并行数模转换和串行数模转换。数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。为了将数字量转换成模拟量,必须将每1位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字—模拟转换。这就是组成D/A转换器的基本指导思想。两个相邻数码转换出的电压值是不连续的,两者的电压差由最低码位代表的位权值决定。它是信息所能分辨的最小量,也就是我们所说的用1LSB(LeastSignificantBit)表示。对应于最大输入数字量的最大电压输出值(绝对值),用FSR(FullScaleRange)表示。D/A转换器由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压几部分组成。数字量以串行或并行方式输入、存储于数码寄存器中,数字寄存器输出的各位数码,分别控制对应位的模拟电子开关,使数码为11的位在位权网络上产生与其权值成正比的电流值,再由求和电路将各种权值相加,即得到数字量对应的模拟量。根据信号与系统的理论,数字阶梯状信号可以看作理想冲激采样信号和矩形脉冲信号的卷积,那么由卷积定理,数字信号的频谱就是冲激采样信号的频谱与矩形脉冲频谱(即Sa函数)的乘积。这样,用Sa函数的倒数作为频谱特性补偿,由数字信号便可恢复为采样信号。由采样定理,采样信号的频谱经理想低通滤波便得到原来模拟信号的频谱。该开发板采用的是14位的DAC904,速度较高。5QPSK调制解调原理一般来说,信号源的信息(也称为信源)含有直流分量和频率较低的频率分量,称为基带信号。基带信号往往不能作为传输信号,因此必须把基带信号转变为一个相对基带频率而言频率非常高的信号以适合于信道传输。这个信号叫做已调信号,而基带信号叫做调制信号。调制方式种类很多,有调幅、调频、调相三种基本方式,另外还有这三种基本方式的组合。其中QPSK的应用很广泛也很具代表性。5.1QPSK调制正交相移键控(QuadraturePhaseShiftKeying,QPSK)也称为四进制相键控,是多相相移键控(MPSK)中常用的一种,它是利用载波四个不同的位来表征数字信息的调制方式。5.1.1QPSK信号MPSK信号可以表示为:(5-1)式中,为信号在一个码元间隔内的能量,为载波角频率,为有种值的相位。MPSK信号仅用相位携带基带信号的数字信息,为了表达出基带信号载波相位的联系,可将码元持续时间为的基带信号用矩形函数表示,即(5-2)这样MPSK信号的表达式又可写为(5-3)式(5-3)中,矩形函数与基带信号的码元相对应,为载波在t=时刻的相位,取式(5-4)中的某一种取值。有种取值,通常是等间隔的,,即(5-4)式中,为初相位。为计算方便,设=0,将式(5-3)5-3展开,得到(5-5)令,则式(5-5)可写为:(5-6)令,,则式5-6可写为:(5-7)图5-1为QPSK信号的星座图。图5-1QPSK信号星座图5.1.2QPSK调制框图通常将式中第一项为同相分量,第二项为正交分量。由此可知,MPSK信号可以用正交调制的方法产生。另外QPSK调制可以采用相位选择法。在QPSK调制系统中,发送端可取的相位值为四个。对于四种相位的择,存在体系和体系。体系对应相位为0,,,四个离散值。体系相位对应为,,,四个离散值。因此在调制端将输入数据转换为双比特,进而进行相位选择。表5-1为相位对应关系(采用体系)。且双比特码元中两个信息比特常按格雷编码排列,采用格雷编码的好处在于相邻的双比特码元中两个信比特只会有一个变化,从而使误码率尽可能小。表5-1双比特(I/Q)00011110相位图5-2给出了QPSK调制的框图。带通滤波带通滤波四相载波发生器串/并变换逻辑相位选择图5-2QPSK调制原理框图5.2QPSK解调解调的方法大致有相干解调和非相干解调,一般而言相干解调性能比非相干解调好,使用非相干解调主要是其解调电路简单。本文中采用相干解调法进行解调,解调原理如图5-3所示。图5-3QPSK解调原理图QPSK相干解调的核心问题就在于对载波和定时的同步,其性能的好坏直接对通信质量产生影响。在相干解调技术中,要求在接收端提供一个本地参考载波,这个参考载波与信号的载波是同频同相的。载波同步的方法有两类,一类是在发送有用信号的同时在适当的频率上发送导频信号,导频信号的功率较小,这种方法称为插入导频法;另一类方法是直接从接收到的信号中提取,称为直接法。考虑到实际情况,本设计中没有考虑载波提取与同步问题,在调试时采用的载波与调制端相同时钟为全局时钟。5.3QPSK调制解调系统实际应用中调制端的已调信号经过D/A转换为模拟信号然后经过混频搬移到发送的高频频带发送。在接收端先混频将信号搬到中频(即载波频段),再经过解调得到传输信号。在本设计中发送端的信号在D/A转换后接至A/D,得到数字信号,然后与载波相乘,经过低通滤波器,经过抽样判决得到原始数据。QPQPSK调制器D/AA/DQPSK解调器图5-7系统框图6基于FPGA的QPSK调制解调系统模块设计系统模块是由VerilogHDL硬件描述语言编写的,与传统的基于电路原理图的设计方法相比,使用硬件描述语言(HDL)进行设计具有许多优点:通过使用HDL,设计者可以在非常抽象的层次上对电路进行描述。设计者可以在RTL(寄存器传输级)对电路进行描述而不必选择特定的制造工艺,逻辑综合工具能将设计自动转换为任意一种制造工艺版图。如果出现新的工艺,设计者不必对电路进行重新设计,只需要将RTL描述输入综合工具,即可生成针对新工艺的门级网表,逻辑综合工具将根据新的工艺对电路的时序和面积进行优化。通过使用HDL,设计者可以在设计周期的早期对电路的功能进行验证。设计者可以很容易的对RTL描述进行优化和修改,满足电路功能的要求。由于能够在设计初期发现和排除绝大多数设计错误,因此大大降低了在设计后期的门级网表或物理版图上出现错误的可能性,避免了设计过程的反复,显著的缩短了设计周期。使用HDL进行设计类似于编写计算机程序,带有文字注释的源程序非常便于开发和修改。与门级电路原理图相比,这种设计表达方式能够对电路进行更加简明扼要的描述。非常复杂的设计,如果用门级电路原理图来表达,几乎是无法理解的。基于HDL语言的设计方法是不可动摇的。随着数字电路复杂性的不断增加以及EDA工具的日益成熟,基于硬件描述语言的设计方法已经成为大型数字电路设计的主流。在本设计中需要设计调制端的调制器,接收端的解调器。另外为了验证系统还需设计数据发生器以及分频器等模块。下文将具体介绍各模块的设计和调用。6.1数空振荡器介绍及使用数控振荡器(NumericallyControlledOscillators,NCO)在中频数字化调制解调中已得到广泛应用,它所产生的正余弦信号可以用作FSK、BPSK、QPSK等多种调制方式的载波。NCO在中频数字化调制器用作本振源,可产生完全正交的数字载波,保证调制时I、Q两路数据完全正交,消除了模拟调制由于载波的不完全正交性造成的调制信号星座图的歧变。在中频数字化解调中,NCO用作产生本地参考本振源,对中频信号进行下变频至基带,因此在软件无线电收发机中NCO的作用至关重要。6.1.1NCO原理 产生正交波形的方法常用的有ROM查找表法、CORDIC法和插值法,本文中选择了基于ROM查找表的NCO构造方法,首先分析查找表法的实现原理。NCO的目标就是产生一个理想的正弦或余弦波(以下用正弦来通称正弦或余弦),如式6-1所示。(6-1)式中,为本地振荡频率;为NCO输入信号的采样频率。正弦波样本可以用实时计算的方法产生,但这只适用于信号采样频率很低的情况。在软件无线电超高速信号采样频率的情况下,NCO实时计算的方法实现比较困难。此时,NCO产生正弦波样本的最有效、最简便的方法就是查表法,即事先根据各个NCO正弦波相位计算好相位的正弦值,并按相位角度作为地址存储该相位的正弦值数据。式(6-1)中正弦信号采样序列对应的离散相位序列为,线性相位增量,为一常量,且只与频率有关。由此可见,频率与相位增量有一一对应的关系,即相位增量一定时,频率也随之确定,这是NCO技术的起点。数字处理中必须进行相位量化,正弦信号一个周期经历的相位为,若将均匀量化为等分,频率所对应的相位增量取其中的等份,则有:,,即,也就是说频率为正弦信号经采样频率采样后,其量化序列的相邻样本之间的量化相位增量为一不变量,改变也就改变了频率,不变量被称相位增量,又因为是决定输出频率的参量,因而又被称为频率控制字(FrequencyControlWord,FCW),式6-1可以写成式6-2的形式(6-2)这样可以认为是经过采样频率取样而得到的样本序列。根据奈奎斯特采样定理,当时,经过低通滤波器平滑后,可以唯一重构信号。式6-2中为频率控制字,称为NCO的模,在实际应用中,一般取,则NCO方程可写为。根据以上分析,NCO的实现过程实质是从不变量到离散时间序列的变换过程,这个过程可以由两次变换来实现:(1)从不变量到以采样率产生量化的相位序列;(2)从离散量化的相位序列产生对应的正弦信号的离散幅度系列。(3)从不变量到以采样率产生量化的相位序列的过程,一般由一个被频率为的时钟驱动的进制累加器来实现。在NCO中,进制的累加器被称为相位累加器,累加器中的寄存器称为相位寄存器。每来一个时钟,相位寄存器以步长增加,相位寄存器的输出与相位控制字相加,然后输入到波形ROM地址上,正弦相位在[0,2)区间的周期性等效映射特性正好与M进制累加器的周期性溢出相对应,其结构如图6-1所示。图6-1进制相位累加器结构图从离散量化的相位序列产生对应的正弦信号的离散幅度序列,这个过程可由式6-2的映射关系所构成的波形ROM的寻址来完成,其中为幅度量化字长,[]算符代表取整运算。(6-3)这时量化的相位作为波形ROM的寻址地址,而对应的量化的波形系列是ROM波形存储器中对应该地址的内容,如图6-2所示。图6-2相位幅度变换原理图以上是理想情况下NCO的实现过程,在实际电路实现过程中有许多的限制,其中最主要的就是波形ROM存储量的限制,为提高分辨率,NCO的相位累加器一般都具有较长的字长,可达到28~32位。如果全部的相位信息都用来寻址波形表,即使只有28位字长,ROM的容量也将达到256M,这在工程上是没有意义的,解决问题的办法就是只用相位累加器的位输出中的高A位去寻址波形表(>A),而舍弃B=-A位低位有效位,相位截断减小了查询表长度,而并不影响频率分辨率,对最终输出仅增加一个很小的相位噪声。一个具有相位截断误差和幅度量化误差的NCO如图6-3所示。为频率控制字,为相位累加器字长A为波形ROM的地址线数目,为ROM数据字长。图6-3实际的NCO原理图6.1.2NCO使用在本系统设计中采用NCO来产生载波,由于NCO的输出相位以及频率均可控,故易于实现QPSK调制。在QuartusII中有Altera公司提供的NCOIPcore。我们可以通过调用该IP来实现NCO。调用方法如下:打开Quartus中的Tool菜单选择MegaWizardPlug-INManage。如图6-4所示。选择Createanewcustommegafunctionvariation。图6-4MegaWizard工具栏(b)图6-5为NCO模块图标。其中clk为时钟输入,phi_inc[31..0]为频率控制字输入,reset_n为复位信号、clken为使能信号、phase_mod[13..0]为相位控制字输入、f_sin[11..0]为正弦输出、f_cos[11..0]为余弦输出。图6-5NCO模块(c)图6-6为FIR低通滤波器设置栏将频率控制字设为32位,相位控制字设为14位,将输出信号设为12位。该工具栏中可以将频率控制字计算出来。如若要求输出信号为30MHz,则频率控制字输入需为1288490189。图6-6FIR低通滤波器工具栏6.2数据比特串/并转换模块设计输入数据为串行数据流,而在QPSK中须将串行数据变为两位并行数据。在串并转换后,各路数据的速率为原来数据率的一半。在此将奇数比特分入I路,将偶数比特分入Q路。6.2.1模块功能实现在QuartusII已经创建的工程中添加VerilogHDL文件,输入编写的串/并转换程序,保存、编译、综合分析之后就可以生成一个串并转换模块。其中clk为时钟信号,data_in为数据信号,rst为复位信号具体生成模块out_va为给下一模块的锁存信号,data_out为双比特输出信号,如图6-7所示。代码见附录。图6-7串/并转换(tra)模块6.2.2数据比特串/并转换模块仿真图6-8为串/并转换模块仿真结果图6-8串/并转换模块仿真结果out_va为输出有效信号,当out_va给出一个上升沿时该模块的下一模块将输出dataout读入并进行处理。6.3相位映射模块设计QPSK,实际为四相移相键控,故已调信号有四种相位。输入数据经过串并转换后变成了双比特,可以映射为四种相位。相位映射关系见表5-1。6.3.1模块功能实现在QuartusII显示工程中新建VerilogHDL文件,输入编写程序代码,保存后就可以生成相位选择模块。模块图标如图6-9所示。其中clk为时钟信号,ph_selector为双比特选择输入信号,reset_n为抚慰信号,phase_mod为相位控制字输出信号,phase_va为输出有效信号。代码见附录。图6-9相位映射模块相位映射模块的输入为双比特,输出为相位控制字。在本设计中NCO已选择为14位相位控制字,所以由6.1中的NCO的原理可得表6-1中的对应关系表6-1iphase_mod2048614410240143366.3.2相位选择模块仿真图6-10为相位选择模块仿真结果。图6-10相位选择模块仿真图中在时钟上升沿读入双比特数据进而进行相位选择,再输出相应的相位控制字,以便NCO模块根据相位选择字输出初始相位不同的载波。6.4数字低通滤波器的介绍及使用所谓数字滤波器是指输入、输出均为数字信号,,通过一定运算关系改变输入信号所含频率成分的相对比例,或者滤除某些频率成份的器件.数字滤波器在数字信号处理中应用广泛,数字滤波器分类有:数字低通、数字高通、数字带通、数字带阻、数字全通、最小相移、成形滤波器等。与模拟滤波器相比,数字滤波的优点是::(1)精度和稳定性高;(2)系统函数容易改变,所以灵活性高;(3)不要求阻抗匹配;(4)便于大规模集成.本设计中用到了数字低通滤波器来达到率除高频成分的目的。6.4.1数字低通滤波器介绍数字滤波器包括有限长脉冲响应滤波器(FIRfilter)和无限长脉冲响应滤波器(IIRfilter),它们的系统函数分别为:(6-4)从结构上看,FIR数字滤波器采用非递归结构,,IIR数字滤波器采用递归结构。.IIR数字滤波器的相位特性是非线性的,在数据传输、图像处理等携带波形信息的系统对线性相位要求很高,而FIR很容易做到严格的线性相位特性,因此介绍FIR数字滤波器的设计方法有一定实用意义。.FIR数字滤波器的窗函数设计方法FIR数字滤波器的设计是选择有限长度(长度为N)的单位脉冲响应h(n),,使其传输函数满足技术要求.FIR数字滤波器的设计问题就是要求所设计的FIR数字滤波器的频率响应去逼近所要求的理想滤波器的响应.从单位取样序列来看,就是使所设计的滤波器的逼近单位取样响应序列.而且(6-5)设理想低通滤波器的传输函数为,它的表达式如下:(6-6)边界频率是不连续点,相应的单位取样响应(6-7)可见,理想低通滤波器的单位取样响应是无限长的,从-∞~+∞,且是非因果序列.的波形如下图中所示.因此为了构造一个有限长度为的线性滤波器,只有将截取一段,使之关于a=(–1)/2对称.对的截取实际上是对其做加窗处理,即让其与一个窗函数相乘,窗函数的形状有矩形窗、海明窗和布莱克曼窗等.这里以矩形窗为例,设矩形窗的长度为,如下图示.对加窗处理后,得=*,的波形如下图示,这样就用一个有限长序列去代替.图6-11为加窗示意图。图6-11加窗示意图数字低通滤波器的频率响应为:图6-12数字低通滤波器的频率响应6.4.2数字低通滤波器调用Quartus中有FIR数字滤波器的IPcore,我们可以调用该IPcore来实现一个滤波器。调用方法如下:(a)打开Quartus中的Tool菜单选择MegaWizardPlug-INManage。图6-13MegaWizard工具栏(b)图6-14为模块图标,其中clk为抽样率,ast_sink_data[23..0]为输入数据,reset_n为复位信号ast_source_data[34..0]为输出数据。图6-14FIR低通滤波器在FIR工具栏中设置相关参数以满足设计要求。在此设计低通滤波器,将抽样率设为100MHz、截止频率为100KHz、窗口类型为汉宁窗、点数为39点。6.5数字乘法器的介绍及使用本设计中解调端需从接收信号中提取出传输信息,必须将信号从载波频段搬移到基带,由数学知识可知用载波与一条信号相乘并用低通滤波器滤除高频便可得到传输信息,故而本设计中必须采用乘法器。在Quartus中提供了数字乘法器的IPcore,所以我们可以很方便的实现实例化一个乘法器。调用方法如下,同样是在Tool中选择MegaWizardPlug-INManage。在Arithmetic中选择LPM_MULT,进而打开工具栏进行设置。输入数据宽度为12位,由于设计要求该乘法器的乘法类型为signed。图6-15为数字乘法器图标,其中dataa[11..0]、datab[11..0]为输入数据、result[23..0]为相乘结果。图6-15数字乘法器6.6接收端抽样判决模块设计接收端信号经过相干解调(与载波相乘并经过低通滤波器)后,信号须经过抽样判决来恢复原始信号。已调信号为:,其中取、、、(6-8)已调信号与I路载波相乘:(6-9)经低通滤波器为:表6-2加入表的名称加入表的名称+--+已调信号与Q路载波相乘:(6-10)经低通滤波器为:表6-3加入表的名称加入表的名称++--综上,在调制端0映射为+1、1映射为-1,在信道理想的情况下可以将判决门限设置为0;判决规则为:大于0为0、小于0为1。如果在非理想信道费力相信到中,则门限值会有所变化。6.6.1模块功能实现在QuartusII显示工程中添加VerilogHDL文件,输入编写的硬件程序,经过编译生成的identify模块具体形式如图6-16所示,其中en为使能信号,clk为时钟信号,rst为复位信号,I[34..0]为I路解调经滤波后的信号,Q[34..0]为Q路解调经滤波后的信号,IQ为判决输出。代码见附录。图6-16抽样判决模块6.6.2模块仿真图6-17为抽样判决模块仿真结果。图6-17模块仿真图中模块在使能后先对I路输入作判决,为负辅则输出1,为正则输出0;在count_i为10时对Q路输入信号进行判决,规则同I路。6.7数据发生模块设计在调试时需要有数字信号输入,故需要有一个数据发生器来产生一定比特率的数字信号。6.7.1数据发生器模块实现设计思路是写两个m序列发生模块,再写一个数据选择模块,构成一个数据发生模块。在QuartusII显示工程中添加VerilogHDL文件,输入编写的硬件程序,经过编译生成各个模块,然后组合成ss模块。m序列发生模块两个m序列发生器图标如图6-18所示,clk为时钟输入,en为使能信号,rst为复位信号,data为数据输出,load为输出有效信号。代码见附录。图6-18数据选择模块en为使能信号,sel为选择信号,data_0,data_1为数据输入,data为数据输出,sel_load为输出有效信号。代码见附录。图6-19数据选择模块数据发生模块数据发生模块由两个m序列发生模块,一个数据选择模块组成,图标如图6-20所示。clk为时钟输入,en为使能信号,rst为复位信号,sel为选择信号,data_0,data_1分别为0路数据与1路的数据输出,da_out为选择的数据输出,sel_load为输出有效信号,,load_0、load_1分别为0路数据与1路数据的输出有效信号。代码见附录。图6-20数据发生器模块6.7.2数据发生模块仿真结果数据发生模块仿真结果如图6-21所示。6-21数据发生模块仿真结果可以发现sel取值不同,输出da_out也会随之发生变化。6.8数据存储模块设计在做调试时产生载波的NCO需要有固定的频率控制字输入,在解调端,NCO需要有固定的相位选择字输入,所以需要设计一个存储器来固定地输出一个32位并行数据以及一个14位并行数据。6.8.1数据存储模块实现该模块的功能是始终输出固定的并行数据。模块图标如图6-22所示,其中en为使能信号,phi_in[31..0]与phase_mod[13..0]分别为32位输出与14位输出。代码见附录。图6-22数据存储模块6.8.2数据存储模块该模块仿真结果如图6-23所示。图6-23数据存储模块仿真若将输出phi_in[31..0]与phase_mod[13..0]分别接至NCO,则输出载波频率为20MHz,初始相位为。6.9分频模块设计分频模块主要用来将输入时钟分至所需频率,本设计中为100分频。模块图标如图6-24所示,其中en为使能信号,c_out为分频输出,f_valid为输出有效信号。在本设计中分频器的输出给数据发生器,因为载波频率须为数字信号的比特率的整数倍,否则QPSK信号的初始相位不会恒为、、、中的一个,可能会出现其他的相位,这是系统所不能允许的。代码见附录。图6-24分频模块7数字QPSK调制解调系统的仿真在设计完系统之后,仿真是很重要的一个环节。我们可以利用仿真软件对已以设计的系统进行功能仿真以验证所涉及系统与预期是否一致。在本设计中采用QuartusII中的仿真软件进行功能仿真。仿真分为调制端仿真、解调端仿真以及系统仿真。7.1调制器仿真调制端由信号发生器、串并转换器、相位映射模块、NCO模块、存储器模块等模块组成。经过调制后输出的信号认为数字信号,此信号相当于模拟的已调信号经A/D转换后的数字信号。7.1.1调制端顶层文件图7-1为调制端的顶层文件,其中clk为100Mhz时钟输入、data_en为数据使能信号、sel为数据选择信号、rst为复位信号、en为存储模块、data_in为调制器的输入信号、f_module为调制输出信号。分频器将输入时钟分频并输出值至ss模块,ss模块为数据发生模块,其中能产生有两路数据,sel为选择信号,为0时选择0路,为1时选择1路,产生的数据比特率为1Mbps。图7-1调制端顶层文件7.1.2调制端仿真结果调制端输出信号为12位并行数据,该信号接至截止D/A即可构成发送端。现仿真结果如图7-2所示。图7-2调制端仿真结果7.2解调端仿真图7-3为解调端的顶层文件,其中clk为100MHz时钟、rst为复位信号、en为存储器的使能信号、NCO的f_sin输出为I路载波、f_cos为Q路载波、error_in[0]与error_in[1]为错误输入(给0即可)、f_module为已调信号(来自调制端的输出信号)、demodu_out为解调输出(理想情况与调制器输入信号相同)。由于解调端需要解调借条输入故解调端的仿真只能把调制端的输出信号接至解调端输入才能验证解调端的正确性。图7-3解调端顶层文件7.3系统整体仿真结果将调制端的输出接至解调端的输入,即构成一个在理想信道下传输信息的简单的通信系统。通过仿真得到仿真结果如图7-4所示。其中输入时钟clk为100MHz、复位信号rst为异步复位信号、sel为数据选择信号(ss模块有两路数据sel为0选择data_0为1选择data_1)、en为存储器使能信号(在调试时使之恒为1)、error_in为0、demodu_out为解调输出。另外图中有一个寄存器的变化情况(为buffer)这是串并转换后的双比特数据。图7-4系统仿真结果8结论本设计主要目的是实现调制解调器的功能,调制器与解调器的各个哥哥模块由VerilogHDL来编写。在整个设计过程中编写了串并转换模块、相位选择模块、抽样判决模块等功能模块。另外调用了NCO模块来产生载波信号,调用了乘法器与FIR低通滤波器来实现解调。在调试过程中,由于需要编写了100分频器模块、数据发生模块、数据存储模块等。整个流程是:产生输入比特,进入串并转换模块其,输出双比特,进入相位选择器进行相位选择,输出相位选择字,输入NCO输出不同相位的载波在波(实际上是已调信号);调制完成后将NCO输出传至D/A,在接收端由A/D将模拟信号转换为数字信号;从A/D出来的信号分别与I路载波Q路载波相乘,经过低通滤波器,然后进入抽样判决器进行抽样判决,其中还要实现并串转换,最后得到原始信号(即输入端产生的数据)。本课题在肖老师的悉心指导和耐心帮助下,我成功地完成了调制与解调器的设计,。并且对设计结果进行了仿真与调试。本文基于FPGA实现了QPSK调制解调器的设计对其它类型的调制解调电路也有一定的参考作用。此次设计经历加深了我对调制解调的认识,使我充分认识到了理论转化为实际的必要性与实践的重要性。另外,通过本次设计,我掌握了一些模块的用法,熟悉了VerilogHDL的编程与调试。通过此次做毕业设计我收获很大。致谢本文是在肖珂老师精心指导和大力支持下完成的。肖老师以其严谨求实的治学态度,高度的敬业精神,兢兢业业、孜孜以求的工作作风和大胆创新的进取精神以及幽默的指导方式对我的学习起了很大影响。他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。在此次毕业设计过程中我学到了许多关于工程开发应用方面的知识,实验技能有了很大的提高。另外,我还要特别感谢实验室的老师、研究生师兄、师姐们对我毕业设计的指导。同时我还要感谢周围的同学们,他们也给了我很大的帮助。最后,再次对关心、帮助我的老师、同学、亲人和朋友表示衷心地感谢!参考文献[1]王金明,冷自强.EDA技术与Verilog设计.北京:科学出版社2008[2]田耘,徐文波,张延伟.无线通信FPGA设计.北京-电子工业出版社2008[3]宁广志,全录贤.QPSK数字化解调中载波同步技术研究.无限通信技术2006[4]华为技术公司.VerilogHDL入门教程[M].华为FPGA设计规范[5]于晓丰.QPSK调制系统性能仿真分析北京航空航天大学.电子工程系。电磁兼容实验室[6]刘泓,陈景新.QPSK全数字解调算法.应用科学学报.1994(l2):4O9-415[8]刘建军,李杰,赵恩宝浅谈QPSK调制技术,中国有线电视,2004(09/10)[7]周炯槃,庞沁华,吴伟陵,续大我,杨鸿文通信原理(第三版)北京:北京邮电大学出版社2008[8]基于Matlab的FIR低通滤波器的设计与仿真郭德才(吉林大学四平链传动制造有限公司,吉林四平136000)[9]任爱芬,初秀琴,常存等.基于FPGA的嵌入式系统的设计.西安:西安电子科技大学出版社,2004[10]张延伟,杨金岩,葛爱学等编著.VerilogHDL程序设计实例详解.北京:人民邮电出版社,2008[11]周立功等编著.SOPC嵌入式系统基础教程.北京:北京航空航天大学出版社

,2006[12]江国强编著.SOPC技术与应用.北京:机械工业出版社,

2006[13]侯建军,郭勇编著.SOPC技术基础教程.北京:清华大学出版社,

2008[14]Altera公司组编.NiosII嵌入式处理器设计大赛:2006年优秀作品精选集.西安:西安电子科技大学出版社,

2007[15]孙恺,程世恒编著.NiosII系统开发设计与应用案例.北京:北京航空航天大学出版社,

2007[16]黄子强编著.液晶显示原理.北京:国防工业出版社,

2006[17]李维諟,郭强编著.最新液晶显示应用.北京:电子工业出版社,2006[18]李文元等编著.电视原理实验.北京:国防工业出版社,

2004[19]杜建国编著.VerilogHDL硬件描述语言.北京:国防工业出版社,2004[20]陈曦,邱志成,张鹏,何初冬等.基于VerilogHDL的通信系统设计北京中国水利水电出版社,2009[21]杜慧敏,赵全良,李宥谋.基于Verilog的FPGA设计基础西安:西安电子科技大学出版社,2006[22][美]ZainalabedinNavabi.VerilogHDL数字系统设计.北京:电子工业出版社,2007[23]AlteraDatasheet,NCOComPilerMegacoreFunctionUserGuide,2.3.0,2005.10[24]HaoYang,ZhenHuiLin,XiongfeiCai.DesignofAQPSKDemodulatorforDVB-SReceiverASICChip。IEEE。2004:2075-2078[25]HARDWAREEFFICIENTBPSKANDQPSKDETECTOR.IEEE,2002:1060-1063附录1.串并转换模块源程序代码如下:moduletra(clk,rst,data_in,out_va,data_out);inputclk;inputdata_in;inputrst;outputout_va;output[1:0]data_out;regbuff;reg[1:0]buffer;reg[5:0]count;assigndata_out=buffer;assignout_va=buff;always@(posedgeclkornegedgerst)if(!rst)begincount<=0;buffer<=2'b0;buff<=0;endelsebeginif(count==0)beginbuffer<={buffer[0],data_in};endelseif(count==10)beginbuffer<={buffer[0],data_in};buff<=0;endif(count==19)beginbuff<=1;count<=count+1;endelsecount<=count+1;endendmodule//每10个时钟周期为1bit,每20个时钟周期将串行数据变为并行,转换后各路数据周期为20个时钟周期2.相位映射模块源程序代码如下::modulephase_selector(clk,ph_select,reset_n,phase_mod,phase_va);inputclk;inputreset_n;input[1:0]ph_select;output[13:0]phase_mod;outputphase_va;regbuff;reg[13:0]sub_reg0;assignphase_mod=sub_reg0;assignphase_va=buff;always@(posedgeclkornegedgereset_n)begin if(reset_n==1'b0) begin sub_reg0<=0; buff<=0; end else begin buff<=1; case(ph_select[1:0]) 0: begin sub_reg0[13:0]<=2048;//pi/4 end 1: begin sub_reg0[13:0]<=14336;//7pi/4 end 2: begin sub_reg0[13:0]<=6144;//3pi/4 end 3: begin sub_reg0[13:0]<=10240;//5pi/4 end default: begin sub_reg0[13:0]<=0; end endcase endendendmodule3.抽样判决模块源程序代码如下:moduleidentify(en,clk,rst,I,Q,IQ);inputen;inputclk;inputrst;inputsigned[34:0]I,Q;//输入信号为有符号数outputIQ;regIQ_buff;reg[5:0]count_i;assignIQ=IQ_buff;always@(posedgeclkornegedgerst)if(!rst)begincount_i<=6'b0;IQ_buff<=0;endelsebeginif(en==1)beginif(count_i==0)beginif(I[34]==1)IQ_buff<=1;//若输入为负,则判定为1elseIQ_buff<=0;//若输入为正,则判定为0end

温馨提示

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

评论

0/150

提交评论