- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三项6路互补PWM波输出
安徽工业大学
实验报告
课程名称: 硬件描述语言与系统仿真
课题名称: 通用PWMIP核模块
学院: 电气学院
专业: 电气工程 (专硕)
姓名: 丁凯
学号:
指导教师:武卫华
2013.1.10
摘 要
利用QuartusII6.0软件QuartusII6.0软件随着FPGA(FieldProgrammableGateArray)和EDA(ElectronicDesignAutomation)技术的发展些研究者纷纷采用可编程逻辑器件构建多路PW发生器来简化电力电子核心数字电路,提高系统的可靠性但是所有这些设计均根据主电路特定的应用场合定制,因而缺乏通用性和灵活性。本文每一对PWM非常易于实现PWM信号的同步通用PWMIP核是针对一般电力电子应用场合而设计,应具有较好的可设置性,如开关周期、死区时间、PWM模式以及功率保护等设置。
2.2 各个模块的设计
分频器模块:由于而本设计系统用的是1M的时钟,并且三角波ROM中总共存了1000个值,根据公式(M是频率控制字),就可以实现步长为1K的频率跳转。而FPGA硬件用的是20M的时钟脉冲,所以设计中加了一个20倍的分频器。其模块和代码如下:
--20倍的分频器设计
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fen_pin IS
port(clk:in std_logic;
clkout:out std_logic);
end fen_pin;
architecture rtl of fen_pin is
signal nt : std_logic_vector(4 downto 0);
signal cnt: std_logic;
begin
Process(nt,clk)
begin
if clkevent and clk=1 then
if nt=9 then
nt=00000;--强制回零
clkout=cnt;
cnt=not cnt;--翻转
else nt=nt+1;
end if;
end if;
end process;
end rtl;
自加器模块:首先对DDS原理进行简单介绍,对于信号发生器而言,他的输出可以用下式来描述:
——(1)
其中,Sout是指该信号发生器的输出信号波形,fout指输出信号对应的频率。上式的表述对于时间是连续的,为了用数字逻辑实现该表达式,必须进行离散化处理,用基准时钟clk进行抽样,令正弦信号的相位θ为
——(2)
在一个clk 周期Tclk,相位θ的变化量为
——(3)
其中fclk指clk的频率,对于2可以理解成“满”相位,为了对进行数字量化,把2切个成N份,由此每个clk周期的相位增量用量化值来表述:,且为整数。与公式(3)联立,可得
本文的自加器就是基于这样一个原理,由外部输入一个频率控制字M,在自加器中以M为步长从零开始自加至超过1000后强制回零,从而在三角波ROM中循环寻址输出不同频率的三角波。三角波输出频率为:。其模块和代码如下:
--10位自加法器模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADD IS
PORT ( A : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
B : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
clk : IN STD_LOGIC;
S : INOUT STD_LOGIC_VECTOR(9 DOWNTO 0) );
END ADD;
ARCHITECTURE behav OF ADD IS
BEGIN
PROCESS(clk)
BEGIN
IF clkevent and clk =1 then
IF S=1111100111 THEN
S=0000000000 ;
文档评论(0)