OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7462|回复: 2

PWM输出可调模块

[复制链接]

4

主题

12

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-3-14
在线时间
0 小时
发表于 2015-4-1 19:44:11 | 显示全部楼层 |阅读模式
[mw_shl_code=c,true]PWM控制模块代码[/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true]/******************************************************************** * Module Name : * Engineer : open * Target Device : EP4CE6F17C8 * Tool versions : Quartus II 12.0 * Create Date : 2015-4-1 * Revision : v1.0 * Description : /**********************************************************************/ module pwm_control( clk, rst_n, pwm_out ); /**********************************************************************/ parameter T_10K = 4999; input clk ; input rst_n ; output pwm_out ; reg pwm_out ; reg [12:0] pwm_with; /**********************************************************************/ reg [12:0] pwm_count; always@ (posedge clk or negedge rst_n)begin if(!rst_n)begin pwm_count <= 0; end else if(pwm_count == T_10K)begin pwm_count <= 0; end else begin pwm_count <= pwm_count + 1'b1; end end /************************************************************/ reg flag; always@ (posedge clk or negedge rst_n)begin if(!rst_n)begin pwm_with <= 0; flag <= 1; end else if(pwm_count == T_10K)begin if(flag == 1)begin if(pwm_with == 0)begin flag <= 0; end else begin pwm_with <= pwm_with - 1'b1; end end else begin if(pwm_with == T_10K)begin flag <= 1; end else begin pwm_with <= pwm_with + 1'b1; end end end else begin pwm_with <= pwm_with; end end /**********************************************************************/ always@ (posedge clk or negedge rst_n)begin if(!rst_n)begin pwm_out <= 1'b0; end else if(pwm_count <= pwm_with)begin pwm_out <= 1'b1; end else begin pwm_out <= 1'b0; end end endmodule [/mw_shl_code] 测试代码
[mw_shl_code=c,true]`timescale 1 ns/ 1 ns module pwm_tb(); reg clk; reg rst_n; wire pwm_out; parameter CYCLK = 20; parameter RST_TIME = 3; pwm_control UUT( .clk(clk), .rst_n(rst_n), .pwm_out(pwm_out) ); initial begin clk = 0; forever #(CYCLK / 2) clk = ~clk; end initial begin rst_n = 1; #2; rst_n =0; #(RST_TIME); rst_n = 1; end endmodule 仿真波形[/mw_shl_code] [mw_shl_code=c,true]

[/mw_shl_code]



[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-1 23:31:56 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-3-14
在线时间
0 小时
 楼主| 发表于 2015-4-9 21:22:16 | 显示全部楼层
回复【3楼】keyway:
---------------------------------
没有喔 都是简单的接口模块
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 04:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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