// pwm out module
// author: jiajia.pi
// version: v1.0
// last modify date: 2014/01/10
// period range: 0~65535
// pulse_width range: 0~period
module pwm(
clk, // global clock
reset_n, // global async low reset
en, // pwm output enable, high enable
period, // pwm period
pulse_width, // pwm pulse width, must less or equal to pwm period
out // pwm output
);
input clk;
input reset_n;
input en;
input [15:0]period;
input [15:0]pulse_width;
output out;
reg [15:0]cnt;
reg wave;
wire out = wave;
always @(posedge clk or negedge reset_n)
if(!reset_n)
cnt <= 0;
else if(cnt<period-1 && en)
cnt <= cnt + 1;
else
cnt <= 0;
always @(posedge clk or negedge reset_n)
if(!reset_n)
wave <= 0;
else if(cnt<pulse_width && en)
wave <= 1;
else
wave <= 0;
endmodule
我以前写了一个,你看看,应该可以直接用的