西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 3827|回复: 21

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

  [复制链接]

该用户从未签到

发表于 2010-9-21 17:21 | 显示全部楼层 |阅读模式

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

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

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

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

该用户从未签到

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

使用道具 举报

签到天数: 4 天

连续签到: 1 天

[LV.2]偶尔看看I

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

使用道具 举报

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

发表于 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 | 显示全部楼层
不错嘛。看看先
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 4 天

连续签到: 1 天

[LV.2]偶尔看看I

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 7 天

连续签到: 1 天

[LV.3]偶尔看看II

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

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

发表于 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 | 显示全部楼层
真的还是假的啊,怎么。。。。。。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

发表于 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-5-9 11:54 , Processed in 0.189690 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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