|
本帖最后由 fantastic88 于 2012-3-29 23:00 编辑
我改了一下 看似是对的,但是还是有问题
module suqu(rst,clk,pwm11,pwm1,flag,tt);
`define DEADTIME 2
input rst,clk,pwm11;
output pwm1,flag,tt;
wire pwm11;
reg pwm1,flag,tt; //flag死区标志位,=1则死区开通,计数器开始计数,tt为计数器溢出信号
reg [9:0]cnt;
always@(posedge clk or posedge rst)
if (rst)
pwm1<=0;
else
begin
if(!flag)
pwm1<=pwm11;
else
pwm1<=0;
end
always @(posedge clk or posedge rst)
if(rst)
begin
cnt<=0;
tt<=0;
//flag<=0;
end
else
begin
if(flag)
begin
if(cnt<`DEADTIME)
begin
tt<=0;
cnt<=cnt+1;
end
else if(cnt==`DEADTIME)
begin
cnt<=0;
tt<=1;
end
else
tt<=0;
end
end
always @ (posedge pwm11 or posedge tt)
if(tt)
flag<=0;
else if(pwm11)
flag<=1;
endmodule
就第一下好一点 ,后面flag都是0 估计是《= 和= 之间这种问题吧,一个状态没过去就到下一个状态了,求解! |
|