seldom 发表于 2009-9-9 21:00:59

一个简单的CPLD分频问题

//16.384M有源晶振

module clk_div(clk1M,clk16M);
output clk1M;
input clk16M;
reg cnt;
reg clk1M;

initial
begin
cnt = 0;
clk1M = 0;
end

always @(negedge clk16M)
begin
if(cnt==4b'1000)
begin
   clk1M <= ~clk1M;
   cnt <= 4'b0;
end
cnt <= cnt+1'b1;
end
//assign clk1M=clk16M;

endmodule

仿真可以通过,但不知为何出来的都是125K的方波。如果程序主体只用“assign clk1M=clk16M;”,才看到16M正弦波。
补充:硬件是MAXII的EPM1270

holycat 发表于 2009-9-11 14:01:38

俺对Verilog不熟,不过搅得“cnt <= cnt+1'b1;”这句的位置不太对劲,似应放在else里。
否则当满足if条件时,又清零又加一,有二义性了。

roasn 发表于 2009-9-11 15:38:14

if(cnt==4b'1000)
页: [1]
查看完整版本: 一个简单的CPLD分频问题