AlexSweet 发表于 2012-7-23 21:31:35

高手求救,verilog怎么实现变化的频率

高手求救,verilog怎么实现变化的频率?该模块的分频系数是有外部给定的。如一个八位的二进制数。部分程序代码如下:
module clock(clk, divN,clkout);

input clk;
input divN;
output clkout;

reg clkout;
reg cnt;

always @(posedge clk)
begin
        if (cnt == divN)
                begin
                cnt <=0;
                clkout <= ~clkout;
                end
        else
                begin
                cnt <= cnt + 8'd1;
                end
end

endmodule

现在的问题是,我的仿真结果和divN的值不一致。请大侠指点一二。多谢了。

AlexSweet 发表于 2012-7-23 21:32:41

Quartus II 的仿真波形不对啊

@HDL现场 发表于 2012-7-26 15:35:10

以上是不对的,你这样的分频数位divN * 2了
如果要分频数为divN,
则把这句"if (cnt == divN)"改成"if (cnt == divN)",   (divN 相当于divN除以2)
但是不能保证完全正确,因为如果divN为奇数(即最低位为0),则就有一个时钟差了。因为除以2不能为整数;
如果是奇数分频,则考虑使用双沿时钟。
页: [1]
查看完整版本: 高手求救,verilog怎么实现变化的频率