verilog 分频问题
verilog 分频问题module fre_8(clk,reset,dout);
//
input clk,reset;
output dout;
reg dout;
reg counter;
//
always @(posedge clk)
begin
if(reset) //高电平复位
counter="0000";
else
counter=counter+1; //加计数
if(counter=="1000")
dout=0;
else dout=1;
end
endmodule 增加一个dout_r寄存器
module fre_8(clk,reset,dout);
//
input clk,reset;
output dout;
reg dout_r; //jicunqi
reg counter;
//
assign dout=dout_r; //
always @(posedge clk)
begin
if(reset) //高电平复位
counter="0000";
else
counter=counter+4'b1; //加计数
if(counter=="1000")
dout_r=1;
else dout_r=0;
end 我的理解是这里有问题
counter=counter+1; //加计数
if(counter=="1000")
dout=0;
else dout=1;
counter==1000时,dout=0,counter还要从1000加到1111,回到0000,再加到1000.
所以,
if(counter=="1000")
dout=0;
counter=4'b0000 直接对dout取反就可以了,楼主的如此编程出现这样结果并不奇怪 module fre_8(clk,reset,dout);
//
input clk,reset;
output dout;
reg dout;
reg counter;
//
always @(posedge clk)
begin
if(reset) //高电平复位
counter="0000";
else
counter=counter+1; //加计数
if(counter=="1000")
dout=~dout;
end
endmodule
直接对dout取反就可以了,楼主的如此编程出现这样结果并不奇怪
页:
[1]