1、vhdl语言pwmYIBIN UNIVERSITYEDA技术及应用期末设计报告题 目:PWM信号发生器的设计专 业: 电子信息科学与技术 姓 名: 学 号: 2013年12月20日摘要:PWM,即脉冲宽度调制。脉冲宽度,即一个脉冲信号所占 时间的长度。所以脉冲宽度的调制就是调制脉冲信号的时间长度。 一 个完整的脉冲信号是有高电平部分和低电平部分共两部分组成的。 所 以,脉冲宽度调制可以简单的理解为就是调制脉冲信号的高电平或者 低电平时间的长度。而控制时间的长度,可以用计数器对时钟脉冲信 号的计数来实现:通过计数器的数值设定以及对溢出信号的使用, 就 可以实现对脉冲信号中的高电平或者低电平的时间
2、进行限定。在本次设计中,一共有两个设计方案,分别用不同的器件进行设计,但其中最重要的,最关键的部分,都是有关计数器的设计, 用信号赋值的方式决定输出的电平的高低, 通过相关计数器的数值设 定,调制脉冲输出的电平的时间长度。关键词:1)脉冲宽度调制2)时钟信号3)计数器4)D触发器摘要 2关键词 2引言 4设计概述 4方案论证 5源程序设计 6方案选择 11程序分析 11设计程序仿真图 12仿真分析 13设计总结 14参考文献 14引言:PWM即脉冲宽度调制,就是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 PWM从处理器到被控系统信号都是数字式的,无需进行数模转换。让信号保
3、持为数字形式可将噪声影响降到最小,因此广泛应用在测量,通信和功率控制与交换 的许多领域。脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化 来调制晶体管基极或 MOSf栅极的偏置,来实现晶体管或MOS管导通 时间的改变,从而实现开关稳压电源输出的改变。 这种方式能使电源 的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号 对模拟电路进行控制的一种非常有效的技术。PWM控制技术以其控制简单,灵活和动态响应好的优点而成 为电力电子技术最广泛应用的控制方式, 也是人们研究的热点。由于 当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论 思想或实现无谐振波开关技术将会成为 PWM
4、空制技术发展的主要方 向之一。设计概述:本次设计中,采用方案二进行设计。用一个信号“CNT ” 来对时钟脉冲信号进行计数,并且将脉冲宽度调制信号设为 PWMH和PWML两个信号。用信号:CNT,作为计数中间值。当计数数值 信号CNT的计数数值小于其设定值的时候,每来一个时钟脉冲信号 就将CNT加一,如果这个时候计数数值信号 CNT的计数数值也小 于或等于D信号输入值,就将PWMH信号置为高电平,PWML信 号置为低电平。当计数数值信号CNT的技术数值等于D信号的输入 值的时候,便将输出信号翻转,即 PWMH为低电平,PWML为高 电平。当计数数值信号 CNT的计数数值等于CNT设定值的时候,
5、便将CNT置零,程序便再次循环作用,不断输出脉冲宽度调制信号。由此达到脉冲宽度调制的目的。完成程序设计的目的。方案论证:本次设计一共设想了两个方案 :1)方案一 :用一个八位可自加载的加法计数器控 制低电平的时间长度, 用另一个八位可自加载的加法计数器控制高电 平的时间长度,用一个 D 触发器来接收两个计数器的溢出信号和输 出调制信号。其中一个计数器的溢出信号接到 D 触发器的 CLK 输 入端,用来控制低电平的时间长短。 另一个计数器的溢出信号接到 D 触发器的清零信号输入端,用来控制高电平的时间长短。通过将 D 触发器的输出信号取反后加到控制低电平时 间长短的计数器的置位端,让计数器回到初
6、始值,并重新开始计数。 另一个控制高电平时间长短的计数器的置位端接入 D 触发器的输出 信号,达到将计数器置入初始值,重新开始计数的目的。这样,整个电路形成完整的回路, 达到往返输出 PWM 信号的目的。2)方案二 : 在本方案中,将脉冲宽度调制信号设为 了 PWMH 和 PWML 两个信号。在输入端,通过 D 信号的输入值, CNT 信号的设定值以及 IF 函数,达到计数的目的。当计数数值信号 CNT 的计数数值小于其设定值的时候, 每来一个时钟脉冲信号就将 CNT 加一,如果这个时候计数数值信号 CNT 的计数数值也小于或等于 D 信号输入值,就将 PWMH 信号置 为高电平, PWML
7、信号置为低电平。当计数数值信号 CNT 的技术 数值等于 D 信号的输入值的时候, 便将输出信号翻转, 即 PWMH 为 低电平, PWML 为高电平。当计数数值信号 CNT 的计数数值等于 CNT 设定值的时候, 便将 CNT 置零,程序便再次循环作用, 不断输 出脉冲宽度调制信号。由此达到脉冲宽度调制的目的。 源程序设计:方案一设计源程序:1)八位可自加载假发计数器的源程序LCNT8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LCN ISPORT(CLK,LD:IN STD_LOGIC;D:IN INTEGER RANGE 0 T
8、O 255;CAO:OUT STD_LOGIC);END ENTITY LCNT8;ARCHITECTURE ART OF LCNT8 ISSIGNAL COUNT:INTEGER RANGE 0 TO 255;BEGINPROCESS(CLK) ISBEGINIF CLK EVENT AND CLK= 1THENIF LD= 1THEN COUNT=COUNT+1;END IF;END IF;END PROCESS;PROCESS(COUNT) ISBEGINIF COUNT=255 THEN YC= 1;ELSE YCCLK,LD=LD1,D=A,YC=YC1);U2:LCNT8 PORT
9、 MAP(CLK=CLK,LD=LD2,D=B,YC=YC2);PROCESS(YC1,YC2) ISBEGINIF YC1= 1THEN SPWM 1THEN SPWM= 1;END IF;END PROCESS;LD1=SPWM;LD2= NOT SPWM;PWM=SPWM;END ARCHITECTURE ART;END;方案二源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY PWM IS PORT(CLK:IN
10、STD_LOGIC;D:IN STD_LOGIC_VECTOR(11DOWNTO 0);PWMH:OUT STD_LOGIC;PWML:OUT STD_LOGIC);END ENTITY PWM;ARCHITECTURE ART OF PWM ISSIGNAL PH:STD_LOGIC;SIGNAL PL:STD_LOGIC;SIGNAL CNT : STD_LOGIC_VECTOR(11 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THENIF CNT=000000001111 THEN CNT=000000000000; EL
11、SE CNT=CNT+1;END IF;END IF;IF CNT=D THENPH=1;PL=0;ELSE PH=0; PL=1;END IF;END PROCESS;PROCESS(CLK)ISBEGINIF CLKEVENT AND CLK=1 THENPWMH=PH;PWML=PL;END IF;END PROCESS;END;方案选择:由设计源程序可知,在第二个方案中,用一个 IF 语句 就达到了方案一中的两个计数器的计数, 去控制输出的目的, 并且省 略了 D 触发器。在硬件上节约了很多资源,并且在程序上也显得简 单得多。所以采用方案二作为本次设计的最终方案。 程序分析: 本次设计
12、,选择的方案是第二个。由方案二的源程序可以 看出:运用到了数值加法计数,所以打开 USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ ARITH.ALL 两个程序包。 由于信号是以高低电平输入或输出, 所以 打开了 USE IEEE.STD_LOGIC_1164.ALL 程序包。在实体设计中, 定义了时钟信号输入端口和 D 信号设定值输入端口,定义了两个脉 冲宽度调试的输出信号。在结构体中定义了两个输出信号 :PWMH 和 PWML , 还定义了一个计数信号: CNT ,作为中间值。由源程序可以知道,当计数数值信号 CNT 的计数数 值小于其设定
13、值的时候,每来一个时钟脉冲信号就将 CNT 加一,如 果这个时候计数数值信号 CNT 的计数数值也小于或等于 D 信号输入 值,就将 PWMH 信号置为高电平, PWML 信号置为低电平。当计 数数值信号 CNT 的技术数值等于 D 信号的输入值的时候, 便将输出 信号翻转,即 PWMH 为低电平, PWML 为高电平。当计数数值信 号 CNT 的计数数值等于 CNT 设定值的时候, 便将 CNT 置零,程序 便再次循环作用, 不断输出脉冲宽度调制信号。 由此达到脉冲宽度调 制的目的。完成程序设计的目的。设计程序仿真图:方案二源程序仿真图仿真分析:由仿真图可以看出, D 的输入值为 10,在程
14、序中得 知 CNT 计数数值信号的设定值为 15,所以,当前十个时钟信号来时, 保持 PWMH 输出为高电平, PWML 输出为低电平。当第十一个时 钟到来时,输出信号翻转,将 PWMH 置为低电平, PWML 置为高 电平,保持五个时钟周期后, CNT 的计数数值等于其设定数值,因 此被置零,所以输出信号再次翻转,将 PWMH 输出置为高电平, PWML 输出置为低电平,由此往返运行程序,便循环输出脉冲宽度 调制信号。综上所述,方案二的设计满足了设计要求。设计总结:脉冲宽度调制的程序设计本身是比较简单的,最重要 的设计部分就是计数器的设计和如何运用计数器去控制脉冲宽度调 制信号的切换与脉冲信
15、号周期的长短。 除此之外, 这个设计本无什么 难度。这次设计的源程序就实现了脉冲信号周期时间的控制 以及电平信号的翻转这两个作用, 所以其用途可以用来进行控制重复 循环动作的切换, 比如交通灯的亮灭与切换, 切割机的切割动作的控 制。本次设计的最大的收获是来自于动手能力的提高,以 前都是在书上读程序, 而这次是自己写, 感觉很不一样, 虽然程序简 单,但也花了不少时间。 另外就是对开发软件的熟悉程度跟以往相比 提高很多。参考文献:1谭会生,张昌凡.EDA技术及应用.西安电子科技大学出版社, 20112杨晖,张凤言 . 大规模可编程逻辑器件与数字系统设计. 北京航空航天大学出版社, 19983杨恒,李爱国,王辉.FPGA/CPLD最新使用技术指南 . 清华大学出版社,2005
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1