基于fpga的pwm控制器设计.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA 实验报告 西安科技大学《FPGA 应用与设计综合实验》 基于 FPGA 的 PWM 控制器设计 1 设计任务与要求 1.1 掌握 PWM 技术原理;了 PWM 控制方法及应用;完成基于 FPGA 的 PWM 控制 器设计。 1.2 通过课程设计的实践,进一步理解和掌握硬件描述语言(VHDL 或 Verilog) 和 TOP-DOWN 的设计流程,提高对实际项目的分析和设计能力,体会FPGA 项目的 过程,熟悉实验报告的编写规范。 2 设计原理分析 2.1 利用 FPGA 语言编写程序实现对 50MHZ 的硬件晶振进行分频和调节占空比。 对硬件晶振的上升沿就行计数,当 2nHZ 频率利用高低电平进行分频时,当计数 到 n-1 是对原电平进行反向就可以实现分频。占空比是对上升沿的计数是两个不 同的数值时进行反向。 2.2 脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行 控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要 的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为 正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行 调制,即可改变逆变电路输出电压的大小,也可改变输出频率。      例如,把正弦半波波形分成 N 等份,就可把正弦半波看成由 N 个彼此相连的 脉冲所组成的波形。这些脉冲宽度相等,都等于 ∏/n ,但幅值不等,且脉冲顶 部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序 列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正 弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到 一组脉冲序列,这就是 PWM 波形。可以看出,各脉冲宽度是按正弦规律变化的。 根据冲量相等效果相同的原理,PWM 波形和正弦半波是等效的。对于正弦的负半 周,也可以用同样的方法得到 PWM 波形。 在 PWM 波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时, 只要按同一比例系数改变各脉冲的宽度即可,因此在交-直-交变频器中,PWM 逆变电路输出的脉冲电压就是直流侧电压的幅值。 0 西安科技大学《FPGA 应用与设计综合实验》 根据上述原理,在给出了正弦波频率,幅值和半个周期内的脉冲数后,PWM 波形各脉冲的宽度和间隔就可以准确计算出来。按照计算结果控制电路中各开关 器件的通断,就可以得到所需要的 PWM 波形。 2.3 原理图: 3 设计方案 先设计分频器,以 2 分频为基础在器外部做循环可以实现 2n 倍分频。后面进行占空比 调节使用计数器和比较器。根据精度不同分频倍数以及占空比精确度都都会不同。该电路使 用的是 5 位计数器,故设置频率时要考虑占空比调节过程中已相当分频 2^5 倍。即 m-2^5/2 就是所应设置到分频器上的数值(注:并非分频倍率)。 4 设计步骤 4.1 自行编写分频器代码,通过编译等步骤生成分频器。 4.2 调用软件自带比较器和计数器并搭建后续电路。 4.3 仿真调试。 4.4 下载到试验箱进行测试。 5 设计程序代码 1 西安科技大学《FPGA 应用与设计综合实验》 Library IEEE; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity CPLD is Generic (pulse_width:integer:=1 ); Port(clock_in:in std_logic; Clock_out:out std_logic); End entity; Architecture pwm_architecture of CPLD is Signal counter:std_logic _vector(4 downto 0):=”00000”; Signal clock_1:std_logic:=’0’; Signal counter_1:s

文档评论(0)

LF20190802 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档