《基于FPGA的DDS信号发生器的研究本科毕业论文(21页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的DDS信号发生器的研究本科毕业论文(21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于FPGA的DDS信号发生器的研究本科毕业论文-第 21 页毕业论文基于FPGA的DDS信号发生器的研究第1章 绪 论1.1 课题背景频率检测是电子测量领域的最基本也是最重要的测量之一,频率信号抗干扰强,易于传输,可以获得较高的测量精度,所以频率方法的研究越来越受到重视1。在频率合成领域中,直接数字合成(Direct Digital Synthesizer,简称:DDS)是近年来新的技术, 它从相位的角度出发直接合成所需波形。 它是由美国人J.Tierncy首先提出来的,是一种以数字信号处理理论为基础,从相位概念出发直接合成所需波形的一种新的全数字技术的频率合成方法2。其主要优点有:频率改
2、变速度快、频率分辨率高、输出相位连续、可编程、全数字化便于集成等,目前使用最广泛的一种DDS频率合成方式是利用高速存储器将正弦波的M个样品存在其中,然后以查找的方式按均匀的速率把这些样品输入到高速数模转换器,变成所设定频率的正弦波信号3。近30年来,随着超大规模集成、现场可编程门阵列(Field Programmable Gate Array,简称:FPGA)、复杂可编程器件(Complex programmable Logic Device,简称:CPLD)等技术的出现以及对DDS理论上的进一步探讨,使得DDS技术得到了飞速的发展。它已广泛应用于通讯、雷达、遥控测试、电子对抗、以及现代化的仪
3、器仪表工业等许多领域。DDS的数字部分,即相位累加器和查表,被称为数控振荡器(NCO)4。波形发生器即通常所说的信号发生器是一种常用的信号源,和示波器、电压表、频率计等仪器一样是最普遍、最基本也是应用最广泛的的电子仪器之一,几乎所有电参量的测量都要用到波形发生器。不论是在生产还是在科研与教学上,波形发生器都是电子工程师信号仿真试验的最佳工具。随着现代电子技术的飞速发展,现代电子测量工作对波形发生器的性能提出了更高的要求,不仅要求能产生正弦波、方波等标准波形,还能根据需要产生任意波形,且操作方便,输出波形质量好,输出频率范围宽,输出频率稳定度、准确度及分辨率高,频率转换速度快且频率转换时输出波形
4、相位连续等。而传统波形发生器采用专用芯片,成本高,控制方式不灵活,已经越来越不能满足现代电子测量的需要,正逐步退出历史舞台。可见,为适应现代电子技术的不断发展和市场要求,研究制作高性能的任意波形发生器十分有必要,而且意义重大。1.2 国内外波形发生器发展现状1.2.1 波形发生器的发展现状在70年代前,信号发生器主要有两类:正弦波和脉冲波。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。在70年代后,微处理器的出现,可以利用处理器、A/D和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的
5、波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。90年代末,出现几种真正高性能、高价格的波形发生器、但是HP公司推出了型号为HP770S的信号模拟装置系统,它由HP8770A任意波形数字化和HP1776A波形发生软件组成。HP8770A实际上也只能产生8种波形,而且价格昂贵。到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片,同时也推动了波形发生器的发展,2003年,Agilent的产品33220A能够产生17种波形,最高频率可达到20M,2005年的产品N6030A能够产生高达500MHz的频率,采样的频
6、率可达1.25GHz。最近几年来,随着集成电路技术和器件水平的提高,国外一些公司先后推出各种各样的DDS专用芯片,如Qualcomm公司的Q2230、Q2334,AD公司的AD9955、AD9850、AD9851、AD9852等5。1.2.2 国内外波形发生器产品比较频率合成器被誉为电子系统的“心脏”,频率源的发展直接关系到电子系统性能的发展。信号发生器是一种常用的信号源,广泛应用于通信、雷达、测控、电子对抗以及现代化仪器仪表等领域,是一种为电子测量工作提供符合严格技术要求的电信号设备,和示波器、电压表、频率计等仪器一样是最普通、最基本也是应用最广泛的电子仪器之一,几乎所有电参量的测量都要用到
7、波形发生器6。早在1978年,由美国Wavetek公司和日本东亚电波工业公司公布了最高取样频率为5MHz,可以形成256点(存储长度)波形数据,垂直分辨率为8bit,主要用于振动、医疗、材料等领域的第一代高性能信号源,经过将近30年的发展,伴随着电子元器件、电路、及生产设备的高速化、高集成化,波形发生器的性能有了飞速的提高。变得操作越来越简单而输出波形的能力越来越强。波形操作方法的好坏,是由波形发生器控制软件质量保证的,编辑功能增加的越多,波形形成的操作性越好。目前我国已经开始研制信号发生器,并获得了可喜的成果,但总的来说,我国波形发生器还没有形成真正的产业,并且我国目前在波形发生器的的种类和
8、性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫7。1.2.3 研究波形发生器的目的及意义波形发生器是信号源的一种,主要给被测电路提供所需要的己知信号(各种波形),然后用其它仪表测量感兴趣的参数8。多功能波形发生器采用FPGA器件作为核心控制部件,精度高稳定性好,得到波形平滑,特别是由于FPGA的高速度,能实现较高频率的波形9。目前我国己经开始研制波形发生器,并取得了可喜的成果。但总的来说,我国波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少,并且我国目前在波形发生器的种类和性能都与国外同类产品存在较大的差
9、距,因此加紧对这类产品的研制显得迫在眉睫。1.3 论文的主要工作与章节安排本文主要通过分析DDS的原理,进而得到DDS信号发生器的设计方案,然后通过选材等一系列设计来完成DDS信号发生器的研究。其中第二章主要介绍DDS的基本原理以及优缺点。第三章则重点介绍了本次设计所采用的开发平台。第四章是本问重点介绍的对象,里面主要包含了设计的具体思路包括系统的实现以及系统工作流程情况。第五章是要是对实验结果进行分析。 第2章 DDS波形发生器的理论介绍2.1 DDS的基本原理与特点DDS即直接数字频率合成技术,是由美国学者J.Tiercy,M.Rader和B.Gold于1971年首次提出,是一种以数字信号
10、处理理论为基础,从相位概念出发直接合成所需波形的一种新的全数字技术的频率合成方法。从1971年至今,DDS已从一个工程新事物逐渐发展成为一个重要的设计工具。与大家熟悉的直接式和间接式(PLL)频率合成技术不同,DDS技术完全采用数字技术处理,属于第三代频率合成技术。DDS的主要优点是它的输出频率、相位和幅度能够在微控制器的控制下精确而快速的变换。DDS的应用领域包括各类无线通信、有线通信、网络通信,各类需要频率信号的仪器、仪表、遥测、遥感设备、收音机和电视机等10。本节以正弦信号的产生为例,阐述DDS技术的基本原理。对于一个频谱纯净的单频正弦信号可以用下式来描述: (2-1)其相位为 (2-2
11、)显然,该正弦信号相位和幅值均为连续变量。为了便于采用数字技术,应对连续的正弦信号进行离散化处理,即把相位和幅值均转化为数字量。用频率为fclk的基准时钟对正弦信号进行抽样 ,这样,在一个参考时钟周期T内,相位的变化量为 (2-3)由上式得到的为模拟量,为了将其转化为数字量,将2切割成2N等份作为最小量化单位,从而得到的数字量M为: (2-4)将式(2-3)带入(2-4)得 (2-5)式(2-5)表明,在参考时钟频fclk确定的情况下,输出正弦信号的频率fout决定于M的大小,并且与M呈线性关系。通过改变M的大小,就可以改变输出正弦信号的频率,因此,M也称频率控制字。当参考时钟频率取2N时,正
12、弦信号的频率就等于频率控制字M。当M取1时,可以得到输出信号的最小频率步进为 (2-6)由此可知,只要N取值足够大,就可以得到非常小的频率步进值。将相位转化为数字量以后,式(2-1)就可以描述为如下形式: (2-7)表示本周期相位值与前一个基准时钟周期的相位值的累加。从式(2-7)可以看出,只要用频率控制字M进行简单的累加运算,就可以得到正弦函数的当前相位值。而正弦信号的幅值就是正弦信号的当前相位值的函数。由于正弦函数为非线性函数,很难实时计算,一般通过查表的方法来快速获得函数值。有了上述理论分析,我们就可以得到一种用数字的方法获得正弦信号的方法:先构建一个N为的相位累加器,在每一个时钟周期内
13、,将相位累加器中的值与频率控制字相加,得到当前的相位值。将当前的相位值作为ROM的地址,读出ROM中的正弦波数据,再通过D/A转化成模拟信号。频率控制字越大,相位累加器的输出变化越快,ROM的地址变化也越快,输出的正弦信号频率越高。需要注意的是,受ROM容量的限制,ROM地址位数一般小于相位累加器的位数,因此,把相位累加器输出的高位作为ROM的地址。只需要改变频率控制字,就可以改变输出信号的频率,因此,采用DDS技术,对输出信号频率的控制十分简单。DDS正弦信号发生器的基本原理框图如图2-1-1所示。图2-1 DDS正弦信号发生器基本原理框图 2.2 DDS信号的优点与缺点2.2.1 DDS的
14、优点(l)输出频率相对带宽较宽输出频率带宽为50%fs(理论值),实际输出带宽仍可达到40%fs。(2)频率转换时间短频率时间等于频率控制字的传输时间,也就是一个时钟周期的时间。时钟频率越高,转换时间越短。DDS的转换时间可达纳微秒级数量级,比使用其他的频率合成方法都要短数个数量级。(3)频率分辨率高若时钟fs的频率不变,DDS的频率分辨率就是由相位累加器的位数N决定。只要增加相位累加器的位数N即可获得任意小的频率分辨率。目前,大多数DDS的分辨率在1Hz数量级,许多小于1mHz甚至更小。(4)相位变化连续改变DDS输出频率,实际上改变的是每一个时钟周期的相位增量,相位函数的曲线是连续的,只是
15、在改变频率的瞬间其频率发生了突变,因而保持了信号相位的连续。(5)输出波形的灵活性只要在DDS内部加上相应控制如调频控制FM,调相控制PM和调幅控制AM即可以方便灵活实现调频,调频和调幅等功能,产生FSK,PSK,ASK,MSK等信号。另外,只要在DDS的波形存储器存放不同波形数据,就可以实现各种波形的输出,如三角波,锯齿波和矩形波甚至是任意波形。当DDS的波形存储器分别存放正弦和余弦函数表时,即可得到正交的两路输出。2.2.2 DDS的缺点(1)输出带宽范围有限由于DDS内部DAC和波形存储器(ROM)的工作速度有限,使得DDS输出的最高频率有限。目前市场上采用CMOS,TTL,EcL,工艺
16、制作的DDS芯片,工作频率一般在几十MHz至400MHz左右。采用GaAS工艺的DDS芯片工作频率可达2GHz以上。(2)输出散杂大由于DDS采用全数字结构,不可避免地引入了散杂。其来源主要由三个:相位累加器相位舍入误差造成的散杂;幅度量化误差造成的散杂和 DAC非理想特性造成的散杂。2.3 本章小结本章主要介绍了DDS的原理。其中第一部分以正弦波为例子,对DDS原理在整个设中的重要意义进行讲解。后一部分则是分析DDS的优点以及缺点。第3章 开发平台介绍3.1 硬件平台FPGA介绍3.1.1 FPGA简介自1985年Xilinx公司推出有史以来第一颗现场可程序化逻辑组件至今,已经历了超过二十几
17、年的发展历史。在发展过程中,以FPGA为代表的数字系统现场集成取得了惊人的发展:现场可程序化逻辑组件从最初的1200个可利用逻辑闸,发展到90年代的25万个可利用逻辑闸。其后不到数年,著名FPGA厂商,包括Altera公司、Xilinx等公司,又陆续推出了内建数百万逻辑闸以上的FPGA芯片,将现场可程序化组件的整合度提高到一个新的水平。如今,各厂商不再盲目追加逻辑闸的数量,转而努力消除过去FPGA弱势之处,以强化过的运算效能、更为节省的功耗,向各种运算领域扑天盖地而来。纵观现场可程序化逻辑组件的发展历史,其之所以具有巨大的市场吸引力,在于FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问
18、题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA在某些情况下得以取代ASIC的市场,特别是对小量、多样,短开发期的产品需求,使FPGA成为首选。3.1.2 FPGA工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。它的基本特点主要有:采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 FPGA可做其它全定制或半定制ASIC电路的
19、中试样片。 FPGA内部有丰富的触发器和I/O引脚。FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。FPGA采用高速CHMOS工艺,功耗很低,可以与CMOS、TTL电平兼容。纵观现场可程序化逻辑组件的发展历史,其之所以具有巨大的市场吸引力,在于FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA在某些情况下得以取代ASIC的市场,特别是对小量、多样,短开发期的产品需求,使FPGA成为首选11。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据
20、不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活12。3.2 软件平台Quartus II介绍 图3-2 Quartus II软件界面如图3-2所示为Quartus II软件的基本界面,Quartus II软件是Al
21、tera的综合开发工具,它集成了Altera的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。Quartus II几乎支持Altera现行的所有FPGA,在该集成开发环境中可以实现电路的设计、综合、适配到最后形成下载文件以及在线配置FPGA,还能对电路进行功能仿真,对适配后形成的最终电路进行时序仿真。也就是说只要有了Quartus II这个集成开发环境,就基本上可以完成Altera公司FPGA开发过程中的所有工作。另外,为了方便设计,Quartus II还提供了免费LPM模块供用户调用,如计数器、存储器、加法器、乘法器等。除了这些免费的LPM模块外,Altera公司还开发了有偿I
22、P核提供给有需要的用户使用。这些LPM模块和IP核都大大简化了设计过程,缩短了开发周期。Quartus II支持多种输入方式,常用的有:(1)原理图输入:这种方法最直观,适合顶层电路的设计;(2)硬件描述语言输入:包括AHDL、VHDL及Verilog HDL输入。采用硬件描述语言的优点易于使用自顶向下的设计方法、易于模块规划和复用、移植性强、通用性好。(3)网表输入:对于在其他软件系统上设计的电路,可以采用这种设计方法,而不必重新输入,Quartus II支持的网表文件包括EDIF、VHDL及Verilog等格式。这种方法的优点是可以充分利用现有的设计资源。3.3 本章小结本章主要对本次设计
23、所选择的开发平台进行简单介绍。FPGA因为其不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,所以成为首选。软件部分主要是对Quartus II进行简单的介绍。第4章 系统实现4.1 设计要求采用DDS技术设计一个信号发生器,其原理框图如图4-1所示: 图4-1 DDS信号发生器原理框图设计要求如下:1、具有产生正弦波、方波、三角波三种周期性波形;2、输出信号频率范围1Hz5MHz,重复频率可调,频率步进间隔小于等于1Hz;3、输出信号幅值范围0.510V(峰-峰值),信号幅值和直流偏移量可数控调节;4、具有稳幅输出功能,当负载变化时,输出
24、电压幅度变化不大于3%(负载电阻变化范围:50正无穷);5、具有显示输出波形类型、重复频率等功能。4.2 系统方案论证与比较4.2.1 产生DDS信号波形方案的选择目前主流的DDS信号发生器方案有两种:方案一、采用专用DDS集成芯片实现的信号发生器;方案二、采用单片机+FPGA实现的DDS信号发生器。比较这两种方案,专用DDS芯片内部的波形数据存放在ROM型存储器中,波形数据无法修改故而只能产生固定波形的信号,但系统比较容易实现。而采用单片机+FPGA实现的DDS信号发生器则是将波形数据存储器改为FPGA上的RAM行存储器,波形信号能实时改变,在利用单片机系统进行控制和处理后,能实现DDS任意
25、波形发生器,功能更加完善,更新更加方便。故本设计选用方案二。4.2.2 单片机处理器比较选择方案一:采用AT89C51单片机处理电路,其拥有并行I/O口32个,对于实际应用来说远远不够,且不具备自带AD、DA,使得电路结构复杂。方案二:C8051F360单片机内部资源非常丰富,是目前功能最全、速度最快的51内核SoC单片机之一,包括告诉8051微处理器内核,扩充终端处理系统,256字节内部RAM,1024字节XRAM和32KB的闪速存储器,多达39个I/O引脚,两个内部振荡器和片内调试电路,能很好的完成本系统所需的单线程,键盘功能分支程序控制。 在本设计中选用方案二。4.3 系统理论分析及设计
26、4.3.1 总体设计本设计采用单片机+FPGA实现的DDS信号发生器,整个DDS信号发生器由单片机子系统、FPGA子系统、模拟子系统三部分组成,系统原理框图如下图4-2所示:图4-2系统原理框图4.3.2 主要技术参数的分析与确定DDS信号发生器的技术指标取决于DDS系统的时钟频率、相位累加器的位数、波形数据表的长度等参数,下面对这些参数进行讨论,以选择适合的模拟电路元件以实现高质量的DDS信号。1、输出带宽当频率控制字M=1时,输出信号的最低频率为 (4-1)式中,为参考时钟频率,N为相位累加器的位数。当N取很大值时,最低输出频率可以认为达到DDS最低频率的零频。DDS的最高输出频率由参考时
27、钟周期和一个周期波形采样点数决定,若采样点数为X,则最高输出频率为 (4-2)2、频率分辨率频率分辨率由下式决定: (4-3)在此式中,当N取值足够大时,DDS信号可以达到很高的信号分辨率。3、 DDS信号的质量由于DDS信号发生器采用全数字设计,不可避免在采样时会带来D/A产生的幅度量化噪声和相位累加运算截断产生的相位噪声。改善DDS信号质量的主要方法有:增加波形存储器和D/A的字宽;增加每个周期数据的样本数,提高外部参考时钟频率和通过低通滤波器来改善输出信号质量。综合上述讨论和对器件成本以及硬件系统复杂度的考虑,DDS子系统的参数确定如下:1 参考时钟频率:40MHz;2 频率控制字的位宽
28、:32位;3 相位累加器的位宽:32位;4 波形存储器的地址位宽:8位;5 波形存储器的数据位宽:8位。4.3.3 数字部分电路设计该DDS信号发生器的数字部分包括单片机子系统、FPGA、高速D/A转换器、人机接口(12864点阵式LCD模块和44矩阵式键盘)。单片机子系统需要完成键盘输入、液晶显示、向FPGA传送数据、输出信号幅值和直流偏移量的数字控制等功能。本设计中DDS信号发生器的键盘主要用于选择信号波形、输入频率值、控制输出信号幅值和直流偏移量。09键用于输入频率值,其中03键还用于选择输出波形;Hz键用于输入给定频率值的确认键;波形选择键用于选择波形;A+键用于增加信号幅值,A-键用
29、于减少信号幅值,D+键用于增加直流偏移量,D-键用于减少直流偏移量。单片机控制程序包括主程序和键盘终端服务程序。主程序完成初始化和键值输入处理功能,键盘终端服务程序只完成键值读入功能。键盘终端中断程序完成键盘中断服务。FPGA内部的DDS子系统包括地址译码电路、LCD模块接口、44键盘接口和DDS子系统。其中地址译码器用来产生外部数据存储器和I/O接口的片选信号,LCD模块LCD12864与单片机之间采用并行接口将单片机处理后的数据显示出来,44键盘接口电路包括分频电路、键盘扫描电路、行值编码器和消抖电路实现按键转换成二进制编码、键值数据端口与单片机总线接口连通、键值有效时的中断信号和消抖功能
30、,DDS子系统由频率字寄存器、相位累加器、波形数据存储器等几部分组成以根据输入控制要求产生多种波形信号。高速D/A转换器采用AD公司的高速D/A转换器AD9708,转换速率为40MHz,含有一个输入数据锁存器和译码逻辑电路,用来完成波形重建功能。4.3.4 模拟部分电路设计该DDS信号发生器的模拟部分包括滤波电路、信号放大器电路和驱动电路。模拟电路将承担输出信号幅值、直流偏移量、驱动能力等指标的实现。滤波电路针对高速D/A输出信号进行滤波,将输出信号中高频分量通过低通滤波器滤去,得到相对纯净的波形信号。根据DDS信号发生器的设计要求,输出正弦信号的最高频率为5MHz,故本DDS信号发生器的滤波
31、电路采用截至频率为5MHz的单片机集成低通滤波器LT6600-5。另在LT6600-5的外部电路中需外接阻值较大的两个电阻,以防治滤波器内部差分电路增益过大引起的输出波形饱和失真。信号放大电路由基本差分放大电路、反相放大器和数字电位器组成。考虑到差分输出信号仍可能含有少量直流分量,在反相放大器后设计了一个直流偏移量调节电路,该直流偏移量调节电路由数字电位器实现。驱动电路将为DDS信号发生器提供稳幅输出能力,即当负载电阻从50变化时,输出电压幅度变化不大与3%。实际设计中我们采用了TI公司的THS3092高速集成运算放大器。4.4 FPGA内部DDS子系统的设计FPGA内部逻辑分为四个部分:地址
32、译码电路、4X4键盘接口、DDS子系统、LCD模块接口。下面主要介绍DDS子系统的设计。根据DDS原理图可知,DDS子系统由频率字寄存器、相位累加器、波形数据存储器几个部分组成。根据设计题目要求,DDS信号发生器应能产生多种波形,这就要求单片机可以向波形数据存储器传送不同的波形数据,显然,波形数据存储器采用双口RAM是最合适的。双口RAM中的一个端口与单片机总线相连,接受来自单片机的256字节波形数据,另一个端口与D/A转换器相连。根据上述思路,可以得到图4-3所示的DDS子系统顶层原理图。图中DLATCH8为8为地址锁存器、frew为频率字寄存器、PHASE-ACC为相位累加器、LMP-RA
33、M-DP为双口RAM:图4-3 DDS子系统顶层原理图(1) 波形数据存储器波形数据存储器的功能是:一方面,单片机能够通过并行总线将波形数据写入存储器,另一方面,在相位累加器输出地址控制下将波形数据依次送给高速D/A。在图4-3所示的顶层原理图中,波形数据存储器采用了双端口RAM,一个端口与单片机并行总线相连,另一个端口与相位累加器和高速D/A相连。图4-3中的双口属于简单的双端口RAM,有一个独立的写端口和一个独立的读端口。对于写端口来说,其信号来自单片机的并行总线。当单片机执行外部数据存储器写指令时,并行总线上的数据,地址,写信号通过同步时钟CLK1的上升沿送入双口RAM的存储体,完成将波
34、形数据写入指定的存储单元。对读端口来说,其地址信号来自相位累加器输出的高8位,读使能信号直接接高电平,数据输入送高速D/A转换器。读端口的输入输出信号也是与同步时钟CLK1同步。假设忽略器件延时,CLK0为DDS子系统的参考时钟,双口RAM同步时钟CLK1由CLK0反向得到,高速D/A时钟信号DACLK与CLK相同。相位累加器的输出地址在CLK0的上升沿时刻发生改变,由于CLK1与CLK0反相,保证在CLK1上升沿时刻,Addr31.24于稳定状态。双口RAM的输出数据DACD7.0在CLK1上升沿时刻发生改变,由于高速D/A的时钟信号DACLK与CLK1反相,保证了DACLK上升沿时刻,DA
35、C7.0处于稳定状态。(2)地址锁存模块C8051F360单片机P1口分时送出低8位地址和8位数据信息。通过FPGA内部设计一个8位锁存器即可获取低8位地址。地址锁存器的VHDL程序为:port(clk:in std_logic; d:in std_logic_vector(7 downto 0); q:out std_logic_vector(7 downto 0)end DLATCH8;architecture one of DLATCH8 isbeginprocess(clk,d)beginif(clk=1)thenq=d;end if;end process;(3)相位累加器模块的设计
36、相位累加器是DDS子系统的核心,由32位加法器与32位累加寄存器级联构成,对代表频率大小的频率控制字进行累加运算,输出波形存储器的地址。相位累加器的设计可以直接采用LPM宏单元库中的LMP_ADD_SUB宏单元,也可以用VHDL语言自行设计。以下就是采用VHDL语言实现的相位累加器源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity phase_acc isport( clk:in std_logic; -系统时钟 freq
37、in:in std_logic_vector(31 downto 0); -32位输入频率字romaddr:out std_logic_vector(7 downto 0); -8位相位累加器输出end phase_acc;architecture one of phase_acc issignal acc:std_logic_vector(31 downto 0);beginprocess(clk)beginif(clkevent and clk=1)thenacc=acc+freqin; -频率字累加,寄存end if;end process;romaddr=acc(31 downto 2
38、4); -截断输出end one;语句acc=acc+freqin实现频率字累加功能,并且因为要在下一时钟到来时才能进行下一次累加,所以也同时实现了累加寄存器功能。最后语句romaddr=acc(31 downto 24)实现相位截断的功能,截取了32位相位地址码的高8位。(4)频率字寄存器模块由于DDS的频率字采用32位字宽,因此,频率字寄存器由4个8位寄存器构成。讲地址译码器产生的片选信号CS2与地址信号A1、A0配合进行再次译码就可以得到4个寄存器片选信号CS20CS23。为了保证数据的可靠传送,片选信号CS20CS23必须与写信号相或后送入寄存器时钟输入端。单片机通过4次写操作将32位
39、频率字送到频率字寄存器。频率字寄存器模块的原理图如图4-4所示:图4-4 频率字接受模块顶层图4.5 单片机控制软件设计DDS信号发生器采用FPGA等硬件来完成高速波形的产生任务,其工作不需要单片机过多的干预。单片机子系统只需完成键盘输入、液晶显示、向FPGA传送数据、输出信号的幅值和直流偏移量的数字控制等功能。从软件的总体结构来看,单片机控制软件是一种单线程、键盘功能的分支程序。4.5.1 人机接口功能定义根据DDS信号发生器的功能设计了如图4-5所示的3种LCD显示页面。页面1为初始化显示页面,页面2为波形选择页面,在给定频率输入页面中,7个小方框所显示的位置用于显示输入给定的频率值。给定
40、的频率范围为00000009999999Hz。为了操作方便,允许输入给定频率的位数在17位之间,用Hz键结束。对于DDS信号发生器来说,键盘主要用于选择信号波形、输入频率值、控制输出信号的幅值和直流偏移量。由于按键数量比较多,键盘采用4X4矩阵式键盘。键盘各按键的定义如图4-6所示。0键9键用于输入频率,期中0键3键还用于选择输出波形;Hz键用于输入给定频率的确认键;波形选择键用于选择波形;A+键用于增加信号幅值,A-键用于减少信号幅值,D+键用于增加直流偏移量,D-键用于减少直流偏移量。页面1 页面2 页面3图4-5 页面1页面3示意图 图4-6 DDS信号发生器键盘定义4.5.2 主程序D
41、DS信号发生器的控制程序可分为主程序和键盘中断服务程序两部分。在确定主程序和键盘中断服务程序的功能时有两种方案:一种方案是主程序只完成初始化,将键盘读入和处理全部由键盘中断服务程序完成;另一种方案是主程序完成初始化和键值处理功能,而键盘中断服务程序只完成键值读入。由于键值处理程序设计数值运算、LCD模块的显示,将这些耗时的键值处理程序放入中断服务程序不符合程序设计的一般原则,因此,选用第二种方案。主程序首先完成堆栈指针设置,C8051F360内部资源初始化,LCD模块初始化。初始化完成以后就不断检测有无按键键入,当有按键键入时,根据键值执行相应的功能。由于02键不但用于输入给定频率,而且用来选
42、择输出波形。为了区分0键2键的不同功能,在主程序中定义了两种工作模式:波形选择模式和频率输入模式。在波形选择模式下,02键用于选择输出波形。当0键有效时,选择正弦波,单片机将256个字节正弦波波形数据发送到FPGA的双口RAM中;当1键有效时,选择方波,单片机将256个方波波形数据发送到FPGA中的双口RAM中;当2键有显示,选择三角波,单片机将256个字节三角波数据发送到FPGA的双口RAM中。在频率输入模式下,0键到9键用于输入给定的频率值。定义了以上两种工作模式以后,在主程序中分别设置一个波形选择模式标志和一个频率输入模式标志位。主程序初始化时,将波形选择模式和频率输入模式标志位均清零。
43、当波形选择键有效时,波形选择模式标志位置1,主程序进入波形选择模式;在波形选择模式下,按0键2键有效,频率输入模式标志位置1,主程序进入频率输入模式。由于输入给定频率的位数允许在17位变化,程序设计师通过Hz键来结束给定频率的输入,因此Hz键不但用来显示频率的单位,也能起到确认键的功能。当Hz键有效时,程序将输入的17位给定频率值转化为4字节频率控制字,然后发送到FPGA的频率控制字接收模块。由于键盘输入的给定频率值为非压缩型BCD码,应先将其转化为二进制数,再根据公式(2-5)将给定频率值转化成为4字节的频率控制字。当相位累加器字宽N取32,参考时钟频率fclk取40MHz时,频率控制字可以
44、由以下公式计算得到: (4-4)式子中fout为由二进制数表示的给定频率,乘上系数107.374,就可以得到4字节的频率控制字。单片机系统主程序见附件。主程序流程图如图4-7所示。图4-7 系统主程序流程图4.6 本章小结本章主要介绍了DDS信号发生器的实现过程,开头部分讲述了包括DDS信号发生器的原理图,材料选择的比较以及重点模块的介绍。后面一部分主要讲述单片机控制软件的设计,包括人机接口的定义、主程序的实现以及整个流程图。第5章 系统测试将FPGA内部的完整设计(地址译码器、编码式键盘接口、LCD接口、DDS子系统)通过USB-Blaster下载电缆下载到FPGA之中。单片机子系统通过适配
45、器与PC机相连5.1 单片机控制软件调试步骤步骤一:测试显示和键盘程序功能。程序运行时显示图4-5中的页面1。按波形选择键,应显示图4-5中的页面2。步骤二:通过键盘输入给定频率,用示波器观测告诉D/A输出波形,波形显示是否正常,频率是否正确。如果波形显示不正常,重点检查单片机中波形传送子程序和FPGA内部双口RAM的时序是否正确。如果波形显示正常,但是输出频率和给定频率误差较大,重点检查 单片机中频率字传送子程序和FPGA内部频率字寄存器逻辑电路有无错误。调试时,可将FPGA内部的一些关键信号锁定到未用到的I/O引脚上,以便测试。步骤三:按A+键和A-键,用示波器观测C8051F360单片机D/A转换器模拟输出引脚电平是否变化,模拟放大电路输出信号的幅值有无变化。步骤