为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于FPGA的数字上变频设计毕业设计论文说明书

2018-09-23 5页 doc 2MB 32阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
基于FPGA的数字上变频设计毕业设计论文说明书 毕业设计(论文)说明书 题 目: 基于FPGA的数字上变频设计 院 (系): 信息与通信学院 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发 摘 要 数字变频技术在软件无线电和各类数字化发射接收机中得到了广泛应用。由于数字信号处理器(DSP)的处理速度有限,往往难以对A/D采样得到的高速率数字信号直接进行各种类别的实时处理。为了解决这一矛盾,需要采用数字变频技术,将采样得到的高速率信号变成低速率基带信号,以便进行下一步的信号...
基于FPGA的数字上变频设计毕业设计论文说明书
毕业设计(论文)说明书 题 目: 基于FPGA的数字上变频设计 院 (系): 信息与通信学院 题目类型: 理论研究 实验研究 设计 工程技术研究 软件开发 摘 要 数字变频技术在软件无线电和各类数字化发射接收机中得到了广泛应用。由于数字信号处理器(DSP)的处理速度有限,往往难以对A/D采样得到的高速率数字信号直接进行各种类别的实时处理。为了解决这一矛盾,需要采用数字变频技术,将采样得到的高速率信号变成低速率基带信号,以便进行下一步的信号处理。用现场可编程阵列(FPGA)来设计数字上下变频器有许多好处。FPGA在硬件上具有很强的稳定性和极高的运算速度,在软件上具有可编程的特点,在某些专用芯片不能完全满足系统技术指标的情况下,所以采用FPGA来设计数字下变频器更是一种好的解决。 本文基于数字上变频的基本原理,利用FPGA 器件的各种优势,在FPGA 开发工具Quartus II上完成了数字上变频的设计、综合,并最终在Modelsim上实现了仿真。首先介绍数字上变频及其各模块的原理和实现,然后再通过编写Verliog HDL语言及调用IP核来实现各个模块功能,最后通过原理图的构造来整体实现数字上变频。并通过Modelsim的仿真以验证数字上变频的正确性。 关键词:数字上变频;FPGA;插值;HB滤波器;CIC滤波器 Abstract Digital Frequency Conversion Technology in Software Defined Radio and various types of digital launch or receivers have been widely used. As the digital signal processor (DSP) processing speed is limited, often it is difficult for A / D sampling rate to be high-speed digital signal directly to the various categories of real-time processing. In order to resolve this contradiction, the need for digital up or down conversion technology, high-speed sampling rate of signals to be turned into a low rate of base-band signal for the next stage of signal processing. With field-programmable array (FPGA) to the design of digital down-converter has many advantages. FPGA hardware has strong stability and high computational speed, the software has programmable features, and in some special DDC chip technology can not completely meet the indicators, so the number of used FPGA to design the next converter is a good solution. Digital Up Converter Based on the basic principles of the use of the various advantages of FPGA devices, development tools in the FPGA on the Quartus II. DUC completed the design, integration, and ultimately the realization of the simulation in Modelsim. First introduced the principle of digital up conversion and of each module, and then Verliog HDL language by writing and calling IP nuclear to achieve each module function, and finally, through the schematic diagram of the structure to the overall realize frequency in the figures. And through the simulation Modelsim to verify the correctness of the digital frequency. Finally, through the Modelsim simulation to verify the accuracy of the up-conversion. Keywords:DUC; FPGA; interpolate; HB filter;CIC filter 目 录 1 引言 2 1 绪论 2 1.1 数字变频技术简介 2 1.2 数字上下变频技术的应用发展及现状 3 1.3 课题研究内容及设计方案 4 2 FPGA系统设计基础 4 2.1 FPGA简介 4 2.2 FPGA基本结构 5 2.3 FPGA的基本设计流程 6 2.3.1 设计输入方式和软件 6 2.3.2 仿真的方法和软件 7 3 数字上变频技术理论基础 7 3.1 数字上变频原理概述 7 3.1.1 数字混频正交变换 8 3.1.2 影响数字上变频性能的主要因素 9 3.1.3 数字上变频的基本原理 9 3.2 多速率信号处理 9 3.2.1多速率信号处理理论 10 3.2.2 整数倍内插 11 3.3 高效数字滤波器 12 3.3.1 CIC滤波器 14 3.3.2 HB半带滤波器 15 3.4 DDS的实现原理 17 4 各模块设计实现原理 17 4.2 DDS设计 18 4.1.1 相位累加器 18 4.1.2 正弦查找表 20 4.2 内插滤波器设计 20 4.2.1 HB半带滤波器设计 21 4.2.2 CIC滤波器设计 22 4.3 混频器设计 24 5 数字上变频仿真与验证 24 5.1 Modelsim仿真软件介绍和特点 25 5.2 Modelsim仿真方法 25 5.2.1 前仿真 25 5.2.2 后仿真 25 5.3 Modelsim 仿真的基本步骤 28 5.4 仿真结果 31 6 结论 32 谢 辞 33 参考文献 34 附录 引言 近年来,软件无线电理论正逐渐趋于成熟与完善,软件无线电技术已经被越来越广泛地应用于蜂窝通信及各种军用和民用的无线通信系统中。作为软件无线电接收机的核心技术之一,数字上下变频技术也得到了越来越普遍的应用。 上变频是将具有一定频率的输入信号,改换成具有更高频率的输出信号。理论上,在软件无线电系统发送端,将已调制好的基带信号通过脉冲成型滤波进行整形、采样抽取等,并经过插值滤波来提高采样速率,之后与本地的数控正交振荡器混频,得到I/Q正交信号,进行数字混频后,再经过数模转换(DAC)后转换成直接中频输出。 现场可编程门阵列(FPGA)具有功能强大,开发过程投资小、周期短,可反复编程修改,保密性能好,开发工具智能化等特点,正好充分发挥了软件无线电可编程能力强,易于升级的特点。用FPGA实现数字上变频器的设计,不仅降低了产品成本,减小了设备体积,满足了系统的需要,而且比专用芯片具有更大的灵活性和可控性。 随着软件无线电技术理论的发展以及大规模集成电路的广泛使用,原来的模拟系统的基带处理部分采用数字电路逐渐数字化、软件化。数字上变频技术( Digital Up Converter—DUC)是软件无线电的核心技术之一,也是计算量最大的部分,一般通过FPGA或专用芯片等硬件实现。虽然现在专用的数字下变频芯片品种很多,但是它们在设计和修改方面远远不如FPGA灵活,使用FPGA替代专用的数字上变频芯片更加符合软件无线电的思想。 1 绪论 1.1 数字变频技术简介 数字变频技术在软件无线电中占有非常重要的地位。软件无线电是一种以现代通信理论为基础,以数字信号处理为核心,以微电子技术为支撑的新的无线通信体系结构。它的实现是以一个通用、标准、模块化的硬件平台为依托,通过软件编程来完成无线电台的各种功能,从基于硬件、面向用途的电台设计方法中解放出来。软件无线电强调体系结构的开放性和全面可编程性,通过软件的更新改变硬件的配置结构,实现新功能,并有利于硬件模块的不断升级和扩展。目前,软件无线电中所涉及的关键技术主要有带多频段天线与宽带低噪声前置放大器、功率放大器、A/D部分、数字下变频、高速数字信号处理、数字上变频和信令处理等,本文介绍的就是软件无线电中数字上变频器的研究。 系统最突出的特点有:首先,具有完全的可编程特性,无线波段、接入方式、调制方式和数据速率等都可以通过软件来加以控制;其次,对整个中频频带甚至射频进行采样,增大了处理的带宽,利用高速DSP和软件处理,完成被传输信号从基带到射频之间的整个处理过程。 1.2 数字上下变频技术的应用发展及现状 随着近年来现场可编程门阵列(FPGA)器件和通用数字信号处理器(DSP)在芯片逻辑规模和处理速度等方面性能的迅速提高,用硬件编程或软件编程方式实现无线功能的软件无线电技术在理论和实用化上都趋于成熟和完善。软件无线电技术只需通过软件上的更新就能够选择不同的业务或调制方式、追加和修改功能,具有传统硬件方式所无法比拟的灵活性、开放性和可扩展性。因此,软件无线电技术已经被越来越广泛地应用于蜂窝通信及各种军用和民用的无线系统中。 软件无线电的核心思想是对天线感应的射频模拟信号尽可能的直接数字化,将其变换为适合DSP器件或计算机处理的数据流,然后通过软件来完成各种功能。在现阶段,由于受各种关键器件,特别是受ADC/DAC(模数、数模变换器)采样速率、工作带宽和通用DSP器件处理速度的限制,数字中频软件无线电正成为理想软件无线电的一种经济、适用的折中选择。在目前大多数软件无线电接收机中,一般先经模拟下变频至适当中频,然后在中频用ADC数字化后输出高速数字中频信号,再经数字下变频器(Digital Down Converter-DDC)的变频、抽取和低通滤波处理之后变为低速的基带信号,最后将基带信号送给通用DSP器件作后续的解调、解码、抗干扰、抗衰落、自适应均衡等处理。这样大大降低了对ADC和DSP器件性能的要求,便于实现和降低成本。数字上变频(Digital Up Converter-DUC )与下变频是相对应的过程,DSP处理后的基带数字信号经过内插、滤波和上变频后,将信号传给DAC来完成后续的模拟处理环节。数字上下变频器在这里起到ADC/DAC和通用DSP器件之间的桥梁作用。因此,数字上下变频技术己经成为软件无线电接收机的核心技术之一,通用数字上下变频器也被越来越广泛的应用到各种军、民用无线通信设备以及电子战、雷达和信息化家电等领域。 自从GrayChip公司推出第一个单信道数字下变频专用芯片以来,数字上下变频器件的发展也很迅速。目前,最著名、产品应用最广泛的公司有美国的Harris(1999更名为Intersil公司)、AD公司和Graychip等公司。DDC代表产品有Harris公司的HSP50016, HSP50214系列;AD公司的AD6620, AD6624; Graychip公司的GC1011系列、GC1012系列等.DUC的产品有Harris公司的HSP50215;Graychip公司的GC4114等。这些器件都具有较优异的性能参数和较强的功能。许多型号的DDC芯片(如Intersil公司的HSP50214B)事实上其功能己远远不只是下变频,还包括了成形滤波器、定时同步内插滤波器、重采样NCO、坐标变换、数字AGC等功能其芯片内部的各个功能模块均是可编程的,将其与通用DSP器件结合,便可构成一个标准的数字化多模式软件无线电接收机硬件平台。“数字上下变频”在软件无线电中的意义已不再仅仅是简单的上下变频概念了。 1.3 课题研究内容及设计方案 本课题以变频技术为理论知识,以FPGA技术作为设计的技术手段,通过软件设计并实现数字上变频系统。具体实施起来应该先了解通信原理的相关知识,仿真软件的应用,变频器的原理及设计方法,利用FPGA设计固定参数的上变频器,提出结构框图,对所设计的原理图进行仿真并计算,分析仿真结果多所设计变频器参数进行修正,使之符合要求,最后对上变频器的仿真、调试与完善并测试该变频器的性能指标。 本课题的工作流程如下安排,后续章节将围绕该设计步骤顺序对本次课题研究进行详细叙述。 (1)首先要理解数字上变频的基本原理,了解通信原理的相关知识。 (2)然后确定上变频器的总体实现方案,深入学习并掌握仿真软件的应用,功能和实际实现方法,并思考如何用软件来实现频谱搬移的功能。 (3)学习并能够熟练使用EDA工具完成设计流程,采用 verilog语言,自行编写各关键功能模块的硬件描述语言程序。并给出仿真波形图,反复对各模块进行改进,以求仿真波形最佳。利用FPGA设计固定参数的上变频器,提出结构框图,对所设计的原理图进行仿真并计算,分析仿真结果;反复对各模块进行改进,对所设计的变频器参数进行修正,以求仿真波形最佳。 (4)最后对所设计的上变频器进行仿真、调试与完善,并测试该变频器的性能指标。能够通过上变频器完成频谱的搬移。 本文首先概括性的介绍了数字上变频技术的理论基础,第二章对用到的工具FPGA进行了简要的介绍说明;第三章对上变频各个模块的关键技术有正交变换原理、多速率信号处理、高效数字滤波结构以及数控振荡器、混频器进行了一一阐述,第四章是本论文的重点,对上变频的设计思路和具体工作做出了详细的说明介绍;在第五章给出了系统的调试和验证结果。 2 FPGA系统设计基础 2.1 FPGA简介 FPGA(Field Programmable Gate Array)即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA具有静态可重复编程或在线动态重构特性,使硬件的功能可像软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。利用FPGA,设计人员可以在实验室中设计出专用IC,实现系统的集成,从而大大缩短了产品开发、上市的时间,降低了开发成本。以FPGA为代表的数字系统现场集成技术正朝着低功耗,高频率、高灵活性的方向发展。它不仅为数字电路的设计提供了很大的方便,而且在很大程度上改变了以往数字系统设计、调试、运行的工作方式。 首先,它使硬件的设计工作更加简单方便了。因为电路的逻辑功能可以由编程数据设定,而且能在线装入和修改,所以硬件的设计和安装完全可以一次完成,这样就节省了修改硬件电路耗费的人力和物力。而且对几种不同功能的逻辑电路可以采用相同的硬件电路,这也减少了许多硬件设计的工作量。 其次,在调试过程中通过写入编程数据很容易将电路设置成各种便于调试的状态,对电路进行测试,这比通过直接设置硬件电路的状态要方便得多。 最后,FPGA(一次性编程的除外)技术无需编程器和较高的编程电压,打破了先编程后装配的惯例,形成产品后还可以在系统内反复编程,可以快速有效地设计开发,加快系统预制及器件功能升级,减少电路走线,大大减少设计时间,缩短开发周期。 总之,FPGA的使用非常灵活,对于同一片FPGA,通过配置不同的编程数据可以产生不同的电路功能。目前,FPGA在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域已经得到了广泛的应用。 2.2 FPGA基本结构 目前生产FPGA的公司主要有Xilinx、Altera、Actel、Lattice、QuickLogic等,生产的FPGA品种和型号繁多。尽管这些FPGA的具体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。 典型的FPGA通常包含六部分,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。具体介绍如下: (1)可编程输入/输出单元(I/O单元) 目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。 (2)基本可编程逻辑单元 FPGA的基本可编程逻辑单元是由查找表(LUT)和寄存器(Register)组成的,查找表完成纯组合逻辑功能。FPGA内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。 学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或者是DLL,专用的Hard IP Core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。 (3)嵌入式块RAM 目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。CAM,即为内容地址存储器。写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单的说,RAM是一种写地址,读数据的存储单元;CAM与RAM恰恰相反。 除了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。 (4)丰富的布线资源 布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分:一,全局性的专用布线资源:以完成器件内部的全局时钟和全局复位/置位的布线;二,长线资源:用以完成器件Bank间的一些高速信号和一些第二全局时钟信号的布线;三,短线资源:用来完成基本逻辑单元间的逻辑互连与布线;还有其他在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。 由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。其实布线资源的优化与使用和实现结果有直接关系。 (5)底层嵌入功能单元 (6)内嵌专用硬核 与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有FPGA器件都包含硬核。 目前绝大部分FPGA都采用查找表(Look Up Table,LUT)技术,如Altera的ACEX、APEX、Cyclone、Stratix系列,Xilinx的Spartan、Virtex系列等。 2.3 FPGA的基本设计流程 FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般如图2一2所示,包括电路设计、设计输入、功能仿真、综合优化、综合后仿真、实现与布局布线、时序仿真与验证、板级仿真与验证,以及芯片编程与调试等主要步骤。 图2.1 FPGA设计流程图 2.3.1 设计输入方式和软件 设计输入方式主要有两种:原理图设计和硬件描述语言设计。现在主要流行的方式是用硬件描述语言设计(VHDL或Verilog HDL),而其中在亚洲许多国家和美国主要利用Verilog HDL语言设计,VHDL多是在欧洲和其它地区使用。而对于设计工具来说,这两种语言都是支持的,并且综合出来的模块也是可以混合利用的。 对于设计软件,一般是每个FPGA提供商就有一套专门设计用的软件。例如xilinx公司针对自己产品的ISE 9.0设计软件,该软件也包含仿真、综合、时序分析等全部功能。还有Altera公司的QuartusII8.0支持最新的cycloneII系列器件的整个设计流程。此外,Lattice公司的ispLEVER 7.0,FPGA Advantage等。在本设计中我采用的是Altera公司的QuartusII8.0。 2.3.2 仿真的方法和软件 仿真的方法主要有两种: (1)交互式仿真方法:利用EDA工具的仿真器进行仿真,使用方便,但输入输出不便于记录规档,当输入量较多时不便于观察和比较。 (2)测试平台法:为设计模块专门设计的仿真程序,可以实现对被测模块自动输入测试矢量,并通过波形输出文件记录输出,便于将仿真结果记录归档和比较。而使用的仿真工具最快的是Model Technology公司开发的ModelSim软件。此外仿真的方法还有利用matlab软件与EDA软件进行的联合仿真。Matlab最新版本matlab2007还支持matlab与modelsim 的联合仿真,这就大大减轻了测试工程师的工作量。 本设计中主要运用了QuartusII8.0中的VerliogHDL语言来编写各模块程序,再通过原理图连接,其中利用了Matlab2007的辅助,最后通过ModelSim6.5进行仿真,具体内容步骤在下文将做出详细介绍。 3 数字上变频技术理论基础 数字变频技术一直是软件无线电的研究重点,也是影响软件无线电系统性能的关键部分之一。 3.1 数字上变频原理概述 3.1.1 数字混频正交变换 任何物理可实现的信号都是实信号,实信号的频谱具有共轭对称性,即正负频率幅度分量是对称的,而其相位分量正好相反。所以对于一个实信号而言,只需其正频部分或负频部分就能够完全加以描述,不会丢失任何信息,也不会产生虚假信号。如只取原实信号的正频部分z(t)(由于z(t)只含有正频分量,故z(t)为复信号),那么就把z(t)做x(t)的解析表示,即: (3—1) 其中H[x(t)]叫做信号x(t)的Hilbert变换。即 (3—2) 由于Hilbert变换是正交变换,所以解析信号z(t)的实部和虚部是正交的。一个实信号的解析表示(正交分解)在信号处理中有着极其重要的作用,是软件无线电的基础理论之一,从解析信号中很容易获得信号的三个特征参数:瞬时幅度、瞬时相位和瞬时频率,而这三个特征参数是信号分析、参数测量或识别解调的基础。 对于一个实的窄带信号: (3—3) 所以窄带信号的解析表示为: (3—4) 用极坐标形式可以表示为: (3—5) 式中 称为信号的载频分量,它作为信息载体不含有用信息。将上式乘以 ,把载频下移ωc,得到基带信号(或称为零中频信号),记为 ,有: (3—6) 其中 , ,分别称为基带信号的同相分量和正交分量。基带信号为解析信号的复包络,是复信号,即基带信号既有正频分量,也有负频分量,但其频谱不具有共轭对称性,若随意剔除基带信号的负频分量,就会造成信息丢失。从以上分析可以看出,一个实的窄带信号既可用解析信号z(t)表示,也可用其基带信号(零中频信号) 来表示。 上变频是指将信号的频谱搬移到更高的频率上,若待变频信号为xa(t),变频信号xb(t)用公式表示为: (3—7) 其中ωc为搬移的频率,将基带信号搬到该频率上称为上变频(ωc为负)。将该式进行数字化,引入满足采样定理的采样周期T,则可以写为: (3—8) 简写为: (3—9) 因为xa(n)一般为复信号,有下式: = ,通常上变频后的信号只需要取其实数部分就足够了,即 (3—10) 由上式则可得到上变频的原理框图如下: 图3.1 数字上变频原理框图 3.1.2 影响数字上变频性能的主要因素 模拟上变频器中,模拟混频器的非线性和模拟本地振荡器的频率稳定度、边带、相位噪声、温度漂移、转换速率等都是人们最关心和难以彻底解决的问题。这些问题在数字上变频中是不存在的,频率步进、频率间隔等也具有理想的性能,另外,数字上变频器的控制和配置更新方便等特点也是模拟上变频器无法比拟的。但与模拟上变频相比,数字上变频器的运算速度受硬件电路处理能力的限制,其运算速度决定了DDC的最高输入信号数据率,相应的也限定了ADC的最高采样速率。另外,数字上变频的输入、输出数据精度和内部运算精度也影响着接收机的性能。 从数字上变频原理可以看出,影响数字上变频器性能的主要因素有五个: (1)数控本振所产生的正交本振信号的频谱纯度; (2)数字混频器的运算精度; (3)各种滤波器的运算精度(包括二进制表示的滤波器系数的精度); (4)滤波器的阶数; (5)数字变频器的系统处理速度。 前三点因素其本质可以归到一点,就是有限字长效应,由于有限字长,带来了数控本振的相位截断效应,也带来了整个DUC器件所有模块的样本值近似效应,根据截断和近似的程度,DUC性能会受到或多或少的影响。要提高DUC的性能,就要加宽运算字长,但字长不可能无限加宽,这就需要在DUC性能和硬件资源开销之间作一个折衷。至于滤波器的阶数,同样涉及到的是硬件资源消耗的问题。在处理速度这个问题上,可以通过利用规模换速度和采用优化算法两种手段提高系统处理速度;总的说来,性能的提高是以资源的消耗为代价的。 3.1.3 数字上变频的基本原理 上变频是将具有一定频率的输入信号,改换成具有更高频率的输出信号。数字上变频器的基本工作原理是:首先将量化后的基带信号通过脉冲成形滤波器进行处理,以适应带限信道和消除码间串扰(ISI),然后通过插值滤波器处理提高采样率,最后与正交载波进行数字混频, 按照通信调制基本理论,上变频需要将调制好的信号从基带频率搬移到射频频率。对于基带信号,其带宽般较窄,因此在很多应用场合中都是根据Nyquist采样定理,再结合工程实际,采用2.5—4倍的基带信号最高频率进行采样。而作为载波的DDS输出波形,其频率相对较高。如果用基带信号对载波进行正交调制,即是数字信号的相乘,要求基带和载波具有相同的数据速率。所以,在进行正交调制之前必须对基带数字信号进行插值滤波,提高其数据速率。 提高基带信号的数据速率有两种途径:一种是简单的数据保持方法;另一种是严格的插值滤波法。简单的数据保持法是将序列的每个采样点做简单的保持(或重复采样)直到下个采样点到来。这种近似的处理办法相当简单,但效果不佳,只适于数字调制方式或基带信号带宽很窄、对信号精度要求小高的场合。本设计采用严格的插值滤波,先经过零值内插,然后滤波得到。 3.2 多速率信号处理 3.2.1 多速率信号处理理论 在软件无线电系统中,采样定理的应用大大降低了所需的射频或中频采样速率,为后面的信号实时处理奠定了基础。但是对软件无线电的要求来看,带通采样的带宽应该越宽越好,这样对不同信号会有更好的适应性,而且采样速率越高,在相同工作频率范围内所需的“盲区”采样频率数量就越少,并对提高采样量化的信噪比也是有利的,所以在可能的情况下,带通采样速率应该尽可能地选的高一些,使瞬时采样带宽尽可能的宽。但是随着采样速率的提高带来一个问题就是采样后的数据流速率很高,导致后续的信号处理速度跟不上,所以对A/D处理后的数据流进行降速处理或叫二次采样是完全必要的。多速率信号处理技术为这种降速处理的实现提供了理论依据,其中最为重要的理论是抽取和内插,它们为数字上下变频的成功实现奠定了重要的基础。 多速率信号处理是软件无线电系统中的基础理论,它通过内插和抽取改变数字信号的速率,以适应软件无线电系统中不同模块对信号速率的不同要求,是数字下变频和数字上变频的重要技术。本节主要介绍多速率信号处理的基本知识和操作,并总结在数字通信系统中采用多速率信号处理所带来的好处。 所谓多速率数字信号处理是指改变信号的采样率,包括抽取和内插两种情况。使信号采样率降低的转换,称为抽取;使信号采样率升高的转换,称为内插。实现采样率的转换(插值和抽取)的关键问题是如何保证实现插值或抽取后,信号所包含的信息不发生失真。可以看出,抽取和插值需要在进行抽取前或插值后对信号进行数字滤波,数字滤波器的性能好坏将直接影响采样率变换的效果以及实时处理能力。本设计中主要用到有关内插的,因此下面将分别对数字变频中多速率滤波器组中常用的CIC滤波器、半带滤波器以及多速率FIR滤波器这几种高效数字滤波器进行介绍和分析。 3.2.2 整数倍内插 内插是抽取的逆过程。所谓整数内插是先在已知采样序列x(n) 的相邻两个样点之间等间隔插入L- 1 个0 值点,如图3.3所示,然后进行低通滤波,即可求得L倍内插的结果。图3.2中L表示在x( n) 相邻样点之间补L-1 个0,成为零值内插器。零值内插后为ω(m)。ω(m)经过h( m) 低通滤波变成y( m) 。即: (3—11) 假设x(n)的离散傅氏变换为 ,则ω(m)离散傅氏变换为 (3—12) 内插后的信号频谱为原始序列频谱经L倍压缩后得到的谱。信号插值前后频谱的变化如图3.2所示。由图中可见,在内插后的频谱 中不仅含有 的基带分量,还含有其频率大于 /L的高频成分,为了从 中恢复原始谱,则必须对内插后的信号进行低通滤波(滤波器带宽为 /L)。因此,原来插入的零值点变为x(n)的准确内插值,经过内插大大提高了时域分辨率。 图3.2 信号内插前后波形及其频谱 一个完整的I倍内插器的结构框图如下图3.3所示。 图3.3 完整的I倍内插器方框图 3.3 高效数字滤波器 所谓滤波就是从连续(或离散)输入数据中滤除噪声和干扰以提取有用信息的过程,它不但是软件无线电系统的基础,也是整个数字信号处理的基础理论。滤波器性能的好坏将直接影响系统处理的效果和其实时处理的能力。数字滤波器可以用两种形式来实现,即有限冲激响应滤波器FIR和无限冲激响应滤波器IIR,由于FIR滤波器相对于IIR滤波器有许多独特的优越性,如线性相位、稳定性好等特点,所以在本系统设计中主要采用FIR滤波器进行处理。 在数字上下变频器中,所实现的很重要的一部分功能就是抽取和内插,这些功能都可以依靠多速率滤波器来完成。常用的多速率滤波器有多速率FIR滤波器,积分级联梳状(CIC)滤波器和半带(HB)滤波器等。多速率滤波器主要作用有三点:抽取(即降低信号速率)、插值(既提高信号速率)和低通滤波。本节主要介绍此次设计所用到的内插CIC和HB滤波器。 3.3.1 CIC滤波器 CIC滤波器(Cascade Integrator Comb Filter),即级联积分梳状滤波器,是一种多采样率的高效窄带低通数字滤波器。CIC滤波器具有结构简单、需要存储量小,不需要乘法和滤波器系数存储,并且通过高速积分环节和低速梳状滤波环节减少了中间过程的存储量等优点。它是一种线性相位低通FIR滤波器,其系数均为1,所以对于CIC滤波器来说,传统卷积的滤波运算只相当于做加法运算,因此使用CIC滤波器可以完成高速内插、抽取和滤波并且实现起来较为简便。 CIC滤波器一般由N级积分器(Integrator)和N级梳状滤波器(Comb)两个部分级联组成。积分器部分包含了N级采样率在fs下的理想数字积分器,每级积分器是单极点具有单位反馈系数的IIR滤波器。单级积分器的差分方程为: y(n) = y(n-1) + x(n) (3—13) 其Z域上的传递函数为: (3—14) 积分器的基本结构如图3.4(a)所示。梳状滤波器部分工作在采样率λ/R,其中R表示整数改变因子。该部分包含了含有M点差分延迟的N级梳状滤波器,该差分延时用于控制滤波器的频率响应。M可以是任意的整数,但是在实际应用中,一般取值1或2。单级梳状滤波器的差分方程为: y(n) = x(n)-x(n-RM) (3—15) 其Z域上的传递函数为: (3—16) 单级梳状滤波器的基本结构如图3.4(b)所示。 图3.4 CIC滤波器的基本单元 图3.5 CIC滤波器的幅频特性 由图3.5所示可知,单级CIC滤波器的旁瓣电平比较大,只比主瓣低13.46 dB,说明阻带衰减很差,一般很难满足实用要求。为了降低旁瓣电平,可以采用多级CIC滤波器级联的办法来解决。 假设CIC滤波器是由上述的两个基本单元构成的。如果要构成一个N级的CIC滤波器,将N个积分器和N个梳状滤波器级联即可,其Z域响应为: (3—17) 由式(3—17)可知,CIC滤波器的总的频率响应为: (3—18) 式中,为抽样函数,通过式(3—18)可以求得N级级联CIC滤波器的旁瓣抑制为: (3—19) 从式(3—19)知,级联级数越多,旁瓣衰减越大。 CIC滤波器既可以作为抽取滤波器也可以作为内插滤波器。CIC抽取滤波器首先是级联N个积分器,其采样率为λ,经过R倍抽取,然后级联N个梳状滤波器,这时采样速率为λ/R。 CIC滤波器作为内插器时,首先是级联N个梳状滤波器,其采样率为fs/R,经过R倍内插,然后级联N个积分器,这时采样速率为fs。因此,CIC内插滤波器的结构如图3.6所示。 图3.6 CIC内插滤波器 3.3.2 HB半带滤波器 半带滤波器可以将离散系统的工作频率范围分成对等的两个对称部分,且这种滤波器特别适合实现D= (即2的幂次方倍)的抽取或内插,而且运算复杂度低,实时性强,因此在多速率信号处理中有着重要的地位。 如图3.7所示,半带滤波器的通带和阻带对称,即通带波动和阻带波动相等;通带的边频和阻带的边频相对于fs/4对称,有Fp+Fs=fs/2。为了保证FIR滤波器的线性相位, 滤波器的系数具有偶对称性,即要求h(n)=h(N-1-n),其中N为滤波器的阶数,这里设N为奇数。另外,滤波器系数除了中心点n=(N-1)/2+1外,所有h(n)的偶次系数均为零。由于半带FIR滤波器系数的对称性和近一半系数为零,使得滤波运算的乘法次数减少了近3/4,加法次数减少了近一半,用于存放滤波器系数的存储器也减少了一半,因而更有利于高效数字信号处理的实时实现。 图3.7 半带滤波器的幅频特性 由于半带滤波器是偶对称、奇次的线性相位FIR滤波器,因而还具有以下三个性质:第一,滤波器的阶数N为奇数;第二,滤波器的冲击响应h(n)为实数;第三,滤波器的幅度函数H(w)为偶函数。 将半带滤波器用于2倍抽取时,过渡带中是存在混叠的,但通带中没有混叠。也就是说信号是可以恢复的。但同时要注意的是,由半带滤波器的频率特性己知,它要求: Fs= fs/2-Fp (3—20) 因此当信号通带Fp很小时,这种过渡带对于多级滤波器的最后一级来说往往过大,不能满足滤波特性的总体要求,因此不适合用做多级抽取滤波器的最后一级,即后级滤波器必须有其他类型的FIR滤波器。对于后级FIR滤波器来讲,信号经过前级的CIC、半带滤波抽取后,采样速率相对来讲己经非常低了,所以在一定的处理时钟下,就可以采用更高阶的一般频率特性的FIR滤波器,使其通带波动、过渡带宽、阻带衰减等性能指标能够设计得更高,从而满足滤波特性的总体要求。 3.4 DDS的实现原理 三角函数数字发生器有多种实现方法,本设计主要运用基于直接数字式频率合成技术(DDS)的三角函数发生器。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是无线通信系统实现设备全数字化的一个关键技术。 DDS的设计实现方式主要有查表法和CORDIC算法两种,本设计中采用了查表法。其工作原理为:在参考时钟的驱动下,相位累加器对频率控制字进行线性累加,得到的相位码对波形存储器寻址,使之输出相应的幅度码,经过模数转换器得到相应的阶梯波,最后再使用低通滤波器对其进行平滑,得到所需频率的平滑连续的波形,其结构框图如图3.8所示。 图3.8 DDS原理框图 图中,fclk为相位累加器的时钟信号,其周期为T0;相位累加器(从0~(2^n-1)计数)在fclk的作用下,产生数据存储器所需的地址信号。某一个频率的正弦信号可以表示为: v(t)=Asin(wt+ )=Asin(2pift+ ) (3—21) 式中,A为正弦波的振幅,w为正弦信号的频率(角频率), 为初始相位。由于A和 不随时间而变化,可以令A=1, =0,得到归一化的正弦信号表达式: (3—22) 相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲clk,加法器就将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。 波形存储器所储存的幅度值与余弦信号有关。余弦信号波形在一个周期内相位幅度的变化关系可以用图3.9中的相位圆表示,每一个点对应一个特定的幅度值。一个N位的相位累加器对应着圆上2N个相位点,其相位分辨率为 。若N=4,则共有16种相位值与16种幅度值相对应,并将相应的幅度值存储于波形存储器中,存储器的字节数决定了相位量化误差。在实际的DD中,可利用正弦波的对称性,将2 范围内的幅、相点减小到 /2内以降低所需的存储量,量化的比特数决定了幅度量化误差。 图3.9 三角函数相位与幅度的对应关系 波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供的信号源优于模拟信号源。 DDS模块的输出频率fout是系统工作频率fclk、相位累加器比特数N及频率控制字K三者的一个函数,其数学关系由式(3—23)给出: (3—23) 它的频率分辨率,即频率的变化间隔为: (3—24) 另外还可以使用CORDIC 算法来实现DDS。其的基本思想是通过一系列固定的、与运算基数相关的角度的不断偏摆以逼近所需的旋转角度。CORDIC算法包含圆周系统,线性系统,双曲系统三种旋转系统,在本设计中没有用到这里就不再多做介绍。 4 各模块设计实现原理 在前面几章认真分析研究了数字上变频器中主要的模块设计方法之后,本章主要介绍此次数字上变频设计中主要模块的设计实现和验证。此次数字上变频设计中的主要模块是用Verilog语言进行RTL级设计,结合QuartuslI和ModelSim软件完成综合仿真。本章详细分析了每个模块的设计方法和设计过程中重要因素的考虑以及最后的验证,为最后实现系统级综合做好了准备。 数字上变频的实现过程:首先,信号通过内插滤波器提高信号的采样速率;然后通过正交混频,实现信号载频从低频搬移到中频或高频。数字上变频过程中的关键部分是内插滤波器设计和NCO设计。数字上变频的实现过程的框图如图4.1所示,其中,半带滤波器和CIC滤波器组成内插滤波器。 图4.1 数字上变频原理图 下面介绍各个模块的主要设计步骤和内容。 4.2 DDS设计 本次设计是采用查表法实现数控振荡器的。用QuartusII8.0编写VeliogHDL语言,然后生成的DDS原理图如图4.2所示。我设计的DDS是由相位累加器counter和正弦波查找表这两个模块组成的,其中此设计中设计了sinrom和cosrom两个查找表。DDS技术产生波形的过程是:基于奈奎斯特抽样定理对需要产生的波形进行采样、量化后存入存储器ROM中作为待产生信号波形的数据表;在需要输出波形时,从数据表中依次读出数据,产生数字化信号,这个信号再通过D/A转换器和滤波器后就变成了所需的模拟信号波形。这两个模块的具体设计方法步骤如下。 4.1.1 相位累加器 相位累加器由地址加法器和寄存器构成。加法器完成加法,寄存器将加法器的结果加以保存作为下一次相加用。周而复始直到加法器出现溢出。在满足性能的前提下为节省资源开销,采用12位的频率控制字。 此处,选择相位累加器的位数N=32,频率控制字用fre_word表示。相位累加器以步长fre_word做累加,产生所需要的频率控制数据;把得到的频率控制数据作为地址对ROM存储器进行寻址。所以从32位的相位累加器结果中提取高12位作为ROM的查询地址,由此而产生的误差会对频谱纯度有影响,但是对波形的精度的影响是可以忽略的。相位累加器的实现程序见附录一(a)。 两个模块的结合原理图如下图4.2所示。 图4.2 DDS原理图 4.1.2 正弦查找表 数据存储器(ROM)实质是一个相位/幅度转换电路,ROM中存储二进制码表示所需合成信号的相位/幅度值,相位寄存器每寻址一次ROM,就输出一个相对应的信号相位/幅度值。将正、余弦波形的量化数据存储于波形查询表ROM中,即可完成正、余弦波发生的功能。 根据 ,设置载波频率控制字为200000000,基带信号频率控制字为200000,而时钟频率设为20MHz,又N=32,可知载波频率为1M,基带信号频率为10K。具体步骤如下: (1)借助Matlab,通过编写.m文件(具体程序见附录一(b))生成.mif文件的查找表; (2)由QuartusII8.0软件来定制ROM,并加载波形数据文件sinrom.mif和cosrom.mif。运用altara的IP核,定制加载到LPM ROM中即可得到所需的正弦查询表ROM。其使用基本流程如下组图。 (a)选择“Tools”中的“MegaWizard Plug-In Manager…”如图4.3所示。 图4.3 IP核定制 (b)点击next,选择Memory Complier中的ROM—1—PORT,器件类型选StratixII,所用语言选择verilog HDL,并定义名称sinrom,如图4.4所示。 图4.4 IP核功能类型选择 (c)选择输出位数为12位,深度为4096;其他选择默认即可。如下图4.5所示。 图4.5 位宽设置 余下步骤可以直接采用默认选择,直到“finish”即可,如此就完成了ROM的定制,余弦表cosrom.mif的定制亦是如此。 4.2 内插滤波器设计 HB半带滤波器和CIC滤波器统称为内插滤波器,主要用来对基带信号进行脉冲整形,提高信号数据速率,以便与载波信号混频。 4.2.1 HB半带滤波器设计 由前面的理论知识分析可知,HB滤波器阶数越低,相对带宽越小,因此在此设计中,小插值率的情况下,应尽可能采用高阶的HB滤波器,以获得尽可能大的信号带宽。 HB滤波器设计我们选取窗函数法中的Kaiser方法。这种算法可以设计出与期望滤波器频率相应很吻合的滤波器。首先在Matlab中输入“FDAtool” 然后在其弹出的窗口中来设计滤波器的各项指标。 在Matlab中我们按照指标来进行设计模型,如下图所示。在Matlab得到滤波器系数,并可得到阶数为38,实际系数为39的低通滤波器系数。 我们可以从Matlab算出一组滤波器系数h(n)。但其值是一组浮点数,而FPGA器件只是定点数计算,所以要将浮点数转换为定点数,对滤波器系数进行量化,量化结果采用二进制补码的形式,本文对滤波器的系数进行12比特的量化。即系数乘以4096,然后化为二进制即可。 图4.6 窗函数设计滤波器 根据前面对HB半带滤波器的理论分析以及实际的要求,运用Verliog语言进行编程,利用串行算法设计了一个单级的38阶半带滤波器,输入为12位,为了不失真,使输出设为30位。 具体程序见附录二,得到生成单元(symbol)如下图所示。 图4.7 hb滤波器模块 其中,Data_in是输入信号,即前面输入的正弦基带信号,clock为系统时钟频率,取20MHz,reset是同步复位信号,Data_out是FIR输出。 4.2.2 CIC滤波器设计 在设计CIC 滤波器时主要考虑到,对于一个Q级的CIC滤波器来说,存在一个处理增益,而且随着级数Q和抽取因子D的加大,处理增益也以指数级增长,所以在用FPGA来实现时,要保留足够的运算精度,否则就有可能引起溢出错误,或运算精度的降低。在这个设计中,主要为了简便起见,我选择了设计单级的CIC滤波器。另外,由前面的理论分析可知,梳状滤波器和整个CIC滤波器在0--2 范围内并不是完全线性相位的,每隔2 /D就会产生一次相位跳变。但在每个间隔2 /D的区间范围内,它们是线性相位的。实际应用中,我们感兴趣的有用信号落在区间0—2 /D内,其余区间内的信号都是要被抑制的,因此非线性相位对滤波和抽取后的结果并没有影响。从效果上来看,CIC滤波器还是一个线性相位滤波器。 还有一般来说CIC的通带衰减较大,前面加一FIR滤波器可以补偿CIC的通带衰减,但是FIR滤波器又耗费很多的硬件资源,因此在此处为了满足滤波器的阻带衰减特性,我选择了用verilog语言实现了一个实现了一个单级,插值为4的29位插值滤波器,系统工作时钟的频率是数据速率的4倍。程序见附录三。生成单元如图4.8所示。 图4.8 CIC插值滤波器模块 其中clk为系统时钟频率20MHz,clk_div是5 MHz,rst是同步复位信号。 4.3 混频器设计 本次设计中为方便简单,主要是调用IP核中的乘法器,具体步骤如下列组图所示。 图4.9 IP核功能类型选择 选择乘法器LPM_MULT,器件类型为StratixII,所用语言是verilog HDL语言,并命名称为mult。 图4.10 乘法器输入、输出位宽设置 输入分别选择30bits和12bits,得输出为42bits。 图4.11 乘法器输入数据(是否为常数,是否为有符号数)设置及综合使用资源情况设置 5 数字上变频仿真与验证 本次设计主要是应用软件Modelsim SE6.5来进行仿真。因此本章主要来介绍Modelsim软件的特点及仿真步骤以及本设计的仿真验证结果。 5.1 Modelsim仿真软件介绍和特点 Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。是作FPGA/ASIC设计的RTL级和门级电路仿真的首选,它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。Modelsim支持 Verilog、VHDL 以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在 Dataflow 窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。  Modelsim主要特点: (1)RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真; (2)单内核VHDL和Verilog混合仿真; (3)源代码模版和助手,项目管理; (4)集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能; (5)C和Tcl/Tk接口,C调试; (6)对System C的直接支持,和HDL任意混合 (7)支持System Verilog的设计功能; (8)对系统级描述语言的最全面支持,System Verilog, System C, PSL; (9)ASIC Sign off。 ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。 5.2 Modelsim仿真方法     Modelsim的仿真分为前仿真和后仿真,下面先具体介绍一下两者的区别。 5.2.1 前仿真    前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与Testbench。 5.2.2 后仿真     后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。其输入文件为从布局布线结果中抽象出来的门级网表、Testbench和扩展名为SDO或SDF的标准时延文件。SDO或SDF的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。 5.3 Modelsim 仿真的基本步骤 Modelsim 的仿真主要有以下几个步骤:建立库并映射库到物理目录;编译原代码(包括 Testbench);执行仿真。 这里我采用的是QuartusII8.0和Modelsim6.5的联合仿真。如图5.1所示。 图5.1 仿真工具设置 首先要做的是在对整个原理图编译之前执行“Assignments”—“Setting”—“EDA tool Setting”—“simulation” ,在Tool name中选择“Modelsim”,Format for output netlist中选择“Verliog”,Time scale选择“1ns”然后点击“OK”即可。 其次,在编译完无误之后要生成测试文件,具体操作是选择“Processing” --“Start”—“ Start Test Bench Template Writer”,生成成功之后再根据具体的输入情况对测试文件进行修改,完整的测试文件见附录四。 接下来对Modelsim软件进行操作。 (1)建立库 在执行一个仿真前先建立一个单独的文件夹,(最好建在Modelsim的安装目录下的example文件夹下),后面的操作都在此文件下进行,以防止文件间的误操作,然后启动 Modelsim 。 仿真库是存储已编译设计单元的目录,modelsim 中有两类仿真库,一种是工作库,默认的库名为 work,另一种是资源库。Work 库下包含当前工程下所有已经编译过的文件。所以编译前一定要建一个 work 库,而且只能建一个 work 库。资源库存放 work 库中已经编译文件所要调用的资源,这样的资源可能有很多,它们被放在不同的资源库内。例如想要对综合在 cyclone芯片中的设计做后仿真,就需要有一个名为 cyclone_ver 的资源库。映射库用于将已经预编译好的文件所在的目录映射为一个 modelsim 可识别的库,库内的文件应该是已经编译过的,在 Workspace 窗口内展开该库应该能看见这些文件,如果是没有编译过的文件在库内是看不见的。建立仿真库的方法是在用户界面模式下,点 File->New->Library 出现下面的对话框,选择 a new library and a logical mapping to it,在Library Name 内输入要创建库的名称,然后 OK,即可生成一个已经映射的新库。本设计的操作如下: (a) 点击“File”—“new”—“project”;如图5.2所示。 图5.2 新建工程 (b) 从QuartusII的安装文件夹中找到220model.v、altera_mf,v、altera_primitives.v和stratixii_atmos.v这四个文件,以及quartusII的工程仿真文件夹下的up.vo、up.vt、up_v.sdo三个文件,一起复制在新建的up工程文件夹下。并添加到工程中。如下图5.3所示。 图5.3 加入文件 (2)编写与编译激励测试文件 为了对设计项目进行仿真,在完成了项目的Verliog HDL程序开发后,必须编写其测试平台文件。仿真工具会加载Verliog HDL测试平台文件和原项目文件,然后进行编译仿真,从而实现硬件的仿真验证。测试平台文件可以是一个简单的Verliog HDL程序,它和需要仿真的项目文件的实体对应,并且具有相应的激励信号即可。当然测试平台文件也可以是复杂的VHDL程序,它可以从磁盘文件中读取数据并将测试结果输出到屏幕或者保存到磁盘文件中。 仿真模型设计的基本结构如图5.4所示,顶层的描述包括两个元件,即所测试的设计项目(Design Under Test,DUT)元件和激励驱动器。这些元件之间通过设计项目的实体信号连接。仿真模型结构的顶层并不包括任何外部端口,仅仅是连接两个元件的内部信号。 图5.4 仿真模型的基本结构 (3)执行仿真 一般仿真过程是先使用VerliogHDL程序编辑器编写程序,或者使用图形编辑器设计逻辑电路。同时,还需要根据项目设计编写出测试平台文件。然后仿真器会读入文本式或图形化的VHDL项目文件,并读入测试平台文件,进行编译处理。因为VHDL项目文件还需要调用相应的库文件,因此仿真器还需要访问VHDL库资源。 然后仿真器就可以通过测试平台的激励信号产生驱动信号源,并根据项目设计综合或布局布线,实现功能或时序仿真,并输出仿真波形或者数据。功能仿真是在布局布线前的仿真操作,主要验证VHDL设计的功能是否满足设计要求。时序仿真是在布局布线后的操作,主要在布局布线后对信号的时序进行验证分析。 在此设计中先将加入工程的六个文件编译成功之后就行开始仿真:选择“Simulation”—“Start Simulation”,如图5.5所示。 图5.5 仿真操作 在work中选择“up_vlg_tst”即测试文件,然后不选择使能优先项。随后将执行装载过程,并显示仿真波形,则仿真步骤设置成功。 5.4 仿真结果 本节主要展示通过前面的理论介绍和设计过程,对做出来的整个系统的仿真验证。 首先在QuartusII 8.0中完成的上变频设计结构实现框图如下图5.6所示。 图5.6 上变频原理图 整体的上变频设计在ModelSim中完成仿真,各部分仿真结果如下列组图所示。 (1) DDS仿真 图5.7 NCO波形 如图5.7的波形所示:其中第一个和第三个是基带信号I(t)和Q(t),分别是频率同为10kHz的cos(t)和sin(t);第二个和第三个是载波信号,分别是频率为1MHz的cos(wt)h和sin(wt)。 由此图可以看出数控振荡器即DDS的设计是正确的。 (2)内插滤波器仿真 图5.8 内插滤波器波形 如上图的波形所示:其中第一个和第二个分别是上、下路经过半带滤波器的信号波形,第三个和第四个分别是上、下分别是上、下路经过CIC滤波器后的波形。 CIC和HB滤波器主要是对基带信号进行脉冲整形,提高数据速率以便于载波信号进行混频相乘。因此可知这两个滤波器的设计亦是正确的。 (3)混频及综合仿真 图5.9 混频后的波形 图5.9中第一个和第二个波形分别是上下两路的与载波相乘后的波形。最后一个波形即两路分别混频后的相加结果。 通过将图5.7中的基带信号与此图中的最终结果相对比,可以看出实现了信号从低基带频率搬移至高频,达到了设计的预期效果,实现了数字上变频的功能,验证了此系统设计的正确性。 6 结论 (1) 课题研究过程总结及结论 本课题的研究和设计,可以大致分成三个阶段:理论知识学习,系统模块软件设计和系统整体仿真。在每个阶段都遇到很多问题,但也是在不断的发现问题,不断的努力解决问题的过程中,让我对本课题有了更全面的认识和掌握。 在理论知识学习阶段,我查找了很多的资料,对上变频的整体实现原理以及各个模块的实现方法都有了较为深刻的理解。在学习的过程中,我不仅巩固了四年里学的专业知识,而且还弥补了以前未理解的知识。并且我还查阅了不同书籍,学习不同的实现方法,进行比较从中选出最佳方案。这让我对自己选定的方案更有把握,为后续工作打好了理论基础。 系统模块的设计是本课题的重要环节。这部分的成功与否直接决定整个课题设计的成败,而且也是工作量最大的一个阶段。在此阶段,我先复习了QuartusII软件以及Verliog HDL硬件语言,当然也遇到了大大小小不少的问题,如数控振荡器,高效滤波器等的模块设计,以及IP核的调用方法。这些内容不仅逻辑复杂,而且还用到其他的理论知识。此外,对时钟频率、系统中传输的信号的形式和位数,还有基带信号、载波信号频率的选择都是在设计过程中不断进行修改,从而才能适应各方面因素的影响。 在系统整体仿真阶段,遇到的问题主要在于之前没有用过Modelsim软件,对于这个软件从安装到学会使用都花费了较多时间。开始是靠自己琢磨,虽然花费了很多时间,但是却没什么成效,最后还是在一位学长的帮助下学会的。 总之,所设计出来上变频系统能够实现频谱的搬移,说明系统工作正常。成功的完成了此次毕业设计。 (2) 通过本次课题的设计,我对EDA整个设计的流程有了较全面的认识,以及获得了宝贵的实践经验,这让我在以后从事相关的研究设计工作时更加容易上手,也更有信心。此外,我还从中提高了自己分析问题的能力,以及学会了对一个较为庞大工程的统筹管理,从整体上考虑问题,然后细化成具体的问题和任务,再逐一解决完成。 在整个毕业设计的过程中,可谓道路曲折,挫折不断,在设计时不得不一次又一次地停滞不前,一次又一次地重头开始。但是也是在这样的过程中,我学会了坚持,学会了直面困难,不怕从头开始,就怕没有勇气重新开始。问题总是不断的,但是静下心,耐心地思考,总会有解决的办法的。有些问题看似无解,但是只要你拓宽思路,答案就在眼前。况且条条大路通罗马,一种方法不行,就换另一种方法试试看,说不定会有意想不到的收获。 谢 辞 时光荏苒,宝贵的大学生涯即将结束,心中充满着离愁、惜别和感激,还有对未来的憧憬和激动。在这漫长而又短暂的四年大学生活中,我成长着,磨砺着,进步着。感谢所有陪伴我渡过这美好时光的老师、朋友和同学。因为你们,我感到无比幸运。 在这里,首先要对我的毕业设计指导老师郑展恒表示由衷的感谢。谢谢郑展恒老师这几个月来对我的指导和帮助,虽然在整个探究课题设计方案的道路十分曲折,但老师对我的信心与鼓励给了我很大的动力与激励。并在我的课题上提供了很多宝贵建议和有用资料,我才得以开拓思维,不断进步,并最终顺利完成课题的研究和的撰写。在毕业设计的制作过程中,虽然碰到了许多问题,但在解决这些问题的时候,感觉有些东西潜移默化地影响着我,也许会受用一生。 我还要特别感谢韦照川老师以及他的学生谢东师兄,他们为我的课题研究给予了很大的帮助,对我的设计方案给出了很有力的帮助和指导,还帮我解决了有关软件使用问题。还有郝春贺学长,虽从未谋面,但其热心的帮助和指导使得我整个毕设得到了根本性的成功和提高。还有我的战友,我们的课题相近,从彼此的交流中也学习到了很多的知识,以及积极去克服困难的精神,并享受到了成功的喜悦。 最后要感谢学校给了我们这么一个难得的机会,让我将自己所学知识充分应用到实践当中,让我提高了自己的动手能力,以及独自分析和处理复杂问题的能力。我相信这次课题设计的训练,对我以后的学习和工作都有很大的帮助。 参考文献 [1] 吴伟陵,牛凯.移动通信原理[M].北京:电子工业出版社,2005 [2] 田耕,徐文波,张延伟.无线通信FPGA设计[M].北京:电子工业出版社,2007 [3] 陶然,张惠云,王越.多抽样率数字信号处理理论及其应用[M].北京:清华大学出版社,2007 [4] 西瑞克斯北京通信设备公司.无线通信的MATLAB和FPGA实现[M].北京:人民邮电出版社,2009 [5] 崔文.基于FPGA的数字上下变频器的研究与实现[D].西安:西安电子科技大学,2006 [6] 刘旭.软件无线电中数字上下变频器的研究与实现[D].成都:电子科技大学,2003 [7] 杨小牛,楼才义,徐建良.软件无线电原理与应用[M].北京:电子工业出版社,2001 [8] 褚振勇,翁木云.FPGA设计及应用EM-I.西安:西安电子科技大学出版社,2002 [9] fraedric J Harris,Multrate Signal Processing for Communication Systems,Prentice Hall PRT,2004 [10] S.G.Wilson.Digital Modulation and Coding.Prentice Hall,Inc.,2001 [11] Hogenauer E B.An Economical Class of Digital Filters for Decimation and Interpolation[J].In IEEE Trans.Acoust.,Speech.,Signal Processing,1981 附 录 附录一: (a).相位累加器counter程序: module counter(clk,fre_word,address); input clk; input [31:0]fre_word; output reg[9:0]address; reg [31:0] phaseadder; always@(posedge clk) begin phaseadder=phaseadder+fre_word; address=phaseadder[29:20]; end endmodule (b).产生正弦波.mif波形存储文件: x=0:1:1024; y=round(1000*sin(2*pi*x/1024))+1000; a=[x;y]; fid=fopen('sine.mif','w'); fprintf(fid,'%d:%d;\n',a); fclose(fid); 运行产生sinrom.mif文件,打开sinrom.mif文件在头加入如下代码 WIDTH=10; DEPTH=1024;//1024=2*10 ADDRESS_RADIX=UNS; DATA_RADIX=UNS; CONTENT BEGIN 0 : 512; ……………… 1023 : 509; END; 余弦亦同理。 附录二: 半带滤波器程序: `timescale 1ns / 1ps module hb(Data_out,Data_in,clock,reset); //滤波器系数 parameter b0 =12'b111110111111, b1 =12'b000000000000, b2 =12'b000001001001, b3 =12'b000000000000, b4 =12'b111110101100, b5 =12'b000000000000, b6 =12'b000001100001, b7 =12'b000000000000, b8 =12'b111110001011, b9 =12'b000000000000, b10=12'b000010001111, b11=12'b000000000000, b12=12'b111101000111, b13=12'b000000000000, b14=12'b000100000011, b15=12'b000000000000, b16=12'b111001001101, b17=12'b000000000000, b18=12'b010100010111, b19=12'b100000000000; output [29 : 0] Data_out; input [11: 0] Data_in; input clock,reset; reg [11 : 0] Samples[1 : 38]; integer k; // 串行实现成累加 assign Data_out = b0*Data_in + b1*Samples[1] + b2*Samples[2] + b3*Samples[3] + b4*Samples[4] + b5*Samples[5] + b6*Samples[6] + b7*Samples[7] + b8*Samples[8]+b9*Samples[9]+b10*Samples[10]+b11*Samples[11]+b12*Samples[12]+b13*Samples[8]+b14*Samples[8]+b15*Samples[8] +b16*Samples[16]+b17*Samples[17]+b18*Samples[18]+b19*Samples[19]+b18*Samples[20]+b17*Samples[21]+b16*Samples[22]+b15*Samples[23] +b14*Samples[24]+b13*Samples[25]+b12*Samples[26]+b11*Samples[27]+b10*Samples[28]+b9*Samples[29]+b8*Samples[30]+b7*Samples[31] +b6*Samples[32]+b5*Samples[33]+b4*Samples[34]+b3*Samples[35]+b2*Samples[36]+b1*Samples[37]+b0*Samples[38]; // 完成移位的功能 always @ (posedge clock) if(reset == 0) begin for(k=1; k<=38; k=k+1) Samples[k] <= 0; end else begin Samples[1] <= Data_in; for(k=2; k<=38; k=k+1) Samples[k] <= Samples[k-1]; end endmodule 附录三: CIC滤波器程序: `timescale 1ns / 1ps module cic(clk, clk_div, rst, x, y); input clk; // 模块工作时钟 input clk_div; // 其数值为clk的1/4 input rst; input [29:0] x; output [29:0] y; reg [59:0] x_t, y_t; // 用于移位的寄存器 reg [59:0] int_out, temp; //中间变量 reg [1:0] cnt; always@(posedge clk_div) begin if(!rst) begin //给寄存器赋初值 x_t <= 0; int_out <= 0; end else begin x_t <= {x_t[29:0], x}; int_out <= x_t[29:0] + x_t[59:30]; end end always@(posedge clk) begin if(!rst) begin y_t <= 0; temp <= 0; cnt <= 0; end else begin cnt <= cnt + 1; if(cnt == 0) //完成4倍插值 temp <= int_out; else temp <= 0; y_t <= {y_t[29:0], temp}; end end assign y = y_t[29:0] - y_t[59:30];// 完成梳状滤波 endmodule 附录四: 测试文件程序: `timescale 1 ns/ 1 ps module up_vlg_tst(); // constants // general purpose registers reg clk; reg clk_div; reg [31:0] fre_word1; reg [31:0] fre_word2; reg reset; // wires wire [29:0] cic_out; wire [11:0] dds1_out; wire [11:0] dds2_out; wire [29:0] hb_out; wire [41:0] result; // assign statements (if any) up i1 ( // port map - connection between master ports and signals/registers .cic_out(cic_out), .clk(clk), .clk_div(clk_div), .dds1_out(dds1_out), .dds2_out(dds2_out), .fre_word1(fre_word1), .fre_word2(fre_word2), .hb_out(hb_out), .reset(reset), .result(result) ); initial begin reset=0; #100 reset=1; end initial begin clk=0; forever #25 clk=~clk; end initial begin fre_word1=32'd500000; end initial begin fre_word2=32'd50000000; end initial begin clk_div=0; forever #6.25 clk_div=~clk_div; end endmodule √ 设计描述 生产 设计输入 设计编辑 器件编程 延时确认 设计修改 功能仿真 在线确认 � EMBED \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� � EMBED Equation.3 \* MERGEFORMAT ��� _1234567906.unknown _1234567915.unknown _1234567927.unknown _1234567931.unknown _1234567938.unknown _1234567940.unknown _1234567941.unknown _1234567942.unknown _1234567939.unknown _1234567934.unknown _1234567936.unknown _1234567937.unknown _1234567935.unknown _1234567933.unknown _1234567932.unknown _1234567929.unknown _1234567930.unknown _1234567928.unknown _1234567920.unknown _1234567925.unknown _1234567926.unknown _1234567922.unknown _1234567923.unknown _1234567924.unknown _1234567921.unknown _1234567917.unknown _1234567918.unknown _1234567919.unknown _1234567916.unknown _1234567911.unknown _1234567913.unknown _1234567914.unknown _1234567912.unknown _1234567908.unknown _1234567909.unknown _1234567910.unknown _1234567907.unknown _1234567898.unknown _1234567902.unknown _1234567904.unknown _1234567905.unknown _1234567903.unknown _1234567900.unknown _1234567901.unknown _1234567899.unknown _1234567894.unknown _1234567896.unknown _1234567897.unknown _1234567895.unknown _1234567892.unknown _1234567893.unknown _1234567890.unknown _1234567891.unknown
/
本文档为【基于FPGA的数字上变频设计毕业设计论文说明书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索