基于CPLD多波形信号发生器设计.docx

上传人:b****0 文档编号:17988903 上传时间:2023-08-05 格式:DOCX 页数:32 大小:696.46KB
下载 相关 举报
基于CPLD多波形信号发生器设计.docx_第1页
第1页 / 共32页
基于CPLD多波形信号发生器设计.docx_第2页
第2页 / 共32页
基于CPLD多波形信号发生器设计.docx_第3页
第3页 / 共32页
基于CPLD多波形信号发生器设计.docx_第4页
第4页 / 共32页
基于CPLD多波形信号发生器设计.docx_第5页
第5页 / 共32页
基于CPLD多波形信号发生器设计.docx_第6页
第6页 / 共32页
基于CPLD多波形信号发生器设计.docx_第7页
第7页 / 共32页
基于CPLD多波形信号发生器设计.docx_第8页
第8页 / 共32页
基于CPLD多波形信号发生器设计.docx_第9页
第9页 / 共32页
基于CPLD多波形信号发生器设计.docx_第10页
第10页 / 共32页
基于CPLD多波形信号发生器设计.docx_第11页
第11页 / 共32页
基于CPLD多波形信号发生器设计.docx_第12页
第12页 / 共32页
基于CPLD多波形信号发生器设计.docx_第13页
第13页 / 共32页
基于CPLD多波形信号发生器设计.docx_第14页
第14页 / 共32页
基于CPLD多波形信号发生器设计.docx_第15页
第15页 / 共32页
基于CPLD多波形信号发生器设计.docx_第16页
第16页 / 共32页
基于CPLD多波形信号发生器设计.docx_第17页
第17页 / 共32页
基于CPLD多波形信号发生器设计.docx_第18页
第18页 / 共32页
基于CPLD多波形信号发生器设计.docx_第19页
第19页 / 共32页
基于CPLD多波形信号发生器设计.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于CPLD多波形信号发生器设计.docx

《基于CPLD多波形信号发生器设计.docx》由会员分享,可在线阅读,更多相关《基于CPLD多波形信号发生器设计.docx(32页珍藏版)》请在冰点文库上搜索。

基于CPLD多波形信号发生器设计.docx

基于CPLD多波形信号发生器设计

基于CPLD多波形信号发生器设计

 

 

———————————————————————————————— 作者:

————————————————————————————————日期:

 

第一章绪论

1.1 研究内容及意义 

高精度的信号源对通信系统、电子对抗以及各种电子测量技术十分重要。

随着电子技术的发展,对信号源频率的准确度、稳定度,以及频谱纯度等方面要求越来越高。

传统的信号发生器由于波形精度低,频率稳定性差等缺点,已经不能满足许多实际应用的需要。

本系统设计的函数发生器是以可编程逻辑器件CPLD为核心,采用直接频率合成技术,通过数模转换电路,构成一个精度较高,波形稳定的函数信号发生器。

较传统的频率合成技术相比,直接频率合成技术(Direct Digital Synthesis,简称DDS),具有频率分辨率高、频率转变速度快、输出相位连续、相位噪声低、可编程和全数字化、便于集成等突出优点,使其得到越来越广泛的应用,成为众多电子系统中不可缺少的组成部分。

在现代电子技术中,信号源在各种实验应用和实验测试处理中应用非常广泛作,为激励源,仿真各种测试信号。

本文根据信号波形的产生特点,采用基于 CPLD/FPGA 的VHDL硬件描述语言,仿真实现了多波形发生器的设计。

仿真结果输出较高精度、稳定的波形信号,可以满足测量或各种实际需要,方便、简易实用。

1.2国内外研究概况

传统的波形发生器多采用模拟电路或单片机或专用芯片,由于成本高或控制方式不灵活或波形种类少不能满足实际需求。

目前市场上的数字信号发生器主要采用直接数字合成技术,这种波形发生器不仅可以产生可变频的载频信号、各种调制信号,同时还能和计算机配合产生用户自定义的有限带宽的任意信号,可以为多领域的测试提供宽带宽、高分辨率的测试信号。

从目前发展状况来看,国外数字信号发生器的研制和生产技术已经较为成熟。

国内市场上的波形发生器,其电路形式有采用运放及分立元件构成;也有采用单片集成的函数发生器,而在现代电子系统设计中,DDS技术发展迅速,由于其易于单片集成,积小,价格低,功耗小,因此其应用也越来越广泛。

并且在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。

1.3本文主要内容

本文的设计主要基于可编程逻辑器件CPLD设计多波形信号发生器,由VHDL编程实现,并通过外围数模转换电路,完成函数信号发生器的设计,最后对整个波形发生器进行调试仿真。

第一章为对多波形信号发生器的研究内容及发展的综合概述。

第二章为系统设计平台介绍、系统设计方式及原理框图概述。

第三章为硬件设计及外围电路方案介绍。

第四章为系统的软件设计及各模块的具体功能介绍。

第五章介绍了系统调试过程、解决问题及调试仿真结果。

第六章是为本次设计作综合总结。

 

第二章系统概述

2.1系统设计平台介绍

EDA(ElectronicDesignAutomation)技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。

本系统通过可编程逻辑器件CPLD设计,其特点是直接面向用户,具有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,成本低,工作可靠性好等,CPLD器件的设计可分为设计输入,设计实现和器件编程三个步骤及相应的功能仿真,时序仿真和器件功能测试三个验证过程。

可编程逻辑器件CPLD设计流程如图2.1所示:

图2.1可编程逻辑器件设计流程图

如图2.1所示,设计输入可分为两种类型,图形输入和HDL文本输入,常用的有原理图输入和应用硬件描述语言设计输入,在下载之前,通过软件进行综合和仿真,这种设计方法可以节约设计周期,设计灵活性,成本低。

由于其可编程特性,可以通过软件对系统功能进行修改,易于更改和开发。

在硬件描述语言方面,本系统采用了VHDL硬件描述语言,VHDL[全名是VHSIC(VeryHigh Speed IntegratedCircuit) HardwareDescription Language]是EDA技术的重要组成部分,由美国国防部发起创建,由IEEE(TheInstituteofElectricalandElectronicsEngineers)进一步发展并发布,是硬件描述语言的业界标准之一。

VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力。

相比其他硬件描述语言,VHDL的优势表现在以下几点:

(1)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

(2)VHDL采用类似高级语言的语句格式完成对硬件行为的描述,具备更强的模块化能力,并拥有良好的可读性以及程序的移植性。

(3)VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。

而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。

本次设计是基于QuartusII软件设计的,QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

图2.2 Quartus II设计流程图

图2.2上排所示的是QuartusII编译设计的主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。

图2.2下排的流程框图,是与上面的QuartusII设计流程相对照的标准的EDA开发流程。

2.2 信号发生器设计方式介绍

Direct Digital Synthesis(DDS)是20世纪60年代末出现的第三代频率合成技术。

用DDS技术来设计制作一个基于CPLD的三相多波形函数发生器,并使它能输出正弦波、三角波、方波等波形信号源,三种波形的相位差为120˚。

信号发生器中的CPLD芯片是DDS的控制及数据处理的核心,电路系统主要由数控分频、寻址计数器、模360加法器、波形数据储存ROM和外围DAC转换电路组成。

波形数据产生器由数控分频、寻址计数器、正弦ROM、方波三角波ROM构成。

在时钟信号发生器作用下,根据输入数据不同产生不同的分频比,数控分频生成相应频率的时钟信号作为寻址计数器的输入时钟,产生对ROM进行寻址的地址,输出波形数据后,再由DAC电路数模转换处理后输出最终所需要的波形信号。

本系统采用QuartusII开发平台,VHDL语言编程实现。

方波和三角波波形ROM模块利用逻辑单元实现ROM设计,由于正弦查找表较为复杂,用逻辑单元实现数据较多,所以正弦ROM采用LPM_ROM定制,完成外围电路的焊接之后,通过QuartusII把编写完的程序烧录入CPLD芯片,再通过示波器对整个波形发生器进行调试,使其达到预期的效果。

2.3系统原理框图介绍

根据设计要求,多波形信号发生器由3部分组成,即时钟信号发生器、波形数据产生器和D/A转换电路。

晶体振荡器产生稳定度很高的时钟信号,在时钟信号的作用下,波形数据产生器生成频率可变的波形数据数字信号,经数模转换电路最终输出所需波形信号。

幅度的调节可通过改变D/A转换芯片电阻网络的基准电压实现。

基于CPLD的波形数据产生器系统模块如图2.3所示。

图2.3 波形数据系统框图

图中DFR为数控分频器,根据仪器面板4位数字量开关产生的预置数据D输出不同频率的时钟,以改变输出信号的频率。

XunZhi根据输入的始终产生计数地址,在时钟的作用下,ROM,SIN_ROM模块分别产生方波和三角波、正弦波的波形数据,再通过m360模块将地址进行移相处理,可输出不同相位的波形,m21(数据选择器)在面板上的波形选择开关sel的控制下,选择输出不同的波形数据,送至D/A转换电路。

D/A转换采用8位的DAC0832芯片。

 

第三章硬件及外围电路设计

3.1CPLD及芯片介绍

CPLD复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。

是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。

通过借助集成开发软件平台进行基本的设计,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。

CPLD编程技术采用电可擦除储存单元的E2PROM或FlashMemory技术,CPLD被编程后改变了电可擦除储存单元中的信息,掉电后可保存。

由于内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。

本次设计采用Altera公司的ACEX1K系列EP1K10TC100-3,其典型逻辑门数(包括逻辑门和RAM)为10000门,最大可用系统门数为56000门,逻辑单元(Logic elements)为576个,逻辑阵列模块(Logicarrayblocks)为36个,嵌入式阵列模块(Embedded arrayblocks)为3个,RAM总容量为12288字节,EP1K10TC100-3具有100个管脚,除电源引脚、地线引脚、全局控制引脚和JTAG引脚外,共提供了66个可用I/O脚,这些引脚可以任意配置为输入、输出和双向方式,芯片的工作电压为+5V。

通常情况下在硬件调试的过程中一般使用下载电缆进行下载,而当调试完成以后要用配置芯片对FPGA进行配置。

配置芯片在每次系统上电以后自动将配置文件加载到FPGA中形成电路。

3.2硬件总体方案介绍

由于模拟电路复杂程度较高,而且在检查电路的时候会有很大的工作量,且可调性差。

并且电路带来的高频干扰也会更大,影响波形效果。

而单片机电路确定方案后不易更改硬件电路,可变性不高,功能修改完善不方便,所以本次设计除了采用CPLD设计电路,由于其可编程特性,在设计调试时可以不断改变电路硬件的逻辑关系,而不必改变系统的硬件结构,缩短了设计周期,提高了设计效率。

在完成模块程序编译仿真后,通过USB-Blaster编程器将系统配置文件下载入CPLD芯片,分别将数控分频输入、波形选择控制输入以及波形数据输出连接CPLD主控芯片。

图3.1是本次设计的基本硬件框图:

    

图3.1系统基本硬件电路

外部输入通过四位拨码开关控制分频倍数,可对频率进行调节,在通过两位拨码开关控制波形选择,系统时钟信号由开发箱上提供,八位波形数据输出接试验箱的DAC转换模块,由于示波器只有两路输入,所以需要再设计一个D/A转换电路将两种相位的波形进行比较。

3.3  CPLD及外围电路设计

3.3.1 CPLD主控电路设计

本次设计主控电路设计基于北京百科融创EDA教学开发平台,CPLD芯片为Altera公司的EP1K10TC100-3,共100个管脚,提供66个 可用I/O脚,系统包括控制输入及波形数据输出,共使用23个I/O脚,图3.2为CPLD主控芯片管脚分配图。

 

图3.2 CPLD主控芯片

I/O6、I/O7脚为波形控制开关,I/O9引脚为外部时钟输入口,I/O71、I/O70、I/O69、I/O68为数控分频外部控制端口,I/O20~I/O23、I/O26~I/O28、I/O30脚为初始相位八位波形数据输出端;I/O31~I/O34、I/O45~I/O48为移向后的波形数据输出端,波形数据输出接DAC模块的八位数据输入,通过示波器观察输出波形信号。

3.3.2 DAC数模转换模块设计

由于从波形ROM中读出的波形数据还只是一个数字信号,要得到最后的输出信号必须经过数模转换器。

因此在波形ROM输出之后要设计一个D/A转换电路。

本次设计采用DAC0832来实现D/A转换,DAC0832是双列直插式8位D/A转换器,能完成数字量输入到模拟量(电流)输出的转换。

由于其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。

数模(D/A)转换电路的作用是把已经合成的波形幅值的数字量转换成模拟量,其速度和特性直接影响整个系统的性能。

D/A转换器件的首要特性要求是高速,其次是转换位数,本设计中选用8位的D/A芯片DAC0832。

波形幅度量化序列经D/A转换后成为阶梯波。

D/A的输出用电压形式表示一般应为:

     

   (式3.1)

式中D为D/A的输入数据值,N为D/AC的位数,即通常所指的D/AC的分辨率,

为输入D/A的参考电压。

DAC0832对信号进行数模转换后,将数字信号恢复为模拟信号,再由UA741构成的放大电路进行放大处理,完善波形信号,使波形能够达到标准效果。

外围DAC电路原理图如图3.3所示:

图3.3DAC0832外围电路设计

在DAC外围电路中,UA741接+12V、-12V电源,DAC0832接5V电源,在电源接口处接一电容,起滤除杂波作用,在信号输出加入了滤波电路,接入示波器,得到稳定的波形信号。

 

第四章软件程序设计

程序部分基于Quartus II 通过VHDL语言实现。

系统采用自顶向下设计原则,先完成各个子模块仿真设计,综合编译后,通过软件生成图元文件,再设计系统顶层原图,将各个模块连接,最后进行系统总体仿真。

4.1系统流程设计

本次设计主要包括数控分频模块、寻址计数模块、360°移相模块、波形ROM储存模块、波形选择模块等,系统总体设计流程图如下图4.1所示:

图4.1 系统设计流程图

波形ROM模块针对不同的波形信号,通过不同的方式设计ROM模块,像三角波方波这样波形简单变化缓慢的波形,通过逻辑单元实现ROM设计,而对于正弦波这样的波形,查找表比较复杂,波形数据较大,所以利用了LPM_ROM定制法设计正弦波的存储ROM,最后再通过波形选择输出波形数据。

4.2子模块的设计

4.2.1 数控分频器

数控分频器的功能是在输入端输入不同数据时,对输入时钟产生不同的分频比,输出不同频率的时钟,以改变输出信号的频率。

本设计中利用并行预置数的减法计数器实现,他的工作原理是:

减法计数器在并行预置数的基础上,在时钟的作用下进行减计数,当计数值为零时产生溢出信号,加载预置数据,并且将溢出信号作为分频器的输出信号,实现N分频信号输出。

其分频系数N为

          

          (式4.1)

D为预置数的值。

为了得到占空比为50%的矩形时钟信号,将输出再进行二分频。

由此,该分频器的总分频系数为2N。

本设计中一个波形周期由64个时钟信号组成,则输出信号频率为:

     

        (式4.2)

时钟频率为24MHz。

数控分频器模块如图4.2所示:

图4.2数控分频器模块

略去声明部分,数控分频器的核心程序如下所示:

architectureoneofkongzhiis

signalfull:

std_logic;         --定义内部溢出标识

signal temp:

std_logic_vector(1downto0);

begin

p1:

process(clk)                 --N+1分频进程

variablecnt9:

integerrange0to31;

begin

if(clk'eventandclk='1')then          --上升沿检测

 if(cnt9=0)then

cnt9:

=d;                           --重新加载预置数D

full<='1';               --计数值为零时,产生溢出信号

elsecnt9:

=cnt9-1;                 --否则,进行减一计数操作

full<='0';

endif;

endif;

endprocess;

p2:

process(full)              --二分频进程

begin

if(full'eventandfull='1')then     --上升沿检测

if(temp="11")then               --二位二进制计数,最低位每个时钟

temp<="00";            --翻转一次,由此实现二分频

else

 temp<=temp+1;             --计数值加一

endif;

endif;

endprocess;

fout<=nottemp(0);       --选择二分频输出

end one;

通过QuartusII仿真结果如下图4.3所示:

图4.3数控分频器仿真结果

通过以上仿真结果,在分频数据输入端输入“0011”,实现2(D+1)分频,在时钟信号输出端fout,可以看到,该模块完成了输入时钟8分频,此模块设计符合理论值。

4.2.2 寻址计数器模块

寻址计数器主要用于产生对ROM寻址输出波形数据的寻址信号,寻址空间为512字节,寻址计数器模块图元文件如图4.4所示:

图4.4 寻址计数器模块

其核心程序如下:

process(clk)

  variable count:

std_logic_vector(8downto0);

begin

  if(clk'eventandclk='1')then           --时钟上升沿检测

  if(count<511)then             --计数范围为512字节

   count:

=count+1;     --计数值加1

   else

   count:

=(others=>'0');        --计数清零

    endif;

end if;

       address<=count;               --输出寻址信号

endprocess;

在QuartusII中仿真结果如图4.5所示:

图4.5计数地址仿真结果

由于系统ROM寻址地址采用9位地址数,所以寻址计数器通过时钟CLK产生寻址空间为512字节的地址。

由以上仿真结果看出,寻址计数模块可以产生稳定有效的寻址地址。

4.2.3模360加法器设计

模360加法器用来产生120°的相移, 以形成三相相差为120°的输出波形。

由于寻址空间为512字节,所以在此模块中地址每次加170,输出寻址地址产生1/3的相位差,当输出寻址数大于512时,须对寻址地址进行取模处理,即超出设定值作减512处理。

系统模360加法器图元模块如图4.6所示:

图4.6 寻址地址移相模块

地址移相模块核心代码如下所示:

process(d)

variable temp:

std_logic_vector(7downto0); 

begin

  temp:

=d+170;           --相移120°

if(temp<512)then

dout<=temp;            -将移相后的地址输出

else

 dout<=temp-512;          --加法计满后,对地址进行取模

endif;

endprocess;

该模块在QuartusII中的仿真结果下图4.7所示:

图4.7 模360加法器仿真结果

由仿真结果可知,寻址地址在通过模360加法器模块后,地址向后移1/3个寻址空间,仿真结果在理论值范围中。

4.2.4波形储存ROM设计

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

在系统中,该模块的图元模块如图4.8所示:

图4.8波形存储模块

在模块程序中,由于方波波形简单,变化缓慢,波形产生通过每计数半个寻址空间一次翻转,形成方波,周期为一个寻址空间计数时间。

process(address,sel)

begin

if(sel="00")then      --波形控制选择,输出方波

if(address<256)then --当地址计数至半个寻址空间,波形数据值为data<=(others=>'1');

else

 data<=(others=>'0');      --剩余计数空间,波形数据值为0

endif;

而三角波的产生程序,当检测到地址处于前半个周期时,地址每作一次计数,输出数据进行加同一个数操作,当地址处于后半个周期时,进行减同一个数操作。

将一个寻址空间计数时间作为三角波的周期,程序采用前半个周期作加1操作,后半个周期作减1操作。

三角波的逻辑发生程序如下:

elsif(sel="01")then            --波形选择控制,输出三角波

if(address<256)then             --前半个周期进行加1 

 data<=address(7 downto0);

else

  addresstemp<=512-address;         --后半个周期作减1操作

  data<=addresstemp(7downto0);     --三角波波形数据输出

endif;

对ROM模块进行仿真,其仿真结果如下图4.9、图4.10所示:

图4.9 方波存储ROM模块仿真结果

图4.10三角波存储ROM模块仿真结果

由Quartus II中仿真结果可知,当方波寻址地址计数至一半时,输出数据从0跳变值255,而再经过半个寻址周期再从255跳至0,如此重复跳变;而选择三角波输出时,当每次地址加1的时候,输出八位波形数据开始计数,从0加到1,然后每来一个地址就加一次,直到增到255,等下一个地址到输出波形数据将从255减到254,然后每来一个地址就减一次,直到减到0,依次重复,输出的波形数据经过DAC0832数模转换分别形成方波、三角波。

4.2.5LPM定制正弦波ROM模块

由于采用逻辑单元实现正弦波的波形ROM比较复杂,需要输入正弦波形数据查找表,正弦波查找表取值样点较多,所以系统中采用LPM_ROM来定制正弦ROM模块。

正弦ROM模块图元在系统中如图4.11所示:

图4.11LPM定制的正

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2