毕业设计 基于CPLD的三相多波形函数发生器的设计


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于CPLD的三相多波形函数发生器的设计

1基于CPLD的三相多波形函数发生器设计

1.1 波形发生器系统的设计方法及其技术指标

1.1.1设计方式概述

在电子工程设计与测试中,常常需要一些具有特殊要求的信号,要求其波形产生多,频率方便可调。通常的信号产生器难以满足要求,市场上出售的任意信号产生器价格昂贵。在老师指导下,结合实际要求,我设计了一种基于CPLD的三相多波形函数发生器,能输出正弦波、三角波、方波等波形信号,波形信号之间的相位差均为120˚。

复杂可编程逻辑器件CPLD器件可以代替许多分立元器件,从而大大降低了电路板的复杂程度。对于CPLD器件的设计一般可以分为设计输入、设计实现和器件编程三个设计步骤以及相应的功能仿真、时序仿真和器件测试三个设计验证过程。

设计输入有多种方式,目前最常用的有电路图和硬件描述语言两种,对于简单的设计,可采用原理图的方式设计,对于复杂的设计可使用原理图或硬件描述语言(Verilog, AHDL, VHDL语言),或者两者混用,采用层次化设计方法,分模块层次地进行描述。

原理图设计方法主要是按照数字系统的功能采用具体的逻辑器件组合来实现的把这些由具体器件实现逻辑功能的电路图输入到软件当中。这种设计方法比较直观。       

硬件描述语言设计方法主要把数字系统的逻辑功能用硬件语言来描述,采用VHDL语言描述的数字系统大致有三种;其一称为行为描述,它用几个包含着若干顺序语句的进程描述输入与输出之间的转换关系;其二是数据流描述,用一系列的并发信号赋值语句描述输入与输出之间的关系;其三为结构描述方式,是通过元件之间的互联关系描述输出电路的结构。无论是原理图输入还是描述语言输入都各有其优点,原理图设计适合于对器件比较熟悉,元件之间的互联清楚,并且需要的设计比较简单的情况,而对于器件不熟悉,设计复杂的情况来说,使用硬件描述语言要方便一些。

设计实现:设计实现是指从设计输入文件到熔丝图文件(CPLD)的编译过程。在该过程中,编译软件自动地对设计文件进行综合、优化,并针对所选中的器件进行映射、布局、布线、产生相应的熔丝图或位流数据文件,在此过程中,由于编译软件给系统管脚的分配是比较杂乱的,为了电路板布线的方便,用户可以对输入/输出管脚进行管脚锁定。

器件编程:器件编程就是将熔丝图文件或位流数据文件下载到相应的CPLD器件中,并与CPLD器件的管脚相对应,所用的软件是ALTARE公司提供的CPLDDN4,这是ALTARE公司CPLD系列的专用下载软件。

设计校验:对应于设计输入、设计实现和器件编程,设计验证分为了功能仿真、时序仿真、器件测试三个部分。功能仿真验证设计的逻辑功能,在设计输入过程中,对部分功能或整个设计均可进行仿真;时序仿真是在设计实现以后,针对器件的布局、布线方案进行时延仿真,分析定时关系:器件测试是在器件编程后,通过实验或借助测试工具,测试器件最终的功能和性能指标。

在设计中系统的接口电路、信号源的大多数逻辑控制都在CPLD中实现。

在该流程中仿真是重点。仿真又可分为功能仿真(前仿真)与时序仿真(后仿真)。根据电路设计编制仿真文件,在文件被综合前进行仿真,可验证电路功能;在保证电路已实现设计的功能后,进行综合并对综合的结果进行时序仿真,可验证电路的时序是否满足要求。当电路的前仿真与后仿真都满足要求,则电路的设计是成功的。然后设置器件类型并进行引脚锁定,再对文件进行适合于所加配置的逻辑综合;通过后即完成设计。最后结合系统中的其它部分进行连调,如发现问题可修改设计。

本设计中使用了ALTERA公司提供的配套软件MAX+PLUSII进行文件的输入、编译和下载。MAX+PLUSII的软件设计主要由设计输入、项目编译、项目校验和器件编程等四部分构成。

图1.1-1 CPLD设计流程图

图1.1-2  MUS+PLUSⅡ设计的主要组成部分

1.1.2 三相函数多波形发生器技术指标

三种波形之间的相位差均为120°,可以同时输出,具有三相的功能。对以下三种波形的频率均要求:产生的频率都可以预置;输出的信号幅值能在100mv~3V的范围内调整。

对正弦波信号的要求为:信号频率范围:20Hz-20kHz之间可调,步长为10Hz;

非线性失真系数≤3%。

对方波信号的要求是:信号频率范围:20Hz-20kHz;上升和下降时间<1µs;

对三角波信号的要求为:信号频率范围:20Hz-20kHz之间可调。

1.1.3三相波形发生器设计方法概述

Direct Digital Synthesis(DDS)是20世纪60年代末出现的第三代频率合成技术。用DDS技术来设计制作一个基于CPLD的三相多波形函数发生器,并使它能输出正弦波、三角波、方波等波形信号源,三种波形的相位差为120˚。

波形发生器中的CPLD芯片是DDS的控制及数据处理的核心,电路系统主要由时钟信号发生器、波形数据产生器和A/D转换电路组成。波形数据产生器由数控分频器、三角波产生模块、正弦波产生模块、方波产生模块等构成。在时钟信号发生器作用下,波形数据产生器生成频率可变的波形数据数字信号,由 A/D转换电路放大处理后输出最终所需要的波形信号。

    各个模块的实现主要采用MAX+ plus II开发平台,由VHDL编程实现。先完成外围电路的焊接之后,用CPLD的专属下载软件把编写完的程序烧录入CPLD芯片,再对整个波形发生器进行调试,使其达到预期的效果。

1.2 设计方案

1.2.1 三相函数发生器设计原理

DDS制作的三相波形发生器主要由标准参考频率源、相位累加器、波形存储器、数模转换器、低通平滑滤波器构成。在时钟脉冲的控制下,频率控制字K由相位累加器得到相应的相码,相码寻址波形存储器进行相码——幅码变换输出不同的幅度编码,再经过数模变换器得到相应的阶梯波,最后经低通滤波器对阶梯波进行平滑,即得到由频率控制字决定的连续变化的输出波形。其中,参考频率源一般是一个高稳定的晶体振荡器,其输出信号用于DDS中各部件同步工作。因此,DDS输出的合成信号的频率稳定度与晶体振荡器是一样的。

DDS系统核心是N位相位累加器。相位累加器的结构一般N位字长的二进制加法器与一个由时钟触发的N位二进制相位累加寄存器级联构成,加法器的一个输入端与相位寄存器的输出端相连,另一个输入端是外部的频率控制字K。在每一个参考时钟脉冲输入时,把频率字累加一次,并把相加后的结果送至累加寄存器的数据输出端。由于相位累加器的输出连接在波形存储器的地址线上。因此其输出的改变就相当于进行查表。系统中的参考时钟通常是一个高稳定性的晶体振动器,用来作为系统时钟同步整个系统的各组成部分。在系统时钟脉冲的作用下,相位累加器不停地累加.也即不停地查表,不停地把波形重新合成出来,当相位累加器累加满时就会产生一次溢出,完成一个周期性的动作,这个周期就是DDS合成信号的一个频率周期,累加器的溢出频率就是DDS输出的信号频率。。滤波器则进一步平滑D/A转换器输出的近似所需波形的锯齿阶梯波.同时滤出不必要的杂波。

图1.2-1 DDS的原理图

图1.2-2 相位累加器的结构示意图

若频率控制字设为M,相位累加器为N位,参考时钟频率fс,则输出频率为Mfс/2ª(a=N)。DDS的输出频率下限对应于频率控制字M=0的情形,即输出频率为f。=0。根据Nyquist采样定理,DDS的输出上限频率为时钟频率的一半,即f。=½fс。但由于实际输出低通滤波器的非理想特性,可实现的频率上限为-2/5fo。即若参考频率为 ,DDS的输出频率范围是0—2/5fc。由于DDS的模块化结构,其输出波形由波形查找表中的数据来决定,因此,只需改变查找表中的数据,即可以方便地利用DDS产生出正弦波之外的其他波形,如余弦波、方波、三角波。锯齿波甚至调频、调相波以及带限的噪声信号。

三相分时复用原理:分时复用的原理是各路信号只占用同一信道的不同时间间隙进行信号传输。具体到本电路就是利用对正弦表寻址的高速度,使一个正弦表在不同时间段查寻不同相的正弦波的幅值,以达到减少正弦表所占用的CPLD资源的目的。

电路的具体实现:三路在相位上互差120。的地址数据并行输入通过一个三选一的选择器来进行选择,选择器的控制端接三进制的计数器。如,计数器为0时,输出的是A相的地址。计数器为1时,输出的是B相的地址.计数器为2时,输出的是C相的地址。因此只要使输入的三相地址周期性变化,就实现了并行输入的三相地址数据在时间上形成了连续,也就实现了三相地址数据的合成。这样就可以利用一个正弦表来得到三相的正弦值,把正弦表减少到没有采样分时复用时的1/3。数据的分离:通过分时复用,使得通过查寻一个正弦表得到在相位上互差的三相正弦波的幅值,但是由于输入的三相地址在时间上是连续的,即对ROM表寻址的地址只有一路,因此,虽然得到了三相正弦波的幅值,可是他们是按ADDRESS中各相之间的关系混合在一起的,因此,必需对所得到的幅值进行分离。才能得到三相正弦波。由波形ADDRESS中各相地址的相互关系可知,分离数据只要把分时复用的合成部分反接即可。

参数选择:相位累加器的字长决定了频率分辨率.设计中取N=16。由于CPLD中硬件资源(主要是存储器EAB容量)所限,需对相位累加器输出的16位相位进行截断,这里取16位相位的前l0位进入相位,幅度转换电路,即A=10,输出数字幅度序列定位10位(D=10)。

图1.2-3 正弦波波形数据产生模块

这样确定的基本参数如下:

(1)时钟频率和输出带宽根据已知的外部时钟源的频率fс=12MHz.那么本系统最高输出频率位2/5fo=4.8 MHz。

(2)频率范围由于要求输出的信号频率范围比较大.因此在12MHz时钟源引入CPLD后,在相位累加器之前增加了一个时钟分频器,可实现10、100、1000、10000次分频。根据输出信号的频率和精度要求,选择不同的分频比将50MHz时钟频率降低,再作位相位累加器和波形产生电路的参考时钟。

相位/幅度变换用CPLD实现相位/幅度变换电路是设计的一个难点。根据DDS原理,将不同波形的量化数据存储于波形查找表中,即可完成多波形发生的功能。ROM 的功能在本方案选用的Altera公司生产的CPLD芯片中实现,因此在实际设计中,要充分考虑表格数据的优化问题。根据上面的参数选择,取相位累加器字长M=16,截取前10位有效位,输出幅度序列定位l0位。这样直接实现正弦波形存储需要210xl0bitROM。正弦查找表可调用Maxplux2软件中的“lpm_rom”宏模块实现。

CPLD器件选择ALTERA公司的——EPM7128S84-15。它有128个宏单元、2500个等效逻辑门、15ns的速度、PLCC84封装形式。除电源引脚、地线引脚、全局控制引脚和JTAG引脚外,共提供了64个可用I/O脚,这些引脚可以任意配置为输入、输出和双向方式。该器件的特点如下:

l是 一 种高性能的CM0SE EPROM器件。

l器 件 可通过JTAG接口实现在线编程。

l内 置 JTAG BST电路。

l可 编 程宏单元触发器具有专用清除、置位、时钟和时钟使能控制。

l 可 配 置的扩展乘积项分配,允许向每个宏单元提供多达32个乘积项。

EPM7128S器件是通过4个引脚的JTAG接口进行在线编程(ISP)的。ISP允许快速、有效地在设计开发过程中重复编程。JTAG(Joint Test Action Group)是欧洲的JETAG组织提出的边界扫描标准,即IEEE1149. 1标准。该标准提供了板级和芯片级的测试,所有JTAG测试功能仅需一条四线或五线的接口及相应的软件即能完成,利用JTAG能测试电路板的连接情况以及电路板的正确性。JTAG的接口信号为:

lTCK (Test Clock):用于控制状态机及传递数据。

lTMS( Test Mode Select):选择边界扫描模式,控制状态机测试操作。

lDI ( Test Data Input):在TCK的一升沿,接受串行数据。

lTDO( Test Data Output):在TCK的下降沿,输出串行数据。

  我们采用的是并口下载电缆ByteBlaster,它可以对MAX7000S系列进行在线编程。该下载电缆具有以下几个部分:与PC机并行口相连的25针插头、与PCB板插座相连的10针插头以及25针到10针的变换电路。可用于实现波形相位、幅度变换查找表(ROM)结构。DDS主要分为相位累加器、相位/幅度转换单元(含ROM)、数模变换器以及低通滤波等几个部分。

相位累加器和相位/幅度转换单元用CPLD实现,再将输出外接至DAC器件,最后通过低通滤波器即可得到所需波形。

图1.2-4 CPLD的外围电路连接图

1.2.2 多波形发生器的各个波形模块设计方式简介

数控分频器:数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不同的分频比,输出不同频率的时钟,以改变输出信号的频率。设计时利用并行预置数的减法计数器实现,他的工作原理是:减法计数器在并行预置数的基础上,在时钟的作用下进行减计数,当计数值为零时产生溢出信号,加载预置数据,并且将溢出信号作为分频器的输出信号,实现分频信号输出。其分频系数N为预置数的值。为了得到占空比为50 的矩形时钟信号,将输出再进行二分频。由此,该分频器的总分频系数为2N。

三角波波形数据产生模块:该模块可设计一个可逆计数器实现。设计时设置一变量作为工作状态标志,在此变量为全0时,当检测到时钟的上升沿时进行加同一个数操作,为全1时,进行减同一个数操作。由于A/D转换采用8位的DAC0832芯片,且设64个时钟为一个三角波周期,则输出Q每次加8/减8。

正弦波波形数据产生模块:用加法计数器和译码电路完成。首先对幅度为1的正弦波的一个周期分为64个采样点,根据正弦波的函数关系计算得到每一点对应的幅度值,然后量化为8位二进制数据,最大值为255,最小值为0,以此得到正弦波波表。加法计数器生成译码电路的64个输入值,译码电路查波表输出。无论是相位累加器波形合成法还是基于RAM查询的波形合成法,都可以表示为合成信号的幅度与时间或是相位的关系,信号的幅度坐标存放在波形存储器中,通过地址发生器读取波形数据,完成数字波形。

方波波形数据产生模块:设计一个比较器,经过低通滤波器后的正弦波通过它后才能产生方波。通过交替送出全0和全1,并给以32个时钟延时实现,64个时钟为一个周期。

数据选择器:用CASE语句设计完成。在CORTROL的控制下选择输出一种波形数据输出,同时完成两种波形的线性组合。波形组合是将波形每一时刻的数值相加,为了不超出DAC0832的输出范围,做相应的除2操作。

首先由控制寄存器将外部控制器送入的数据转换为频率和幅度控制字;然后再由分频器根据频率控制字进行分频并将输出作为寻址计数器的时钟;寻址计数器的寻址空间为360字节,可对ROM中的查找表进行寻址;而通过模360加法器可以产生120º的相位差。

控制寄存器的设计:控制寄存器设计主要是将外部控制器输入的数据转换为频率和幅度控制字。

分频比可变的分频器模块设计:该设计主要是根据频率控制字决定分频倍数,从而输出与频率控制字相对应的频率时钟,此模块的输出可作为寻址计数器的时钟。

寻址计数器:主要用于产生对ROM寻址输出波形数据的寻址信号,寻址空间为360字节。 

模360加法器设计:此模块用来产生120°的相移,以形成三相相差为120°的输出波形。由于寻址空间为360字节,故在输出寻址数大于360时,须对360取模。

查找表ROM设计:此模块主要用于存储各种波形数据,以便通过寻址计数器寻址输出并经D/ A转换来输出各种波形,其中包括正弦波、三角波、方波。

CPLD幅度控制字经D/A转换输出后,可作为查找表输出DAC的参考电压,该参考电压可通过改变幅度控制字来进行改变,从而改变输出信号的幅度。

图1.2-5 CPLD的内部结构设计框图

A/D转换采用了8位的DAC0832芯片。波形的产生是采用直接数字频率合成技术DDFS按照不同频率要求以频率控制字n为步进对相位增量进行累加,以累加相位值作为地址码读取存放于ROM内的波形数据,经D/A转换和幅度控制,再滤波即可得到波形。输出波形频率与寻址脉冲频率成正比,因此改变脉冲频率就可以改变输出波形频率。D/A转换电路的电路连接图主要由DAC0832和 LM324构成,附加了一些电容和电阻增加了其稳定性,它先通过DAC0832信号对信号进行数模转换,恢复为模拟信号后再由LM324构成的放大电路进行放大处理,使波形发生器达到预期的效果。

图1.2-6  DAC0832外围连接图

逻辑时序仿真:利用MAX+PLUXⅡ进行系统仿真。在时序波形中,clk为系统的时钟,这里设定仿真的时钟为200ns(晶振为12Mhz);freqin为频率字输入,它可以在1-1024取任意值,这里取freqin=l(即相位累加增量∆θ=360˚ /1024=0.35˚), 则f。 = 4.88kHz;pha-seina、phaseinb、phaseinc分别为三相互差120˚的相位字的输入, 取值分别为:phaseina=0、phaseinb=341、phaseinc=683;romadddr_a、romadddr_b、ro-madddr c分别为三相分时复用电路中的A相、B相和C相的相位值(三相互差),romadddr_abc为合成一路后的相位值。

为了便于在同一波形中可以同时看清输出数据中的各项,对仿真波形进行截取,为约3.5us-8.6US时的时序波形,ddsout_abc为查得 E弦表所得的三相混合数据,ddsout_a、ddsout_b、ddsout_c分别为数据分离后A相、B相和C相的相位对应的幅度值,由三相正弦波幅度之间的相互关系和变化趋势得知.输出的数据是正确的。由于DDS技术是从相位概念出发,根据确定的相位的有效字长组合,会产生相位截断误差。本设计的相位误差计算:每相正弦信号输出延时了2个系统时钟周期,即At=2Tc。因此相位误差为:∆θ=2π*f。*∆T,则∆θ=0.7˚。(这里设频率字M=1,字长N=10)。

整个系统除晶体振荡器和A/D转换外,全部集成在一片CPLD芯片上。它可输出三相频率、幅度可调的正弦波、三角波、方波。任意波形模块可由用户自行编辑所需波形数据,下载到CPLD芯片上,在不改变整个系统硬件连接的情况下,输出用户所需的波形。另外由于CPLD具有可编程重置特性,因而可以方便地更换波形数据,且简单易行,带来极大方便。

图1.2-7 波形仿真图

1.3 调试部分

1.3.1  CPLD在使用中遇到的问题

CPLD芯片提供了很多个电源引脚,为了减少芯片内部的干扰,尽量在每个电源引脚处加一个退藕电容,一般一个芯片周围不少于6个电容。

CPLD如果不能下载,可能有多种问题,先检查芯片的各个接地脚和电源脚是否全部连接正确,然后看四个JTAG引脚是否连接正确,可在下载时观测四个引脚上的信号。

对于不使用的全局变量,最好连接到地线。在编译的时候可能会出现所用的门数不多,但是编译通不过的情况,可以把逻辑综合的选项重新设置一下。

在逻辑综合的时候最好选择设计环境中对于特定的芯片所提供的综合条件,以免造成不必要的麻烦。

1.3.2 控制电路的调试

对控制电路进行时序仿真,在仿真图中几乎总会出现我们所不需要的毛刺,这些毛刺有时会给系统带来致命的影响,我们必须采取措施消除这样的毛刺。由于毛刺一般出现在信号发生电平转换的时刻,也即输出信号的建立时间内,而在输出信号的保持时间内不大会出现。因此,若带有毛刺的信号持续时间较长,我们可在输出信号的持续时间内用一定宽度的高电平脉冲选通一个与门来获得该信号,此时毛刺自然已被消除。高电平脉冲可由软件控制锁存器来得到。若带有毛刺的信号保持时间较短,可利用D触发器的D输入端对毛刺不敏感的特点,在输出信号的保持时间内用触发器读取输出信号,此时毛刺自然也已被消除,触发器的时钟沿可由软件控制地址译码器来得到。

另外 ,在某些情况下,需要对信号进行一定的延时,以完成特定的功能。利用D触发器可在时钟的控制下对信号进行比较精确的延时,这种方法的最小延时是半个时钟周期。延时也是消除毛刺的手段之一。

1.3.3 DAC电路的调试

DAC电路将RAM查找表输出的离散的数字信号变换为连续的模拟信号。所选的芯片为DAC0832,它的分辨率为12bits,建立时间为1us,差分电流输出。输出电流在2-20mA内可调。由于电流无法直接测量,所以在DAC0832的输出端和地之间接有一个20欧的电阻,可将输出的电流转换为电压来测,过程如下:首先向DAC输入全1的数据,测得输出端11脚的电压为0.4V;12脚为0.04 V;再向DAC输入全0的数据,测得输出端管11脚的电压为0.04 V;12脚为0.4V;说明DAC电路工作正常。

1.3.4  程序的调试

设计中使用了ALTERA公司提供的配套软件MAX+PLUSII进行文件的输入、编译和下载。MAX+PLUSII的软件设计主要由设计输入、项目编译、项目校验和器件编程等四部分构成。

  MAX+PLUSII File NEW    Text Editor File/.gdf /.scf 输入程序    保存、编译    调试程序     编译、仿真、运行     调试完成后用并口下载线下载程序至CPLD芯片    完成烧入程序后硬件电路的调试     修改、调试程序    完成设计。

1.3.5 硬件电路的调试

在硬件电路调试中,要注意焊接的艺术和元件的布局,让整体显得美观。不能出现漏焊、错焊等现象。在烧录入程序之后,对电路进行测试,看电路是否能达到预期的功能。如果不能,则要进行程序的调试,并检测电路连接、元件使用等方面的问题,努力排除故障,让系统功能实现。

DAC0832

EPM7128SLC84-15

电路原理图

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值