大侠们帮我看看,clkout波形出不来
module fenpin(clkin,clkout);input clkin;
output clkout;
reg clkout;
reg clk0,clk1,clk2;
reg c0,c1,c2;
reg c3;
always @(posedge clkin) begin
if(c0<8'd200) c0<=c0+1;
else begin clk0<=~clk0; c0<=0;end end
always @(clk0) begin
if(c1<8'd100) c1<=c1+1;
else begin clk1<=~clk1;c1<=0; end end
always @(clk1) begin
if(c2<8'd100) c2<=c2+1;
else begin clk2<=~clk2;c2<=0; end end
always @(clk2) begin
if(c3<4'd10) c3<=c3+1;
else begin clkout<=~clkout;c3<=0; end end
endmodule
大侠们帮我看看,clkout波形出不来 肯定没波形出来 为什么呀?
哪里出问题了呀 C0一直在计数
C0到了200,clk0还没翻转,C0就被清零了
翻转清0 是同时的
这是非阻塞赋值 分频器不是这样写的 后面几个敏感列表应该写成always@(posedgeclk0) 你这个是分频器?真的很少见这样写的 其实你可以再换一个方法试试,可能c0一直处于高阻态,这样的话,开始的条件可能一直就没进行,还有就是你可以看看其它的波形,clk1,clk2,他们的值都有变化吗?一步步找原因 `timescale 1ns/1ns
module fenpin(
rst_n,
clkin,
clkout
);
input rst_n;
input clkin;
output clkout;
reg clkout;
reg clk0,clk1,clk2;
reg c0,c1,c2;
reg c3;
always @(posedge clkin or negedge rst_n)
begin
if (rst_n == 1'b0)
begin
clk0 <= 1'b0;
c0<=0;
end
else if(c0<8'd200)
c0<=c0+1;
else
begin
clk0<=~clk0;
c0<=0;
end
end
always @(posedge clk0 or negedge rst_n)
begin
if (rst_n == 1'b0)
begin
c1<=0;
clk1<= 1'b0;
end
else if(c1<8'd100)
c1<=c1+1;
else
begin
clk1<=~clk1;
c1<=0;
end
end
always @(posedge clk1 or negedge rst_n)
begin
if (rst_n == 1'b0)
begin
c2<=0;
clk2<=1'b0;
end
else if(c2<8'd100)
c2<=c2+1;
else
begin
clk2<=~clk2;
c2<=0;
end
end
always @(posedge clk2 or negedge rst_n)
begin
if (rst_n == 1'b0)
begin
c3<=0;
clkout<=1'b0;
end
else if(c3<4'd10)
c3<=c3+1;
else
begin
clkout<=~clkout;
c3<=0;
end
end
endmodule 回复 9# njithjw
用这么多时钟,你这个设计的时序怎么去约束?
页:
[1]
2