资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,FPGA,产生,PWM,、,SPWM,波,1,FPGA-PWM,PWM,是脉冲宽度调制(,Pulse Width Modulation,)的简称,它在自动控制和计算机技术领域中都有广泛的应用。在电机控制、交流检测等实际应用系统中,,PWM,是整个系统的技术核心。因此,设计支持,PWM,输出的芯片(或独立的电路功能模块)实用价值很大。,PWM,调制原理,PWM,波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。图,1,所示为脉冲宽度调制系统的原理框图和波形图。该系统有一个比较器和一个周期为,Ts,的锯齿波发生器组成。语音信号如果大于锯齿波信号,,比较器输出正常数,A,,否则输出,0,。因此,从图,1,中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。,2,3,PWM,技术最初是在无线电技术中用于信号的调制,后来在低频大功率电路中得到了很好的应用。在直流伺服控制系统中,通过专用集成芯片或中小规模数字集成电路构成的传统,PWM,控制电路往往存在电路设计复杂、体积大、抗干扰能力差以及设计困难、设计周期长等缺点,因此,,PWM,控制电路的模块化、集成化已成为发展趋势。它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高。随着电子技术的发展,特别是,ASIC,(专用集成电路)设计技术的日趋完善,数字化的,EDA,(电子设计自动化)工具给电子设计带来了巨大变革,在水声和超声、电机控制等许多应用场合,需要产生多路频率和脉冲宽度可调的,PWM,波形,这可通过,FPGA,丰富的硬件资源和可以配置,I/O,引脚来实现。嵌入式系统中,FPGA,的应用设计关键是系统软硬件功能的划分。,1,单路,PWM,发生器结构和原理,图,2,是实现的单路,PWM,硬件结构框图。,CPU,通过数据线向,FPGA,写入定时常数控制,PWM,的频率、初始相位和占空比,并通过外部启动信号控制,PWM,的启动。,4,系统的工作过程:采用,50M,时钟脉冲信号作为,PWM,生成器的时钟信号。首先,CPU,计算出所需要输出,PWM,的频率,初始相位和占空比信息,通过数据线向,FPGA,内部寄存器写入以上信息,并通过外部启动信号控制,PWM,的启动。,5,2,多路,PWM,发生器的实现原理,通过上面的设计可以实现单路的,PWM,的,FPGA,设计,利用,FPGA,来扩展,I/O,接口,可实现多路,PWM,(脉宽调制)输出,在超声、电机控制等许多应用场合,需要产生多路频,率,和脉冲宽度可调的,PWM,波形。,应用实现的单路的,PWM,的设计,可以推广到多路,PWM,设计,图,4,为多路,PWM,的系统原理框图。通过一个主控内部计算产生输出生成,PWM,所需的频率、初始相位、占空比等参数,后级可并联数个,FPGA,芯片,来生成,PWM,波形,每片,FPGA,内部又可以生成,6-10,路,PWM,信号,通过级联,FPGA,,可以产生多路不同频率、占空比、初始相位的,PWM,信号,有较好的同步及一致性,对于需要多路,PWM,信号的系统实现有着很强的实用性。,6,7,FPGA-SPWM,正弦脉宽调制,(SPWM),技术在交流调速系统中得到广泛应用,但,SPWM,的波形生成是应用中一个难点,目前形成,SPWM,的方法有,:(1),由分立元件构成,结构简单,但可靠性和精度均不能满足要求,;(2),采用计算机计算或查表方式,省却了硬件电路,但,CPU,负担很重,;(3),采用专用集成电路,如,SLE4520,、,SA4828,等,但其功能固定,可扩展性差,;(4),采用,FPGA(,现场可编门阵列,),具有速度快、精度高且可以在线编程修改等优点,是一种较好的方案,。,8,SPWM,原理;用输出的正弦信号作为调制波,用高频三角波作为载波,.,SPWM,两个参数,:,载波比:,N=F,三角,/F,正弦 (最好为,3,的倍数),调制度:,M=V,正弦,/V,三角 (,1,),9,2,SPWM,波形控制器设计,系统由直接频率生成器产生低频正弦信号,然后与累加累减计数器产生的数字高速三角波进行高速比较而产生,SPWM,再经过死区控制模块产生死区。,2.1,系统构图,图,2,是,SPWM,波形控制器结构框图。,10,SPWM,波形产生设计,SPWM,波是根据三角载波与正弦调制波的交点而得到的一系列脉冲,其幅度不变而宽度按正弦规律变化。利用,FPGA,生成,SPWM,信号,需要将数字三角载波数据与正弦调制波数据进行实时比较。当三角波计数器数据比正弦调制波数据大时,输出,1;,当三角波计数器数据比正弦调制波数据小时,输出,0,。由此可以产生宽度按正弦变化但幅度不变的,SPWM,信号。,11,5,结论,利用,FPGA,的高速、高集成度、易于编程的特点,设计一个,SPWM,波形控制器,既可以生成三相,SPWM,波形,也可以产生单相,SPWM,只需改变程序即可。仿真和测试验证了设计的有效性,可以很方便地和单片机构成通用的交流调速系统,具有较好的应用价值。,PWM,是通过改变输出方波的占空比来改变等效的输出电压。广泛地用于电动机调速和阀门控制,比如我们现在的电动车电机调速就是使用这种方式。,SPWM,,就是在,PWM,的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输出。它广泛地用于直流交流逆变器等,比如高级一些的,UPS,就是一个例子。三相,SPWM,是使用,SPWM,模拟市电的三相输出,在变频器领域被广泛的采用。,12,宏功能模块与,IP,应用,Altera,提供多种方法来获取,Altera Megafunction Partners Program(AMPP),和,MegaCore,宏功能模块,这些函数经严格的测试和优化,可以在,Altera,特定器件结构中发挥出最佳性能。可以使用这些知识产权的参数化模块减少设计和测试的时间。,MegaCore,和,AMPP,宏功能模块包括应用于通信、数字信号处理,(DSP),、,PCI,和其它总线界面,以及存储器控制器中的宏功能模块。,13,使用,MegaWizard Plug-In Manager,.bsf,:,Block Editor,中使用的宏功能模块的符号(元件)。,.cmp,:组件申明文件。,.inc,:宏功能模块包装文件中模块的,AHDL,包含文件。,.tdf,:要在,AHDL,设计中实例化的宏功能模块包装文件。,.vhd,:要在,VHDL,设计中实例化的宏功能模块包装文件。,.v,:要在,VerilogHDL,设计中实例化的宏功能模块包装文件。,_bb.v,:,VerilogHDL,设计所用宏功能模块包装文件中模块的空体或,black-box,申明,用于在使用,EDA,综合工具时指定端口方向。,_inst.tdf,:宏功能模块包装文件中子设计的,AHDL,例化示例。,_inst.vhd,:宏功能模块包装文件中实体的,VHDL,例化示例。,_inst.v,:宏功能模块包装文件中模块的,VerilogHDL,例化示例。,14,LPM,随机存储器的设置和调用,在此首先确定图,7-1,中,ROM,内的波形数据文件。,QuartusII,能接受的,LPM_ROM,中的初始化数据文件的格式有,2,种:,Memory Initialization File,(,.mif,)格式和,Hexadecimal,(,Intel-Format,),File,(,.hex,)格式。以下以,64,点正弦波形数据为例分别说明。实际应用中只要使用其中一种格式的文件即可。,首先在,Quartus II,中选择,ROM,数据文件编辑窗,即在,File,菜单中选择,New,,并在,New,窗中选择,Other files,页,再选择,Memory Initialization File,项,单击,OK,按钮后产生,ROM,数据文件大小选择窗。,正余弦,mif,文件生成器,15,1.,表格编辑法,16,2.,文件编辑法,文件编辑器设计,MIF,文件,其格式如图所示。其中地址和数据都为十六进制,冒号左边是地址值,右边是对应的数据,并以分号结尾。,17,3.,程序生成法,MIF,文件也可以用程序语言生成,如,C,程序。例 是产生正弦波数据值的,C,程序:,【,例,】,#include,#include math.h,main(),int i;float s;,for(i=0;i sin_rom.mif;,将生成,sin_rom.mif,文件,再加上,.mif,文件的头部说明即可。,romgen,假设是编译后的程序名。,18,定制,LPM_ROM,元件,设计步骤如下:,(,1,)打开,MegaWizard Plug-In Manager,初始对话框。在,Tools,菜单中选择,MegaWizard Plug-In Manager,,产生如图所示的界面,选择,Create a new custom,项(如果要修改一个已编辑好的,LPM,模块,则选择,Edit an existing custom,项),即定制一个新的模块。单击,Next,按钮后,产生如图,7-6,所示的对话框,在左栏选择,Storage,项下的,LPM_ROM,,再选择,Cyclone,器件和,VHDL,语言方式;最后输入,ROM,文件存放的路径和文件名:,d:sin_gntdata_rom.vhd,(,V,)(定制的,ROM,元件文件名),单击,Next,按钮。,19,20,(,2,)选择,ROM,控制线、地址线和数据线。在如图,7-7,和图,7-8,所示的对话框中选择地址线位宽和,ROM,中数据数分别为,6,和,64,;选择地址锁存控制信号,inclock,。,(,3,)单击,Next,按钮后出现图,7-9,的界面。在“,What should the RAM.”,栏选择默认的“,Auto”,。在适配中,,Quartus II,将根据选中的目标器件系列,自动确定嵌入,RAM,模块的类型(如,ACEX1K,系列为,EAB,;,APEX20K,系列为,ESB,;,Cyclone,系列为,M4K,等)。,21,22,23,在图,7-9,的“,Do you want to.”,栏选择打勾“,yes,,,use this file for the memorycontent”,项,并按“,Browse”,钮,选择指定路径上的文件,sdata.hex,。在“,Alow In-System Memory.”,栏选择打勾,并在“,The Instance ID of this rom”,栏键入“,rom1”,,作为此,ROM,的,ID,名称。通过这个设置,可以允许,Quartus II,能通过,JTAG,口对下载于,FPGA,中的此,ROM,进行“在系统”测试和读写(如果需要读写多个嵌入的,LPM_ROM,或,LPM_RAM,,,ID,号,rom1,就作为此,ROM,的识别名称),这种读写不影响,FPGA,中电子系统的正常工作。最后点击图,7-9,的,Next,按钮,再点击图,7-10,的,Finish,钮后完成,ROM,定制。,24,输入设计文件原理图输入法,1,)新建工程之后,便可以进行电路系统设计文件的输入。选择,file,菜单中的,New,命令,弹出如图所示的新建设计文件类型选择窗口。,产生一个新的图表模块,/,原理图文件菜单,:File New Block/Schematic document,(,原理图输入法为例子讲述,),25,2,)选择,New,对话框中的,Device Design files,页下的,Block Diagram/Schematic File,,点击,OK,,打开如图所示的图形编辑器对话框,进行设计文件输入。,26,3,)在图形编辑窗口中的任何一个位置双击鼠标,,或点击图中的,“,符,号,工具,”,按钮,,,或选择菜,单,Edit,下的,Insert symbol,命令,,弹出如,右,图所示的,元件 选择窗口,Symbol,对话,框。,27,4,)用鼠标点击单元库前面的加号,(+),,库中的元件符号以列表的方式显示出来,选择所需要的元件符号,该符号显示在,Symbol,对话框的右边,点击,OK,按钮,添加相应元件符号在图像编辑工作区中,连接原理图。,原理图输入法优缺点:,优点:,1,)可以与传统的数字电路设计法接轨,即使用传统设计方法得到电路原理图,然后在,Quartus,平台完成设计电路的输入、仿真验证和综合,最后下载到目标芯片中。,2,)它将传统的电路设计过程的布局布线、绘制印刷电路板、电路焊接、电路加电测试等过程取消,提高了设计效率,降低了设计成本,减轻了设计者的劳动强度。,缺点:,1,)原理图设计方法没有实现标准化,不同的,EDA,软件中的图形处理工具对图形的设计规则、存档格式和图形编译方式都不同,因此兼容性差,难以交换和管理。,2,)由于兼容性不好,性能优秀的电路模块的移植和再利用非常困难难以实现用户所希望的面积、速度以及不同风格的综合优化,3,)原理图输入的设计方法不能实现真实意义上的自顶向下的设计方案,无法建立行为模型,从而偏离了电子设计自动化最本质的涵义。,28,Quartus,编译器的主要任务是对设计项目进行检查并完成逻辑综合,同时将项目最终设计结果生成器件的下载文件。编译开始前,可以先对工程的参数进行设置。,Quartus,软件中的编译类型有全编译和分步编译两种。,选择,Quartus,主窗口,Process,菜单下,Start Compilation,命令,或者在主窗口,的工具栏,上直接点击图标,可以进行全编译,全,编译的过程包括分析与综合,(,Analysis&Synthesis,),、适配,(,Fitter,),、编程,(,Assembler,),、时序分析,(Classical Timing Analysis),这,4,个环节,,而这,4,个环节各自对应相应的菜单命令,可以单独分步执行,也就是分步编译。,编译设计文件,29,分步编译就是使用对应命令分步执行对应的编译环节,每完成一个编译环节,生成一个对应的编译报告。分步编译跟全编译一样分为四步:,1,、,分析与综合,(,Analysis&Synthesis,),:设计文件进行分析和检查输入文件是否有错误,对应的菜单命令是,Quartus,主窗口,Process,菜单下,Start,Start Analysis&Synthesis,,,对应的快捷图标是,在主窗口,的工具栏,上,的 ;,2,、适配(,Fitter,):在适配过程中,完成设计逻辑器件中的布局布线、选择适当的内部互连路径、引脚分配、逻辑元件分配等,对应的菜单命令是,Quartus,主窗口,Process,菜单下,Start,Start Fitter,;(注:两种编译方式引脚分配有所区别),30,3,、,编程,(,Assembler,):,产生多种形式的器件编程映像文件,,通过软件下载到目标器件当中去,应的菜单命令是,Quartus,主窗口,Process,菜单下,Start,Start Assembler,;,4,、,时序分析,(Classical Timing Analyzer),:计算给定设计与器件上的延时,完成设计分析的时序分析和所有逻辑的性能分析,菜单命令是,Quartus,主窗口,Process,菜单下,Start,Start Classical Timing Analyzer,,对应的快捷图标是,在主窗口,的工具栏,上,的 。,编译完成以后,编译报告窗口,Compilation Report,会报告工程文件编译的相关信息,如编译的顶层文件名、目标芯片的信号、引脚的数目等等。,全编译操作简单,适合简单的设计。对于复杂的设计,选择分步编译可以及时发现问题,提高设计纠错的效率,从而提高设计效率。,31,分配引脚,为了观察编译器自动指定引脚分配情况:,使用命令,AssignmentsPin Planner,打开引脚规划器(,Pin Planner,),32,观察引脚分配结果的方法:,鼠标移至已被分配的引脚(涂有深色)将显示对应端口名称。,33,编程下载设计文件,对设计进行验证后,即可对目标器件进行编程和配置,下载设计文件到硬件中进行硬件验证。,Quartus,编程器,Programmer,最常用的编程模式是,JTAG,模式。,JTAG,模式主要用在调试阶段,主动串行编程模式用于板级调试无误后将用户程序固化在串行配置芯片,EPCS,中。,34,1,、,JTAG,编程下载模式,此方式的操作步骤主要分为,3,步:,1.,选择,Quartus,主窗口,的,Tools,菜单下的,Programmer,命令或点击 图标,进入器件编程和配置对话框。如果此对话框中的,Hardware Setup,后为“,No Hardware”,,则需要选择编程的硬件。点击,Hardware Setup,,进入,Hardware Setup,对话框,下页图所示,在此添加硬件设备。,2.,配置编程硬件后,选择下载模式,在,Mode,中指定的编程模式为,JTAG,模式;,3.,确定编程模式后,单击 添加相应的,counter.sof,编程文件,选中,counter.sof,文件后的,Program/Configure,选项,然后点击 图标下载设计文件到器件中,,Process,进度条中显示编程进度,编程下载完成后就可以进行目标芯片的硬件验证了。,35,36,1,、,JTAG,编程下载模式,37,AS,编程下载,选择,AS,模式下载,注意在之前你的下载线一定要设置好。如果你的配置芯片是,EPCS4,,就不用做那个复杂的事情,就可以直接下载。开发软件默认的就是,EPCS4,38,按照一般编程逻辑设计的步骤,利用,Quartus,软件进行开发是可以分为以下几个步骤:,(,1,)输入设计文件(编写,VHDL,程序或原理图文件等),(,2,)编译设计文件,【,使用,Compiler】,;,(,3,)仿真设计文件,【,使用,Waveform ditor,Simulator】,;,(,4,)安排芯片管脚位置,【,使用,FloorplanEditor】,;,(,5,)编程下载设计文件至芯片,【,使用,Programmer】,。,QUARTUS2,设计流程小结,39,
展开阅读全文