怎么实现占空比1:1的三分频?
谢谢大家指点
用时钟的上升沿和下降研分别触发即可
这个三分频蛮有意思的,可以参考一下,实现起来简单,避免使用计数器了
module div_3(clk,clkout);
inputclk;
output clkout;
regq1,q2,d,clkout;
always @(posedge clk)
if(!d)
q1=1'b1;
else
q1=~q1;
always @(negedge clk)
if(!d)
q2=1'b1;
else
q2=~q2;
always @(q1 or q2)
d=q1&q2 ;
always @(posedge d)
clkout=~clkout;
endmodule
谢谢
我学习一下,呵呵
module div_3(clk,clkout);
inputclk;
output clkout;
regq1,q2,d,clkout;
always @(posedge clk)
if(!d)
q1=1'b1;
else
q1=~q1;
always @(negedge clk)
if(!d)
q2=1'b1;
else
q2=~q2;
always @(q1 or q2)
d=q1&q2 ;
always @(posedge d)
clkout=~clkout;
endmodule
刚看了一下,怎么感觉不对呢?实现的不是三分频
我没有跑仿真,只是把初值d和clkout都看为0
是真确的.
进行了仿真的。要把q1,q2,clkout,都先置为0.
我感觉也是不对啊,作出来的不是3分频,而是4分频,应该分别用posedge & negedge 两个counter来实现!
确实是4分频, 不是3分频, 如果是四分频, 就不用这样繁琐了
仿真看一下吧. 不要以为自己都是对的.上面的程序是正确的.
同时用上升沿和下降沿能够做任意奇数的50%分频.
学习一下
q1,q2,clkout,都先置为0的确就对了
但这个要不要在代码中说明呢?
谢谢
在定义REG时定义啊
如:reg q1 =0,q2=0;
就行了啊!
同时用上升沿和下降沿产生占空为非50%的无分频。
然后将两个分频信号相(60%)与或者相或(40%)!
用两个计数器
cnt1,cnt2
一个上升沿计数
一个下降沿计数
注意,同一个触发器不能同时双沿触发,不可综合!