找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

Flux电机有限元分析教程西莫团购入口 | 奖励入口当当网购物入口 | 奖励入口欢迎使用!西莫论坛App开放下载Motor-CAD电机多物理域设计教材购买入口 | 奖励入口
★新会员论坛须知★《西莫电机技术》第39期发售火热进行中Flux电机电磁阀有限元分析教程团购入口 | 奖励入口论坛微信公众平台欢迎入驻
西莫电机及相关产品供需交流群开放邀请★ 论坛VIP会员申请 ★Motor-CAD.MANATEE电磁热振动噪声教程 | 奖励入口西莫团队欢迎您的加盟!
宣传推广合作请联系QQ:25941174西莫电机论坛微信群正式开放Flux变压器与电抗器有限元分析团购入口 | 奖励入口西莫电机论坛技术版区QQ群汇总
查看: 4117|回复: 22

[分享] 《FPGA关于PWM输出控制原码》

  [复制链接]

该用户从未签到

发表于 2010-9-21 17:21 | 显示全部楼层 |阅读模式 来自: 中国辽宁沈阳

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 dianjikongzhi 于 2010-9-25 21:03 编辑

整个流行点的《FPGA关于PWM输出控制原码》,正在学的或者想学的下载
FPGA关于PWM输出控制原码 .rar (252.51 KB, 下载次数: 161)
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2010-9-25 10:09 | 显示全部楼层 来自: 中国浙江杭州
下来学习了,谢谢!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-9-26 09:56 | 显示全部楼层 来自: 中国江苏无锡
谢谢分享 下载了
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-9-29 08:19 | 显示全部楼层 来自: 中国山东济宁
好东西要学习一下的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-10-5 21:05 | 显示全部楼层 来自: 中国辽宁沈阳
先收下了再说,谢谢啦~~~
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-12-20 15:40 | 显示全部楼层 来自: 中国广东广州
谢谢分享,下来看看
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2010-12-25 23:44 | 显示全部楼层 来自: 中国广东珠海
正需要这个东西,谢谢,学习了。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-1-11 20:30 | 显示全部楼层 来自: 中国云南昆明
好多代码都是DSP的,难得见到用FPGA做的,下来看看,谢了!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-1-30 10:19 | 显示全部楼层 来自: 中国江苏南京
不错嘛。看看先
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-1-30 13:05 | 显示全部楼层 来自: 中国江苏无锡
楼主威武
楼主上错东西了
楼主这是ALTERA的MAX2系列CPLD做的PWM生成模组
楼主重发
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-2-22 12:13 | 显示全部楼层 来自: 中国北京
谢谢楼主,顶
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-5-18 11:17 | 显示全部楼层 来自: 中国江苏徐州
这个要收下,谢谢了
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-5-18 21:55 | 显示全部楼层 来自: 中国北京
好东西呀。哈哈。正需要呀!!!!!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-6-13 14:56 | 显示全部楼层 来自: 中国上海
正在学习中,多谢楼主的资料
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-6-14 09:20 | 显示全部楼层 来自: 中国山东济宁
谢谢楼主提供的资料,学习了
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-6-17 17:00 | 显示全部楼层 来自: 中国北京
非常感谢分享
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2012-2-25 15:58 | 显示全部楼层 来自: 中国上海
非常感谢,我正好要学习电机了
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2012-3-4 13:59 | 显示全部楼层 来自: 中国黑龙江哈尔滨
学习下。。。。。。。。谢谢
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2016-3-9 22:09 | 显示全部楼层 来自: 中国福建泉州
真的还是假的啊,怎么。。。。。。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2016-4-6 19:50 | 显示全部楼层 来自: 中国浙江台州
AN501_Pulse_Width_Modulator_Altera_MAX_II_CPLD_Design_Example




/***********************************************************************************************
Pulse Width Modulation
December 2006
*********************************************************************************/

// Top Level module
module pwm_main (up, dn, pwm, pwm_inv, pwm1, pwm2, pwm3, pwm4);

input up, dn;                        // PWM control buttons

output pwm, pwm_inv, pwm1, pwm2, pwm3, pwm4; // Five sets of PWM and one set of its compliment

wire [3:0] dc_w;
wire clk_w, oscena_w, dc_clk_w, pwm_clk_w, pwm1,pwm2,pwm3,pwm4,pwm_inv;

assign pwm1 = pwm;
assign pwm2 = pwm;
assign pwm3 = pwm;
assign pwm4 = pwm;
assign pwm_inv = !pwm;

assign oscena_w = 1;                 //Enabling internal UFM oscillator


        altufm_osc0_altufm_osc_1p3 u1 (.osc(clk_w), .oscena(oscena_w));
                clk_gen u2 (.osc(clk_w), .duty_cycle_clk(dc_clk_w), .pwm_clk(pwm_clk_w));
        duty_cycle u3 (.up(up), .dn(dn), .duty_cycle(dc_w), .clk(dc_clk_w));
        pwm_gen u4 (.duty_cycle(dc_w), .clk(pwm_clk_w), .pwm(pwm));

endmodule

/****************************************************************************************************/
/*Instantiation of UFM oscillator for utilizing built in clock*/

`timescale 1 ps / 1 ps
//synopsys translate_on
module  altufm_osc0_altufm_osc_1p3
    (
    osc,
    oscena) /* synthesis synthesis_clearbox=1 */;
    output   osc;
    input   oscena;

    wire  wire_maxii_ufm_block1_osc;

    maxii_ufm   maxii_ufm_block1
    (
    .arclk(1'b0),
    .ardin(1'b0),
    .arshft(1'b0),
    .bgpbusy(),
    .busy(),
    .drclk(1'b0),
    .drdout(),
    .drshft(1'b0),
    .osc(wire_maxii_ufm_block1_osc),
    .oscena(oscena)
    `ifdef FORMAL_VERIFICATION
    `else
    // synopsys translate_off
    `endif
    ,
    .drdin(1'b0),
    .erase(1'b0),
    .program(1'b0)
    `ifdef FORMAL_VERIFICATION
    `else
    // synopsys translate_on
    `endif
    // synopsys translate_off
    ,
    .ctrl_bgpbusy(),
    .devclrn(),
    .devpor(),
    .sbdin(),
    .sbdout()
    // synopsys translate_on
    );
    defparam
        maxii_ufm_block1.address_width = 9,
        maxii_ufm_block1.osc_sim_setting = 300000,
        maxii_ufm_block1.lpm_type = "maxii_ufm";
    assign
        osc = wire_maxii_ufm_block1_osc;
endmodule //altufm_osc0_altufm_osc_1p3


/*********************************************************************************************
*  Clk_gen module for generating reduced frequencies from UFM Osc
   and to make suitable for generating duty cycle data clock and
   PWM generating clock
**********************************************************************************************/
module clk_gen(osc, pwm_clk, duty_cycle_clk);

input osc;

output pwm_clk, duty_cycle_clk;

reg [18:0] count;
initial count=19'b0000000000000000000;

reg duty_cycle_clk;
reg pwm_clk;

always @ (posedge osc)
    begin
        count <= count + 1;
        pwm_clk <= count[10];
        duty_cycle_clk <= count[18];   
    end
endmodule

/*********************************************************************************************
* Generates 4 bit duty cycle word, each count (6.25%) corresponding to
  1 of 16 duty cycle percentages
*********************************************************************************************/
module duty_cycle (up, dn, clk, duty_cycle);

input up, dn, clk;

output [3:0] duty_cycle;
initial duty_cycle=4'b0000;

reg [3:0] duty_cycle;

always @(posedge clk)
    begin
        if (!up)begin
            if (duty_cycle!=4'b1111)                                    // upward limit
                duty_cycle <= duty_cycle +1;
        end else begin                                                               
            if (!dn)begin
                if (duty_cycle!=4'b0000)                                        // downward limit
                    duty_cycle <= duty_cycle -1;
            end
        end
    end      
   
endmodule

/*************************************************************************************************************
* PWM generating module, uses duty cycle value from duty_cycle module
*************************************************************************************************************/
module pwm_gen (clk, duty_cycle, pwm);

input clk;
input [3:0] duty_cycle;

output pwm;

reg [3:0] count;
reg pwm, pwm_temp;

initial
begin
count=4'b0000;
pwm=1'b0;
end

always @ (posedge clk)
begin
        count = count+1;
                if (count == duty_cycle) pwm = pwm_temp;
                else
                        begin
                        if (count < duty_cycle)
                                begin
                                        pwm = 1'b1;
                                        pwm_temp = pwm;
                                end
                        else if (count > duty_cycle)
                                begin
                                        pwm =1'b0;
                                        pwm_temp = pwm;
                                end
                        end
end

endmodule

/****************************** End **************************************************************************/
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

西莫电机论坛微信公众平台欢迎您的关注!

QQ|Archiver|手机版|小黑屋|西莫电机圈 ( 浙ICP备10025899号-3|浙公网安备:33028202000436号 )

GMT+8, 2024-12-24 01:48 , Processed in 0.123799 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表