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