毕业设计(论
题
目:
基于FPGA的智能函数发生器的设计与实现
学系专班
院:部:业:级:
电子工程学院XXX学系XXX学XXXXXXXXX
XXX
职称:
教授
学生姓名:导师姓名:
起止时间:2011年3月28日至2011年7月1日毕业设计(论文)诚信声明书
本人声明:本人所提交的毕业论文《基于FPGA的智能函数发生器的设计与实现》是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。
本人完全清楚本声明的法律后果,申请学位论文和资料若有不实之处,本人愿承担相应的法律责任。
论文作者签名:指导教师签名:
时间:时间:
年月年月
日日
西安邮电学院
(论文)任务书毕业设计毕业设计(论文)
学生姓名学院专业题目
XXXXXX
指导教师XXX职称教授
电子工程学院XXX学
系部XXX学系
基于FPGA的智能函数发生器的设计与实现任务与要求
1、2、
了解现有函数发生器工作原理及使用方法。
用VerilogHDL设计函数发生器,可以实现:方波、正弦波、递增斜波、递减斜波、三角波等。同时要求幅度可调、同时可以叠加直流分量等。
3、4、
设计D/A转换器驱动时序。
在FPGA上下载,并用示波器观测结果。
开始日期2011年3月28日完成日期2011年7月1日
年
月
日
主管院长(签字)
西安邮电学院
)工作计划毕业设计(论文论文)
XXXX
学生姓名
XX学院专业题目
电子工程学院XXX学
指导教师XXX职称教授
系部XXX学系
基于FPGA的智能函数发生器的设计与实现
工作进程
起止时间
工作内容
查阅参考资料和书籍,查找有关不同函数器工作原理,分析各中函数发生器优缺点
2011.3.28-2011.4.13
2011.4.14-2011.5.11
根据以上分析确定设计方案,设计该函数发生器的硬件电路
2011.5.12-2011.5.25调试硬件电路
2011.5.26-2011.6.7撰写论文
2011.6.8-2011.7.1老师审核论文,修改论文,准备答辩
主要参考书目(资料)
[1]Bar-GioraGoldberg.DigitalFrequencySynthesisDemystified.LLHTechnologyPublishing.1999.
[2]王金明,杨吉斌.数字系统设计与VerilogHDL.电子工业出版社.2002.
[3]夏宇闻.Verilog数字系统设计教程.北京航空航天大学出版社.2003.[4]罗杰.VerilogHDL与数字ASIC设计基础.华中科技大学出版社.2008.
主要仪器设备及材料
[1]FPGA开发版[2]计算机[3]Quartus[4]ModelSim
论文(设计)过程中教师的指导安排
对计划的说明
西安邮电学院
毕业设计(论文)开题报告
电子工程学院XXX学专业07XXX学系(部)
级03班
课题名称:
基于FPGA的智能函数器的设计与实现
学生姓名:指导教师:报告日期:
XXXXXX
XXX学号:04074082
2010年3月25日1.本课题所涉及的问题及应用现状综述
函数发生器可以是一种多波形的信号源,它可以产生正弦波、方波、三角波、锯齿波,甚至任意波形。函数发生器使用范围很广,它是一种不可或缺的通用信号源。可以用于生产测试、仪器维修、实验室,还广泛使用在其它科技领域,如医学、教育、化学、通讯、地球物理学、工业控制、军事和宇航等。
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中一种半定制电路出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
1971年3月美国学者J.Tierncy,C.M.Rader和B.Gold首次提出了直接数字频率合成(DirectDigitalSynthesis)技术,频率合成技术随后不断的发展,这是一种从相位概念出发直接合成所需要波形的全数字频率合成技术。同传统的频率合成技术相比,DDS技术具有极高的频率分辨率、极快的变频速度,变频相位连续、相位噪声低,能产生不同幅度、频率和波形的信号发生器,易于功能扩展和全数字化集成,容易实现对输出信号的多种调制等优点,所以该技术的得到了迅速的发展和广泛的应用。利用DDS原理设计制作的DDS芯片更是层出不穷,但是目前市面上的DDS芯片,价格昂贵、功能固定单一,应用受到一定的限制,所以本课题涉及到利用DDS原理和FPGA控制技术去设计一种能够产生多种波形的函数发生器,用到的原理就是DDS,FPGA,D/A以及简单的模拟处理。
2.本课题需要重点研究的关键问题、解决的思路及实现预期目标的可行性分析
本课题需要重点研究的关键问题是深刻理解直接频率合成技术的原理以及熟练的应用FPGA。首先我们要利用DDS原理设计出各种函数波形信号产生单元,只有有了这些信号我们才能对其进行控制和处理,要设计出好的函数波形信号产生单元就必须具备熟练应用FPGA的能力。通过网上和图书馆查阅资料以及和老师交流都可以对DDS有一个很好的理解,也对FPGA有一定的了解。
该多功能函数发射器的是建立在采样定理的基础上,利用DDS原理和FPGA技术实现的。首先我们利用C语言或Matlab通过采样波形函数得到各种波形数据,然后建立存储器并将其这些数据保存在该存储中,接下来我们设计一个带控制的地址产生单元,该地址产生单元每隔一段固定时间产生一个存储器地址,通过控制我们就得到我们想要波形数据的地址,通过地址我们就可不断的取出该波形的数据,接下来将取出该波形数据通过D/A转换成模拟信号,最后将该模拟信号通过一个反相器和加法器以实现其器幅度可调和叠加直流的功能,这就是实现该函数发生器的基本思路。
虽然本课题是要设计一个功能较为完善的函数发生器,有一定的困难,但是通过从理论分析上我们看到该函数发生器的实现是完全有可能的,即从技术上说是完全可以实现的。其次我们使用的软件环境ModelSim和Quartus都具备,硬件资料开发板和电脑也具备,时间也允许,所以预期目标一定能够实现。
3.完成本课题的工作方案
(1).有效利用互联网和学校的图书馆资源,查找有关不同函数发生器工作原理及其不同的设计方案分析其优劣,寻求出一种合理的设计方案。
(2).我们要对该函数发生器进行系统分析,分析其所有的功能以及它们之间的相互联系。(3).在以上功能分析的基础上对该系统进行功能模块划分,在模块的划分中我们要慎重以保证模块划分的合理性。将系统划分为小模块有利于我们的设计和调试。
(4).制定阶段计划及相应的任务,并按时完成任务以保证毕业设计顺利开展。(5).要和指导师老师多交流并不断的总结。
4.指导教师审阅意见
指导教师(签字):年月日
说明:
本报告必须由承担毕业论文(设计)课题任务的学生在毕业论文(设计)正式开始的第1周周五之前独立撰写完成,并交指导教师审阅。
西安邮电学院毕业设计(论文)成绩评定表
学生姓名课题名称毕业设计(论文)时间
课题任务完成情况
论文
XXXXXX
性别
男
学号
04074082
专业班级
课题类型
XXXXXX
难度)
基于FPGA的智能函数发生器的设计与实现
2011年3月28日~7月1日13
(千字);设计、计算说明书
指导教师
(千字);图纸
(职称教授XXXXXX(
(张);
其它(含附件):
指导教师意见评阅教师意见验收小组意见分项得分:开题调研论证论文撰写(规范)指导教师审阅成绩:分;课题质量(论文内容)分;学习态度分;外文翻译分;创新
分
年
分;
指导教师(签字):月日
分项得分:选题论文撰写(规范)评阅成绩:
分;开题调研论证分;外文翻译评阅教师(签字):
分;课题质量(论文内容)分
分;创新分;
年月日
分项得分:准备情况验收成绩:
分;毕业设计(论文)质量验收教师(组长)(签字):
分;(操作)回答问题
年
月
分日
答辩小组意见
分项得分:准备情况
答辩成绩:
分;陈述情况
分;回答问题
分;仪表
年
分月
日
答辩小组组长(签字):
成绩计算方法
(填写本院系实用比例)
指导教师成绩20(%)评阅成绩30(%)验收成绩20(%)答辩成绩30(%)
学生实得成绩
(百分制)
指导教师成绩答辩成绩
评阅成绩总评
验收成绩
答辩委员会意见
毕业论文(设计)总评成绩(等级):院答辩委员会主任(签字):
年
备注
学院(签章)月
日
西安邮电学院毕业论文(设计)成绩评定表(续表)
F
目录
摘要.........................................................................................................1
Abstract...............................................................................................................................................................................II
1引言.....................................................................................................12智能函数发生器原理和系统实现.......................................................2
2.1DDS工作原理....................................................................................................22.2智能函数发生器的指标要求...........................................................................32.3设计的基本原理和思路....................................................................................32.4总体设计方案的确定.......................................................................................42.5本设计中FPGA的选取及配置.........................................................................5
2.5.1FPGA的选取.........................................................................................52.5.2FPGA的配置方式.................................................................................52.5.3软件开发环境.......................................................................................52.5.4高速D/A(TLC7528).............................................................................5
3信号发生器硬件电路设计..................................................................6
3.1DDS信号发生模块框图..................................................................................63.2DDS信号发生器模块中参数........................................................................6
3.2.1参考时钟.................................................................................................63.2.2频率控制字位宽.................................................................................................................73.2.3存储器地址的位宽................................................................................73.3DDS信号发生器设计......................................................................................7
3.3.1参考时钟................................................................................................73.3.2相位累加器............................................................................................83.3.4方波........................................................................................................93.3.5三角波..................................................................................................103.3.6正弦波..................................................................................................113.3.7递增斜波...........................................................................................133.3.8递减斜波..............................................................................................133.4高速D/AC(TLC7528)....................................................................................14
3.4.1TLC7528的结构框图...........................................................................14
F
3.4.2TLC7528工作原理................................................................................153.4.3TLC7528的工作时序...........................................................................153.5FPGA主控制器硬件电路设计和实现...........................................................15
3.5.1按键输入................................................................................................163.5.2数码管显示...........................................................................................173.5.3波形选择................................................................................................203.5.4频率调节................................................................................................203.5.5D/A控制.................................................................................................213.6总电路图...........................................................................................................213.7后续模拟电路设计..........................................................................................214实验结果.......................................................................................................................22
4.1信号源的精度分析...........................................................................................224.2智能函数器实验结果.......................................................................................225结论...............................................................................................................................25致谢...................................................................................................................................26参考文献...........................................................................................................................28
基于FPGA的智能函数发生器的设计与实现
摘要
函数发生器是一种多波形的信号源,它可以产生正弦波、方波、三角波、锯齿波,甚至任意波形。函数发生器使用范围很广,它是一种不可或缺的通用信号源。可以用于生产测试、仪器维修、实验室,还广泛使用在其它科技领域,如医学、教育、化学、通讯、地球物理学、工业控制、军事和宇航等。
函数发生器的的设计方法有多种,直接数字频率合成就是其中的一种。直接数字合成是一种新的频率合成方法,是频率合成技术的一次革命,随着数字频率集成电路和XXX技术的发展,直接数字频率合成技术日益显露出它的优越性。
本设计利用直接数字频率合成技术加上FPGA控制,设计可产生正弦波、方波、三角波等波形的函数发生器。该函数发生器具有频率、幅度可调以及叠加直流的功能。本文首先介绍了直接数字频率合成技术的发展过程及趋势,其次介绍了直接数字频率合成技术的原理,重点论述了基于FPGA的波形发生器设计,其中包括其原理图、功能模块图、硬件电路图等设计,并针对设计过程中出现的问题提出了解决方案。在系统总体方案设计中,将DDS信号发生器分成5个模块:按键模块、数码管显示模块、FPGA控制模块、DDS模块、模拟信号处理模块。
关键词:函数发生器FPGAD/A
I
基于FPGA的智能函数发生器的设计与实现
Abstract
Functiongeneratorisamulti-wavesignalsource.Itcanproducesinewave,squarewave,trianglewave,sawtoothwaveandotherarbitrarywaveform.
Functiongeneratorisusedformanyaspectsanditisanindispensablecommonsignalsource.Itcanbeusedforproductiontesting,equipmentmaintenance,laboratoryandalsowidelyusedinothertechnologyareassuchasmedicine,education,chemistry,communications,geophysics,industrialcontrol,military,aerospaceandsoon.
Therearemanywaystodesignfunctiongeneratoranddirectdigitalfrequencysynthesizerisoneofthem.TheDirectDigitalFrequencySynthesis(DDS)isakindofnewfrequencysynthesismethodandalsoarevolutioninthefrequencysynthesistechniques.Withthedevelopmentofdigitalintegratedcircuitsandmicroelectronictechniques,DDSexhibitsitsadvantagesdaybyday.
Thedesignusesdirectdigitalfrequencysynthesisand
FPGAcontrol.Thisfunction
generatorcanproducesinewavesquare-wave,trianglewaveandsawtoothwave.Thefrequencyandamplitudeofthisfunctiongeneratorcanbeadjustedanditcanbesuperimposedwithdc.
Thispaperintroducesthedirectdigitalfrequencysynthesistechnologydevelopmentprocessthattrend,followedbytheintroductionofdirectdigitalfrequencysynthesisprinciple,withemphasisonwaveformgeneratorbasedonFPGAdesign,includingitsschematicdiagram,functionblockdiagram,Hardwareschematicsandotherdesignandfordesignproblemsintheprocessofproposedsolutions.
Overallthedesignofthesystem,theDDSsignalgeneratorisdividedintofivemodules:keymodules,LEDdisplaymodules,FPGAcontrolmodule,DDSmoduleandanalogsignalprocessingmodule.
keywords:functiongeneratorDDSFPGAD/A
II
基于FPGA的智能函数发生器设计与实现
1引言
1971年3月美国学者J.Tierncy,C.M.Rader和B.Gold首次提出了直接数字频率合成(DirectDigitalSynthesis)技术,频率合成技术随后得到了不断的发展,频率合成技术是将一个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率的技术。这是一种从相位概念出发直接合成所需要波形的全数字频率合成技术。同传统的频率合成技术相比,DDS技术具有极高的频率分辨率、极快的变频速度,变频相位连续、相位噪声低。能产生不同幅度、频率和波形的信号发生器,易于功能扩展和全数字化集成,容易实现对输出信号的多种调制等优点,满足了现代电子系统的许多要求,在通信、雷达、导航、电子侦察、干扰与抗干扰等众多领域都有应用。随着各种频率合成器和频率合成方案的出现,频率合成技术得到了不断的发展。
目前市面上的DDS芯片,价格昂贵、功能固定单一,应用受到限制,所以D/A,此次设计部不采用采用DDS芯片设计,此次设计采用DDS原理加上FPGA,和相应的模拟电路实现。该设计可以根据实际需要对其功能进行灵活地修改和配置。此次设计主要包括以下几个部分:FPGA主控制器电路设计,DDS信号产生模块电路设计和相应的模拟电路设计。
本文结构上先介绍了DDS原理,然后介绍了该智能函数发生器整体结构,接下来介绍了各个模块硬件电路设计,接着结合测试数据分析该智能函数发生器产生误差的原因,最后根据这些原因提出减小这些误差的方法并对该智能函数发生器提出一些改进的方案。
1
基于FPGA的智能函数发生器设计与实现
2智能函数发生器原理和系统实现
2.1DDS工作原理
一个纯净的单频信号正弦信号可表示为:
u(t)=Usin(2πfot+θo)
只要它的幅度U和初始相位了分析简化起见,可令U=1,
(2-1)
不变,它的频谱就是位于的一条谱线。为
=0,这将不会影响对频率的研究。即:
(2-2)
u(t)=sin(2πfot)=sinθ(t)
如果对(2-2)的信号进行采样,采样周期为散的波形序列:
(即采样频率为),则可得到离
u(n)=sin(2πfonTc)
相应的离散相位序列为:
(n=0,1,2...)
(2-3)
θ(n)=2πfonTc=∆θ•n式中:
∆θ=2πfoTc=2π(n=0,1,2...)
(2-4)
fofc(2-5)
是连续两次采样之间的相位增量。根据采样定理:
1fo 从(2-2)可知,是相位函数的斜率决定信号的频率;从(2-5)可知,决定相位函数斜率的是两次采样之间的相位增量∆θ。因此,只要控制这个相位增量,就可以控制合成信号的频率。现将整个周期的相位2π分成M份,每一份为 δ=2πM,若每次的相位增量选择为δ的K倍,即可得到信号的频率: fo= KδK=fc2πTcM(2-7) 相应的模拟信号为: K⎛⎞ u(t)=sin⎜2πfct⎟ M⎝⎠ (2-8) 式中K和M都是正整数,根据采样定理的要求,K的最大值应小于M的1/2。 综上所述,在采样频率一定的情况下,可以通过控制两次采样之间的相位增 2 基于FPGA的智能函数发生器设计与实现 量(不得大于π)来控制所得离散序列的频率,经保持、滤波之后可唯一的恢复出此频率的模拟信号。 2.2智能函数发生器的指标要求 综合市场上的函数发生器的指标和自身的硬件情况以及考虑到其应用的不同的场合,该智能函数发生器的设计要求如下: 该函数发生器采用直接数字频率合成(DDS--DigitalDirectFrequencySynthesis)技术实现,可以产生范围为1~180kHz的三角波、正弦波、方波递增斜波,递减斜波。 该函数发生器可以实现波形的幅度可调以及可以叠加直流。 此函数发生器在共分为四个档,分别为1Hz~100Hz、100Hz~1kHz、1KHz~10KHz、10KHz~80KHz,在这四个档位内的最小可调节频率分别为1Hz、10Hz、100Hz、1KHz。 该函数发生器有四个按键,五个数码管,一个调节幅度的旋钮,一个调剂叠加直流分量的旋钮以及一个波形输出端口,其四个按键的具体功能如下: 按键1:任何状态下按下此键都输出频率为1Hz的方波 按键2:波形选择键:通过此按键可选择波形。每按一次键,波形就改变一次,波形在方波、正弦波、三角波,递增斜波,递减斜波五种波形间切换。 按键3:频率档位选择键:通过按键选择频率档位。每按一次键,选择一个频率档位,共分为四个档,分别为1Hz~100Hz,100Hz~1KHz,1KHz~10KHz,10KHz~80KHz。 按键4:频率步进选择键:通过按键选择频率的步进值。每按一次键,步进值则根据此时所处的频率的档位的不同而改变:当频率处于1Hz~100Hz时,步进值为1Hz,当频率为100Hz~1KHz时,其步进值为10Hz,当频率处于1KHz~10KHz时,其步进值为100Hz,当频率为10KHz~80KHz,其步进值为1KHz。 此函数发生器具有五个数码管,用一个数码管的1~5来区分当前的波形种类,1代表方波,2,代表三角波,3代表正弦波,4代表递增斜波,5代表递减斜波。一个用于显示档位,1代表1Hz~100Hz的档位,2代表100Hz~1KHz档位,3代表1KHz~10KHz档位,4代表10KHz~80KHz档位。还有三位用于显示当前波形的频率。 2.3设计的基本原理和思路 本设计采用直接频率合成的方式设计函数信号发生单元。直接频率合成的基本原理是:首先设定一个(或多个)基准频率,将这个(或多个)基准频率变换成另一个(或多个)合乎质量要求的所需频率。直接频率合成技术(DirectDigital 3 基于FPGA的智能函数发生器设计与实现 FrequencySynthsis)就是把要输出的波形,预先归一化处理后,采样足够的点数,存储于波形存储器中,在需要输出时,将波形从存储器中读出,经过数/模转换,再通过后续模拟电路处理输出。DDS信号产生单元主要有由相位累加器、只读存储器、数模转换器组成。存储器中存储的是波形一个周期内不同相位对于函数波形幅值的编码,通过时钟触发相位累加器累加,相位累加器的输出作为地址取出存储器存储的值,该值进入D/A转换为相应的模拟信号,通过一个周期内相位的累加我们就可以得到一个周期的信号输出,该信号通过后续模拟电路处理就可以得到我们想要的函数波形。 2.4总体设计方案的确定 本设计采用FPGA加上外部存储器,高速D/A转换器,低通滤波器以及模拟电路来设计函数发生器,设计的函数发生器具有输出多种波形,成本较低,满足此毕业设计的需求。其核心技术采用频率合成技术(DDS),DDS具有频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,有很好的相位控制和幅度控制功能,另外其数据采样功能也是极具精确和完善的,它可以产生较为精确的任何波形信号。 该函数发生器由DDS信号产生电路模块,FPGA控制电路模块以及后续模拟信号处理模块,每个模块组成如下: (1).DDS信号产生电路模块:包括相位累加器、波形数据存储器和高速D/A;(2).FPGA控制电路模块:波形选择、频率调节、档位调节、数码管显示控制及按键输入控制; (3).模拟信号处理模块:实现幅度调节和叠加直流功能。系统的具体框图如下: 图2-1函数发生模块系统框架图 上述框图表示在FPGA控制器的控制下DSS信号产生模块产生量化的波形编码,该波形编码通过高速D/A产生相应的模拟信号,模拟信号通过后续的模 4 基于FPGA的智能函数发生器设计与实现 拟信号处理电路达到我们所要求的函数波形。 2.5本设计中FPGA的选取及配置 2.5.1FPGA的选取 本设计中采用的FPGA芯片是Altera公司CycloneEP2C8Q240C8主要特点如下: (1).拥有8,256个逻辑单元 (2).高达165,888比特(20736字节)的RAM空间(3).支持低成本的串行配置器件 (4).每个器件最多拥有2个锁相环,用于实现时钟倍频和相移等功能(5).最多用户管脚高达182个2.5.2FPGA的配置方式 本设计采用AS模式,通过USBBlaster下载电缆对单片EPCS4串行配置芯片进行编程。2.5.3软件开发环境 (1).QuartusII7.2(32~Bit)(2).ModelSimSE6.2b2.5.4高速D/A(TLC7528) (1).分辨率8位(2).线性误差±0.2%(3).单通道 (4).工作电压4.75~5.25V(5).TTL电平输入 (6).低功耗,通常情况下80mW 5 基于FPGA的智能函数发生器设计与实现 3信号发生器硬件电路设计 由第一章可知该函数发生器大体上有三部分组成,即FPGA控制器模块,DDS信号发生模块以及模拟信号处理模块,其中DDS信号发生模块是此次设计的核心,其次就是FPGA主控制器模块,本章就围绕这三个模块的硬件电路设计而展开。 3.1DDS信号发生模块框图 DDS信号发生器的框图如图一所示: 图3-1智能函数发生器的系统方框图 它主要有参考时钟,相位累加器,波形存储器(波形产生单元),D/A组成,其中相位累加器是核心,它的优劣直接影响整个系统的好坏,因此它是我们此次毕业设计的一个重点。 3.2DDS信号发生器模块中参数 DDS信号发生模块的主要参数有:参考时钟的大小,频率控制字位宽,存储器地址的位宽。3.2.1参考时钟 参考时钟频率的选取决定了输出的波形采样点的速率,最高采样速率愈高, 6 基于FPGA的智能函数发生器设计与实现 产生输出信号的频带愈宽。将数字信号还原为模拟信号,根据采样定理,理论上采样频率只要大于被采样信号带宽的两倍即可。但考虑到实际信号不可能是理想的带限信号,因此要进行多点采样。设计中,选取一个周期内最低采样点数为10,若正弦信号最高输出频率为1MHz,则需要采样的时钟频率至少为10MHz。3.2.2频率控制字位宽 由第一章的DDS基本原理我们可得 1 ∆fout=N*fclk 2 (3-1) 可见,相位累加器长度N决定了信号的频率分辨率。理论上N值越大,频率分辨率越高。而且N值的大小与寄存器的个数成正比,考虑到FPGA的容量,设计选取N=26,在10MHz参考时钟下,频率分辨率达到0.1490Hz,但在设计当中该函数发生器的最小分辨率为1Hz。3.2.3存储器地址的位宽 由于DDS的最小相位分辨率为 2π∆ϕout=M 2 (3-2) 可见,M值的大小决定波形存储器的容量,它决定了相位分辨率。波形存储器容量越大,一个周期内波形的采样点数越多,产生的波形的失真越小,输出信号的质量就越好。但存储器容量越大,占用存储单元就多,同时还会增加功耗,综合考虑,设计中选取M=10,即每种波形周期内采样1024个点。 3.3DDS信号发生器设计 3.3.1参考时钟 由于此次设计所用的开发板上只提供一个50MHz时钟,所以必须通过分频得到我们所需要的10MHz时钟。此处设计较为简单,只需要将50MHz时钟5分频即可。 Quartus仿真结果如图3-2所示: 7 基于FPGA的智能函数发生器设计与实现 图3-2时钟5分频仿真结果 3.3.2相位累加器 图3-3累加器单元 相位累加器由加法器和锁存器组成(如图3-3)。其工作原理是,在参考时钟clk控制下,计数器phaseaddr对频率控制字frq进行线性累加,得到的相位码作为地址去寻址波形存储器。具体工作过程为:在每个clk的上升沿phaseaddr就加1,当其累加到一定程度时(超过65535),addr就会累加一次,从而实现了波形的相位按预设幅度累加一次,当phaseaddr累加超过26位时,在这个过程中刚好完成波形相位一个周期内的累加,同时在此时phaseaddr产生溢出,波形相位重新累加,这个周期即是DDS合成信号的一个频率周期。显然当frq取值不同时,相位累加器的溢出时间就不同,从而影响我们合成信号的频率。所以我们可以通过改变fra的大小控制我们将要合成波形的频率。 相位累加器的仿真波形如下图所示: 8 基于FPGA的智能函数发生器设计与实现 图3-5累加器仿真时序 图3-6累加器仿真时序 由以上我们可以得到函数波形的相位在一个周期采样值,但是如何得到函数的离散波形呢?对于一些简单的函数我们可以通过一定的算法实现,如三角波,递增斜波,递减斜波,方波等,但是对于正弦函数就相对来说就比较困难,索性我们就将该相位对应的函数值保存在存储单元中,利用查表法来实现。 正如以上所述,对于三角波,递增斜波,递减斜波,方波的确没有必要来存储到存储单元,正弦波也没有必要采用何等精妙的算法实现,所以在这部分我做了一个小小的调整,只将正弦波的采样值存储起来,而其它函数采样值就通过简单的算法实现,具体的实现如下。3.3.4方波 由于方波的波形简单,只有高、低两种状态,因此只需要在一个周期的中间位置反转电平即可。其实现原理如下:由于相位累加器的值是线性累加的,以此地址addr也是线性累加的,对所给的地址值addr进行判断,当地址值的最高位为0时,便将存储波形幅值的存储器的每一位赋值为1,否则赋值为0。 square[7..0]~reg0 addr[9..0] clkDPREQsquare[7..0]ENACLR图3-7方波波形数据产生单元 9 基于FPGA的智能函数发生器设计与实现 仿真的如下: 图3-8方波波形数据产生单元仿真结果 3.3.5三角波 由于三角波的波形也较为简单,其在前半个周期是均匀递增的,后半个周期是均与递减的,依据线性关系根据地址addr控制波形数据输出。其实现原理如下:由于相位累加器的值是线性累加的,因此地址addr也是线性累加的,在前半周期,由于地址每增加2波形数据增加1,所以对所给的地址值addr进行判断,当地址值的最高位为0时,便将存储波形幅值的存储器赋值为addr[8:1],又由于在后半周期地址addr每增加2波形数据减小1,所以赋值为addr[8:1]。 三角波数据产生单元的电路图如图3-9所示: triang~[7..0]SELDATAADATABOUT0triang[7..0]~reg0DPREQaddr[9..0] triang[7..0]ENAMUX21CLRclk图3-9三角波波形数据产生单元 仿真结果如下图: 10 基于FPGA的智能函数发生器设计与实现 图3-10三角波波形数据产生单元仿真结果 3.3.6正弦波 在使用QuartusII7.2(32-Bit)进行开发时,正弦波存储器可以调用LPM_ROM模块来实现,为了对ROM模块每数据进行加载首先建立相应的sine.mif(MemoryInitialFile)文件。它可以用C语言(或者Matlab)编写程序,描述正弦方程式,然后生成sine.mif文件,为保证不失真地输出波形,设计时可将一个周期的正弦波离散成1024个相位/幅值点。具体的步骤如下: (1).当形成好sine.mif文件后,选择Quartus工具栏中的tools。 (2).再用QuartusII7.2(32-Bit)软件定制存储器LPM_ROM(选择Tool/MegaWizardPlug~InManager命令,启动MegaWizard工具生成Rom)。 (3).选择中createamewcustommegafunctionvariation然后点击Next。 图3-11 (4).选择存储器类型,输出的文件代码的语言类型,以及文件存放的目录。 11 基于FPGA的智能函数发生器设计与实现 图3-12 (5).设定存储器的规格,这里设置为1024*8bits。 图3-13 (6).并加载刚才建立的sine.mif正弦波形文件初始化ROM,得到正弦波形的数据存储器。 图3-14 正弦波数据产生单元模块图如图3-15所示: 12 基于FPGA的智能函数发生器设计与实现 图3-15正弦波数据产生单元 仿真结果如图3-36所示: 图3-16正弦波数据产生单元仿真结果 3.3.7递增斜波 由于递增斜波的波形也较为简单,其波形在一个周期内是均匀单调递增的,依据线性关系我们同样也根据地址addr控制波形数据。其实现原理如下:地址数据addr是10位,而波形数据是8位,也就就要求地址每增加4波形数据才增加1,相当于地址除以4赋给波形数据数据incr,也就是相当于直接将addr的高八位赋给incr即可,即incr=addr[9:2] 13 基于FPGA的智能函数发生器设计与实现 increase[7..0]~reg0 addr[9..0] clkDPREQincrease[7..0]ENACLR图3-17递增斜波波数据产生单元 仿真结果如下图: 图3-18递增斜波波数据产生单元仿真结果 3.3.8递减斜波 由于递减斜波的波形也较为简单,其波形在一个周期内是均匀单调递减的,将递增斜波的波形翻转过来就可以得到递减斜波的波形,根据简单的数学知识我们可以将addr的高八位取反赋给递减函数的波形数据寄存器decre=~addr[9:2]。 decrease[7..0]~reg0 addr[9..0]clkDPREQdecrease[7..0]ENACLR图3-19递减斜波波数据产生单元 仿真结果如下图: 14 基于FPGA的智能函数发生器设计与实现 图3-20递减斜波波数据产生单元仿真结果 3.4高速D/AC(TLC7528) 此次设计当中我们采用TI公司的TLC7528。TCL7528是双路、8位数字~模拟转换器。它采用并行数据输入,属于电压输出型,能够满足毕设的要求。3.4.1TLC7528的结构框图 图3-21TLC7528de结构框图 3.4.2TLC7528工作原理 TLC7528包含两个相同的8位D/A转换器DACA和DACB。每个DAC由反相R~2R梯形网络、模拟开关及数据锁存器组成。二进制加权电流在DAC输出与AGND之间切换,于是在每一梯形网络分支中保持恒定的电流,与开关状态无关。大多数应用仅需要加上运算放大器和电压基准。 TLC7528控制信号有CS,WR及DACA/DACB,当CS和WR均为低电平时,TCL7528模拟输出(由DACA/DACB控制线指定)对DB0~DB7数据总线输入端的活动做出响应。在此方式下,输入锁存器是透明的,输入数据直接影响模拟输出。当CS或WR信号变为高电平时,DB0~DB7输入端上的数据被锁存,直至CS或WR信号再次变低为止。当CS为高电平时,不管WR信号的状态如何,数据输入被禁止。 3.4.3TLC7528的工作时序 15 基于FPGA的智能函数发生器设计与实现 图3-22TLC7528的工作时序 3.5FPGA主控制器硬件电路设计和实现 下图是FPGA主控制电路方框图: 图3-23FPGA主控制器模块图 FPGA主控制器也是函数发生器的一个重要组成部分,该部分包括按键输入,数码管显示,波形选择,频率调节和D/A控制。3.5.1按键输入 a.按键功能 按键常作为一个系统的输入设备,其价格低廉且硬件电路设计简单,所以本系统采用其作为输入方式。本设计当中一共用到四个按键。为了方便起见我们将其称为一号键,二号键,三号键和四号键。其中一号键用过系统复位,二号键实现波形的切换,三号键用于调节档位,四号键用于调节频率。 b.按键抖动消除 机械式按键靠机械触电的接触与断开产生信号。如图1是按键的电原理图示意,图中行线假设接入FPGA主控制器的信号线,没有按下按键时信号线上为高电平,否则行线与列线导通,信号线上为低电平。图2是按键按下和断开的理想 16 基于FPGA的智能函数发生器设计与实现 波形曲线,但是由于操作过程在按键过程中不可避免地存在抖动,因此实际波形曲线如图3所示,其中t1是闭合过程的抖动时间,t2是闭合时间,t3是断开时(按t1和t3取决于按键的机械特性和操作者的熟练程度等等因素,键释放)抖动时间。 通常在5~10ms。t2为稳定的闭合区,时间通常为几分之一秒。 图3-24按键原理图 图3-25理想按键波形 图3-26实际按键波形 由于机械式按键在接通和断开时会产生抖此动现象,因此在按一次按键时会产生多个脉冲信号。如果不进行任何处理,则按一次按键,FPGA主控制器会认为有多次按键按下,从而产生错误的结果。 要使FPGA主控制器正确识别按键的信号就必修进行去抖动处理。去抖动的 17 基于FPGA的智能函数发生器设计与实现 方法如下: (1).每隔一段时间去检测按键输出引脚的电平值,连续检测三次,(2).判断这三次电平值,若三次都检测到全为低电平,则执行下一步判断,否则重新检测。 (3).判断引脚上是上升沿,下降沿还是没有变化,若判断引脚是上升沿(或下降沿)则执行相应的处理,接着用从第一步开始。3.5.2数码管显示 a.8段数码管显示原理 数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。对对于共阴极的数码管,内部每个发光二极管的阳极被连接在一起,成为该各段的公共选通端;发光二极管的阴极则成为段选线。对于“共阴极”数码管,则正好相反,内部发光二极管的阴极管的阴极接在一起,阳极成为段选线。这两种数码管的驱动方式是不同的。当要点亮“共阴极”数码管的一段时,公共端需接高电平(即写逻辑),该段的段选线接低电平(即写逻辑0),从而该段被点亮。当需要点亮“共阴极”数码管的一段时,公共段需接个低电平(即逻辑0),该段的段选线接高电平(即写逻辑1)该段被点亮。 数码管的段位顺序如下图图所示: 图3-278段数码管 一般来说在一个字节中按照abcdegfdp的顺序放置字型码比如在一个“共阴极”数码管上要显示“1”,则b、c段需要被点亮,因此在段选线中要写入60H。 数码管有共阴极数码管和共阳极数码管,如下图所示该数码是共阳极连接 18 基于FPGA的智能函数发生器设计与实现 的,上面的端口相当于各数码管的使能端,下面的八位为所有数码管的公共数据输入端。在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由控制器8个I/O口控制,形成段选线的多路复用。而各位数码管的共阴极或共阳极分别由控制器独立的I/O口控制,顺序循环地点亮每一位数码管,这样数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻选通一位数码管,但是由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。 所示为一个8位8段LED动态显示器电路原理图。其中段选线占用一个8为I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段选码的输出对各位来说是相同的。因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够显示出于本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示字符,而其它各位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其它的为选线为选线处于关闭状态。如此循环下去,就可以是各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够段,则可造成多位同时亮的假象,达到显示的目的。 19 基于FPGA的智能函数发生器设计与实现 图3-28数码管电路图 b.数码显示的含义 为了方便调试和使用的方便,设计中用五个数码管显示当前波形,当前频率所在的档位以及当前波形的频率。如上图,采用最左边的五个数码管。第一个数码管用1~5分别代表方波,三角波,正弦波,递增斜波以及递减斜波。第二个数码管用1~4分别代表…四个档位。剩下的三个数码管显示当前波形的频率。c.数码管显示的实现根据以上数码管显示原理,可以用5位位选线和8位数据线控制数码管的显示。5位位选线在时钟的控制下,在每个时钟的上升沿(或下降沿)轮换循环输出输出低同时数据线输入该位相应的数据,其中时钟的频率为1KHz。 如下图位选线的时序: 图3-29数码管位选线时序 3.5.3波形选择 该函数有多种波形,我们可以在控制器中设置一个寄存器,当我们按下复位键时该计数器复位,当我们按下一次波形切换键时该计数器就加1,累加到5又转为0继续累加。然后控制器可以根据该寄存器的值确定其输出波形,具体的就是用该寄存器的值作为一个多路选择器的控制端,各种量化的波形数据作为该多路选择器的输出,该输出就是要送入到D/A被转换的值。 具体电路方框图如下: 20 基于FPGA的智能函数发生器设计与实现 图3-30多路选择器模块图 3.5.4频率调节 频率调节是FPGA控制器一个比较重要的部分,这部分实现FPGA控制器根据当前频率所在的档位和调节频率。从上面我们知道累加器有一个被称为频率控制字的输入端口frq。我们很容易得知如下如下公式: frq*fclk(3-3)N2 由以上公式我们可知:我们要得到信号的频率与频率控制字成比例,只要我们控制频率控制字的值,我们就可以得到我们想要频率的波形。 f= 由式(3-3)我们又可得: frq= ffclk *2N (3-4) 由以上分析我们可知频率控字位数N=26,系统时钟sclk=10MHz,又由式(3-4)我们可以得到当f=1Hz,100Hz,1KHz,10KHz时frq对应的值,我们暂且记为frq1,frq2,frq3,frq4。我们容易知道这个值就对应于函数波形频率为1Hz,100Hz,1KHz,10KHz时frq实际值。当我们要调节频率时,我们还必须知道目前频率的档位,当我们只有知道当前频率的档位时我们才可以调试频率。具体的调节过程为:当目前档位为1~100HZ时给frq加上frq1,当目前的档位时100~1KHz时给frq加上frq2,当目前的档为1~10KHz时给frq加上frq3,当目前的档位为10~80KHz时我们就给frq加上frq4,这样我们就完成了一次频率调节。3.5.5D/A控制 D/A的工作是在FPGA主控制器的控制下工作的。FPFA主控制器通过时序控制D/A的工作,该D/A是数据输入时并行的较为简单就不做过多的说明。 3.6总电路图 以上我们对电路的各个模块的电路设计都介绍了,下图使我们整个电路图: 21 基于FPGA的智能函数发生器设计与实现 keyin[4..0]WideAnd0leddac:sdcontrol:control1divier:divF50MHzF50MHzF10MHzF1KHzF1KHzclkkeyin[4..0]Refrst_nwavemode[4..0]length[25..0]SEG[7..0]SEG_DIG[4..0]Refclkrst_ndata[7..0]dac_clkdac_datadac_ldac (GND)dac_loadmux_:mucounter:counter1clkfrq[25..0]clkaddr[9..0]addr[9..0]dac_clkdac_datadac_ldacdac_loadsquare:squarsquare[7..0]clkselect[4..0]square[7..0]triang[7..0]sine[7..0]increase[7..0]out[7..0]triangular:triangulclkaddr[9..0]triang[7..0]decrease[7..0]sine:sin1clockaddress[9..0]q[7..0]Increase:increaclkaddr[9..0]increase[7..0]Decrease:decreaclkaddr[9..0]decrease[7..0]SEG_DIG[4..0]SEG[7..0]图3-31智能函数发生器数字部分总电路图 3.7后续模拟电路设计 到目前为此我们可以得到我们所要的函数波形,如何调节函数波形的幅度以及叠加直流呢?这一部分我们采用模拟电路实现,具体的电路图如下: 图3-32后续模拟电路 图3-22中的电路图是我们熟悉的模拟加法器,当电位器2调节到最小时,该电路就变成一个简单的反向比例器,通过调节滑动电位器1我们就可以调节该电路的放大倍数,就可以实现波形的幅度调节。当我们调节电位器2时我们可以调节波形叠加直流的大小。 4实验结果 4.1信号源的精度分析及结果 由式(3-4),frq只能取整数以及N=26我们可得如下表格: 22 基于FPGA的智能函数发生器设计与实现 表4-1frq、与f的计算值与实际值 f频率(Hz) 11001K10K frq计算值6.7108864671.088646710.886467108.864 frq实际值(frq1) 7671671167109 实际频率(Hz) 1.043199.98831000.032210000.1729 我们从以上表格可知由于frq的理论值与实际值之间曾在差异,故我们得到得实际函数波形的频率与我们所要频率之间必定有一定的误差,假如我们想要f=30Hz的函数波形,我们知道frq的实际值frq1=7*30=210,而理论上frq=201.31,通过计算我们可知实际波形的频率比我们想要波形频率大1.29Hz,如图(4-1)与我们分析一致。 实际上在一个频率档位上,输出波形的频率越高,实际上输出波形频率误差就越大,所以在实际应用中我们根据我们输出波形的频率学选择适当的档位,以便减小误差。 4.2智能函数器实验结果 下图是预想输出频率为30Hz实际函数波形 图4-1方波 23 基于FPGA的智能函数发生器设计与实现 图4-2正弦波 图4-3三角波 图4-4递增斜波 24 基于FPGA的智能函数发生器设计与实现 图4-4递减斜波 下图是预想输出频率为100Hz实际函数波形 图4-5正弦波 图4-6递增斜波 25 基于FPGA的智能函数发生器设计与实现 图4-7递减斜波 26 基于FPGA的智能函数发生器设计与实现 5结论 我的毕业设计是设计一个基于FPGA的智能函数发生器,说其智能因为是我采用了DDS原理设计的。我们知道DDS函数发生器的特点是其具有极高的频率分辨率、极快的变频速度,变频相位连续、相位噪声低,能产生不同幅度、频率和波形的信号发生器等等。 此次设计没有直接采用DDS芯片而是利用DDS原理自行设计的,这样我们便可以对DDS的原理有一个深刻的理解,这样同时也增加了该信号源设计的难度,通过设计我们可以我们产生5种信号波形,这是传统采用DDS芯片设计无法做到的,设计中我们函数的波形也有一定的处理,比如器幅度调节和叠加直流。 此次的毕业的最终结果基本满足了毕设要求,在设计的过程中,完成了FPGA内部控制电路及时钟分频电路,累加器的设计。在硬件设计上,包括外部存储器接口电路的设计,幅度控制以及叠加直流电路的模拟电路设计。在设计中还有很多不足的地方,期待进一步改进,包括: (1).此系统的时钟时钟是10MHz,D/A的最高转换速率还是比较低,若想输出更高频率的函数波形,就必须提高系统时钟的频率以及选用更高转换速率的A/D。 (2).从实验我们得知此智能函数发生器实际结果与理论值由一定的差距,所以还有必要优化电路的设计,比如提高D/C分辨率,增加ROM的容量等。 (3).虚拟仪器应用越来越广泛,我们可以将此函数发生器设计为虚拟仪器,这样以来不仅应用方便而且便于调试。 通过这次设计,我加深了对理论知识的理解,懂得了如何在实际中应用所学的知识:同时也掌握了硬件设计和调试的方法。这样的学习过程是我人生中的宝贵经验。 由于作者水平有限,文中难免有不妥或错误之处,恳请各位老师、同学批评指正。 27 基于FPGA的智能函数发生器设计与实现 致谢 能够顺利完毕业设计我要要感谢XXX老师和同学的帮助。 首先我要感谢我的导师XXX教授,李老师以其渊博的学识,认真的治学态度,而且,他谦逊待人、严谨治学的作风,对工作认真负责的态度给我们树立了做人做事的楷模。在课题设计的过程中,李老师给了我很大的帮助,帮助解答毕业设计中遇到的问题,使我能够顺利的完成设计。 其次我要感谢我的同学,虽然我们设计的题目不一样,但是我们始终在讨论。我们在一起讨论彼此的进度、设计思路、设计中遇到的问题等等,通过讨论我们获得了新的思路,认识我们设计中存在的不足,这加快我们的设计进度,让我获益匪浅。 最后我要特别感谢我的家人,是他们的鼓励和支持才使我能够顺利的完成学业。我的每一份成长和进步都离不开他们的关心。最后,感谢其它所有关心和帮助过我的人。 28 基于FPGA的智能函数发生器设计与实现 参考文献 [1]Bar-GioraGoldberg.DigitalFrequencySynthesisDemystified.1999LLHTechnology Publishing. [2]王金明,杨吉斌.数字系统设计与VerilogHDL.2002北京电子工业出版社[3]夏宇闻.Verilog数字系统设计教程.2003北京北京航空航天大学出版社[4]康华光.电子技术基础(模拟部分).2006北京高等教育出版社[5]周立功.EDA实验与实践.2007北京北京航空航天大学出版社 [6]罗杰.VerilogHDL与数字ASIC设计基础.2008武汉华中科技大学出版社[7]李萍.基于dds技术的频率给定方法.中国计量2005(4)60-6l [8]任志平,党瑞荣.基于EDA技术的智能函数发生器的设计.科学技术与工程2008(8)1076-1078 [9]郝小江,罗彪.基于FPGA的函数发生器[.电测与仪表2008(509)49-51[10]邓重一.基于DDS技术的频率合成源设计仪表技术与传感器.2005(10)37-40[11]栾宝宽,方蕾,冯永浩.基于DDS的信号发生器的设计与实现[J].电子工程师2005(10)38-39 [12]王晓升,沙胜贤.基于DDS的任意波形发生器实现.长春工程学院学报(自然科学版).2005(2)56:58 [13]聂祥羿,王自,高国升.应用dds芯片AD9835开发的一种高精度频率信号发生器.电子技术应用.2001(0)62-64 29 因篇幅问题不能全部显示,请点此查看更多更全内容